aboutsummaryrefslogtreecommitdiff
path: root/contrib/DirectX-Headers-1.618.2
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2025-12-02 16:39:36 -0800
committer3gg <3gg@shellblade.net>2025-12-02 16:39:36 -0800
commit6c8ae19be66cee247980a48e736a4e05d14de179 (patch)
treed860767907bf0cbe17ec66422e11bea700cf56d9 /contrib/DirectX-Headers-1.618.2
parent8f594c8ebd11f0e5f8a0c6369c3fe7383d250cbe (diff)
Immediate-mode renderer, triangle demo, shader compilation in cmake, Agility SDK
Diffstat (limited to 'contrib/DirectX-Headers-1.618.2')
-rw-r--r--contrib/DirectX-Headers-1.618.2/.github/dependabot.yml6
-rw-r--r--contrib/DirectX-Headers-1.618.2/.github/workflows/codeql.yml57
-rw-r--r--contrib/DirectX-Headers-1.618.2/.github/workflows/main.yml95
-rw-r--r--contrib/DirectX-Headers-1.618.2/.github/workflows/msvc.yml53
-rw-r--r--contrib/DirectX-Headers-1.618.2/.github/workflows/uwp.yml63
-rw-r--r--contrib/DirectX-Headers-1.618.2/.github/workflows/wsl.yml42
-rw-r--r--contrib/DirectX-Headers-1.618.2/.gitignore23
-rw-r--r--contrib/DirectX-Headers-1.618.2/Android.bp14
-rw-r--r--contrib/DirectX-Headers-1.618.2/CMakeLists.txt118
-rw-r--r--contrib/DirectX-Headers-1.618.2/CMakePresets.json224
-rw-r--r--contrib/DirectX-Headers-1.618.2/CODE_OF_CONDUCT.md10
-rw-r--r--contrib/DirectX-Headers-1.618.2/LICENSE21
-rw-r--r--contrib/DirectX-Headers-1.618.2/README.md63
-rw-r--r--contrib/DirectX-Headers-1.618.2/SECURITY.md41
-rw-r--r--contrib/DirectX-Headers-1.618.2/cmake/DirectX-Headers.pc.in10
-rw-r--r--contrib/DirectX-Headers-1.618.2/cmake/JoinPaths.cmake23
-rw-r--r--contrib/DirectX-Headers-1.618.2/cmake/directx-headers-config.cmake.in4
-rw-r--r--contrib/DirectX-Headers-1.618.2/googletest/CMakeLists.txt45
-rw-r--r--contrib/DirectX-Headers-1.618.2/googletest/MockDevice.hpp1299
-rw-r--r--contrib/DirectX-Headers-1.618.2/googletest/feature_support_test.cpp1354
-rw-r--r--contrib/DirectX-Headers-1.618.2/googletest/meson.build13
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/composition/dcomp-preview.h85
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/D3D12MarkerApiEnums.idl119
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/D3D12TokenizedProgramFormat.hpp2634
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/DirectML.h2651
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12.h36886
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12.idl7014
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.h899
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.idl101
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.h977
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.idl291
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.h4280
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.idl1860
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12shader.h495
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.h10726
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.idl3818
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.h1133
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.idl991
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.h998
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.idl195
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12.h36
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_barriers.h193
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_check_feature_support.h1162
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_core.h2072
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_default.h12
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_pipeline_state_stream.h1718
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_property_format_table.h128
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_render_pass.h105
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_resource_helpers.h612
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_root_signature.h1227
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_state_object.h2570
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxcore.h41
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxcore_interface.h497
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.h57
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.idl53
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.h144
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.idl139
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/dxguids/dxguids.h201
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/basetsd.h406
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/oaidl.h5
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/ocidl.h5
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpc.h5
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpcndr.h78
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwn.h3
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwnbase.h124
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/winapifamily.h6
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/client.h6
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/implements.h6
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/winadapter.h6
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/wrladapter.h803
-rw-r--r--contrib/DirectX-Headers-1.618.2/meson.build64
-rw-r--r--contrib/DirectX-Headers-1.618.2/meson_options.txt7
-rw-r--r--contrib/DirectX-Headers-1.618.2/src/d3dx12_property_format_table.cpp2601
-rw-r--r--contrib/DirectX-Headers-1.618.2/src/dxguids.cpp11
-rw-r--r--contrib/DirectX-Headers-1.618.2/test/CMakeLists.txt61
-rw-r--r--contrib/DirectX-Headers-1.618.2/test/feature_check_test.cpp729
-rw-r--r--contrib/DirectX-Headers-1.618.2/test/meson.build15
-rw-r--r--contrib/DirectX-Headers-1.618.2/test/test.cpp46
78 files changed, 95685 insertions, 0 deletions
diff --git a/contrib/DirectX-Headers-1.618.2/.github/dependabot.yml b/contrib/DirectX-Headers-1.618.2/.github/dependabot.yml
new file mode 100644
index 0000000..ca79ca5
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/.github/dependabot.yml
@@ -0,0 +1,6 @@
1version: 2
2updates:
3 - package-ecosystem: github-actions
4 directory: /
5 schedule:
6 interval: weekly
diff --git a/contrib/DirectX-Headers-1.618.2/.github/workflows/codeql.yml b/contrib/DirectX-Headers-1.618.2/.github/workflows/codeql.yml
new file mode 100644
index 0000000..de2378b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/.github/workflows/codeql.yml
@@ -0,0 +1,57 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4name: "CodeQL"
5
6on:
7 push:
8 branches: [ "main" ]
9 pull_request:
10 branches: [ "main" ]
11 paths-ignore:
12 - '*.md'
13 - LICENSE
14 schedule:
15 - cron: '15 2 * * 4'
16
17permissions:
18 contents: read
19
20jobs:
21 analyze:
22 name: Analyze (C/C++)
23 runs-on: windows-latest
24 timeout-minutes: 360
25 permissions:
26 actions: read # for github/codeql-action/init to get workflow details
27 contents: read # for actions/checkout to fetch code
28 security-events: write # for github/codeql-action/autobuild to send a status report
29 packages: read
30
31 steps:
32 - name: Checkout repository
33 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
34
35 - name: 'Install Ninja'
36 run: choco install ninja
37
38 - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
39
40 - name: Initialize CodeQL
41 uses: github/codeql-action/init@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v3.29.5
42 with:
43 languages: c-cpp
44 build-mode: manual
45
46 - name: 'Configure CMake'
47 working-directory: ${{ github.workspace }}
48 run: cmake --preset=x64-Debug
49
50 - name: 'Build'
51 working-directory: ${{ github.workspace }}
52 run: cmake --build out\build\x64-Debug
53
54 - name: Perform CodeQL Analysis
55 uses: github/codeql-action/analyze@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v3.29.5
56 with:
57 category: "/language:c-cpp"
diff --git a/contrib/DirectX-Headers-1.618.2/.github/workflows/main.yml b/contrib/DirectX-Headers-1.618.2/.github/workflows/main.yml
new file mode 100644
index 0000000..ca34a39
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/.github/workflows/main.yml
@@ -0,0 +1,95 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4name: 'CMake (Windows)'
5
6on:
7 push:
8 branches: [ "main" ]
9 pull_request:
10 branches: [ "main" ]
11 paths-ignore:
12 - '*.md'
13 - LICENSE
14
15permissions:
16 contents: read
17
18jobs:
19 build:
20 runs-on: ${{ matrix.os }}
21
22 strategy:
23 fail-fast: false
24
25 matrix:
26 os: [windows-2019, windows-2022]
27 build_type: [x64-Debug, x64-Release]
28 arch: [amd64]
29 include:
30 - os: windows-2019
31 build_type: x86-Debug
32 arch: amd64_x86
33 - os: windows-2019
34 build_type: x86-Release
35 arch: amd64_x86
36 - os: windows-2022
37 build_type: x86-Debug
38 arch: amd64_x86
39 - os: windows-2022
40 build_type: x86-Release
41 arch: amd64_x86
42 - os: windows-2022
43 build_type: arm64-Debug
44 arch: amd64_arm64
45 - os: windows-2022
46 build_type: arm64-Release
47 arch: amd64_arm64
48 - os: windows-2022
49 build_type: arm64ec-Debug
50 arch: amd64_arm64
51 - os: windows-2022
52 build_type: arm64ec-Release
53 arch: amd64_arm64
54 - os: windows-2022
55 build_type: x64-Debug-Clang
56 arch: amd64
57 - os: windows-2022
58 build_type: x64-Release-Clang
59 arch: amd64
60 - os: windows-2022
61 build_type: x86-Debug-Clang
62 arch: amd64_x86
63 - os: windows-2022
64 build_type: x86-Release-Clang
65 arch: amd64_x86
66 - os: windows-2022
67 build_type: arm64-Debug-Clang
68 arch: amd64_arm64
69 - os: windows-2022
70 build_type: arm64-Release-Clang
71 arch: amd64_arm64
72 - os: windows-2022
73 build_type: x64-Debug-MinGW
74 arch: amd64
75 - os: windows-2022
76 build_type: x64-Release-MinGW
77 arch: amd64
78
79 steps:
80 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
81
82 - name: 'Install Ninja'
83 run: choco install ninja
84
85 - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
86 with:
87 arch: ${{ matrix.arch }}
88
89 - name: 'Configure CMake'
90 working-directory: ${{ github.workspace }}
91 run: cmake --preset=${{ matrix.build_type }}
92
93 - name: 'Build'
94 working-directory: ${{ github.workspace }}
95 run: cmake --build out\build\${{ matrix.build_type }}
diff --git a/contrib/DirectX-Headers-1.618.2/.github/workflows/msvc.yml b/contrib/DirectX-Headers-1.618.2/.github/workflows/msvc.yml
new file mode 100644
index 0000000..5b068f2
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/.github/workflows/msvc.yml
@@ -0,0 +1,53 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4name: Microsoft C++ Code Analysis
5
6on:
7 push:
8 branches: [ "main" ]
9 pull_request:
10 branches: [ "main" ]
11 paths-ignore:
12 - '*.md'
13 - LICENSE
14 schedule:
15 - cron: '24 13 * * 4'
16
17permissions:
18 contents: read
19
20jobs:
21 analyze:
22 permissions:
23 contents: read
24 security-events: write
25 actions: read
26 name: Analyze
27 runs-on: windows-latest
28
29 steps:
30 - name: Checkout repository
31 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
32
33 - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
34 with:
35 arch: amd64
36
37 - name: Configure CMake
38 working-directory: ${{ github.workspace }}
39 run: cmake -B out
40
41 - name: Initialize MSVC Code Analysis
42 uses: microsoft/msvc-code-analysis-action@24c285ab36952c9e9182f4b78dfafbac38a7e5ee # v0.1.1
43 id: run-analysis
44 with:
45 cmakeBuildDirectory: ./out
46 buildConfiguration: Debug
47 ruleset: NativeRecommendedRules.ruleset
48
49 # Upload SARIF file to GitHub Code Scanning Alerts
50 - name: Upload SARIF to GitHub
51 uses: github/codeql-action/upload-sarif@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v3.29.5
52 with:
53 sarif_file: ${{ steps.run-analysis.outputs.sarif }}
diff --git a/contrib/DirectX-Headers-1.618.2/.github/workflows/uwp.yml b/contrib/DirectX-Headers-1.618.2/.github/workflows/uwp.yml
new file mode 100644
index 0000000..d3f47a2
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/.github/workflows/uwp.yml
@@ -0,0 +1,63 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4name: 'CMake (UWP)'
5
6on:
7 push:
8 branches: [ "main" ]
9 pull_request:
10 branches: [ "main" ]
11 paths-ignore:
12 - '*.md'
13 - LICENSE
14
15permissions:
16 contents: read
17
18jobs:
19 build:
20 runs-on: windows-2022
21
22 strategy:
23 fail-fast: false
24
25 matrix:
26 build_type: [x64-Debug-UWP, x64-Release-UWP, x64-Debug-UWP-Clang, x64-Release-UWP-Clang]
27 arch: [amd64]
28 include:
29 - build_type: x86-Debug-UWP
30 arch: amd64_x86
31 - build_type: x86-Release-UWP
32 arch: amd64_x86
33 - build_type: x86-Debug-UWP-Clang
34 arch: amd64_x86
35 - build_type: x86-Release-UWP-Clang
36 arch: amd64_x86
37 - build_type: arm64-Debug-UWP
38 arch: amd64_arm64
39 - build_type: arm64-Release-UWP
40 arch: amd64_arm64
41 - build_type: arm64-Debug-UWP-Clang
42 arch: amd64_arm64
43 - build_type: arm64-Release-UWP-Clang
44 arch: amd64_arm64
45
46 steps:
47 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
48
49 - name: 'Install Ninja'
50 run: choco install ninja
51
52 - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
53 with:
54 arch: ${{ matrix.arch }}
55 uwp: true
56
57 - name: 'Configure CMake'
58 working-directory: ${{ github.workspace }}
59 run: cmake --preset=${{ matrix.build_type }}
60
61 - name: 'Build'
62 working-directory: ${{ github.workspace }}
63 run: cmake --build out\build\${{ matrix.build_type }}
diff --git a/contrib/DirectX-Headers-1.618.2/.github/workflows/wsl.yml b/contrib/DirectX-Headers-1.618.2/.github/workflows/wsl.yml
new file mode 100644
index 0000000..2aaf992
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/.github/workflows/wsl.yml
@@ -0,0 +1,42 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4name: 'CMake (WSL)'
5
6on:
7 push:
8 branches: [ "main" ]
9 pull_request:
10 branches: [ "main" ]
11 paths-ignore:
12 - '*.md'
13 - LICENSE
14
15jobs:
16 build:
17 runs-on: ubuntu-latest
18
19 strategy:
20 fail-fast: false
21
22 matrix:
23 build_type: [x64-Debug-Linux, x64-Release-Linux]
24 gcc: [12, 13, 14]
25
26 steps:
27 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
28
29 - uses: seanmiddleditch/gha-setup-ninja@3b1f8f94a2f8254bd26914c4ab9474d4f0015f67 # v6
30
31 - name: 'Configure CMake'
32 working-directory: ${{ github.workspace }}
33 run: >
34 cmake --preset=${{ matrix.build_type }}
35
36 env:
37 CC: gcc-${{ matrix.gcc }}
38 CXX: g++-${{ matrix.gcc }}
39
40 - name: 'Build'
41 working-directory: ${{ github.workspace }}
42 run: cmake --build out/build/${{ matrix.build_type }}
diff --git a/contrib/DirectX-Headers-1.618.2/.gitignore b/contrib/DirectX-Headers-1.618.2/.gitignore
new file mode 100644
index 0000000..5ad5635
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/.gitignore
@@ -0,0 +1,23 @@
1*.psess
2*.vsp
3*.log
4*.err
5*.wrn
6*.suo
7*.sdf
8*.user
9*.i
10*.vspscc
11*.opensdf
12*.opendb
13*.ipch
14*.cache
15*.tlog
16*.lastbuildstate
17*.ilk
18*.VC.db
19*.nupkg
20.vs
21/out
22/CMakeUserPresets.json
23/build*
diff --git a/contrib/DirectX-Headers-1.618.2/Android.bp b/contrib/DirectX-Headers-1.618.2/Android.bp
new file mode 100644
index 0000000..afba864
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/Android.bp
@@ -0,0 +1,14 @@
1cc_library_headers {
2 name: "DirectX-Headers",
3 export_include_dirs: ["include", "include/wsl/stubs"],
4 vendor_available: true,
5}
6
7cc_library_static {
8 name: "DirectX-Guids",
9 header_libs: ["DirectX-Headers"],
10 local_include_dirs: ["include/dxguids"],
11 srcs: ["src/dxguids.cpp"],
12 cppflags: ["-Wno-non-virtual-dtor", "-Wno-unused-value"],
13 vendor_available: true,
14}
diff --git a/contrib/DirectX-Headers-1.618.2/CMakeLists.txt b/contrib/DirectX-Headers-1.618.2/CMakeLists.txt
new file mode 100644
index 0000000..c96a580
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/CMakeLists.txt
@@ -0,0 +1,118 @@
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.618.2
7)
8include(CTest)
9set(CMAKE_CXX_STANDARD 14)
10set(CMAKE_CXX_STANDARD_REQUIRED ON)
11set(CMAKE_CXX_EXTENSIONS OFF)
12enable_testing()
13
14# It's useful to know if you are a top level project or not, if your project is
15# being consumed via add_subdirectory
16if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
17 set(IS_TOPLEVEL_PROJECT TRUE)
18else()
19 set(IS_TOPLEVEL_PROJECT FALSE)
20endif()
21
22# Use DXHEADERS_* prefix to avoid potential name conflicts in cmake-gui, and allow
23# grouping by prefix if more options are added
24#
25# Testing should only be enabled by default if we are top level. Otherwise clients can set it
26# either via cmake or cmake-gui
27option(DXHEADERS_BUILD_TEST "Build the test" ${IS_TOPLEVEL_PROJECT})
28option(DXHEADERS_INSTALL "Installation logic" ${IS_TOPLEVEL_PROJECT})
29option(DXHEADERS_BUILD_GOOGLE_TEST "Build the google test suite" ${IS_TOPLEVEL_PROJECT})
30
31include(GNUInstallDirs)
32
33# Enables consumers to add this library as a link target to automatically add
34# these include directories, regardless of whether this is referenced via subdirectory
35# or from an installed location
36add_library(DirectX-Headers STATIC src/d3dx12_property_format_table.cpp)
37target_include_directories(DirectX-Headers SYSTEM PUBLIC
38 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
39 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
40)
41target_include_directories(DirectX-Headers PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/directx)
42
43add_library(Microsoft::DirectX-Headers ALIAS DirectX-Headers)
44
45add_library(DirectX-Guids STATIC src/dxguids.cpp)
46target_link_libraries(DirectX-Guids PRIVATE DirectX-Headers)
47
48add_library(Microsoft::DirectX-Guids ALIAS DirectX-Guids)
49
50# For non-Windows targets, also add the WSL stubs to the include path
51if (NOT WIN32)
52 target_include_directories(DirectX-Headers SYSTEM PUBLIC
53 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/wsl/stubs>"
54 "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/wsl/stubs>"
55 )
56elseif((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
57 # MinGW has RPC headers which define old versions, and complain if D3D
58 # headers are included before the RPC headers, since D3D headers were
59 # generated with new MIDL and "require" new RPC headers.
60 target_compile_definitions(DirectX-Headers PRIVATE "__REQUIRED_RPCNDR_H_VERSION__=475")
61 target_compile_definitions(DirectX-Guids PRIVATE "__REQUIRED_RPCNDR_H_VERSION__=475")
62endif()
63
64if (DXHEADERS_INSTALL)
65 # Install the targets
66 install(TARGETS DirectX-Headers DirectX-Guids
67 EXPORT DirectX-Headers-Targets
68 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
69 # Create the targets CMake file which contains the above definitions
70 install(EXPORT DirectX-Headers-Targets FILE directx-headers-targets.cmake
71 NAMESPACE Microsoft::
72 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
73
74 # Install the actual includes
75 install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/"
76 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
77
78 # Create the CMake config files
79 include(CMakePackageConfigHelpers)
80 write_basic_package_version_file("directx-headers-config-version.cmake"
81 VERSION ${PROJECT_VERSION}
82 COMPATIBILITY SameMajorVersion)
83 configure_package_config_file(
84 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/directx-headers-config.cmake.in"
85 "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake"
86 INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
87
88 # Install the CMake config files
89 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config.cmake"
90 "${CMAKE_CURRENT_BINARY_DIR}/directx-headers-config-version.cmake"
91 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/directx-headers/cmake)
92
93 # Create pkg-config file
94 include(cmake/JoinPaths.cmake)
95 # from: https://github.com/jtojnar/cmake-snips#concatenating-paths-when-building-pkg-config-files
96 join_paths(DIRECTX_INCLUDEDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}")
97 join_paths(DIRECTX_LIBDIR_FOR_PKG_CONFIG "\${prefix}" "${CMAKE_INSTALL_LIBDIR}")
98 configure_file(
99 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/DirectX-Headers.pc.in"
100 "${CMAKE_CURRENT_BINARY_DIR}/DirectX-Headers.pc" @ONLY)
101
102 # Install the pkg-config file
103 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/DirectX-Headers.pc"
104 DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
105
106endif()
107
108if (BUILD_TESTING)
109 if (DXHEADERS_BUILD_TEST)
110 add_subdirectory(test)
111 endif()
112
113 if (DXHEADERS_BUILD_GOOGLE_TEST)
114 # We do not want to install GoogleTest when packaging DirectX-Headers.
115 set(INSTALL_GTEST OFF)
116 add_subdirectory(googletest)
117 endif()
118endif()
diff --git a/contrib/DirectX-Headers-1.618.2/CMakePresets.json b/contrib/DirectX-Headers-1.618.2/CMakePresets.json
new file mode 100644
index 0000000..e728c20
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/CMakePresets.json
@@ -0,0 +1,224 @@
1{
2 "version": 2,
3 "configurePresets": [
4 {
5 "name": "base",
6 "displayName": "Basic Config",
7 "description": "Basic build using Ninja generator",
8 "generator": "Ninja",
9 "hidden": true,
10 "binaryDir": "${sourceDir}/out/build/${presetName}",
11 "cacheVariables": { "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" }
12 },
13
14 {
15 "name": "x64",
16 "architecture": {
17 "value": "x64",
18 "strategy": "external"
19 },
20 "hidden": true
21 },
22 {
23 "name": "x86",
24 "architecture": {
25 "value": "x86",
26 "strategy": "external"
27 },
28 "hidden": true
29 },
30 {
31 "name": "ARM64",
32 "architecture": {
33 "value": "arm64",
34 "strategy": "external"
35 },
36 "hidden": true
37 },
38 {
39 "name": "ARM64EC",
40 "architecture": {
41 "value": "arm64ec",
42 "strategy": "external"
43 },
44 "environment": {
45 "CFLAGS": "/arm64EC",
46 "CXXFLAGS": "/arm64EC"
47 },
48 "hidden": true
49 },
50
51 {
52 "name": "Debug",
53 "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" },
54 "hidden": true
55 },
56 {
57 "name": "Release",
58 "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo" },
59 "hidden": true
60 },
61
62 {
63 "name": "MSVC",
64 "hidden": true,
65 "cacheVariables": {
66 "CMAKE_CXX_COMPILER": "cl.exe",
67 "CMAKE_C_COMPILER": "cl.exe"
68 },
69 "toolset": {
70 "value": "host=x64",
71 "strategy": "external"
72 }
73 },
74 {
75 "name": "Clang",
76 "hidden": true,
77 "cacheVariables": {
78 "CMAKE_CXX_COMPILER": "clang-cl.exe",
79 "CMAKE_C_COMPILER": "clang-cl.exe"
80 },
81 "toolset": {
82 "value": "host=x64",
83 "strategy": "external"
84 }
85 },
86 {
87 "name": "Clang-X86",
88 "environment": {
89 "CFLAGS": "-m32",
90 "CXXFLAGS": "-m32"
91 },
92 "hidden": true
93 },
94 {
95 "name": "Clang-AArch64",
96 "environment": {
97 "CFLAGS": "--target=arm64-pc-windows-msvc",
98 "CXXFLAGS": "--target=arm64-pc-windows-msvc"
99 },
100 "hidden": true
101 },
102 {
103 "name": "GNUC",
104 "hidden": true,
105 "cacheVariables": {
106 "CMAKE_CXX_COMPILER": "g++.exe",
107 "CMAKE_C_COMPILER": "gcc.exe",
108 "DXHEADERS_BUILD_TEST": false
109 },
110 "toolset": {
111 "value": "host=x64",
112 "strategy": "external"
113 }
114 },
115 {
116 "name": "Intel",
117 "hidden": true,
118 "cacheVariables": {
119 "CMAKE_CXX_COMPILER": "icl.exe",
120 "DXHEADERS_BUILD_GOOGLE_TEST": false,
121 "DXHEADERS_BUILD_TEST": false
122 },
123 "toolset": {
124 "value": "host=x64",
125 "strategy": "external"
126 }
127 },
128 {
129 "name": "IntelLLVM",
130 "hidden": true,
131 "cacheVariables": {
132 "CMAKE_CXX_COMPILER": "icx.exe",
133 "DXHEADERS_BUILD_GOOGLE_TEST": false
134 },
135 "toolset": {
136 "value": "host=x64",
137 "strategy": "external"
138 }
139 },
140
141 {
142 "name": "UWP",
143 "cacheVariables": {
144 "CMAKE_SYSTEM_NAME": "WindowsStore",
145 "CMAKE_SYSTEM_VERSION": "10.0"
146 },
147 "hidden": true
148 },
149 {
150 "name": "NoTests",
151 "hidden": true,
152 "cacheVariables": {
153 "DXHEADERS_BUILD_TEST": false,
154 "DXHEADERS_BUILD_GOOGLE_TEST": false
155 }
156 },
157
158 { "name": "x64-Debug" , "description": "MSVC for x64 (Debug)", "inherits": [ "base", "x64", "Debug", "MSVC" ] },
159 { "name": "x64-Release" , "description": "MSVC for x64 (Release)", "inherits": [ "base", "x64", "Release", "MSVC" ] },
160 { "name": "x86-Debug" , "description": "MSVC for x86 (Debug)", "inherits": [ "base", "x86", "Debug", "MSVC" ] },
161 { "name": "x86-Release" , "description": "MSVC for x86 (Release)", "inherits": [ "base", "x86", "Release", "MSVC" ] },
162 { "name": "arm64-Debug" , "description": "MSVC for ARM64 (Debug)", "inherits": [ "base", "ARM64", "Debug", "MSVC" ] },
163 { "name": "arm64-Release" , "description": "MSVC for ARM64 (Release)", "inherits": [ "base", "ARM64", "Release", "MSVC" ] },
164 { "name": "arm64ec-Debug" , "description": "MSVC for ARM64EC (Debug)", "inherits": [ "base", "ARM64EC", "Debug", "MSVC" ] },
165 { "name": "arm64ec-Release" , "description": "MSVC for ARM64EC (Release)", "inherits": [ "base", "ARM64EC", "Release", "MSVC" ] },
166
167 { "name": "x64-Debug-UWP" , "description": "MSVC for x64 (Debug) for UWP", "inherits": [ "base", "x64", "Debug", "MSVC", "UWP" ] },
168 { "name": "x64-Release-UWP" , "description": "MSVC for x64 (Release) for UWP", "inherits": [ "base", "x64", "Release", "MSVC", "UWP" ] },
169 { "name": "x86-Debug-UWP" , "description": "MSVC for x86 (Debug) for UWP", "inherits": [ "base", "x86", "Debug", "MSVC", "UWP" ] },
170 { "name": "x86-Release-UWP" , "description": "MSVC for x86 (Release) for UWP", "inherits": [ "base", "x86", "Release", "MSVC", "UWP" ] },
171 { "name": "arm64-Debug-UWP" , "description": "MSVC for ARM64 (Debug) for UWP", "inherits": [ "base", "ARM64", "Debug", "MSVC", "UWP" ] },
172 { "name": "arm64-Release-UWP", "description": "MSVC for ARM64 (Release) for UWP", "inherits": [ "base", "ARM64", "Release", "MSVC", "UWP" ] },
173
174 { "name": "x64-Debug-Clang" , "description": "Clang/LLVM for x64 (Debug)", "inherits": [ "base", "x64", "Debug", "Clang" ] },
175 { "name": "x64-Release-Clang" , "description": "Clang/LLVM for x64 (Release)", "inherits": [ "base", "x64", "Release", "Clang" ] },
176 { "name": "x86-Debug-Clang" , "description": "Clang/LLVM for x86 (Debug)", "inherits": [ "base", "x86", "Debug", "Clang", "Clang-X86" ] },
177 { "name": "x86-Release-Clang" , "description": "Clang/LLVM for x86 (Release)", "inherits": [ "base", "x86", "Release", "Clang", "Clang-X86" ] },
178 { "name": "arm64-Debug-Clang" , "description": "Clang/LLVM for AArch64 (Debug)", "inherits": [ "base", "ARM64", "Debug", "Clang", "Clang-AArch64" ] },
179 { "name": "arm64-Release-Clang", "description": "Clang/LLVM for AArch64 (Release)", "inherits": [ "base", "ARM64", "Release", "Clang", "Clang-AArch64" ] },
180
181 { "name": "x64-Debug-UWP-Clang" , "description": "Clang/LLVM for x64 (Debug) for UWP", "inherits": [ "base", "x64", "Debug", "Clang", "UWP" ] },
182 { "name": "x64-Release-UWP-Clang" , "description": "Clang/LLVM for x64 (Release) for UWP", "inherits": [ "base", "x64", "Release", "Clang", "UWP" ] },
183 { "name": "x86-Debug-UWP-Clang" , "description": "Clang/LLVM for x86 (Debug) for UWP", "inherits": [ "base", "x86", "Debug", "Clang", "Clang-X86", "UWP" ] },
184 { "name": "x86-Release-UWP-Clang" , "description": "Clang/LLVM for x86 (Release) for UWP", "inherits": [ "base", "x86", "Release", "Clang", "Clang-X86", "UWP" ] },
185 { "name": "arm64-Debug-UWP-Clang" , "description": "Clang/LLVM for AArch64 (Debug) for UWP", "inherits": [ "base", "ARM64", "Debug", "Clang", "Clang-AArch64", "UWP" ] },
186 { "name": "arm64-Release-UWP-Clang", "description": "Clang/LLVM for AArch64 (Release) for UWP", "inherits": [ "base", "ARM64", "Release", "Clang", "Clang-AArch64", "UWP" ] },
187
188 { "name": "x64-Debug-ICC" , "description": "Intel Classic Compiler (Debug)", "inherits": [ "base", "x64", "Debug", "Intel" ] },
189 { "name": "x64-Release-ICC" , "description": "Intel Classic Compiler (Release)", "inherits": [ "base", "x64", "Release", "Intel" ] },
190 { "name": "x86-Debug-ICC" , "description": "Intel Classic Compiler (Debug)", "inherits": [ "base", "x86", "Debug", "Intel" ] },
191 { "name": "x86-Release-ICC" , "description": "Intel Classic Compiler (Release)", "inherits": [ "base", "x86", "Release", "Intel" ] },
192
193 { "name": "x64-Debug-ICX" , "description": "Intel oneAPI Compiler (Debug)", "inherits": [ "base", "x64", "Debug", "IntelLLVM" ] },
194 { "name": "x64-Release-ICX" , "description": "Intel oneAPI Compiler (Release)", "inherits": [ "base", "x64", "Release", "IntelLLVM" ] },
195 { "name": "x86-Debug-ICX" , "description": "Intel oneAPI Compiler (Debug)", "inherits": [ "base", "x86", "Debug", "IntelLLVM" ] },
196 { "name": "x86-Release-ICX" , "description": "Intel oneAPI Compiler (Release)", "inherits": [ "base", "x86", "Release", "IntelLLVM" ] },
197
198 { "name": "x64-Debug-MinGW" , "description": "MinG-W64 (Debug)", "inherits": [ "base", "x64", "Debug", "GNUC" ], "environment": { "PATH": "$penv{PATH};c:/mingw64/bin" } },
199 { "name": "x64-Release-MinGW", "description": "MinG-W64 (Release)", "inherits": [ "base", "x64", "Release", "GNUC" ], "environment": { "PATH": "$penv{PATH};c:/mingw64/bin" } },
200 { "name": "x86-Debug-MinGW" , "description": "MinG-W32 (Debug)", "inherits": [ "base", "x86", "Debug", "GNUC" ], "environment": { "PATH": "$penv{PATH};c:/mingw32/bin" } },
201 { "name": "x86-Release-MinGW", "description": "MinG-W32 (Release)", "inherits": [ "base", "x86", "Release", "GNUC" ], "environment": { "PATH": "$penv{PATH};c:/mingw32/bin" } },
202
203 { "name": "x64-Debug-WSL" , "description": "WSL x64 (Debug) for Windows 11", "inherits": [ "base", "x64", "Debug" ] },
204 { "name": "x64-Release-WSL" , "description": "WSL x64 (Release) for Windows 11", "inherits": [ "base", "x64", "Release" ] },
205 { "name": "arm64-Debug-WSL" , "description": "WSL AArch64 (Debug) for Windows 11", "inherits": [ "base", "ARM64", "Debug" ] },
206 { "name": "arm64-Release-WSL", "description": "WSL AArch64 (Release) for Windows 11", "inherits": [ "base", "ARM64", "Release" ] },
207
208 { "name": "x64-Debug-Linux" , "description": "Linux x64 (Debug)", "inherits": [ "base", "x64", "Debug", "NoTests" ] },
209 { "name": "x64-Release-Linux" , "description": "Linux x64 (Release)", "inherits": [ "base", "x64", "Release", "NoTests" ] },
210 { "name": "arm64-Debug-Linux" , "description": "Linux AArch64 (Debug)", "inherits": [ "base", "ARM64", "Debug", "NoTests" ] },
211 { "name": "arm64-Release-Linux", "description": "Linux AArch64 (Release)", "inherits": [ "base", "ARM64", "Release", "NoTests" ] }
212 ],
213 "testPresets": [
214 { "name": "x64-Debug" , "configurePreset": "x64-Debug" },
215 { "name": "x64-Release" , "configurePreset": "x64-Release" },
216 { "name": "x86-Debug" , "configurePreset": "x86-Debug" },
217 { "name": "x86-Release" , "configurePreset": "x86-Release" },
218
219 { "name": "arm64-Debug" , "configurePreset": "arm64-Debug" },
220 { "name": "arm64-Release" , "configurePreset": "arm64-Release" },
221 { "name": "arm64ec-Debug" , "configurePreset": "arm64ec-Debug" },
222 { "name": "arm64ec-Release", "configurePreset": "arm64ec-Release" }
223 ]
224}
diff --git a/contrib/DirectX-Headers-1.618.2/CODE_OF_CONDUCT.md b/contrib/DirectX-Headers-1.618.2/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..686e5e7
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/CODE_OF_CONDUCT.md
@@ -0,0 +1,10 @@
1# Microsoft Open Source Code of Conduct
2
3This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
4
5Resources:
6
7- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
8- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
9- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
10- Employees can reach out at [aka.ms/opensource/moderation-support](https://aka.ms/opensource/moderation-support)
diff --git a/contrib/DirectX-Headers-1.618.2/LICENSE b/contrib/DirectX-Headers-1.618.2/LICENSE
new file mode 100644
index 0000000..63447fd
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/README.md b/contrib/DirectX-Headers-1.618.2/README.md
new file mode 100644
index 0000000..09f6299
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/README.md
@@ -0,0 +1,63 @@
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
7Make sure that you visit the [DirectX Landing Page](https://devblogs.microsoft.com/directx/landing-page/) for more resources for DirectX developers.
8
9## Directory Structure
10
11* `/`: 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.
12* `/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.
13* `/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.
14* `/include/dxguids`: This header allows an application to use `uuidof<T>()` consistently between Windows and WSL, instead of `__uuidof()`.
15* `/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.
16* `/test`: Simple CMake/Meson projects for validating the headers can be included in a given environment
17
18## Use on Windows
19
20Note 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.
21
22## Use on WSL
23
24Note: 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.
25
26Note: WSL support is only available for 64-bit binaries.
27
28The 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:
29
30|Type|Reason|
31|---|---|
32|`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.|
33|`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.|
34
35Additionally, 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.
36
37## Ways to consume
38
39There are various ways to consume the headers in this project:
40
41* Manually: Just copy the headers somewhere and point your project at them.
42* 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
43* 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.
44* FetchContent CMake (3.11+): Fetch this library using Git and easily add it to your project.
45* Meson subproject/wrap: Add this entire project as a subproject of your larger project, and use `subproject` or `dependency` to consume it.
46* Pkg-config: Use Meson to build this project, and the resulting installed package can be found via pkg-config.
47* vcpkg: A vcpkg port has [been added](https://github.com/microsoft/vcpkg/tree/master/ports/directx-headers).
48* NuGet: Download the [DirectX 12 Agility SDK](https://devblogs.microsoft.com/directx/announcing-dx12agility/) from [NuGet.org](https://www.nuget.org/packages/Microsoft.Direct3D.D3D12)
49 * For more info about the Agility SDK, see the [getting started guide](https://devblogs.microsoft.com/directx/gettingstarted-dx12agility/)
50
51Contributions for new mechanisms are welcome.
52
53## Contributing
54
55This 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.
56
57When 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.
58
59This 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.
60
61## Trademarks
62
63This 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.
diff --git a/contrib/DirectX-Headers-1.618.2/SECURITY.md b/contrib/DirectX-Headers-1.618.2/SECURITY.md
new file mode 100644
index 0000000..b3c89ef
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/SECURITY.md
@@ -0,0 +1,41 @@
1<!-- BEGIN MICROSOFT SECURITY.MD V0.0.9 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) and [Xamarin](https://github.com/xamarin).
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://aka.ms/security.md/definition), 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://aka.ms/security.md/msrc/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://aka.ms/security.md/msrc/pgp).
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://aka.ms/security.md/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://aka.ms/security.md/cvd).
40
41<!-- END MICROSOFT SECURITY.MD BLOCK -->
diff --git a/contrib/DirectX-Headers-1.618.2/cmake/DirectX-Headers.pc.in b/contrib/DirectX-Headers-1.618.2/cmake/DirectX-Headers.pc.in
new file mode 100644
index 0000000..f33d3ff
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/cmake/DirectX-Headers.pc.in
@@ -0,0 +1,10 @@
1prefix=@CMAKE_INSTALL_PREFIX@
2libdir=@DIRECTX_LIBDIR_FOR_PKG_CONFIG@
3includedir=@DIRECTX_INCLUDEDIR_FOR_PKG_CONFIG@
4
5Name: @PROJECT_NAME@
6Description: Headers for using D3D12
7URL: https://github.com/microsoft/DirectX-Headers
8Version: @PROJECT_VERSION@
9Cflags: -I${includedir}
10Libs: -lDirectX-Headers -lDirectX-Guids
diff --git a/contrib/DirectX-Headers-1.618.2/cmake/JoinPaths.cmake b/contrib/DirectX-Headers-1.618.2/cmake/JoinPaths.cmake
new file mode 100644
index 0000000..c68d91b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/cmake/JoinPaths.cmake
@@ -0,0 +1,23 @@
1# This module provides function for joining paths
2# known from most languages
3#
4# SPDX-License-Identifier: (MIT OR CC0-1.0)
5# Copyright 2020 Jan Tojnar
6# https://github.com/jtojnar/cmake-snips
7#
8# Modelled after Python’s os.path.join
9# https://docs.python.org/3.7/library/os.path.html#os.path.join
10# Windows not supported
11function(join_paths joined_path first_path_segment)
12 set(temp_path "${first_path_segment}")
13 foreach(current_segment IN LISTS ARGN)
14 if(NOT ("${current_segment}" STREQUAL ""))
15 if(IS_ABSOLUTE "${current_segment}")
16 set(temp_path "${current_segment}")
17 else()
18 set(temp_path "${temp_path}/${current_segment}")
19 endif()
20 endif()
21 endforeach()
22 set(${joined_path} "${temp_path}" PARENT_SCOPE)
23endfunction()
diff --git a/contrib/DirectX-Headers-1.618.2/cmake/directx-headers-config.cmake.in b/contrib/DirectX-Headers-1.618.2/cmake/directx-headers-config.cmake.in
new file mode 100644
index 0000000..50c40bc
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/googletest/CMakeLists.txt b/contrib/DirectX-Headers-1.618.2/googletest/CMakeLists.txt
new file mode 100644
index 0000000..ff979d9
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/googletest/CMakeLists.txt
@@ -0,0 +1,45 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3include(FetchContent)
4
5set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
6FetchContent_Declare(
7 googletest
8 GIT_REPOSITORY https://github.com/google/googletest.git
9 GIT_TAG main # Live at head
10)
11FetchContent_MakeAvailable(googletest)
12
13list(APPEND dxlibs "")
14if(EXISTS "/usr/lib/wsl/lib/")
15 find_library(libd3d12 d3d12 HINTS /usr/lib/wsl/lib)
16 list(APPEND dxlibs ${libd3d12})
17else()
18# Fallback to default: let CMake look for libs
19 list(APPEND dxlibs d3d12)
20endif()
21
22project(DirectX-Headers-GoogleTest-Suite
23 DESCRIPTION "DirectX-Header tests using GooleTest"
24 HOMEPAGE_URL "https://github.com/microsoft/DirectX-Headers/"
25 LANGUAGES CXX)
26
27set(CMAKE_CXX_STANDARD 17)
28set(CMAKE_CXX_STANDARD_REQUIRED ON)
29set(CMAKE_CXX_EXTENSIONS OFF)
30
31add_executable(Feature-Support-Test feature_support_test.cpp)
32target_link_libraries(Feature-Support-Test DirectX-Headers DirectX-Guids ${dxlibs} gtest_main)
33add_test(Feature-Support-Test Feature-Support-Test)
34
35if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
36 target_compile_options(Feature-Support-Test PRIVATE -Wno-unused-variable)
37endif()
38
39if(WIN32)
40 target_compile_definitions(Feature-Support-Test PRIVATE _UNICODE UNICODE _WIN32_WINNT=0x0A00)
41
42 if(WINDOWS_STORE)
43 target_compile_definitions(Feature-Support-Test PRIVATE WINAPI_FAMILY=WINAPI_FAMILY_APP)
44 endif()
45endif()
diff --git a/contrib/DirectX-Headers-1.618.2/googletest/MockDevice.hpp b/contrib/DirectX-Headers-1.618.2/googletest/MockDevice.hpp
new file mode 100644
index 0000000..748d5ba
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/googletest/MockDevice.hpp
@@ -0,0 +1,1299 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3#ifndef DIRECTX_HEADERS_MOCK_DEVICE_HPP
4#define DIRECTX_HEADERS_MOCK_DEVICE_HPP
5#include <unordered_map>
6
7#ifndef __RPC_FAR
8#define __RPC_FAR
9#endif
10
11#include <directx/d3d12.h>
12#include <directx/dxcore.h>
13#include <directx/d3dx12.h>
14#include "dxguids/dxguids.h"
15
16class MockDevice : public ID3D12Device
17{
18public: // Constructors and custom functions
19 MockDevice(UINT NodeCount = 1)
20 : m_NodeCount(NodeCount)
21 , m_TileBasedRenderer(m_NodeCount, false)
22 , m_UMA(m_NodeCount, false)
23 , m_CacheCoherentUMA(m_NodeCount, false)
24 , m_IsolatedMMU(m_NodeCount, false)
25 , m_ProtectedResourceSessionSupport(m_NodeCount, D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE)
26 , m_HeapSerializationTier(m_NodeCount, D3D12_HEAP_SERIALIZATION_TIER_0)
27 , m_ProtectedResourceSessionTypeCount(m_NodeCount, 0)
28 , m_ProtectedResourceSessionTypes(m_NodeCount)
29 {
30
31 }
32
33 virtual ~MockDevice() = default;
34
35 void SetNodeCount(UINT NewCount)
36 {
37 m_NodeCount = NewCount;
38 m_TileBasedRenderer.resize(NewCount);
39 m_UMA.resize(NewCount);
40 m_CacheCoherentUMA.resize(NewCount);
41 m_IsolatedMMU.resize(NewCount);
42 m_ProtectedResourceSessionSupport.resize(NewCount);
43 m_HeapSerializationTier.resize(NewCount);
44 m_ProtectedResourceSessionTypeCount.resize(NewCount);
45 m_ProtectedResourceSessionTypes.resize(NewCount);
46 }
47
48public: // ID3D12Device
49 UINT STDMETHODCALLTYPE GetNodeCount() override
50 {
51 return m_NodeCount;
52 }
53
54 HRESULT STDMETHODCALLTYPE CreateCommandQueue(
55 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
56 REFIID riid,
57 _COM_Outptr_ void **ppCommandQueue
58 ) override
59 {
60 return S_OK;
61 }
62
63 HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
64 _In_ D3D12_COMMAND_LIST_TYPE type,
65 REFIID riid,
66 _COM_Outptr_ void **ppCommandAllocator
67 ) override
68 {
69 return S_OK;
70 }
71
72 HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
73 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
74 REFIID riid,
75 _COM_Outptr_ void **ppPipelineState
76 ) override
77 {
78 return S_OK;
79 }
80
81 HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
82 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
83 REFIID riid,
84 _COM_Outptr_ void **ppPipelineState
85 ) override
86 {
87 return S_OK;
88 }
89
90 HRESULT STDMETHODCALLTYPE CreateCommandList(
91 _In_ UINT nodeMask,
92 _In_ D3D12_COMMAND_LIST_TYPE type,
93 _In_ ID3D12CommandAllocator *pCommandAllocator,
94 _In_opt_ ID3D12PipelineState *pInitialState,
95 REFIID riid,
96 _COM_Outptr_ void **ppCommandList
97 ) override
98 {
99 return S_OK;
100 }
101
102 virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
103 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
104 REFIID riid,
105 _COM_Outptr_ void **ppvHeap
106 ) override
107 {
108 return S_OK;
109 }
110
111 virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
112 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType
113 ) override
114 {
115 return 0;
116 }
117
118 virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
119 _In_ UINT nodeMask,
120 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
121 _In_ SIZE_T blobLengthInBytes,
122 REFIID riid,
123 _COM_Outptr_ void **ppvRootSignature
124 ) override
125 {
126 return S_OK;
127 }
128
129 virtual void STDMETHODCALLTYPE CreateConstantBufferView(
130 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
131 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
132 ) override
133 {
134 return;
135 }
136
137 virtual void STDMETHODCALLTYPE CreateShaderResourceView(
138 _In_opt_ ID3D12Resource *pResource,
139 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
140 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
141 ) override
142 {
143 return;
144 }
145
146 virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
147 _In_opt_ ID3D12Resource *pResource,
148 _In_opt_ ID3D12Resource *pCounterResource,
149 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
150 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
151 ) override
152 {
153 return;
154 }
155
156 virtual void STDMETHODCALLTYPE CreateRenderTargetView(
157 _In_opt_ ID3D12Resource *pResource,
158 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
159 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor
160 ) override
161 {
162 return;
163 }
164
165 virtual void STDMETHODCALLTYPE CreateDepthStencilView(
166 _In_opt_ ID3D12Resource *pResource,
167 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
168 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) override
169 {
170 return;
171 }
172
173 virtual void STDMETHODCALLTYPE CreateSampler(
174 _In_ const D3D12_SAMPLER_DESC *pDesc,
175 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) override
176 {
177 return;
178 }
179
180 virtual void STDMETHODCALLTYPE CopyDescriptors(
181 _In_ UINT NumDestDescriptorRanges,
182 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
183 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
184 _In_ UINT NumSrcDescriptorRanges,
185 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
186 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
187 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) override
188 {
189 return;
190 }
191
192 virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
193 _In_ UINT NumDescriptors,
194 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
195 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
196 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) override
197 {
198 return;
199 }
200
201#if defined(_MSC_VER) || !defined(_WIN32)
202 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
203 _In_ UINT visibleMask,
204 _In_ UINT numResourceDescs,
205 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) override
206 {
207 D3D12_RESOURCE_ALLOCATION_INFO mockInfo = {};
208 return mockInfo;
209 }
210#else
211 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo(
212 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
213 _In_ UINT visibleMask,
214 _In_ UINT numResourceDescs,
215 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) override
216 {
217 if (RetVal)
218 {
219 *RetVal = {};
220 }
221 return RetVal;
222 }
223#endif
224
225#if defined(_MSC_VER) || !defined(_WIN32)
226 virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
227 _In_ UINT nodeMask,
228 D3D12_HEAP_TYPE heapType) override
229 {
230 D3D12_HEAP_PROPERTIES mockProps = {};
231 return mockProps;
232 }
233#else
234 virtual D3D12_HEAP_PROPERTIES *STDMETHODCALLTYPE GetCustomHeapProperties(
235 D3D12_HEAP_PROPERTIES * RetVal,
236 _In_ UINT nodeMask,
237 D3D12_HEAP_TYPE heapType) override
238 {
239 if (RetVal)
240 {
241 *RetVal = {};
242 }
243 return RetVal;
244 }
245#endif
246
247 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
248 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
249 D3D12_HEAP_FLAGS HeapFlags,
250 _In_ const D3D12_RESOURCE_DESC *pDesc,
251 D3D12_RESOURCE_STATES InitialResourceState,
252 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
253 REFIID riidResource,
254 _COM_Outptr_opt_ void **ppvResource) override
255 {
256 return S_OK;
257 }
258
259 virtual HRESULT STDMETHODCALLTYPE CreateHeap(
260 _In_ const D3D12_HEAP_DESC *pDesc,
261 REFIID riid,
262 _COM_Outptr_opt_ void **ppvHeap) override
263 {
264 return S_OK;
265 }
266
267 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
268 _In_ ID3D12Heap *pHeap,
269 UINT64 HeapOffset,
270 _In_ const D3D12_RESOURCE_DESC *pDesc,
271 D3D12_RESOURCE_STATES InitialState,
272 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
273 REFIID riid,
274 _COM_Outptr_opt_ void **ppvResource) override
275 {
276 return S_OK;
277 }
278
279 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
280 _In_ const D3D12_RESOURCE_DESC *pDesc,
281 D3D12_RESOURCE_STATES InitialState,
282 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
283 REFIID riid,
284 _COM_Outptr_opt_ void **ppvResource) override
285 {
286 return S_OK;
287 }
288
289 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
290 _In_ ID3D12DeviceChild *pObject,
291 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
292 DWORD Access,
293 _In_opt_ LPCWSTR Name,
294 _Out_ HANDLE *pHandle) override
295 {
296 return S_OK;
297 }
298
299 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
300 _In_ HANDLE NTHandle,
301 REFIID riid,
302 _COM_Outptr_opt_ void **ppvObj) override
303 {
304 return S_OK;
305 }
306
307 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
308 _In_ LPCWSTR Name,
309 DWORD Access,
310 /* [annotation][out] */
311 _Out_ HANDLE *pNTHandle) override
312 {
313 return S_OK;
314 }
315
316 virtual HRESULT STDMETHODCALLTYPE MakeResident(
317 UINT NumObjects,
318 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) override
319 {
320 return S_OK;
321 }
322
323 virtual HRESULT STDMETHODCALLTYPE Evict(
324 UINT NumObjects,
325 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) override
326 {
327 return S_OK;
328 }
329
330 virtual HRESULT STDMETHODCALLTYPE CreateFence(
331 UINT64 InitialValue,
332 D3D12_FENCE_FLAGS Flags,
333 REFIID riid,
334 _COM_Outptr_ void **ppFence) override
335 {
336 return S_OK;
337 }
338
339 virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) override
340 {
341 return S_OK;
342 }
343
344 virtual void STDMETHODCALLTYPE GetCopyableFootprints(
345 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
346 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
347 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
348 UINT64 BaseOffset,
349 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
350 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
351 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
352 _Out_opt_ UINT64 *pTotalBytes) override
353 {
354 return;
355 }
356
357 virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
358 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
359 REFIID riid,
360 _COM_Outptr_opt_ void **ppvHeap) override
361 {
362 return S_OK;
363 }
364
365 virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
366 BOOL Enable) override
367 {
368 return S_OK;
369 }
370
371 virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
372 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
373 _In_opt_ ID3D12RootSignature *pRootSignature,
374 REFIID riid,
375 _COM_Outptr_opt_ void **ppvCommandSignature) override
376 {
377 return S_OK;
378 }
379
380 virtual void STDMETHODCALLTYPE GetResourceTiling(
381 _In_ ID3D12Resource *pTiledResource,
382 _Out_opt_ UINT *pNumTilesForEntireResource,
383 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
384 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
385 _Inout_opt_ UINT *pNumSubresourceTilings,
386 _In_ UINT FirstSubresourceTilingToGet,
387 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) override
388 {
389 return;
390 }
391
392#if defined(_MSC_VER) || !defined(_WIN32)
393 virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) override
394 {
395 LUID mockLuid = {};
396 return mockLuid;
397 }
398#else
399 virtual LUID *STDMETHODCALLTYPE GetAdapterLuid(
400 LUID * RetVal) override
401 {
402 if (RetVal)
403 {
404 *RetVal = {};
405 }
406 return RetVal;
407 }
408#endif
409
410public: // ID3D12Object
411 virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
412 _In_ REFGUID guid,
413 _Inout_ UINT *pDataSize,
414 _Out_writes_bytes_opt_( *pDataSize ) void *pData) override
415 {
416 return S_OK;
417 }
418
419 virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
420 _In_ REFGUID guid,
421 _In_ UINT DataSize,
422 _In_reads_bytes_opt_( DataSize ) const void *pData) override
423 {
424 return S_OK;
425 }
426
427 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
428 _In_ REFGUID guid,
429 _In_opt_ const IUnknown *pData) override
430 {
431 return S_OK;
432 }
433
434 virtual HRESULT STDMETHODCALLTYPE SetName(
435 _In_z_ LPCWSTR Name) override
436 {
437 return S_OK;
438 }
439
440public: // IUnknown
441 virtual HRESULT STDMETHODCALLTYPE QueryInterface(
442 /* [in] */ REFIID riid,
443 /* [iid_is][out] */ _COM_Outptr_ void __RPC_FAR *__RPC_FAR *ppvObject) override
444 {
445 *ppvObject = this;
446 return S_OK;
447 }
448
449 virtual ULONG STDMETHODCALLTYPE AddRef() override
450 {
451 // Casual implementation. No actual actions
452 return 0;
453 }
454
455 virtual ULONG STDMETHODCALLTYPE Release() override
456 {
457 return 0;
458 }
459
460
461 // Major function we need to work with
462 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
463 D3D12_FEATURE Feature,
464 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
465 UINT FeatureSupportDataSize
466 ) override
467 {
468 switch( Feature )
469 {
470 case D3D12_FEATURE_D3D12_OPTIONS:
471 {
472 D3D12_FEATURE_DATA_D3D12_OPTIONS* pD3D12Options = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS*>(pFeatureSupportData);
473 if (FeatureSupportDataSize != sizeof(D3D12_FEATURE_DATA_D3D12_OPTIONS))
474 {
475 return E_INVALIDARG;
476 }
477 pD3D12Options->DoublePrecisionFloatShaderOps = m_DoublePrecisionFloatShaderOps;
478 pD3D12Options->OutputMergerLogicOp = m_OutputMergerLogicOp;
479 pD3D12Options->MinPrecisionSupport = m_ShaderMinPrecisionSupport10Bit | m_ShaderMinPrecisionSupport16Bit;
480 pD3D12Options->TiledResourcesTier = m_TiledResourcesTier;
481 pD3D12Options->ResourceBindingTier = m_ResourceBindingTier;
482 pD3D12Options->PSSpecifiedStencilRefSupported = (m_FeatureLevel >= D3D_FEATURE_LEVEL_11_1) && m_PSSpecifiedStencilRefSupported;
483 pD3D12Options->TypedUAVLoadAdditionalFormats = (m_FeatureLevel >= D3D_FEATURE_LEVEL_11_0) && m_TypedUAVLoadAdditionalFormats;
484 pD3D12Options->ROVsSupported = (m_FeatureLevel >= D3D_FEATURE_LEVEL_11_0) && m_ROVsSupported;
485 pD3D12Options->ConservativeRasterizationTier = (m_FeatureLevel >= D3D_FEATURE_LEVEL_11_1) ? m_ConservativeRasterizationTier : D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED;
486 pD3D12Options->MaxGPUVirtualAddressBitsPerResource = m_MaxGPUVirtualAddressBitsPerResource;
487 pD3D12Options->StandardSwizzle64KBSupported = m_StandardSwizzle64KBSupported;
488 #ifdef DX_ASTC_PROTOTYPE_ENABLED
489 pD3D12Options->ASTCProfile = ASTCProfile();
490 #endif
491 pD3D12Options->CrossNodeSharingTier = m_CrossNodeSharingTier;
492 pD3D12Options->CrossAdapterRowMajorTextureSupported = m_CrossAdapterRowMajorTextureSupported;
493 pD3D12Options->VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation = m_VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
494 pD3D12Options->ResourceHeapTier = m_ResourceHeapTier;
495 } return S_OK;
496
497 case D3D12_FEATURE_D3D12_OPTIONS1:
498 {
499 if (!m_Options1Available)
500 {
501 return E_INVALIDARG;
502 }
503 D3D12_FEATURE_DATA_D3D12_OPTIONS1* pD3D12Options1 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS1*>(pFeatureSupportData);
504 if (FeatureSupportDataSize != sizeof(D3D12_FEATURE_DATA_D3D12_OPTIONS1))
505 {
506 return E_INVALIDARG;
507 }
508 pD3D12Options1->WaveOps = m_WaveOpsSupported;
509 pD3D12Options1->WaveLaneCountMin = m_WaveLaneCountMin;
510 pD3D12Options1->WaveLaneCountMax = m_WaveLaneCountMax;
511 pD3D12Options1->TotalLaneCount = m_TotalLaneCount;
512 pD3D12Options1->ExpandedComputeResourceStates = m_ExpandedComputeResourceStates;
513 pD3D12Options1->Int64ShaderOps = m_Int64ShaderOpsSupported;
514 } return S_OK;
515
516
517 case D3D12_FEATURE_D3D12_OPTIONS2:
518 {
519 if (!m_Options2Available)
520 {
521 return E_INVALIDARG;
522 }
523
524 D3D12_FEATURE_DATA_D3D12_OPTIONS2* pD3D12Options2 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS2*>(pFeatureSupportData);
525 if (FeatureSupportDataSize != sizeof(D3D12_FEATURE_DATA_D3D12_OPTIONS2))
526 {
527 return E_INVALIDARG;
528 }
529 pD3D12Options2->DepthBoundsTestSupported = m_DepthBoundsTestSupport;
530 pD3D12Options2->ProgrammableSamplePositionsTier = m_ProgrammableSamplePositionsTier;
531 } return S_OK;
532
533 case D3D12_FEATURE_ROOT_SIGNATURE:
534 {
535 if (!m_RootSignatureAvailable)
536 {
537 return E_INVALIDARG;
538 }
539 D3D12_FEATURE_DATA_ROOT_SIGNATURE* pRootSig = static_cast<D3D12_FEATURE_DATA_ROOT_SIGNATURE*>(pFeatureSupportData);
540 if (FeatureSupportDataSize != sizeof(D3D12_FEATURE_DATA_ROOT_SIGNATURE))
541 {
542 return E_INVALIDARG;
543 }
544 switch (pRootSig->HighestVersion)
545 {
546 case D3D_ROOT_SIGNATURE_VERSION_1_0:
547 case D3D_ROOT_SIGNATURE_VERSION_1_1:
548 break;
549 default:
550 return E_INVALIDARG;
551 }
552 pRootSig->HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(std::min<int>(pRootSig->HighestVersion, m_RootSignatureHighestVersion));
553 } return S_OK;
554
555
556 case D3D12_FEATURE_ARCHITECTURE:
557 {
558 D3D12_FEATURE_DATA_ARCHITECTURE* pFData =
559 static_cast< D3D12_FEATURE_DATA_ARCHITECTURE* >( pFeatureSupportData );
560 if (FeatureSupportDataSize != sizeof( *pFData ))
561 {
562 return E_INVALIDARG;
563 }
564
565 // Testing only
566 // If Architecture1 is available, use data from architecture1
567 if (m_Architecture1Available)
568 {
569 D3D12_FEATURE_DATA_ARCHITECTURE1 CurFData;
570 CurFData.NodeIndex = pFData->NodeIndex;
571
572 HRESULT hr;
573 if (FAILED( hr = CheckFeatureSupport( D3D12_FEATURE_ARCHITECTURE1, &CurFData, sizeof( CurFData ) ) ))
574 {
575 return hr;
576 }
577
578 pFData->TileBasedRenderer = CurFData.TileBasedRenderer;
579 pFData->UMA = CurFData.UMA;
580 pFData->CacheCoherentUMA = CurFData.CacheCoherentUMA;
581 }
582 else // Otherwise, load the data directly
583 {
584 // The original procedure will generate and return an E_INVALIDARG error if the NodeIndex is out of scope
585 // Mocking the behavior here by returning the rror
586 if (!(pFData->NodeIndex < m_NodeCount))
587 {
588 return E_INVALIDARG;
589 }
590 pFData->TileBasedRenderer = m_TileBasedRenderer[pFData->NodeIndex];
591 pFData->UMA = m_UMA[pFData->NodeIndex];
592 pFData->CacheCoherentUMA = m_CacheCoherentUMA[pFData->NodeIndex];
593 // Note that Architecture doesn't have the IsolatedMMU field.
594 }
595 } return S_OK;
596 case D3D12_FEATURE_ARCHITECTURE1:
597 {
598 // Mocking the case where ARCHITECTURE1 is not supported
599 if (!m_Architecture1Available || !m_ArchitectureSucceed) {
600 return E_INVALIDARG;
601 }
602
603 D3D12_FEATURE_DATA_ARCHITECTURE1* pFData =
604 static_cast< D3D12_FEATURE_DATA_ARCHITECTURE1* >( pFeatureSupportData );
605 if (FeatureSupportDataSize != sizeof( *pFData ))
606 {
607 return E_INVALIDARG;
608 }
609
610 // The original procedure will generate and return an E_INVALIDARG error if the NodeIndex is out of scope
611 // Mocking the behavior here by returning the rror
612 if (!(pFData->NodeIndex < m_NodeCount))
613 {
614 return E_INVALIDARG;
615 }
616
617 UINT localIndex = pFData->NodeIndex;
618 pFData->TileBasedRenderer = m_TileBasedRenderer[localIndex];
619 pFData->UMA = m_UMA[localIndex];
620 pFData->CacheCoherentUMA = m_CacheCoherentUMA[localIndex];
621 pFData->IsolatedMMU = m_IsolatedMMU[localIndex];
622
623 } return S_OK;
624
625 case D3D12_FEATURE_FEATURE_LEVELS:
626 {
627 D3D12_FEATURE_DATA_FEATURE_LEVELS* pFData =
628 static_cast< D3D12_FEATURE_DATA_FEATURE_LEVELS* >( pFeatureSupportData );
629 if (FeatureSupportDataSize != sizeof( *pFData ))
630 {
631 return E_INVALIDARG;
632 }
633
634 if (pFData->NumFeatureLevels == 0 || pFData->pFeatureLevelsRequested == nullptr)
635 {
636 return E_INVALIDARG;
637 }
638
639 pFData->MaxSupportedFeatureLevel = D3D_FEATURE_LEVEL(0);
640 for (UINT i = 0; i < pFData->NumFeatureLevels; ++i)
641 {
642 if (pFData->pFeatureLevelsRequested[i] <= m_FeatureLevel &&
643 pFData->pFeatureLevelsRequested[i] > pFData->MaxSupportedFeatureLevel)
644 {
645 pFData->MaxSupportedFeatureLevel = pFData->pFeatureLevelsRequested[i];
646 }
647 }
648 return pFData->MaxSupportedFeatureLevel == D3D_FEATURE_LEVEL(0) ?
649 DXGI_ERROR_UNSUPPORTED : S_OK;
650 }
651
652 case D3D12_FEATURE_FORMAT_SUPPORT:
653 {
654 D3D12_FEATURE_DATA_FORMAT_SUPPORT* pFData =
655 static_cast< D3D12_FEATURE_DATA_FORMAT_SUPPORT* >( pFeatureSupportData );
656 if (FeatureSupportDataSize != sizeof( *pFData ))
657 {
658 return E_INVALIDARG;
659 }
660 m_FormatReceived = pFData->Format;
661 pFData->Support1 = m_FormatSupport1;
662 pFData->Support2 = m_FormatSupport2;
663 // Based on the original implementation, if there's no support for the format, return an E_FAIL
664 if (m_FormatSupport1 == D3D12_FORMAT_SUPPORT1_NONE && m_FormatSupport2 == D3D12_FORMAT_SUPPORT2_NONE)
665 {
666 return E_FAIL;
667 }
668 } return S_OK;
669
670 case D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS:
671 {
672 D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS* pFData =
673 static_cast< D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS* >( pFeatureSupportData );
674 if (FeatureSupportDataSize != sizeof( *pFData ))
675 {
676 return E_INVALIDARG;
677 }
678
679 m_FormatReceived = pFData->Format;
680 m_SampleCountReceived = pFData->SampleCount;
681 m_MultisampleQualityLevelFlagsReceived = pFData->Flags;
682
683 // The original check implementation may return E_FAIL
684 // Valid results are non-negative values including 0, smaller than D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT
685 if (!m_MultisampleQualityLevelsSucceed)
686 {
687 // NumQualityLevels will be set to 0 should the check fails
688 pFData->NumQualityLevels = 0;
689 return E_FAIL;
690 }
691
692 pFData->NumQualityLevels = m_NumQualityLevels;
693 } return S_OK;
694 case D3D12_FEATURE_FORMAT_INFO:
695 {
696 D3D12_FEATURE_DATA_FORMAT_INFO* pFData =
697 static_cast< D3D12_FEATURE_DATA_FORMAT_INFO* > ( pFeatureSupportData );
698 if (FeatureSupportDataSize != sizeof( *pFData ))
699 {
700 return E_INVALIDARG;
701 }
702
703 m_FormatReceived = pFData->Format;
704
705 // If the format is not supported, an E_INVALIDARG will be returned
706 if (!m_DXGIFormatSupported)
707 {
708 return E_INVALIDARG;
709 }
710
711 pFData->PlaneCount = m_PlaneCount;
712
713 } return S_OK;
714 case D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT:
715 {
716 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT* pFData =
717 static_cast< D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT* >( pFeatureSupportData );
718 if (FeatureSupportDataSize != sizeof( *pFData ))
719 {
720 return E_INVALIDARG;
721 }
722 pFData->MaxGPUVirtualAddressBitsPerProcess = m_MaxGPUVirtualAddressBitsPerProcess;
723 pFData->MaxGPUVirtualAddressBitsPerResource = m_MaxGPUVirtualAddressBitsPerResource;
724
725 } return S_OK;
726 case D3D12_FEATURE_SHADER_MODEL:
727 {
728 D3D12_FEATURE_DATA_SHADER_MODEL* pSM =
729 static_cast<D3D12_FEATURE_DATA_SHADER_MODEL*>(pFeatureSupportData);
730 if (FeatureSupportDataSize != sizeof(*pSM))
731 {
732 return E_INVALIDARG;
733 }
734 switch (pSM->HighestShaderModel)
735 {
736 case D3D_SHADER_MODEL_5_1:
737 case D3D_SHADER_MODEL_6_0:
738 case D3D_SHADER_MODEL_6_1:
739 case D3D_SHADER_MODEL_6_2:
740 case D3D_SHADER_MODEL_6_3:
741 case D3D_SHADER_MODEL_6_4:
742 case D3D_SHADER_MODEL_6_5:
743 case D3D_SHADER_MODEL_6_6:
744 case D3D_SHADER_MODEL_6_7:
745 break;
746 default:
747 return E_INVALIDARG;
748 }
749 pSM->HighestShaderModel = static_cast<D3D_SHADER_MODEL>(std::min<int>(pSM->HighestShaderModel,m_HighestSupportedShaderModel));
750 } return S_OK;
751 case D3D12_FEATURE_SHADER_CACHE:
752 {
753 if (!m_ShaderCacheAvailable)
754 {
755 return E_INVALIDARG;
756 }
757 D3D12_FEATURE_DATA_SHADER_CACHE* pFlags =
758 static_cast<D3D12_FEATURE_DATA_SHADER_CACHE*>(pFeatureSupportData);
759 if (FeatureSupportDataSize != sizeof(*pFlags))
760 {
761 return E_INVALIDARG;
762 }
763 pFlags->SupportFlags = m_ShaderCacheSupportFlags;
764 } return S_OK;
765 case D3D12_FEATURE_COMMAND_QUEUE_PRIORITY:
766 {
767 if (!m_CommandQueuePriorityAvailable)
768 {
769 return E_INVALIDARG;
770 }
771 D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY* pFlags =
772 static_cast<D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY*>(pFeatureSupportData);
773 if (FeatureSupportDataSize != sizeof(*pFlags))
774 {
775 return E_INVALIDARG;
776 }
777
778 if (pFlags->CommandListType >= D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE+1)
779 {
780 return E_INVALIDARG;
781 }
782
783 if (pFlags->Priority == D3D12_COMMAND_QUEUE_PRIORITY_NORMAL || pFlags->Priority == D3D12_COMMAND_QUEUE_PRIORITY_HIGH)
784 {
785 pFlags->PriorityForTypeIsSupported = TRUE;
786 }
787 else if (pFlags->Priority == D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME)
788 {
789 pFlags->PriorityForTypeIsSupported = m_GlobalRealtimeCommandQueueSupport; // Simplified
790 }
791 else
792 {
793 return E_INVALIDARG;
794 }
795
796 } return S_OK;
797
798 case D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT:
799 {
800 if (!m_ProtectedResourceSessionAvailable)
801 {
802 return E_INVALIDARG;
803 }
804 D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT* pProtectedResourceSessionSupport =
805 static_cast<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT*>(pFeatureSupportData);
806 if ( FeatureSupportDataSize != sizeof(*pProtectedResourceSessionSupport)
807 || pProtectedResourceSessionSupport->NodeIndex >= GetNodeCount())
808 {
809 return E_INVALIDARG;
810 }
811
812 pProtectedResourceSessionSupport->Support = m_ContentProtectionSupported ?
813 m_ProtectedResourceSessionSupport[pProtectedResourceSessionSupport->NodeIndex]
814 : D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE;
815
816 } return S_OK;
817
818 case D3D12_FEATURE_D3D12_OPTIONS3:
819 {
820 if (!m_Options3Available)
821 {
822 return E_INVALIDARG;
823 }
824 D3D12_FEATURE_DATA_D3D12_OPTIONS3* pD3D12Options3 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS3*>(pFeatureSupportData);
825 if (FeatureSupportDataSize != sizeof(D3D12_FEATURE_DATA_D3D12_OPTIONS3))
826 {
827 return E_INVALIDARG;
828 }
829 pD3D12Options3->CopyQueueTimestampQueriesSupported = m_CopyQueueTimestampQueriesSupported;
830 pD3D12Options3->CastingFullyTypedFormatSupported = m_CastingFullyTypedFormatsSupported;
831 pD3D12Options3->WriteBufferImmediateSupportFlags = m_GetCachedWriteBufferImmediateSupportFlags;
832 pD3D12Options3->ViewInstancingTier = m_ViewInstancingTier;
833 pD3D12Options3->BarycentricsSupported = m_BarycentricsSupported;
834
835 } return S_OK;
836 case D3D12_FEATURE_EXISTING_HEAPS:
837 {
838 if (!m_ExistingHeapsAvailable)
839 {
840 return E_INVALIDARG;
841 }
842 auto* pSupport = static_cast<D3D12_FEATURE_DATA_EXISTING_HEAPS*>(pFeatureSupportData);
843 if (FeatureSupportDataSize != sizeof(*pSupport))
844 {
845 return E_INVALIDARG;
846 }
847 pSupport->Supported = m_ExistingHeapCaps;
848 } return S_OK;
849 case D3D12_FEATURE_D3D12_OPTIONS4:
850 {
851 if (!m_Options4Available)
852 {
853 return E_INVALIDARG;
854 }
855 auto* pD3D12Options4 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS4*>(pFeatureSupportData);
856 if (FeatureSupportDataSize != sizeof(*pD3D12Options4))
857 {
858 return E_INVALIDARG;
859 }
860
861 // Reserved Buffer Placement was cut, except for 64KB Aligned MSAA Textures
862 pD3D12Options4->MSAA64KBAlignedTextureSupported = m_MSAA64KBAlignedTextureSupported;
863 pD3D12Options4->SharedResourceCompatibilityTier = m_SharedResourceCompatibilityTier; // Simplified
864 pD3D12Options4->Native16BitShaderOpsSupported = m_Native16BitShaderOpsSupported;
865 } return S_OK;
866 case D3D12_FEATURE_SERIALIZATION:
867 {
868 if (!m_SerializationAvailable)
869 {
870 return E_INVALIDARG;
871 }
872 auto* pSerialization = static_cast<D3D12_FEATURE_DATA_SERIALIZATION*>(pFeatureSupportData);
873 if (FeatureSupportDataSize != sizeof(*pSerialization))
874 {
875 return E_INVALIDARG;
876 }
877
878 const UINT NodeIndex = pSerialization->NodeIndex;
879 if (NodeIndex >= m_NodeCount)
880 {
881 return E_INVALIDARG;
882 }
883 pSerialization->HeapSerializationTier = m_HeapSerializationTier[NodeIndex];
884 } return S_OK;
885 case D3D12_FEATURE_CROSS_NODE:
886 {
887 if (!m_CrossNodeAvailable)
888 {
889 return E_INVALIDARG;
890 }
891 auto* pCrossNode = static_cast<D3D12_FEATURE_DATA_CROSS_NODE*>(pFeatureSupportData);
892 if (FeatureSupportDataSize != sizeof(*pCrossNode))
893 {
894 return E_INVALIDARG;
895 }
896
897 pCrossNode->SharingTier = m_CrossNodeSharingTier;
898 pCrossNode->AtomicShaderInstructions = m_AtomicShaderInstructions;
899 } return S_OK;
900 case D3D12_FEATURE_D3D12_OPTIONS5:
901 {
902 if (!m_Options5Available)
903 {
904 return E_INVALIDARG;
905 }
906 auto* pD3D12Options5 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS5*>(pFeatureSupportData);
907 if (FeatureSupportDataSize != sizeof(*pD3D12Options5))
908 {
909 return E_INVALIDARG;
910 }
911
912 pD3D12Options5->RaytracingTier = m_RaytracingTier;
913 pD3D12Options5->RenderPassesTier = m_RenderPassesTier;
914 pD3D12Options5->SRVOnlyTiledResourceTier3 = m_SRVOnlyTiledResourceTier3;
915 } return S_OK;
916 case D3D12_FEATURE_DISPLAYABLE:
917 {
918 if (!m_DisplayableAvailable)
919 {
920 return E_INVALIDARG;
921 }
922 auto* pD3D12Displayable = static_cast<D3D12_FEATURE_DATA_DISPLAYABLE*>(pFeatureSupportData);
923 if (FeatureSupportDataSize != sizeof(*pD3D12Displayable)) // Feature_D3D1XDisplayable
924 {
925 return E_INVALIDARG;
926 }
927
928 pD3D12Displayable->DisplayableTexture = m_DisplayableTexture;
929 pD3D12Displayable->SharedResourceCompatibilityTier = m_SharedResourceCompatibilityTier;
930 } return S_OK;
931
932 case D3D12_FEATURE_D3D12_OPTIONS6:
933 {
934 if (!m_Options6Available)
935 {
936 return E_INVALIDARG;
937 }
938
939 auto* pD3D12Options6 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS6*>(pFeatureSupportData);
940 if (FeatureSupportDataSize != sizeof(*pD3D12Options6))
941 {
942 return E_INVALIDARG;
943 }
944 pD3D12Options6->AdditionalShadingRatesSupported = m_AdditionalShadingRatesSupported;
945 pD3D12Options6->BackgroundProcessingSupported = m_BackgroundProcessingSupported;
946 pD3D12Options6->PerPrimitiveShadingRateSupportedWithViewportIndexing = m_PerPrimitiveShadingRateSupportedWithViewportIndexing;
947 pD3D12Options6->ShadingRateImageTileSize = m_ShadingRateImageTileSize;
948 pD3D12Options6->VariableShadingRateTier = m_VariableShadingRateTier;
949 } return S_OK;
950 case D3D12_FEATURE_QUERY_META_COMMAND:
951 {
952 if (m_QueryMetaCommandAvailable)
953 {
954 if (FeatureSupportDataSize != sizeof(D3D12_FEATURE_DATA_QUERY_META_COMMAND))
955 {
956 return E_INVALIDARG;
957 }
958
959 // Only checks inputs and outputs
960 auto* pQueryData = static_cast<D3D12_FEATURE_DATA_QUERY_META_COMMAND*>(pFeatureSupportData);
961 m_CommandID = pQueryData->CommandId;
962 m_pQueryInputData = pQueryData->pQueryInputData;
963 m_NodeMask = pQueryData->NodeMask;
964 m_QueryInputDataSizeInBytes = pQueryData->QueryInputDataSizeInBytes;
965
966 pQueryData->QueryOutputDataSizeInBytes = m_QueryOutputDataSizeInBytes;
967 pQueryData->pQueryOutputData = m_pQueryOutputData;
968 }
969 else
970 {
971 return E_INVALIDARG;
972 }
973 } return S_OK;
974 case D3D12_FEATURE_D3D12_OPTIONS7:
975 {
976 if (!m_Options7Available)
977 {
978 return E_INVALIDARG;
979 }
980 auto* pD3D12Options7 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS7*>(pFeatureSupportData);
981 if (FeatureSupportDataSize != sizeof(*pD3D12Options7))
982 {
983 return E_INVALIDARG;
984 }
985
986 pD3D12Options7->MeshShaderTier = m_MeshShaderTier;
987 pD3D12Options7->SamplerFeedbackTier = m_SamplerFeedbackTier;
988 } return S_OK;
989 case D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT:
990 {
991 if (!m_ProtectedResourceSessionTypeCountAvailable)
992 {
993 return E_INVALIDARG;
994 }
995 auto* pProtectedResourceSessionTypesCount =
996 static_cast<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT*>(pFeatureSupportData);
997 if ( FeatureSupportDataSize != sizeof(*pProtectedResourceSessionTypesCount)
998 || pProtectedResourceSessionTypesCount->NodeIndex >= GetNodeCount())
999 {
1000 return E_INVALIDARG;
1001 }
1002
1003 pProtectedResourceSessionTypesCount->Count = m_ProtectedResourceSessionTypeCount[pProtectedResourceSessionTypesCount->NodeIndex];
1004 } return S_OK;
1005 case D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES:
1006 {
1007 if (!m_ProtectedResourceSessionTypesAvailable)
1008 {
1009 return E_INVALIDARG;
1010 }
1011 auto* pProtectedResourceSessionTypes =
1012 static_cast<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES*>(pFeatureSupportData);
1013 if ( FeatureSupportDataSize != sizeof(*pProtectedResourceSessionTypes)
1014 || pProtectedResourceSessionTypes->NodeIndex >= GetNodeCount())
1015 {
1016 return E_INVALIDARG;
1017 }
1018 UINT ExpectedCount = m_ProtectedResourceSessionTypeCount[pProtectedResourceSessionTypes->NodeIndex];
1019 if (pProtectedResourceSessionTypes->Count != ExpectedCount)
1020 {
1021 return E_INVALIDARG;
1022 }
1023
1024 if (ExpectedCount > 0)
1025 {
1026 memcpy(pProtectedResourceSessionTypes->pTypes, m_ProtectedResourceSessionTypes[pProtectedResourceSessionTypes->NodeIndex].data(), ExpectedCount * sizeof(*pProtectedResourceSessionTypes->pTypes));
1027 }
1028
1029 } return S_OK;
1030
1031 case D3D12_FEATURE_D3D12_OPTIONS8:
1032 {
1033 if (!m_Options8Available)
1034 {
1035 return E_INVALIDARG;
1036 }
1037 D3D12_FEATURE_DATA_D3D12_OPTIONS8 *pD3D12Options8 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS8*>(pFeatureSupportData);
1038 if (FeatureSupportDataSize != sizeof(*pD3D12Options8))
1039 {
1040 return E_INVALIDARG;
1041 }
1042
1043 pD3D12Options8->UnalignedBlockTexturesSupported = m_UnalignedBlockTexturesSupported;
1044 } return S_OK;
1045 case D3D12_FEATURE_D3D12_OPTIONS9:
1046 {
1047 if (!m_Options9Available)
1048 {
1049 return E_INVALIDARG;
1050 }
1051 D3D12_FEATURE_DATA_D3D12_OPTIONS9 *pD3D12Options9 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS9*>(pFeatureSupportData);
1052 if (FeatureSupportDataSize != sizeof(*pD3D12Options9))
1053 {
1054 return E_INVALIDARG;
1055 }
1056
1057 pD3D12Options9->AtomicInt64OnGroupSharedSupported = m_AtomicInt64OnGroupSharedSupported;
1058 pD3D12Options9->AtomicInt64OnTypedResourceSupported = m_AtomicInt64OnTypedResourceSupported;
1059 pD3D12Options9->DerivativesInMeshAndAmplificationShadersSupported = m_DerivativesInMeshAndAmplificationShadersSupported;
1060 pD3D12Options9->MeshShaderPipelineStatsSupported = m_MeshShaderPipelineStatsSupported;
1061 pD3D12Options9->MeshShaderSupportsFullRangeRenderTargetArrayIndex = m_MeshShaderSupportsFullRangeRenderTargetArrayIndex;
1062 pD3D12Options9->WaveMMATier = m_WaveMMATier;
1063 } return S_OK;
1064 case D3D12_FEATURE_D3D12_OPTIONS10:
1065 {
1066 if (!m_Options10Available)
1067 {
1068 return E_INVALIDARG;
1069 }
1070 D3D12_FEATURE_DATA_D3D12_OPTIONS10* pD3D12Options10 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS10*>(pFeatureSupportData);
1071 if (FeatureSupportDataSize != sizeof(*pD3D12Options10))
1072 {
1073 return E_INVALIDARG;
1074 }
1075
1076 pD3D12Options10->MeshShaderPerPrimitiveShadingRateSupported = m_MeshShaderPerPrimitiveShadingRateSupported;
1077 pD3D12Options10->VariableRateShadingSumCombinerSupported = m_VariableRateShadingSumCombinerSupported;
1078 } return S_OK;
1079 case D3D12_FEATURE_D3D12_OPTIONS11:
1080 {
1081 if (!m_Options11Available)
1082 {
1083 return E_INVALIDARG;
1084 }
1085 D3D12_FEATURE_DATA_D3D12_OPTIONS11* pD3D12Options11 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS11*>(pFeatureSupportData);
1086 if (FeatureSupportDataSize != sizeof(*pD3D12Options11))
1087 {
1088 return E_INVALIDARG;
1089 }
1090
1091 pD3D12Options11->AtomicInt64OnDescriptorHeapResourceSupported = m_AtomicInt64OnDescriptorHeapResourceSupported;
1092 } return S_OK;
1093 case D3D12_FEATURE_D3D12_OPTIONS12:
1094 {
1095 if (!m_Options12Available)
1096 {
1097 return E_INVALIDARG;
1098 }
1099 D3D12_FEATURE_DATA_D3D12_OPTIONS12* pD3D12Options12 = static_cast<D3D12_FEATURE_DATA_D3D12_OPTIONS12*>(pFeatureSupportData);
1100 if (FeatureSupportDataSize != sizeof(*pD3D12Options12))
1101 {
1102 return E_INVALIDARG;
1103 }
1104
1105 pD3D12Options12->MSPrimitivesPipelineStatisticIncludesCulledPrimitives = m_MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
1106 pD3D12Options12->EnhancedBarriersSupported = m_EnhancedBarriersSupported;
1107 } return S_OK;
1108
1109 default:
1110 return E_INVALIDARG;
1111 }
1112 }
1113
1114public: // For simplicity, allow tests to set the internal state values for this mock class
1115 // General
1116 UINT m_NodeCount; // Simulated number of computing nodes
1117
1118 // 0: Options
1119 bool m_D3D12OptionsAvailable = true;
1120 BOOL m_DoublePrecisionFloatShaderOps = false;
1121 BOOL m_OutputMergerLogicOp = false;
1122 D3D12_SHADER_MIN_PRECISION_SUPPORT m_ShaderMinPrecisionSupport10Bit = D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE;
1123 D3D12_SHADER_MIN_PRECISION_SUPPORT m_ShaderMinPrecisionSupport16Bit = D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE;
1124 D3D12_TILED_RESOURCES_TIER m_TiledResourcesTier = D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED;
1125 D3D12_RESOURCE_BINDING_TIER m_ResourceBindingTier = (D3D12_RESOURCE_BINDING_TIER)0;
1126 BOOL m_PSSpecifiedStencilRefSupported = false;
1127 BOOL m_TypedUAVLoadAdditionalFormats = false;
1128 BOOL m_ROVsSupported = false;
1129 D3D12_CONSERVATIVE_RASTERIZATION_TIER m_ConservativeRasterizationTier = D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED;
1130 UINT m_MaxGPUVirtualAddressBitsPerResource = 0;
1131 BOOL m_StandardSwizzle64KBSupported = false;
1132 D3D12_CROSS_NODE_SHARING_TIER m_CrossNodeSharingTier = D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED;
1133 BOOL m_CrossAdapterRowMajorTextureSupported = false;
1134 BOOL m_VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation = false;
1135 D3D12_RESOURCE_HEAP_TIER m_ResourceHeapTier = (D3D12_RESOURCE_HEAP_TIER)0;
1136
1137 // 1: Architecture & 16: Architecture1
1138 bool m_ArchitectureSucceed = true;
1139 bool m_Architecture1Available = false; // Mock the case where Architecture1 is not supported
1140 std::vector<BOOL> m_TileBasedRenderer;
1141 std::vector<BOOL> m_UMA;
1142 std::vector<BOOL> m_CacheCoherentUMA;
1143 std::vector<BOOL> m_IsolatedMMU;
1144
1145 // 2: Feature Levels
1146 bool m_FeatureLevelsAvailable = true;
1147 D3D_FEATURE_LEVEL m_FeatureLevel = D3D_FEATURE_LEVEL_12_0; // Set higher to allow other tests to pass correctly
1148
1149 // 3: Feature Format Support
1150 // Forwarding call only. Make sure that the input parameters are correctly forwarded
1151 bool m_FormatSupportAvailable = true;
1152 DXGI_FORMAT m_FormatReceived;
1153 D3D12_FORMAT_SUPPORT1 m_FormatSupport1 = D3D12_FORMAT_SUPPORT1_NONE;
1154 D3D12_FORMAT_SUPPORT2 m_FormatSupport2 = D3D12_FORMAT_SUPPORT2_NONE;
1155
1156 // 4: Multisample Quality Levels
1157 bool m_MultisampleQualityLevelsSucceed = true;
1158 UINT m_SampleCountReceived;
1159 D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS m_MultisampleQualityLevelFlagsReceived;
1160 UINT m_NumQualityLevels = 0;
1161
1162 // 5: Format Info
1163 bool m_DXGIFormatSupported = true;
1164 UINT m_PlaneCount = 0;
1165
1166 // 6: GPU Virtual Address Support
1167 bool m_GPUVASupportAvailable = true;
1168 UINT m_MaxGPUVirtualAddressBitsPerProcess = 0;
1169
1170 // 7: Shader Model
1171 D3D_SHADER_MODEL m_HighestSupportedShaderModel = D3D_SHADER_MODEL_5_1;
1172
1173 // 8: Options1
1174 bool m_Options1Available = true;
1175 bool m_WaveOpsSupported = false;
1176 UINT m_WaveLaneCountMin = 0;
1177 UINT m_WaveLaneCountMax = 0;
1178 UINT m_TotalLaneCount = 0;
1179 bool m_ExpandedComputeResourceStates = false;
1180 bool m_Int64ShaderOpsSupported = false;
1181
1182 // 10: Protected Resource Session Support
1183 bool m_ProtectedResourceSessionAvailable = true;
1184 bool m_ContentProtectionSupported = true;
1185 std::vector<D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS> m_ProtectedResourceSessionSupport;
1186
1187 // 12: Root Signature
1188 bool m_RootSignatureAvailable = true;
1189 D3D_ROOT_SIGNATURE_VERSION m_RootSignatureHighestVersion = (D3D_ROOT_SIGNATURE_VERSION)0;
1190
1191 // 18: D3D12 Options2
1192 bool m_Options2Available = true;
1193 bool m_DepthBoundsTestSupport = false;
1194 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER m_ProgrammableSamplePositionsTier = D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED;
1195
1196 // 19: Shader Cache
1197 bool m_ShaderCacheAvailable = true;
1198 D3D12_SHADER_CACHE_SUPPORT_FLAGS m_ShaderCacheSupportFlags = D3D12_SHADER_CACHE_SUPPORT_NONE; // Lazy implementation
1199
1200 // 20: Command Queue Priority
1201 bool m_CommandQueuePriorityAvailable = true;
1202 bool m_GlobalRealtimeCommandQueueSupport = false;
1203
1204 // 21: Options3
1205 bool m_Options3Available = true;
1206 bool m_CopyQueueTimestampQueriesSupported = false;
1207 bool m_CastingFullyTypedFormatsSupported = false;
1208 D3D12_COMMAND_LIST_SUPPORT_FLAGS m_GetCachedWriteBufferImmediateSupportFlags = D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE;
1209 D3D12_VIEW_INSTANCING_TIER m_ViewInstancingTier = D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED;
1210 bool m_BarycentricsSupported = false;
1211
1212 // 22: Existing Heaps
1213 bool m_ExistingHeapsAvailable = true;
1214 bool m_ExistingHeapCaps = false;
1215
1216 // 23: Options4
1217 bool m_Options4Available = true;
1218 bool m_MSAA64KBAlignedTextureSupported = false;
1219 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER m_SharedResourceCompatibilityTier = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0;
1220 bool m_Native16BitShaderOpsSupported = false;
1221
1222 // 24: Serialization
1223 bool m_SerializationAvailable = true;
1224 std::vector<D3D12_HEAP_SERIALIZATION_TIER> m_HeapSerializationTier;
1225
1226 // 25: Cross Node
1227 bool m_CrossNodeAvailable = true;
1228 bool m_AtomicShaderInstructions = false;
1229
1230 // 27: Options5
1231 bool m_Options5Available = true;
1232 bool m_SRVOnlyTiledResourceTier3 = false;
1233 D3D12_RENDER_PASS_TIER m_RenderPassesTier = D3D12_RENDER_PASS_TIER_0;
1234 D3D12_RAYTRACING_TIER m_RaytracingTier = D3D12_RAYTRACING_TIER_NOT_SUPPORTED;
1235
1236 // 28: Displayable
1237 bool m_DisplayableAvailable = true;
1238 bool m_DisplayableTexture = false;
1239 // SharedResourceCompatibilityTier is located in Options4
1240
1241 // 30: Options6
1242 bool m_Options6Available = true;
1243 bool m_AdditionalShadingRatesSupported = false;
1244 bool m_PerPrimitiveShadingRateSupportedWithViewportIndexing = false;
1245 D3D12_VARIABLE_SHADING_RATE_TIER m_VariableShadingRateTier = D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED;
1246 UINT m_ShadingRateImageTileSize = 0;
1247 bool m_BackgroundProcessingSupported = false;
1248
1249 // 31: Query Meta Command
1250 bool m_QueryMetaCommandAvailable = true;
1251 GUID m_CommandID = {};
1252 UINT m_NodeMask = 0;
1253 const void* m_pQueryInputData = nullptr;
1254 SIZE_T m_QueryInputDataSizeInBytes = 0;
1255 void* m_pQueryOutputData = nullptr;
1256 SIZE_T m_QueryOutputDataSizeInBytes = 0;
1257
1258 // 32: Options7
1259 bool m_Options7Available = true;
1260 D3D12_MESH_SHADER_TIER m_MeshShaderTier = D3D12_MESH_SHADER_TIER_NOT_SUPPORTED;
1261 D3D12_SAMPLER_FEEDBACK_TIER m_SamplerFeedbackTier = D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED;
1262
1263 // 33: Protected Resource Session Type Count
1264 bool m_ProtectedResourceSessionTypeCountAvailable = true;
1265 std::vector<UINT> m_ProtectedResourceSessionTypeCount;
1266
1267 // 34: Protected Resource Session Types
1268 bool m_ProtectedResourceSessionTypesAvailable = true;
1269 std::vector<std::vector<GUID>> m_ProtectedResourceSessionTypes;
1270
1271 // 36: Options8
1272 bool m_Options8Available = true;
1273 bool m_UnalignedBlockTexturesSupported = false;
1274
1275 // 37: Options9
1276 bool m_Options9Available = true;
1277 bool m_MeshShaderPipelineStatsSupported = false;
1278 bool m_MeshShaderSupportsFullRangeRenderTargetArrayIndex = false;
1279 bool m_AtomicInt64OnTypedResourceSupported = false;
1280 bool m_AtomicInt64OnGroupSharedSupported = false;
1281 bool m_DerivativesInMeshAndAmplificationShadersSupported = false;
1282 D3D12_WAVE_MMA_TIER m_WaveMMATier = D3D12_WAVE_MMA_TIER_NOT_SUPPORTED;
1283
1284 // 39: Options10
1285 bool m_Options10Available = true;
1286 bool m_VariableRateShadingSumCombinerSupported = false;
1287 bool m_MeshShaderPerPrimitiveShadingRateSupported = false;
1288
1289 // 40: Options11
1290 bool m_Options11Available = true;
1291 bool m_AtomicInt64OnDescriptorHeapResourceSupported = false;
1292
1293 // 41: Options12
1294 bool m_Options12Available = true;
1295 D3D12_TRI_STATE m_MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE_UNKNOWN;
1296 bool m_EnhancedBarriersSupported = false;
1297};
1298
1299#endif \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/googletest/feature_support_test.cpp b/contrib/DirectX-Headers-1.618.2/googletest/feature_support_test.cpp
new file mode 100644
index 0000000..0394384
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/googletest/feature_support_test.cpp
@@ -0,0 +1,1354 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3#include "gtest/gtest.h"
4
5#include <wsl/winadapter.h>
6
7#include <directx/d3d12.h>
8#include <directx/dxcore.h>
9#include <directx/d3dx12.h>
10#include "dxguids/dxguids.h"
11
12#include "MockDevice.hpp"
13
14// Initiliaze the CD3DX12FeatureSupport instance
15// Can be modified to use new initialization methods if any comes up in the future
16#define INIT_FEATURES() \
17 CD3DX12FeatureSupport features; \
18 HRESULT InitResult = features.Init(device); \
19 EXPECT_EQ(features.GetStatus(), S_OK);
20
21// Testing class setup
22class FeatureSupportTest : public ::testing::Test {
23protected:
24 void SetUp() override {
25 device = new MockDevice(1);
26 }
27
28 void TearDown() override {
29 delete device;
30 }
31
32 MockDevice* device = nullptr;
33};
34
35// Test if the class can be initialized correctly
36TEST_F(FeatureSupportTest, Initialization) {
37 CD3DX12FeatureSupport features;
38 EXPECT_EQ(features.Init(device), S_OK);
39 EXPECT_EQ(features.GetStatus(), S_OK);
40}
41
42// 0: D3D12_OPTIONS
43// Arbitarily set support status for caps and see if the returned results are correct
44TEST_F(FeatureSupportTest, D3D12Options) {
45 device->m_DoublePrecisionFloatShaderOps = true;
46 device->m_OutputMergerLogicOp = true;
47 device->m_ShaderMinPrecisionSupport10Bit = D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT;
48 device->m_ShaderMinPrecisionSupport16Bit = D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT;
49 device->m_TiledResourcesTier = D3D12_TILED_RESOURCES_TIER_3;
50 device->m_ResourceBindingTier = D3D12_RESOURCE_BINDING_TIER_3;
51 device->m_PSSpecifiedStencilRefSupported = true;
52 device->m_ConservativeRasterizationTier = D3D12_CONSERVATIVE_RASTERIZATION_TIER_2;
53 device->m_MaxGPUVirtualAddressBitsPerResource = 10;
54 device->m_ResourceHeapTier = D3D12_RESOURCE_HEAP_TIER_2;
55
56 INIT_FEATURES();
57 EXPECT_TRUE(features.DoublePrecisionFloatShaderOps());
58 EXPECT_TRUE(features.OutputMergerLogicOp());
59 EXPECT_EQ(features.MinPrecisionSupport(), D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT | D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT);
60 EXPECT_EQ(features.TiledResourcesTier(), D3D12_TILED_RESOURCES_TIER_3);
61 EXPECT_EQ(features.ResourceBindingTier(), D3D12_RESOURCE_BINDING_TIER_3);
62 EXPECT_TRUE(features.PSSpecifiedStencilRefSupported());
63 EXPECT_FALSE(features.TypedUAVLoadAdditionalFormats());
64 EXPECT_FALSE(features.ROVsSupported());
65 EXPECT_EQ(features.ConservativeRasterizationTier(), D3D12_CONSERVATIVE_RASTERIZATION_TIER_2);
66 EXPECT_EQ(features.MaxGPUVirtualAddressBitsPerResource(), 10);
67 EXPECT_FALSE(features.StandardSwizzle64KBSupported());
68 EXPECT_EQ(features.CrossNodeSharingTier(), D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED);
69 EXPECT_FALSE(features.CrossAdapterRowMajorTextureSupported());
70 EXPECT_FALSE(features.VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation());
71 EXPECT_EQ(features.ResourceHeapTier(), D3D12_RESOURCE_HEAP_TIER_2);
72}
73
74// 1: Architecture & 16: Architecture1
75// Test where architecture1 is available
76TEST_F(FeatureSupportTest, Architecture1Available)
77{
78 device->m_Architecture1Available = true;
79 device->m_TileBasedRenderer[0] = false;
80 device->m_UMA[0] = true;
81 device->m_CacheCoherentUMA[0] = true;
82 device->m_IsolatedMMU[0] = true;
83
84 INIT_FEATURES();
85 EXPECT_FALSE(features.TileBasedRenderer(0));
86 EXPECT_TRUE(features.UMA(0));
87 EXPECT_TRUE(features.CacheCoherentUMA(0));
88 EXPECT_TRUE(features.IsolatedMMU(0));
89}
90
91// Test where architecture1 is not available
92TEST_F(FeatureSupportTest, Architecture1Unavailable)
93{
94 device->m_Architecture1Available = false; // Architecture1 not available
95 device->m_TileBasedRenderer[0] = false;
96 device->m_UMA[0] = true;
97 device->m_CacheCoherentUMA[0] = false;
98 device->m_IsolatedMMU[0] = true; // Notice that if architecture1 is not available, IslatedMMU cap should not be present
99
100 INIT_FEATURES();
101 EXPECT_FALSE(features.TileBasedRenderer(0));
102 EXPECT_TRUE(features.UMA(0));
103 EXPECT_FALSE(features.CacheCoherentUMA(0));
104 EXPECT_FALSE(features.IsolatedMMU(0)); // If Architecture1 is not available, IsolatedMMU should not be available
105}
106
107// Test on devices with more than one graphics node
108TEST_F(FeatureSupportTest, ArchitectureMultinode)
109{
110 device->SetNodeCount(3);
111 device->m_Architecture1Available = true;
112 device->m_TileBasedRenderer = {false, true, true};
113 device->m_UMA = {true, false, false};
114 device->m_CacheCoherentUMA = {false, false, true};
115 device->m_IsolatedMMU = {false, true, false};
116
117 INIT_FEATURES();
118
119 EXPECT_FALSE(features.TileBasedRenderer(0));
120 EXPECT_TRUE(features.TileBasedRenderer(1));
121 EXPECT_TRUE(features.TileBasedRenderer(2));
122
123 EXPECT_TRUE(features.UMA(0));
124 EXPECT_FALSE(features.UMA(1));
125 EXPECT_FALSE(features.UMA(2));
126
127 EXPECT_FALSE(features.CacheCoherentUMA(0));
128 EXPECT_FALSE(features.CacheCoherentUMA(1));
129 EXPECT_TRUE(features.CacheCoherentUMA(2));
130
131 EXPECT_FALSE(features.IsolatedMMU(0));
132 EXPECT_TRUE(features.IsolatedMMU(1));
133 EXPECT_FALSE(features.IsolatedMMU(2));
134}
135
136// 2: Feature Levels
137// Basic test with a high feature level
138TEST_F(FeatureSupportTest, FeatureLevelBasic)
139{
140 device->m_FeatureLevel = D3D_FEATURE_LEVEL_12_2;
141
142 INIT_FEATURES();
143 EXPECT_EQ(features.MaxSupportedFeatureLevel(), D3D_FEATURE_LEVEL_12_2);
144}
145
146// Test through all supported feature levels
147TEST_F(FeatureSupportTest, FeatureLevelAll)
148{
149 std::vector<D3D_FEATURE_LEVEL> allLevels =
150 {
151 D3D_FEATURE_LEVEL_1_0_CORE,
152 D3D_FEATURE_LEVEL_9_1,
153 D3D_FEATURE_LEVEL_9_2,
154 D3D_FEATURE_LEVEL_9_3,
155 D3D_FEATURE_LEVEL_10_0,
156 D3D_FEATURE_LEVEL_10_1,
157 D3D_FEATURE_LEVEL_11_0,
158 D3D_FEATURE_LEVEL_11_1,
159 D3D_FEATURE_LEVEL_12_0,
160 D3D_FEATURE_LEVEL_12_1,
161 D3D_FEATURE_LEVEL_12_2
162 };
163
164 for (unsigned int i = 0; i < allLevels.size(); i++)
165 {
166 device->m_FeatureLevel = allLevels[i];
167 INIT_FEATURES();
168 EXPECT_EQ(features.MaxSupportedFeatureLevel(), allLevels[i]);
169 }
170}
171
172// Test with a feature level higher than the current highest level
173TEST_F(FeatureSupportTest, FeatureLevelHigher)
174{
175 device->m_FeatureLevel = (D3D_FEATURE_LEVEL)(D3D_FEATURE_LEVEL_12_2 + 1);
176 INIT_FEATURES();
177 EXPECT_EQ(features.MaxSupportedFeatureLevel(), D3D_FEATURE_LEVEL_12_2);
178}
179
180// 3: Format Support
181// Forward call to the old API. Basic correctness check
182// Note: The input and return value of this test is arbitrary and does not reflect the results of running on real devices
183// The test only checks if the input and output are correctly passed to the inner API and the user.
184// Same applies to Multisample Quality Levels (4) and Format Info (5)
185TEST_F(FeatureSupportTest, FormatSupportPositive)
186{
187 device->m_FormatSupport1 = D3D12_FORMAT_SUPPORT1_BUFFER | D3D12_FORMAT_SUPPORT1_TEXTURE3D | D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON | D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT;
188 device->m_FormatSupport2 = D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD | D3D12_FORMAT_SUPPORT2_TILED;
189
190 INIT_FEATURES();
191
192 D3D12_FORMAT_SUPPORT1 support1;
193 D3D12_FORMAT_SUPPORT2 support2;
194
195 HRESULT result = features.FormatSupport(DXGI_FORMAT_R32G32_UINT, support1, support2); // Some random input
196 EXPECT_EQ(support1, D3D12_FORMAT_SUPPORT1_BUFFER | D3D12_FORMAT_SUPPORT1_TEXTURE3D | D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON | D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT);
197 EXPECT_EQ(support2, D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD | D3D12_FORMAT_SUPPORT2_TILED);
198 EXPECT_EQ(result, S_OK);
199}
200
201// Negative test
202TEST_F(FeatureSupportTest, FormatSupportNegative)
203{
204 device->m_FormatSupport1 = D3D12_FORMAT_SUPPORT1_NONE;
205 device->m_FormatSupport2 = D3D12_FORMAT_SUPPORT2_NONE;
206 INIT_FEATURES();
207
208 D3D12_FORMAT_SUPPORT1 support1;
209 D3D12_FORMAT_SUPPORT2 support2;
210
211 HRESULT result = features.FormatSupport(DXGI_FORMAT_UNKNOWN, support1, support2);
212 EXPECT_EQ(support1, D3D12_FORMAT_SUPPORT1_NONE);
213 EXPECT_EQ(support2, D3D12_FORMAT_SUPPORT2_NONE);
214 EXPECT_EQ(result, E_FAIL);
215}
216
217// 4: Multisample Quality Levels
218// Forwarding call. Check if the API received the correct information.
219TEST_F(FeatureSupportTest, MultisampleQualityLevelsPositive)
220{
221 device->m_NumQualityLevels = 42; // Arbitrary return value
222
223 INIT_FEATURES();
224
225 DXGI_FORMAT inFormat = DXGI_FORMAT_R16G16B16A16_FLOAT;
226 UINT inSampleCount = 10;
227 D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS inFlags = D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE;
228 UINT NumQualityLevels;
229
230 HRESULT result = features.MultisampleQualityLevels(inFormat, inSampleCount, inFlags, NumQualityLevels);
231
232 EXPECT_EQ(device->m_FormatReceived, inFormat);
233 EXPECT_EQ(device->m_SampleCountReceived, inSampleCount);
234 EXPECT_EQ(device->m_MultisampleQualityLevelFlagsReceived, inFlags);
235 EXPECT_EQ(result, S_OK);
236 EXPECT_EQ(NumQualityLevels, 42);
237}
238
239// Test where the feature check fails
240TEST_F(FeatureSupportTest, MultisampleQualityLevelsNegative)
241{
242 device->m_NumQualityLevels = 42;
243 device->m_MultisampleQualityLevelsSucceed = false; // Simulate failure
244
245 INIT_FEATURES();
246
247 DXGI_FORMAT inFormat = DXGI_FORMAT_R16G16B16A16_FLOAT;
248 UINT inSampleCount = 6;
249 D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS inFlags = D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE;
250 UINT NumQualityLevels;
251
252 HRESULT result = features.MultisampleQualityLevels(inFormat, inSampleCount, inFlags, NumQualityLevels);
253
254 EXPECT_EQ(device->m_FormatReceived, inFormat);
255 EXPECT_EQ(device->m_SampleCountReceived, inSampleCount);
256 EXPECT_EQ(device->m_MultisampleQualityLevelFlagsReceived, inFlags);
257 EXPECT_EQ(result, E_FAIL);
258 EXPECT_EQ(NumQualityLevels, 0);
259}
260
261// 5: Format Info
262// Forward call to old API. Basic check
263TEST_F(FeatureSupportTest, FormatInfoPositive)
264{
265 device->m_PlaneCount = 4;
266
267 INIT_FEATURES();
268
269 DXGI_FORMAT inFormat = DXGI_FORMAT_D32_FLOAT;
270 UINT8 PlaneCount;
271 HRESULT result = features.FormatInfo(inFormat, PlaneCount);
272
273 EXPECT_EQ(PlaneCount, 4);
274 EXPECT_EQ(result, S_OK);
275 EXPECT_EQ(device->m_FormatReceived, inFormat);
276}
277
278// Test when feature check fails
279TEST_F(FeatureSupportTest, FormatInfoNegative)
280{
281 device->m_PlaneCount = 6;
282 device->m_DXGIFormatSupported = false;
283
284 INIT_FEATURES();
285
286 DXGI_FORMAT inFormat = DXGI_FORMAT_BC1_UNORM;
287 UINT8 PlaneCount;
288 HRESULT result = features.FormatInfo(inFormat, PlaneCount);
289
290 EXPECT_EQ(result, E_INVALIDARG);
291 EXPECT_EQ(PlaneCount, 0);
292 EXPECT_EQ(device->m_FormatReceived, inFormat);
293}
294
295// 6: GPUVA Support
296TEST_F(FeatureSupportTest, GPUVASupport)
297{
298 device->m_MaxGPUVirtualAddressBitsPerProcess = 16;
299 device->m_MaxGPUVirtualAddressBitsPerResource = 12;
300
301 INIT_FEATURES();
302
303 EXPECT_EQ(features.MaxGPUVirtualAddressBitsPerProcess(), 16);
304 EXPECT_EQ(features.MaxGPUVirtualAddressBitsPerResource(), 12);
305}
306
307/*
308 Starting from Options1, all features should have an "unavailable test"
309 to ensure the new API returns the desired default values
310 when a device does not support that feature
311*/
312
313// 8: Options1
314// Basic tests
315TEST_F(FeatureSupportTest, Options1Basic)
316{
317 device->m_WaveOpsSupported = true;
318 device->m_WaveLaneCountMin = 2;
319 device->m_WaveLaneCountMax = 4;
320 device->m_TotalLaneCount = 8;
321 device->m_ExpandedComputeResourceStates = true;
322 device->m_Int64ShaderOpsSupported = true;
323
324 INIT_FEATURES();
325
326 EXPECT_TRUE(features.WaveOps());
327 EXPECT_EQ(features.WaveLaneCountMin(), 2);
328 EXPECT_EQ(features.WaveLaneCountMax(), 4);
329 EXPECT_EQ(features.TotalLaneCount(), 8);
330 EXPECT_TRUE(features.ExpandedComputeResourceStates());
331 EXPECT_TRUE(features.Int64ShaderOps());
332}
333
334// Unavailable test
335// Test where device does not support Options1
336TEST_F(FeatureSupportTest, Options1Unavailable)
337{
338 device->m_Options1Available = false;
339 device->m_WaveOpsSupported = true;
340 device->m_WaveLaneCountMin = 2;
341 device->m_WaveLaneCountMax = 4;
342 device->m_TotalLaneCount = 8;
343 device->m_ExpandedComputeResourceStates = true;
344 device->m_Int64ShaderOpsSupported = true;
345
346 INIT_FEATURES();
347
348 EXPECT_FALSE(features.WaveOps());
349 EXPECT_EQ(features.WaveLaneCountMin(), 0);
350 EXPECT_EQ(features.WaveLaneCountMax(), 0);
351 EXPECT_EQ(features.TotalLaneCount(), 0);
352 EXPECT_FALSE(features.ExpandedComputeResourceStates());
353 EXPECT_FALSE(features.Int64ShaderOps());
354}
355
356// 10: Protected Resource Session Support
357// Basic test
358TEST_F(FeatureSupportTest, ProtectedResourceSessionSupportBasic)
359{
360 device->m_ProtectedResourceSessionSupport[0] = D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED;
361
362 INIT_FEATURES();
363
364 EXPECT_EQ(features.ProtectedResourceSessionSupport(0), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED);
365}
366
367// Negative test
368TEST_F(FeatureSupportTest, ProtectedResourceSessionSupportNegative)
369{
370 device->m_ProtectedResourceSessionSupport[0] = D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED;
371 device->m_ContentProtectionSupported = false;
372
373 INIT_FEATURES();
374
375 EXPECT_EQ(features.ProtectedResourceSessionSupport(), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
376}
377
378// Multinode test
379TEST_F(FeatureSupportTest, ProtectedResourceSessionSupportMultinode)
380{
381 device->SetNodeCount(4);
382 device->m_ProtectedResourceSessionSupport =
383 {
384 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE,
385 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED,
386 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED,
387 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE
388 };
389
390 INIT_FEATURES();
391
392 EXPECT_EQ(features.ProtectedResourceSessionSupport(0), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
393 EXPECT_EQ(features.ProtectedResourceSessionSupport(1), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED);
394 EXPECT_EQ(features.ProtectedResourceSessionSupport(2), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED);
395 EXPECT_EQ(features.ProtectedResourceSessionSupport(3), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
396}
397
398// Unavailable test
399TEST_F(FeatureSupportTest, ProtectedResourceSessionSupportNotAvailable)
400{
401 device->m_ProtectedResourceSessionAvailable = false;
402 device->m_ProtectedResourceSessionSupport[0] = D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED;
403
404 INIT_FEATURES();
405
406 EXPECT_EQ(features.ProtectedResourceSessionSupport(0), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
407}
408
409
410// Multinode Unavailable test
411TEST_F(FeatureSupportTest, ProtectedResourceSessionSupportNotAvailableMultinode)
412{
413 device->m_ProtectedResourceSessionAvailable = false;
414 device->SetNodeCount(4);
415 device->m_ProtectedResourceSessionSupport =
416 {
417 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE,
418 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED,
419 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED,
420 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE
421 };
422
423 INIT_FEATURES();
424
425 EXPECT_EQ(features.ProtectedResourceSessionSupport(0), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
426 EXPECT_EQ(features.ProtectedResourceSessionSupport(1), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
427 EXPECT_EQ(features.ProtectedResourceSessionSupport(2), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
428 EXPECT_EQ(features.ProtectedResourceSessionSupport(3), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
429}
430
431// 12: Root Signature
432// Basic test (highest supported version in header)
433TEST_F(FeatureSupportTest, RootSignatureBasic)
434{
435 device->m_RootSignatureHighestVersion = D3D_ROOT_SIGNATURE_VERSION_1_1;
436 INIT_FEATURES();
437 EXPECT_EQ(features.HighestRootSignatureVersion(), D3D_ROOT_SIGNATURE_VERSION_1_1);
438}
439
440// Lower version test
441TEST_F(FeatureSupportTest, RootSignatureLower)
442{
443 device->m_RootSignatureHighestVersion = D3D_ROOT_SIGNATURE_VERSION_1;
444 INIT_FEATURES();
445 EXPECT_EQ(features.HighestRootSignatureVersion(), D3D_ROOT_SIGNATURE_VERSION_1);
446}
447
448// Higher version test
449TEST_F(FeatureSupportTest, RootSignatureHigher)
450{
451 device->m_RootSignatureHighestVersion = (D3D_ROOT_SIGNATURE_VERSION)(D3D_ROOT_SIGNATURE_VERSION_1_1 + 1);
452 INIT_FEATURES();
453 EXPECT_EQ(features.HighestRootSignatureVersion(), D3D_ROOT_SIGNATURE_VERSION_1_1);
454}
455
456// Unavailable test
457TEST_F(FeatureSupportTest, RootSignatureUnavailable)
458{
459 device->m_RootSignatureAvailable = false;
460 device->m_RootSignatureHighestVersion = D3D_ROOT_SIGNATURE_VERSION_1_1;
461 INIT_FEATURES();
462 EXPECT_EQ(features.HighestRootSignatureVersion(), 0);
463}
464
465// 18: Options2
466// Basic test
467TEST_F(FeatureSupportTest, D3D12Options2Basic)
468{
469 device->m_DepthBoundsTestSupport = true;
470 device->m_ProgrammableSamplePositionsTier = D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2;
471 INIT_FEATURES();
472 EXPECT_TRUE(features.DepthBoundsTestSupported());
473 EXPECT_EQ(features.ProgrammableSamplePositionsTier(), D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2);
474}
475
476// Unavailable test
477TEST_F(FeatureSupportTest, D3D12Options2Unavailable)
478{
479 device->m_Options2Available = false;
480 device->m_DepthBoundsTestSupport = true;
481 device->m_ProgrammableSamplePositionsTier = D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2;
482 INIT_FEATURES();
483 EXPECT_FALSE(features.DepthBoundsTestSupported());
484 EXPECT_EQ(features.ProgrammableSamplePositionsTier(), D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED);
485}
486
487// 19: Shader Cache
488// Basic test
489TEST_F(FeatureSupportTest, ShaderCacheBasic)
490{
491 D3D12_SHADER_CACHE_SUPPORT_FLAGS outFlags = D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO
492 | D3D12_SHADER_CACHE_SUPPORT_LIBRARY
493 | D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE
494 | D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE
495 | D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR
496 | D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE;
497 device->m_ShaderCacheSupportFlags = outFlags;
498
499 INIT_FEATURES();
500 EXPECT_EQ(features.ShaderCacheSupportFlags(), outFlags);
501}
502
503// Unavailable test
504TEST_F(FeatureSupportTest, ShaderCacheUnavailable)
505{
506 device->m_ShaderCacheAvailable = false;
507 D3D12_SHADER_CACHE_SUPPORT_FLAGS outFlags = D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO
508 | D3D12_SHADER_CACHE_SUPPORT_LIBRARY
509 | D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE
510 | D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE
511 | D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR
512 | D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE;
513 device->m_ShaderCacheSupportFlags = outFlags;
514
515 INIT_FEATURES();
516 EXPECT_EQ(features.ShaderCacheSupportFlags(), D3D12_SHADER_CACHE_SUPPORT_NONE);
517}
518
519// 20: Command Queue Priority
520// Basic positive test
521TEST_F(FeatureSupportTest, CommandQueuePriorityBasic)
522{
523 device->m_GlobalRealtimeCommandQueueSupport = true;
524 INIT_FEATURES();
525 EXPECT_TRUE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL));
526 EXPECT_TRUE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_HIGH));
527 EXPECT_TRUE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME));
528}
529
530// Negative tests
531TEST_F(FeatureSupportTest, CommandQueuePriorityNegative)
532{
533 device->m_GlobalRealtimeCommandQueueSupport = false;
534 INIT_FEATURES();
535 EXPECT_FALSE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE, D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME)); // Global realtime not on
536 EXPECT_FALSE(features.CommandQueuePrioritySupported((D3D12_COMMAND_LIST_TYPE)(D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE+1), D3D12_COMMAND_QUEUE_PRIORITY_NORMAL)); // Unknown command list type
537 EXPECT_FALSE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_COMPUTE, (D3D12_COMMAND_QUEUE_PRIORITY)10)); // Unknown Priority level
538}
539
540// Unavailable test
541TEST_F(FeatureSupportTest, CommandQueuePriorityUnavailable)
542{
543 device->m_CommandQueuePriorityAvailable = false;
544
545 device->m_GlobalRealtimeCommandQueueSupport = true;
546 INIT_FEATURES();
547 EXPECT_FALSE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL));
548 EXPECT_FALSE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_HIGH));
549 EXPECT_FALSE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME));
550}
551
552// 21: Options3
553// Basic Test
554TEST_F(FeatureSupportTest, Options3Basic)
555{
556 device->m_CopyQueueTimestampQueriesSupported = true;
557 device->m_CastingFullyTypedFormatsSupported = true;
558 device->m_GetCachedWriteBufferImmediateSupportFlags = D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE;
559 device->m_ViewInstancingTier = D3D12_VIEW_INSTANCING_TIER_3;
560 device->m_BarycentricsSupported = true;
561
562 INIT_FEATURES();
563
564 EXPECT_TRUE(features.CopyQueueTimestampQueriesSupported());
565 EXPECT_TRUE(features.CastingFullyTypedFormatSupported());
566 EXPECT_EQ(features.WriteBufferImmediateSupportFlags(), D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE);
567 EXPECT_EQ(features.ViewInstancingTier(), D3D12_VIEW_INSTANCING_TIER_3);
568 EXPECT_TRUE(features.BarycentricsSupported());
569}
570
571// Unavailable Test
572TEST_F(FeatureSupportTest, Options3Unavailable)
573{
574 device->m_Options3Available = false;
575 device->m_CopyQueueTimestampQueriesSupported = true;
576 device->m_CastingFullyTypedFormatsSupported = true;
577 device->m_GetCachedWriteBufferImmediateSupportFlags = D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE;
578 device->m_ViewInstancingTier = D3D12_VIEW_INSTANCING_TIER_3;
579 device->m_BarycentricsSupported = true;
580
581 INIT_FEATURES();
582
583 EXPECT_FALSE(features.CopyQueueTimestampQueriesSupported());
584 EXPECT_FALSE(features.CastingFullyTypedFormatSupported());
585 EXPECT_EQ(features.WriteBufferImmediateSupportFlags(), D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE);
586 EXPECT_EQ(features.ViewInstancingTier(), D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED);
587 EXPECT_FALSE(features.BarycentricsSupported());
588}
589
590// 22: Existing Heaps
591// Basic Test
592TEST_F(FeatureSupportTest, ExistingHeapsBasic)
593{
594 device->m_ExistingHeapCaps = true;
595 INIT_FEATURES();
596 EXPECT_TRUE(features.ExistingHeapsSupported());
597}
598
599// Unavailable Test
600TEST_F(FeatureSupportTest, ExistingHeapsUnavailable)
601{
602 device->m_ExistingHeapsAvailable = false;
603 device->m_ExistingHeapCaps = true;
604 INIT_FEATURES();
605 EXPECT_FALSE(features.ExistingHeapsSupported());
606}
607
608// 23: Options4
609// Basic Test
610TEST_F(FeatureSupportTest, Options4Basic)
611{
612 device->m_MSAA64KBAlignedTextureSupported = true;
613 device->m_SharedResourceCompatibilityTier = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2; // Duplicate member
614 device->m_Native16BitShaderOpsSupported = true;
615
616 INIT_FEATURES();
617 EXPECT_TRUE(features.MSAA64KBAlignedTextureSupported());
618 EXPECT_EQ(features.SharedResourceCompatibilityTier(), D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2);
619 EXPECT_TRUE(features.Native16BitShaderOpsSupported());
620}
621
622// Unavailable Test
623TEST_F(FeatureSupportTest, Options4Unavailable)
624{
625 device->m_Options4Available = false;
626 device->m_MSAA64KBAlignedTextureSupported = true;
627 device->m_SharedResourceCompatibilityTier = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2; // Duplicate member
628 device->m_Native16BitShaderOpsSupported = true;
629
630 INIT_FEATURES();
631 EXPECT_FALSE(features.MSAA64KBAlignedTextureSupported());
632 EXPECT_EQ(features.SharedResourceCompatibilityTier(), D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0);
633 EXPECT_FALSE(features.Native16BitShaderOpsSupported());
634}
635
636// 24: Serialization
637// Basic Test
638TEST_F(FeatureSupportTest, SerializationBasic)
639{
640 device->m_HeapSerializationTier[0] = D3D12_HEAP_SERIALIZATION_TIER_10;
641
642 INIT_FEATURES();
643
644 EXPECT_EQ(features.HeapSerializationTier(), D3D12_HEAP_SERIALIZATION_TIER_10);
645}
646
647// Multinode Test
648TEST_F(FeatureSupportTest, SerializationMultinode)
649{
650 device->SetNodeCount(3);
651 device->m_HeapSerializationTier =
652 {
653 D3D12_HEAP_SERIALIZATION_TIER_10,
654 D3D12_HEAP_SERIALIZATION_TIER_0,
655 D3D12_HEAP_SERIALIZATION_TIER_10
656 };
657
658 INIT_FEATURES();
659
660 EXPECT_EQ(features.HeapSerializationTier(), D3D12_HEAP_SERIALIZATION_TIER_10);
661 EXPECT_EQ(features.HeapSerializationTier(1), D3D12_HEAP_SERIALIZATION_TIER_0);
662 EXPECT_EQ(features.HeapSerializationTier(2), D3D12_HEAP_SERIALIZATION_TIER_10);
663}
664
665// Unavailable Test
666TEST_F(FeatureSupportTest, SerializationUnavailable)
667{
668 device->m_SerializationAvailable = false;
669 device->SetNodeCount(3);
670 device->m_HeapSerializationTier =
671 {
672 D3D12_HEAP_SERIALIZATION_TIER_10,
673 D3D12_HEAP_SERIALIZATION_TIER_0,
674 D3D12_HEAP_SERIALIZATION_TIER_10
675 };
676
677 INIT_FEATURES();
678
679 EXPECT_EQ(features.HeapSerializationTier(), D3D12_HEAP_SERIALIZATION_TIER_0);
680 EXPECT_EQ(features.HeapSerializationTier(1), D3D12_HEAP_SERIALIZATION_TIER_0);
681 EXPECT_EQ(features.HeapSerializationTier(2), D3D12_HEAP_SERIALIZATION_TIER_0);
682}
683
684// 25: Cross Node
685// Basic Test
686TEST_F(FeatureSupportTest, CrossNodeBasic)
687{
688 device->m_CrossNodeSharingTier = D3D12_CROSS_NODE_SHARING_TIER_3; // Duplicated Cap
689 device->m_AtomicShaderInstructions = true;
690
691 INIT_FEATURES();
692
693 EXPECT_EQ(features.CrossNodeSharingTier(), D3D12_CROSS_NODE_SHARING_TIER_3);
694 EXPECT_TRUE(features.CrossNodeAtomicShaderInstructions());
695}
696
697// Unavailable Test
698TEST_F(FeatureSupportTest, CrossNodeUnavailable)
699{
700 device->m_CrossNodeAvailable = false;
701 device->m_CrossNodeSharingTier = D3D12_CROSS_NODE_SHARING_TIER_3; // Duplicated Cap
702 device->m_AtomicShaderInstructions = true;
703
704 INIT_FEATURES();
705
706 EXPECT_EQ(features.CrossNodeSharingTier(), D3D12_CROSS_NODE_SHARING_TIER_3); // It is still correctly initialized by Options1
707 EXPECT_FALSE(features.CrossNodeAtomicShaderInstructions());
708}
709
710// 27: Options5
711// Basic Test
712TEST_F(FeatureSupportTest, Options5Basic)
713{
714 device->m_RaytracingTier = D3D12_RAYTRACING_TIER_1_1;
715 device->m_RenderPassesTier = D3D12_RENDER_PASS_TIER_2;
716 device->m_SRVOnlyTiledResourceTier3 = true;
717
718 INIT_FEATURES();
719
720 EXPECT_EQ(features.RaytracingTier(), D3D12_RAYTRACING_TIER_1_1);
721 EXPECT_EQ(features.RenderPassesTier(), D3D12_RENDER_PASS_TIER_2);
722 EXPECT_TRUE(features.SRVOnlyTiledResourceTier3());
723}
724
725// Unavailable Test
726TEST_F(FeatureSupportTest, Options5Unavailable)
727{
728 device->m_Options5Available = false;
729 device->m_RaytracingTier = D3D12_RAYTRACING_TIER_1_1;
730 device->m_RenderPassesTier = D3D12_RENDER_PASS_TIER_2;
731 device->m_SRVOnlyTiledResourceTier3 = true;
732
733 INIT_FEATURES();
734
735 EXPECT_EQ(features.RaytracingTier(), D3D12_RAYTRACING_TIER_NOT_SUPPORTED);
736 EXPECT_EQ(features.RenderPassesTier(), D3D12_RENDER_PASS_TIER_0);
737 EXPECT_FALSE(features.SRVOnlyTiledResourceTier3());
738}
739
740// 28: Displayable
741// Basic Test
742TEST_F(FeatureSupportTest, DisplayableBasic)
743{
744 device->m_DisplayableTexture = true;
745 device->m_SharedResourceCompatibilityTier = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2;
746
747 INIT_FEATURES();
748
749 EXPECT_TRUE(features.DisplayableTexture());
750 EXPECT_EQ(features.SharedResourceCompatibilityTier(), D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2);
751}
752
753// Unavailable Test
754TEST_F(FeatureSupportTest, DisplayableUnavailable)
755{
756 device->m_DisplayableAvailable = false;
757 device->m_DisplayableTexture = true;
758 device->m_SharedResourceCompatibilityTier = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2;
759
760 INIT_FEATURES();
761
762 EXPECT_FALSE(features.DisplayableTexture());
763 EXPECT_EQ(features.SharedResourceCompatibilityTier(), D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2); // Still initialized by Options4
764}
765
766// 30: D3D12 Options6
767// Basic Test
768TEST_F(FeatureSupportTest, Options6Basic)
769{
770 device->m_AdditionalShadingRatesSupported = true;
771 device->m_BackgroundProcessingSupported = true;
772 device->m_PerPrimitiveShadingRateSupportedWithViewportIndexing = true;
773 device->m_ShadingRateImageTileSize = 10;
774 device->m_VariableShadingRateTier = D3D12_VARIABLE_SHADING_RATE_TIER_2;
775
776 INIT_FEATURES();
777
778 EXPECT_TRUE(features.AdditionalShadingRatesSupported());
779 EXPECT_TRUE(features.BackgroundProcessingSupported());
780 EXPECT_TRUE(features.PerPrimitiveShadingRateSupportedWithViewportIndexing());
781 EXPECT_EQ(features.ShadingRateImageTileSize(), 10);
782 EXPECT_EQ(features.VariableShadingRateTier(), D3D12_VARIABLE_SHADING_RATE_TIER_2);
783}
784
785// Unavailable Test
786TEST_F(FeatureSupportTest, Options6Unavailable)
787{
788 device->m_Options6Available = false;
789 device->m_AdditionalShadingRatesSupported = true;
790 device->m_BackgroundProcessingSupported = true;
791 device->m_PerPrimitiveShadingRateSupportedWithViewportIndexing = true;
792 device->m_ShadingRateImageTileSize = 10;
793 device->m_VariableShadingRateTier = D3D12_VARIABLE_SHADING_RATE_TIER_2;
794
795 INIT_FEATURES();
796
797 EXPECT_FALSE(features.AdditionalShadingRatesSupported());
798 EXPECT_FALSE(features.BackgroundProcessingSupported());
799 EXPECT_FALSE(features.PerPrimitiveShadingRateSupportedWithViewportIndexing());
800 EXPECT_EQ(features.ShadingRateImageTileSize(), 0);
801 EXPECT_EQ(features.VariableShadingRateTier(), D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED);
802}
803
804// 31: Query Meta Command
805// Only performs input and output consistency checks; not reflecting results from real device
806// Basic Test
807TEST_F(FeatureSupportTest, QueryMetaCommandBasic)
808{
809 UINT MockOutput[2] = {2, 8};
810 UINT MockOutputSize = sizeof(MockOutput);
811 device->m_pQueryOutputData = MockOutput;
812 device->m_QueryOutputDataSizeInBytes = MockOutputSize;
813
814 UINT MockInput[3] = {3, 6, 42};
815 UINT MockInputSize = sizeof(MockInput);
816 GUID MockCommandID = {1, 5, 9, {12, 17, 23, 38}}; // Not a real CommandID
817 UINT MockNodeMask = 0x12;
818
819 D3D12_FEATURE_DATA_QUERY_META_COMMAND QueryData;
820 QueryData.CommandId = MockCommandID;
821 QueryData.NodeMask = MockNodeMask;
822 QueryData.QueryInputDataSizeInBytes = MockInputSize;
823 QueryData.pQueryInputData = MockInput;
824 QueryData.QueryOutputDataSizeInBytes = MockOutputSize;
825 QueryData.pQueryOutputData = MockOutput;
826
827 INIT_FEATURES();
828
829 HRESULT result = features.QueryMetaCommand(QueryData);
830 EXPECT_EQ(result, S_OK);
831 EXPECT_EQ(device->m_CommandID, MockCommandID);
832 EXPECT_EQ(device->m_NodeMask, MockNodeMask);
833 EXPECT_EQ(device->m_QueryInputDataSizeInBytes, MockInputSize);
834 EXPECT_EQ(device->m_pQueryInputData, MockInput);
835 EXPECT_EQ(QueryData.QueryOutputDataSizeInBytes, MockOutputSize);
836 EXPECT_EQ(QueryData.pQueryOutputData, MockOutput);
837}
838
839// 32: Options7
840// Basic Test
841TEST_F(FeatureSupportTest, Options7Basic)
842{
843 device->m_MeshShaderTier = D3D12_MESH_SHADER_TIER_1;
844 device->m_SamplerFeedbackTier = D3D12_SAMPLER_FEEDBACK_TIER_1_0;
845
846 INIT_FEATURES();
847
848 EXPECT_EQ(features.MeshShaderTier(), D3D12_MESH_SHADER_TIER_1);
849 EXPECT_EQ(features.SamplerFeedbackTier(), D3D12_SAMPLER_FEEDBACK_TIER_1_0);
850}
851
852// Unavailable Test
853TEST_F(FeatureSupportTest, Options7Unavailable)
854{
855 device->m_Options7Available = false;
856 device->m_MeshShaderTier = D3D12_MESH_SHADER_TIER_1;
857 device->m_SamplerFeedbackTier = D3D12_SAMPLER_FEEDBACK_TIER_1_0;
858
859 INIT_FEATURES();
860
861 EXPECT_EQ(features.MeshShaderTier(), D3D12_MESH_SHADER_TIER_NOT_SUPPORTED);
862 EXPECT_EQ(features.SamplerFeedbackTier(), D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED);
863}
864
865// 33: Protected Resource Session Type Count
866// Basic Test
867TEST_F(FeatureSupportTest, ProtectedResourceSessionTypeCountBasic)
868{
869 device->m_ProtectedResourceSessionTypeCount[0] = 5;
870 device->m_ProtectedResourceSessionTypes[0].resize(5); // Must set the session types to a correct number
871
872 INIT_FEATURES();
873
874 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(0), 5);
875}
876
877// Multinode Test
878TEST_F(FeatureSupportTest, ProtectedResourceSessionTypeCountMultinode)
879{
880 device->SetNodeCount(3);
881 device->m_ProtectedResourceSessionTypeCount = {3, 14, 21};
882 device->m_ProtectedResourceSessionTypes[0].resize(3);
883 device->m_ProtectedResourceSessionTypes[1].resize(14);
884 device->m_ProtectedResourceSessionTypes[2].resize(21);
885
886 INIT_FEATURES();
887
888 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(0), 3);
889 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(1), 14);
890 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(2), 21);
891}
892
893// Unavailable Test
894TEST_F(FeatureSupportTest, ProtectedResourceSessionTypeCountUnavailable)
895{
896 device->m_ProtectedResourceSessionTypeCountAvailable = false;
897 device->SetNodeCount(3);
898 device->m_ProtectedResourceSessionTypeCount = {3, 14, 21};
899 device->m_ProtectedResourceSessionTypes[0].resize(3);
900 device->m_ProtectedResourceSessionTypes[1].resize(14);
901 device->m_ProtectedResourceSessionTypes[2].resize(21);
902
903 INIT_FEATURES();
904
905 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(0), 0);
906 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(1), 0);
907 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(2), 0);
908}
909
910// 34: Protected Resource Session Types
911// Note: Protected Resource Seesion Type Count must be correctly set for this feature
912// Basic Test
913TEST_F(FeatureSupportTest, ProtectedResourceSessionTypesBasic)
914{
915 device->m_ProtectedResourceSessionTypeCount[0] = 2;
916 device->m_ProtectedResourceSessionTypes[0] = {{1, 1, 2, {3, 5, 8, 13}}, {1, 4, 9, {16, 25, 36, 49}}}; // Some random GUID test data
917
918 INIT_FEATURES();
919
920 EXPECT_EQ(features.ProtectedResourceSessionTypes(), device->m_ProtectedResourceSessionTypes[0]);
921}
922
923// Multinode Test
924TEST_F(FeatureSupportTest, ProtectedResourceSessionTypesMultinode)
925{
926 device->SetNodeCount(2);
927 device->m_ProtectedResourceSessionTypeCount = {2, 1};
928 device->m_ProtectedResourceSessionTypes[0] = {{1, 1, 2, {3, 5, 8, 13}}, {1, 4, 9, {16, 25, 36, 49}}}; // Some random GUID test data
929 device->m_ProtectedResourceSessionTypes[1] = {{5, 7, 9, {11, 13, 15, 17}}};
930
931 INIT_FEATURES();
932
933 EXPECT_EQ(features.ProtectedResourceSessionTypes(0), device->m_ProtectedResourceSessionTypes[0]);
934 EXPECT_EQ(features.ProtectedResourceSessionTypes(1), device->m_ProtectedResourceSessionTypes[1]);
935}
936
937// Unavailable Test
938TEST_F(FeatureSupportTest, ProtectedResourceSessionTypesUnavailable)
939{
940 device->m_ProtectedResourceSessionTypesAvailable = false;
941 device->m_ProtectedResourceSessionTypeCount[0] = 2;
942 device->m_ProtectedResourceSessionTypes[0] = {{1, 1, 2, {3, 5, 8, 13}}, {1, 4, 9, {16, 25, 36, 49}}}; // Some random GUID test data
943
944 INIT_FEATURES();
945
946 // If the check fails, the types vector should remain empty
947 EXPECT_EQ(features.ProtectedResourceSessionTypes(0).size(), 0);
948}
949
950// Test where ProtectedResourceSessiontTypeCount is unavailable
951TEST_F(FeatureSupportTest, ProtectedResourceSessionTypesCascadeUnavailable)
952{
953 device->m_ProtectedResourceSessionTypeCountAvailable = false;
954 device->m_ProtectedResourceSessionTypeCount[0] = 2;
955 device->m_ProtectedResourceSessionTypes[0] = {{1, 1, 2, {3, 5, 8, 13}}, {1, 4, 9, {16, 25, 36, 49}}}; // Some random GUID test data
956
957 INIT_FEATURES();
958
959 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(0), 0);
960 EXPECT_EQ(features.ProtectedResourceSessionTypes(0).size(), 0);
961}
962
963// 36: Options8
964// Basic Test
965TEST_F(FeatureSupportTest, Options8Basic)
966{
967 device->m_UnalignedBlockTexturesSupported = true;
968 INIT_FEATURES();
969 EXPECT_TRUE(features.UnalignedBlockTexturesSupported());
970}
971
972// Unavailable Test
973TEST_F(FeatureSupportTest, Options8Unavailable)
974{
975 device->m_Options8Available = false;
976 device->m_UnalignedBlockTexturesSupported = true;
977 INIT_FEATURES();
978 EXPECT_FALSE(features.UnalignedBlockTexturesSupported());
979}
980
981// 37: Options9
982// Basic Test
983TEST_F(FeatureSupportTest, Options9Basic)
984{
985 device->m_MeshShaderPipelineStatsSupported = true;
986 device->m_MeshShaderSupportsFullRangeRenderTargetArrayIndex = true;
987 device->m_AtomicInt64OnTypedResourceSupported = true;
988 device->m_AtomicInt64OnGroupSharedSupported = true;
989 device->m_DerivativesInMeshAndAmplificationShadersSupported = true;
990 device->m_WaveMMATier = D3D12_WAVE_MMA_TIER_1_0;
991
992 INIT_FEATURES();
993
994 EXPECT_TRUE(features.MeshShaderPipelineStatsSupported());
995 EXPECT_TRUE(features.MeshShaderSupportsFullRangeRenderTargetArrayIndex());
996 EXPECT_TRUE(features.AtomicInt64OnTypedResourceSupported());
997 EXPECT_TRUE(features.AtomicInt64OnGroupSharedSupported());
998 EXPECT_TRUE(features.DerivativesInMeshAndAmplificationShadersSupported());
999 EXPECT_EQ(features.WaveMMATier(), D3D12_WAVE_MMA_TIER_1_0);
1000}
1001
1002// Unavailable Test
1003TEST_F(FeatureSupportTest, Options9Unavailable)
1004{
1005 device->m_Options9Available = false;
1006 device->m_MeshShaderPipelineStatsSupported = true;
1007 device->m_MeshShaderSupportsFullRangeRenderTargetArrayIndex = true;
1008 device->m_AtomicInt64OnTypedResourceSupported = true;
1009 device->m_AtomicInt64OnGroupSharedSupported = true;
1010 device->m_DerivativesInMeshAndAmplificationShadersSupported = true;
1011 device->m_WaveMMATier = D3D12_WAVE_MMA_TIER_1_0;
1012
1013 INIT_FEATURES();
1014
1015 EXPECT_FALSE(features.MeshShaderPipelineStatsSupported());
1016 EXPECT_FALSE(features.MeshShaderSupportsFullRangeRenderTargetArrayIndex());
1017 EXPECT_FALSE(features.AtomicInt64OnTypedResourceSupported());
1018 EXPECT_FALSE(features.AtomicInt64OnGroupSharedSupported());
1019 EXPECT_FALSE(features.DerivativesInMeshAndAmplificationShadersSupported());
1020 EXPECT_EQ(features.WaveMMATier(), D3D12_WAVE_MMA_TIER_NOT_SUPPORTED);
1021}
1022
1023// 39: Options10
1024// Basic Test
1025TEST_F(FeatureSupportTest, Options10Basic)
1026{
1027 device->m_VariableRateShadingSumCombinerSupported = true;
1028 device->m_MeshShaderPerPrimitiveShadingRateSupported = true;
1029
1030 INIT_FEATURES();
1031
1032 EXPECT_TRUE(features.VariableRateShadingSumCombinerSupported());
1033 EXPECT_TRUE(features.MeshShaderPerPrimitiveShadingRateSupported());
1034}
1035
1036// Unavailable Test
1037TEST_F(FeatureSupportTest, Options10Unavailable)
1038{
1039 device->m_Options10Available = false;
1040 device->m_VariableRateShadingSumCombinerSupported = true;
1041 device->m_MeshShaderPerPrimitiveShadingRateSupported = true;
1042
1043 INIT_FEATURES();
1044
1045 EXPECT_FALSE(features.VariableRateShadingSumCombinerSupported());
1046 EXPECT_FALSE(features.MeshShaderPerPrimitiveShadingRateSupported());
1047}
1048
1049// 40: Options11
1050// Basic Test
1051TEST_F(FeatureSupportTest, Options11Basic)
1052{
1053 device->m_AtomicInt64OnDescriptorHeapResourceSupported = true;
1054 INIT_FEATURES();
1055 EXPECT_TRUE(features.AtomicInt64OnDescriptorHeapResourceSupported());
1056}
1057
1058// Unavailable Test
1059TEST_F(FeatureSupportTest, Options11Unavailable)
1060{
1061 device->m_Options11Available = false;
1062 device->m_AtomicInt64OnDescriptorHeapResourceSupported = true;
1063 INIT_FEATURES();
1064 EXPECT_FALSE(features.AtomicInt64OnDescriptorHeapResourceSupported());
1065}
1066
1067// 41: Options12
1068// Basic Test
1069TEST_F(FeatureSupportTest, Options12Basic)
1070{
1071 device->m_MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE_TRUE;
1072 device->m_EnhancedBarriersSupported = true;
1073 INIT_FEATURES();
1074 EXPECT_EQ(features.MSPrimitivesPipelineStatisticIncludesCulledPrimitives(), D3D12_TRI_STATE_TRUE);
1075 EXPECT_TRUE(features.EnhancedBarriersSupported());
1076}
1077
1078// Unavailable Test
1079TEST_F(FeatureSupportTest, Options12Unavailable)
1080{
1081 device->m_Options12Available = false;
1082 device->m_MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE_TRUE;
1083 device->m_EnhancedBarriersSupported = true;
1084 INIT_FEATURES();
1085 EXPECT_EQ(features.MSPrimitivesPipelineStatisticIncludesCulledPrimitives(), D3D12_TRI_STATE_UNKNOWN);
1086 EXPECT_FALSE(features.EnhancedBarriersSupported());
1087}
1088
1089// Duplicate Caps Tests
1090// This test ensures that caps that are present in more than one features reports correctly
1091// when either of them are unavailable on the runtime
1092
1093// Cross Node Sharing Tier: D3D12Options, CrossNode
1094TEST_F(FeatureSupportTest, DuplicateCrossNodeSharingTier)
1095{
1096 device->m_CrossNodeSharingTier = D3D12_CROSS_NODE_SHARING_TIER_3;
1097 device->m_CrossNodeAvailable = false;
1098
1099 INIT_FEATURES();
1100
1101 EXPECT_EQ(features.CrossNodeSharingTier(), D3D12_CROSS_NODE_SHARING_TIER_3);
1102}
1103
1104// Shared Resource Compatibility Tier: D3D12Options4, Displayable
1105TEST_F(FeatureSupportTest, DuplicateSharedResourceCompatibilityTier)
1106{
1107 device->m_SharedResourceCompatibilityTier = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2;
1108 device->m_DisplayableAvailable = false;
1109
1110 INIT_FEATURES();
1111 EXPECT_EQ(features.SharedResourceCompatibilityTier(), D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2);
1112}
1113
1114// Test where both features are unavailable
1115TEST_F(FeatureSupportTest, DuplicateSharedResourceCompatibilityTierNegatvie)
1116{
1117 device->m_SharedResourceCompatibilityTier = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2;
1118 device->m_DisplayableAvailable = false;
1119 device->m_Options4Available = false;
1120
1121 INIT_FEATURES();
1122 EXPECT_EQ(features.SharedResourceCompatibilityTier(), D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0); // Fallback to default value
1123}
1124
1125// MaxGPUVirtualAddressBitsPerResource also has duplicates,
1126// but since the two features are always supported, no explicit tests are needed.
1127
1128// System Test
1129// Test if the system works when all features are initialized and queries
1130// Skips functions that only does forwarding
1131TEST_F(FeatureSupportTest, SystemTest)
1132{
1133 device->SetNodeCount(2);
1134 device->m_DoublePrecisionFloatShaderOps = true;
1135 device->m_OutputMergerLogicOp = true;
1136 device->m_ShaderMinPrecisionSupport10Bit = D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT;
1137 device->m_ShaderMinPrecisionSupport16Bit = D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT;
1138 device->m_TiledResourcesTier = D3D12_TILED_RESOURCES_TIER_3;
1139 device->m_ResourceBindingTier = D3D12_RESOURCE_BINDING_TIER_3;
1140 device->m_PSSpecifiedStencilRefSupported = true;
1141 device->m_ConservativeRasterizationTier = D3D12_CONSERVATIVE_RASTERIZATION_TIER_2;
1142 device->m_MaxGPUVirtualAddressBitsPerResource = 10;
1143 device->m_ResourceHeapTier = D3D12_RESOURCE_HEAP_TIER_2;
1144 device->m_TypedUAVLoadAdditionalFormats = true;
1145 device->m_ROVsSupported = true;
1146 device->m_StandardSwizzle64KBSupported = true;
1147 device->m_CrossNodeSharingTier = D3D12_CROSS_NODE_SHARING_TIER_3;
1148 device->m_CrossAdapterRowMajorTextureSupported = true;
1149 device->m_VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation = true;
1150
1151 device->m_Architecture1Available = true;
1152 device->m_TileBasedRenderer = {false, true};
1153 device->m_UMA = {true, false};
1154 device->m_CacheCoherentUMA = {false, true};
1155 device->m_IsolatedMMU = {true, true};
1156
1157 device->m_FeatureLevel = D3D_FEATURE_LEVEL_12_2;
1158
1159 device->m_MaxGPUVirtualAddressBitsPerProcess = 16;
1160
1161 device->m_WaveOpsSupported = true;
1162 device->m_WaveLaneCountMin = 2;
1163 device->m_WaveLaneCountMax = 4;
1164 device->m_TotalLaneCount = 8;
1165 device->m_ExpandedComputeResourceStates = true;
1166 device->m_Int64ShaderOpsSupported = true;
1167
1168 device->m_ProtectedResourceSessionSupport =
1169 {
1170 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE,
1171 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED,
1172 };
1173
1174 device->m_RootSignatureHighestVersion = D3D_ROOT_SIGNATURE_VERSION_1_1;
1175
1176 device->m_DepthBoundsTestSupport = true;
1177 device->m_ProgrammableSamplePositionsTier = D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2;
1178
1179 D3D12_SHADER_CACHE_SUPPORT_FLAGS outFlags = D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO
1180 | D3D12_SHADER_CACHE_SUPPORT_LIBRARY
1181 | D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE
1182 | D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE
1183 | D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR
1184 | D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE;
1185 device->m_ShaderCacheSupportFlags = outFlags;
1186
1187 device->m_GlobalRealtimeCommandQueueSupport = true;
1188
1189 device->m_CopyQueueTimestampQueriesSupported = true;
1190 device->m_CastingFullyTypedFormatsSupported = true;
1191 device->m_GetCachedWriteBufferImmediateSupportFlags = D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE;
1192 device->m_ViewInstancingTier = D3D12_VIEW_INSTANCING_TIER_3;
1193 device->m_BarycentricsSupported = true;
1194
1195 device->m_ExistingHeapCaps = true;
1196
1197 device->m_MSAA64KBAlignedTextureSupported = true;
1198 device->m_SharedResourceCompatibilityTier = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2;
1199 device->m_Native16BitShaderOpsSupported = true;
1200
1201 device->m_HeapSerializationTier =
1202 {
1203 D3D12_HEAP_SERIALIZATION_TIER_10,
1204 D3D12_HEAP_SERIALIZATION_TIER_10,
1205 };
1206
1207 device->m_AtomicShaderInstructions = true;
1208
1209 device->m_RaytracingTier = D3D12_RAYTRACING_TIER_1_1;
1210 device->m_RenderPassesTier = D3D12_RENDER_PASS_TIER_2;
1211 device->m_SRVOnlyTiledResourceTier3 = true;
1212
1213 device->m_DisplayableTexture = true;
1214
1215 device->m_AdditionalShadingRatesSupported = true;
1216 device->m_BackgroundProcessingSupported = true;
1217 device->m_PerPrimitiveShadingRateSupportedWithViewportIndexing = true;
1218 device->m_ShadingRateImageTileSize = 10;
1219 device->m_VariableShadingRateTier = D3D12_VARIABLE_SHADING_RATE_TIER_2;
1220
1221 device->m_MeshShaderTier = D3D12_MESH_SHADER_TIER_1;
1222 device->m_SamplerFeedbackTier = D3D12_SAMPLER_FEEDBACK_TIER_1_0;
1223
1224 device->m_ProtectedResourceSessionTypeCount = {2, 1};
1225 device->m_ProtectedResourceSessionTypes[0].resize(3);
1226 device->m_ProtectedResourceSessionTypes[1].resize(14);
1227
1228 device->m_ProtectedResourceSessionTypes[0] = {{1, 1, 2, {3, 5, 8, 13}}, {1, 4, 9, {16, 25, 36, 49}}}; // Some random GUID test data
1229 device->m_ProtectedResourceSessionTypes[1] = {{5, 7, 9, {11, 13, 15, 17}}};
1230
1231 device->m_UnalignedBlockTexturesSupported = true;
1232
1233 device->m_MeshShaderPipelineStatsSupported = true;
1234 device->m_MeshShaderSupportsFullRangeRenderTargetArrayIndex = true;
1235 device->m_AtomicInt64OnTypedResourceSupported = true;
1236 device->m_AtomicInt64OnGroupSharedSupported = true;
1237 device->m_DerivativesInMeshAndAmplificationShadersSupported = true;
1238 device->m_WaveMMATier = D3D12_WAVE_MMA_TIER_1_0;
1239
1240 device->m_VariableRateShadingSumCombinerSupported = true;
1241 device->m_MeshShaderPerPrimitiveShadingRateSupported = true;
1242
1243 device->m_AtomicInt64OnDescriptorHeapResourceSupported = true;
1244
1245 device->m_MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE_TRUE;
1246 device->m_EnhancedBarriersSupported = true;
1247
1248 INIT_FEATURES();
1249
1250 EXPECT_TRUE(features.DoublePrecisionFloatShaderOps());
1251 EXPECT_TRUE(features.OutputMergerLogicOp());
1252 EXPECT_EQ(features.MinPrecisionSupport(), D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT | D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT);
1253 EXPECT_EQ(features.TiledResourcesTier(), D3D12_TILED_RESOURCES_TIER_3);
1254 EXPECT_EQ(features.ResourceBindingTier(), D3D12_RESOURCE_BINDING_TIER_3);
1255 EXPECT_TRUE(features.PSSpecifiedStencilRefSupported());
1256 EXPECT_TRUE(features.TypedUAVLoadAdditionalFormats());
1257 EXPECT_TRUE(features.ROVsSupported());
1258 EXPECT_EQ(features.ConservativeRasterizationTier(), D3D12_CONSERVATIVE_RASTERIZATION_TIER_2);
1259 EXPECT_EQ(features.MaxGPUVirtualAddressBitsPerResource(), 10);
1260 EXPECT_TRUE(features.StandardSwizzle64KBSupported());
1261 EXPECT_EQ(features.CrossNodeSharingTier(), D3D12_CROSS_NODE_SHARING_TIER_3);
1262 EXPECT_TRUE(features.CrossAdapterRowMajorTextureSupported());
1263 EXPECT_TRUE(features.VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation());
1264 EXPECT_EQ(features.ResourceHeapTier(), D3D12_RESOURCE_HEAP_TIER_2);
1265
1266 EXPECT_FALSE(features.TileBasedRenderer(0));
1267 EXPECT_TRUE(features.TileBasedRenderer(1));
1268 EXPECT_TRUE(features.UMA(0));
1269 EXPECT_FALSE(features.UMA(1));
1270 EXPECT_FALSE(features.CacheCoherentUMA(0));
1271 EXPECT_TRUE(features.CacheCoherentUMA(1));
1272 EXPECT_TRUE(features.IsolatedMMU(0));
1273 EXPECT_TRUE(features.IsolatedMMU(1));
1274
1275 EXPECT_EQ(features.MaxSupportedFeatureLevel(), D3D_FEATURE_LEVEL_12_2);
1276
1277 EXPECT_EQ(features.MaxGPUVirtualAddressBitsPerProcess(), 16);
1278
1279 EXPECT_TRUE(features.WaveOps());
1280 EXPECT_EQ(features.WaveLaneCountMin(), 2);
1281 EXPECT_EQ(features.WaveLaneCountMax(), 4);
1282 EXPECT_EQ(features.TotalLaneCount(), 8);
1283 EXPECT_TRUE(features.ExpandedComputeResourceStates());
1284 EXPECT_TRUE(features.Int64ShaderOps());
1285
1286 EXPECT_EQ(features.ProtectedResourceSessionSupport(0), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
1287 EXPECT_EQ(features.ProtectedResourceSessionSupport(1), D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED);
1288
1289 EXPECT_EQ(features.HighestRootSignatureVersion(), D3D_ROOT_SIGNATURE_VERSION_1_1);
1290
1291 EXPECT_TRUE(features.DepthBoundsTestSupported());
1292 EXPECT_EQ(features.ProgrammableSamplePositionsTier(), D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2);
1293
1294 EXPECT_EQ(features.ShaderCacheSupportFlags(), outFlags);
1295
1296 EXPECT_TRUE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL));
1297 EXPECT_TRUE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_HIGH));
1298 EXPECT_TRUE(features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME));
1299
1300 EXPECT_TRUE(features.CopyQueueTimestampQueriesSupported());
1301 EXPECT_TRUE(features.CastingFullyTypedFormatSupported());
1302 EXPECT_EQ(features.WriteBufferImmediateSupportFlags(), D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT | D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE);
1303 EXPECT_EQ(features.ViewInstancingTier(), D3D12_VIEW_INSTANCING_TIER_3);
1304 EXPECT_TRUE(features.BarycentricsSupported());
1305
1306 EXPECT_TRUE(features.ExistingHeapsSupported());
1307
1308 EXPECT_TRUE(features.MSAA64KBAlignedTextureSupported());
1309 EXPECT_EQ(features.SharedResourceCompatibilityTier(), D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2);
1310 EXPECT_TRUE(features.Native16BitShaderOpsSupported());
1311
1312 EXPECT_EQ(features.HeapSerializationTier(), D3D12_HEAP_SERIALIZATION_TIER_10);
1313 EXPECT_EQ(features.HeapSerializationTier(1), D3D12_HEAP_SERIALIZATION_TIER_10);
1314
1315 EXPECT_EQ(features.CrossNodeSharingTier(), D3D12_CROSS_NODE_SHARING_TIER_3);
1316 EXPECT_TRUE(features.CrossNodeAtomicShaderInstructions());
1317
1318 EXPECT_EQ(features.RaytracingTier(), D3D12_RAYTRACING_TIER_1_1);
1319 EXPECT_EQ(features.RenderPassesTier(), D3D12_RENDER_PASS_TIER_2);
1320 EXPECT_TRUE(features.SRVOnlyTiledResourceTier3());
1321
1322 EXPECT_TRUE(features.DisplayableTexture());
1323
1324 EXPECT_TRUE(features.AdditionalShadingRatesSupported());
1325 EXPECT_TRUE(features.BackgroundProcessingSupported());
1326 EXPECT_TRUE(features.PerPrimitiveShadingRateSupportedWithViewportIndexing());
1327 EXPECT_EQ(features.ShadingRateImageTileSize(), 10);
1328 EXPECT_EQ(features.VariableShadingRateTier(), D3D12_VARIABLE_SHADING_RATE_TIER_2);
1329
1330 EXPECT_EQ(features.MeshShaderTier(), D3D12_MESH_SHADER_TIER_1);
1331 EXPECT_EQ(features.SamplerFeedbackTier(), D3D12_SAMPLER_FEEDBACK_TIER_1_0);
1332
1333 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(0), 2);
1334 EXPECT_EQ(features.ProtectedResourceSessionTypeCount(1), 1);
1335 EXPECT_EQ(features.ProtectedResourceSessionTypes(0), device->m_ProtectedResourceSessionTypes[0]);
1336 EXPECT_EQ(features.ProtectedResourceSessionTypes(1), device->m_ProtectedResourceSessionTypes[1]);
1337
1338 EXPECT_TRUE(features.UnalignedBlockTexturesSupported());
1339
1340 EXPECT_TRUE(features.MeshShaderPipelineStatsSupported());
1341 EXPECT_TRUE(features.MeshShaderSupportsFullRangeRenderTargetArrayIndex());
1342 EXPECT_TRUE(features.AtomicInt64OnTypedResourceSupported());
1343 EXPECT_TRUE(features.AtomicInt64OnGroupSharedSupported());
1344 EXPECT_TRUE(features.DerivativesInMeshAndAmplificationShadersSupported());
1345 EXPECT_EQ(features.WaveMMATier(), D3D12_WAVE_MMA_TIER_1_0);
1346
1347 EXPECT_TRUE(features.VariableRateShadingSumCombinerSupported());
1348 EXPECT_TRUE(features.MeshShaderPerPrimitiveShadingRateSupported());
1349
1350 EXPECT_TRUE(features.AtomicInt64OnDescriptorHeapResourceSupported());
1351
1352 EXPECT_EQ(features.MSPrimitivesPipelineStatisticIncludesCulledPrimitives(), D3D12_TRI_STATE_TRUE);
1353 EXPECT_TRUE(features.EnhancedBarriersSupported());
1354} \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/googletest/meson.build b/contrib/DirectX-Headers-1.618.2/googletest/meson.build
new file mode 100644
index 0000000..a839782
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/googletest/meson.build
@@ -0,0 +1,13 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4gtest = cpp.find_library('gtest', required: false)
5gtest_main = cpp.find_library('gtest_main', required: false)
6
7if gtest.found() and gtest_main.found()
8 feature_support_test = executable('Feature-Support-Test', 'feature_support_test.cpp',
9 dependencies : [gtest, gtest_main, dep_dxheaders, d3d12_lib, dxcore_lib],
10 cpp_args : test_compile_opts,
11 c_args : test_compile_opts)
12 test('Feature-Support-Test', feature_support_test)
13endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/composition/dcomp-preview.h b/contrib/DirectX-Headers-1.618.2/include/composition/dcomp-preview.h
new file mode 100644
index 0000000..303567a
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/composition/dcomp-preview.h
@@ -0,0 +1,85 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 * dcomp-preview.h - Preview versions of upcoming DirectComposition interfaces.
7 *
8 * This file provides preview versions of DirectComposition interfaces that may eventually
9 * be integrated into the official dcomp.h header of the Windows SDK. The inclusion of an
10 * interface in this file does not guarantee its future adoption. However, if an interface is
11 * adopted exactly as defined here, the official definition—including its GUID—will be identical
12 * to the preview version.
13 *
14 * If any modifications are made to an interface prior to its official release, the GUID will be
15 * updated accordingly. This guarantees that a QueryInterface (QI) call for a PREVIEW_ interface
16 * is safe: a QI will only succeed if the GUID matches, and will gracefully fail if the official
17 * version differs.
18 *
19 * Developers can transition to the official interfaces by removing the "PREVIEW_" prefix, provided
20 * that the GUIDs remain the same. Note that some PREVIEW_ interfaces may eventually be deprecated
21 * and removed from this file. For a smooth migration, it is recommended to adopt the official
22 * interfaces as soon as they become available in the Windows SDK. The preview interfaces will
23 * remain available long enough to support this transition.
24 *
25 * Always query for these interfaces using QueryInterface and validate the results, rather than
26 * assuming that the target Windows system supports the required features.
27 *
28 *-------------------------------------------------------------------------------------*/
29#pragma once
30
31#if (NTDDI_VERSION >= NTDDI_WIN11_GE)
32
33//+-----------------------------------------------------------------------------
34//
35// Interface:
36// PREVIEW_IDCompositionDynamicTexture
37//
38// Synopsis:
39// An interface representing a dynamically changing texture that can be
40// bound to a dcomp visual as content.
41//
42//------------------------------------------------------------------------------
43#undef INTERFACE
44#define INTERFACE PREVIEW_IDCompositionDynamicTexture
45DECLARE_INTERFACE_IID_(PREVIEW_IDCompositionDynamicTexture, IUnknown, "A1DE1D3F-6405-447F-8E95-1383A34B0277")
46{
47 // Set the current texture, assuming that every pixel has changed.
48 STDMETHOD(SetTexture)(THIS_
49 _In_ IDCompositionTexture* pTexture) PURE;
50
51 // Set the current texture, assuming that only the pixels within the specified dirty rects
52 // have changed.
53 //
54 // DWM will use these dirty rects to optimize redrawing the texture on the screen.
55 // However, it does not verify the accuracy of the provided rects, so the caller must ensure
56 // that every changed pixel is covered by at least one rect. There are no guarantees regarding
57 // the redrawing of pixels outside the specified dirty rects; DWM may choose to redraw
58 // additional areas if necessary.
59 //
60 // If the provided array is empty or if the dirty rects are empty, this method treats the
61 // texture as unchanged, allowing DWM to skip redrawing.
62 STDMETHOD(SetTexture)(THIS_
63 _In_ IDCompositionTexture* pTexture,
64 _In_count_(rectCount) const D2D_RECT_L *pRects,
65 _In_ size_t rectCount) PURE;
66};
67
68//+-----------------------------------------------------------------------------
69//
70// Interface:
71// PREVIEW_IDCompositionDevice5
72//
73// Synopsis:
74// Serves as the root factory for composition dynamic textures
75//
76//------------------------------------------------------------------------------
77#undef INTERFACE
78#define INTERFACE PREVIEW_IDCompositionDevice5
79DECLARE_INTERFACE_IID_(PREVIEW_IDCompositionDevice5, IDCompositionDevice4, "2C6BEBFE-A603-472F-AF34-D2443356E61B")
80{
81 STDMETHOD(CreateDynamicTexture)(THIS_
82 _Outptr_ PREVIEW_IDCompositionDynamicTexture** compositionDynamicTexture) PURE;
83};
84
85#endif // #if (NTDDI_VERSION >= NTDDI_WIN11_GE)
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/D3D12MarkerApiEnums.idl b/contrib/DirectX-Headers-1.618.2/include/directx/D3D12MarkerApiEnums.idl
new file mode 100644
index 0000000..1384b73
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/D3D12MarkerApiEnums.idl
@@ -0,0 +1,119 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 *
5 *-------------------------------------------------------------------------------------*/
6typedef enum D3D12_MARKER_API {
7 D3D12_MARKER_API_SETMARKER = 0,
8 D3D12_MARKER_API_BEGINEVENT = 1,
9 D3D12_MARKER_API_ENDEVENT = 2,
10 D3D12_MARKER_API_DRAWINSTANCED = 3,
11 D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
12 D3D12_MARKER_API_EXECUTEINDIRECT = 5,
13 D3D12_MARKER_API_DISPATCH = 6,
14 D3D12_MARKER_API_COPYBUFFERREGION = 7,
15 D3D12_MARKER_API_COPYTEXTUREREGION = 8,
16 D3D12_MARKER_API_COPYRESOURCE = 9,
17 D3D12_MARKER_API_COPYTILES = 10,
18 D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
19 D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
20 D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
21 D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
22 D3D12_MARKER_API_RESOURCEBARRIER = 15,
23 D3D12_MARKER_API_EXECUTEBUNDLE = 16,
24 D3D12_MARKER_API_PRESENT = 17,
25 D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
26 D3D12_MARKER_API_BEGINSUBMISSION = 19,
27 D3D12_MARKER_API_ENDSUBMISSION = 20,
28 D3D12_MARKER_API_DECODEFRAME = 21,
29 D3D12_MARKER_API_PROCESSFRAMES = 22,
30 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
31 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
32 D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
33 D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
34 D3D12_MARKER_API_DECODEFRAME1 = 27,
35 D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
36 D3D12_MARKER_API_DECODEFRAME2 = 29,
37 D3D12_MARKER_API_PROCESSFRAMES1 = 30,
38 D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
39 D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
40 D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
41 D3D12_MARKER_API_DISPATCHRAYS = 34,
42 D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
43 D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
44 D3D12_MARKER_API_ESTIMATEMOTION = 37,
45 D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
46 D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
47 D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
48 D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
49 D3D12_MARKER_API_DISPATCHMESH = 42,
50 D3D12_MARKER_API_ENCODEFRAME = 43,
51 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
52 D3D12_MARKER_API_BARRIER = 45,
53 D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
54 D3D12_MARKER_API_DISPATCHGRAPH = 47,
55 D3D12_MARKER_API_SETPROGRAM = 48,
56 D3D12_MARKER_API_ENCODEFRAME1 = 49,
57 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
58 D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
59 D3D12_MARKER_API_PROCESSFRAMES2 = 52,
60 D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53,
61} D3D12_MARKER_API;
62
63typedef enum D3D12_AUTO_BREADCRUMB_OP {
64 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
65 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
66 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
67 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
68 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
69 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
70 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
71 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
72 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
73 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
74 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
75 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
76 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
77 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
78 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
79 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
80 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
81 D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
82 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
83 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
84 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
85 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
86 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
87 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
88 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
89 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
90 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
91 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
92 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
93 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
94 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
95 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
96 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
97 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
98 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
99 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
100 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
101 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
102 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
103 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
104 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
105 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
106 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
107 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
108 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
109 D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
110 D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
111 D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
112 D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
113 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
114 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
115 D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
116 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
117 D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS,
118} D3D12_AUTO_BREADCRUMB_OP;
119
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/D3D12TokenizedProgramFormat.hpp b/contrib/DirectX-Headers-1.618.2/include/directx/D3D12TokenizedProgramFormat.hpp
new file mode 100644
index 0000000..b951454
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/D3D12TokenizedProgramFormat.hpp
@@ -0,0 +1,2634 @@
1#pragma once
2//*********************************************************
3//
4// Copyright (c) Microsoft Corporation.
5// Licensed under the MIT License (MIT).
6//
7//*********************************************************
8//
9// High Level Goals
10//
11// - Serve as the runtime/DDI representation for all D3D11 tokenized code,
12// for all classes of programs, including pixel program, vertex program,
13// geometry program, etc.
14//
15// - Any information that HLSL needs to give to drivers is encoded in
16// this token format in some form.
17//
18// - Enable common tools and source code for managing all tokenizable
19// program formats.
20//
21// - Support extensible token definitions, allowing full customizations for
22// specific program classes, while maintaining general conventions for all
23// program models.
24//
25// - Binary backwards compatible with D3D10. Any token name that was originally
26// defined with "D3D10" in it is unchanged; D3D11 only adds new tokens.
27//
28// ----------------------------------------------------------------------------
29//
30// Low Level Feature Summary
31//
32// - DWORD based tokens always, for simplicity
33// - Opcode token is generally a single DWORD, though there is a bit indicating
34// if extended information (extra DWORD(s)) are present
35// - Operand tokens are a completely self contained, extensible format,
36// with scalar and 4-vector data types as first class citizens, but
37// allowance for extension to n-component vectors.
38// - Initial operand token identifies register type, register file
39// structure/dimensionality and mode of indexing for each dimension,
40// and choice of component selection mechanism (i.e. mask vs. swizzle etc).
41// - Optional additional extended operand tokens can defined things like
42// modifiers (which are not needed by default).
43// - Operand's immediate index value(s), if needed, appear as subsequent DWORD
44// values, and if relative addressing is specified, an additional completely
45// self contained operand definition appears nested in the token sequence.
46//
47// ----------------------------------------------------------------------------
48
49#include <winapifamily.h>
50
51#pragma region Application Family
52#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
53
54// ----------------------------------------------------------------------------
55// Version Token (VerTok)
56//
57// [07:00] minor version number (0-255)
58// [15:08] major version number (0-255)
59// [31:16] D3D10_SB_TOKENIZED_PROGRAM_TYPE
60//
61// ----------------------------------------------------------------------------
62
63typedef enum D3D10_SB_TOKENIZED_PROGRAM_TYPE
64{
65 D3D10_SB_PIXEL_SHADER = 0,
66 D3D10_SB_VERTEX_SHADER = 1,
67 D3D10_SB_GEOMETRY_SHADER = 2,
68
69 // D3D11 Shaders
70 D3D11_SB_HULL_SHADER = 3,
71 D3D11_SB_DOMAIN_SHADER = 4,
72 D3D11_SB_COMPUTE_SHADER = 5,
73
74 // Subset of D3D12 Shaders where this field is referenced by runtime
75 // Entries from 6-12 are unique to state objects
76 // (e.g. library, callable and raytracing shaders)
77 D3D12_SB_MESH_SHADER = 13,
78 D3D12_SB_AMPLIFICATION_SHADER = 14,
79
80 D3D11_SB_RESERVED0 = 0xFFF0
81} D3D10_SB_TOKENIZED_PROGRAM_TYPE;
82
83#define D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK 0xffff0000
84#define D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT 16
85
86// DECODER MACRO: Retrieve program type from version token
87#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_TYPE(VerTok) ((D3D10_SB_TOKENIZED_PROGRAM_TYPE)(((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK)>>D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT))
88
89#define D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK 0x000000f0
90#define D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT 4
91#define D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK 0x0000000f
92
93// DECODER MACRO: Retrieve major version # from version token
94#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION(VerTok) (((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK)>>D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT)
95// DECODER MACRO: Retrieve minor version # from version token
96#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION(VerTok) ((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK)
97
98// ENCODER MACRO: Create complete VerTok
99#define ENCODE_D3D10_SB_TOKENIZED_PROGRAM_VERSION_TOKEN(ProgType,MajorVer,MinorVer) ((((ProgType)<<D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT)&D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK)|\
100 ((((MajorVer)<<D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT)&D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK))|\
101 ((MinorVer)&D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK))
102
103// ----------------------------------------------------------------------------
104// Length Token (LenTok)
105//
106// Always follows VerTok
107//
108// [31:00] Unsigned integer count of number of
109// DWORDs in program code, including version
110// and length tokens. So the minimum value
111// is 0x00000002 (if an empty program is ever
112// valid).
113//
114// ----------------------------------------------------------------------------
115
116// DECODER MACRO: Retrieve program length
117#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(LenTok) (LenTok)
118// ENCODER MACRO: Create complete LenTok
119#define ENCODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(Length) (Length)
120#define MAX_D3D10_SB_TOKENIZED_PROGRAM_LENGTH (0xffffffff)
121
122// ----------------------------------------------------------------------------
123// Opcode Format (OpcodeToken0)
124//
125// [10:00] D3D10_SB_OPCODE_TYPE
126// if( [10:00] == D3D10_SB_OPCODE_CUSTOMDATA )
127// {
128// Token starts a custom-data block. See "Custom-Data Block Format".
129// }
130// else // standard opcode token
131// {
132// [23:11] Opcode-Specific Controls
133// [30:24] Instruction length in DWORDs including the opcode token.
134// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
135// contains extended opcode token.
136// }
137//
138// ----------------------------------------------------------------------------
139
140typedef enum D3D10_SB_OPCODE_TYPE {
141 D3D10_SB_OPCODE_ADD ,
142 D3D10_SB_OPCODE_AND ,
143 D3D10_SB_OPCODE_BREAK ,
144 D3D10_SB_OPCODE_BREAKC ,
145 D3D10_SB_OPCODE_CALL ,
146 D3D10_SB_OPCODE_CALLC ,
147 D3D10_SB_OPCODE_CASE ,
148 D3D10_SB_OPCODE_CONTINUE ,
149 D3D10_SB_OPCODE_CONTINUEC ,
150 D3D10_SB_OPCODE_CUT ,
151 D3D10_SB_OPCODE_DEFAULT ,
152 D3D10_SB_OPCODE_DERIV_RTX ,
153 D3D10_SB_OPCODE_DERIV_RTY ,
154 D3D10_SB_OPCODE_DISCARD ,
155 D3D10_SB_OPCODE_DIV ,
156 D3D10_SB_OPCODE_DP2 ,
157 D3D10_SB_OPCODE_DP3 ,
158 D3D10_SB_OPCODE_DP4 ,
159 D3D10_SB_OPCODE_ELSE ,
160 D3D10_SB_OPCODE_EMIT ,
161 D3D10_SB_OPCODE_EMITTHENCUT ,
162 D3D10_SB_OPCODE_ENDIF ,
163 D3D10_SB_OPCODE_ENDLOOP ,
164 D3D10_SB_OPCODE_ENDSWITCH ,
165 D3D10_SB_OPCODE_EQ ,
166 D3D10_SB_OPCODE_EXP ,
167 D3D10_SB_OPCODE_FRC ,
168 D3D10_SB_OPCODE_FTOI ,
169 D3D10_SB_OPCODE_FTOU ,
170 D3D10_SB_OPCODE_GE ,
171 D3D10_SB_OPCODE_IADD ,
172 D3D10_SB_OPCODE_IF ,
173 D3D10_SB_OPCODE_IEQ ,
174 D3D10_SB_OPCODE_IGE ,
175 D3D10_SB_OPCODE_ILT ,
176 D3D10_SB_OPCODE_IMAD ,
177 D3D10_SB_OPCODE_IMAX ,
178 D3D10_SB_OPCODE_IMIN ,
179 D3D10_SB_OPCODE_IMUL ,
180 D3D10_SB_OPCODE_INE ,
181 D3D10_SB_OPCODE_INEG ,
182 D3D10_SB_OPCODE_ISHL ,
183 D3D10_SB_OPCODE_ISHR ,
184 D3D10_SB_OPCODE_ITOF ,
185 D3D10_SB_OPCODE_LABEL ,
186 D3D10_SB_OPCODE_LD ,
187 D3D10_SB_OPCODE_LD_MS ,
188 D3D10_SB_OPCODE_LOG ,
189 D3D10_SB_OPCODE_LOOP ,
190 D3D10_SB_OPCODE_LT ,
191 D3D10_SB_OPCODE_MAD ,
192 D3D10_SB_OPCODE_MIN ,
193 D3D10_SB_OPCODE_MAX ,
194 D3D10_SB_OPCODE_CUSTOMDATA ,
195 D3D10_SB_OPCODE_MOV ,
196 D3D10_SB_OPCODE_MOVC ,
197 D3D10_SB_OPCODE_MUL ,
198 D3D10_SB_OPCODE_NE ,
199 D3D10_SB_OPCODE_NOP ,
200 D3D10_SB_OPCODE_NOT ,
201 D3D10_SB_OPCODE_OR ,
202 D3D10_SB_OPCODE_RESINFO ,
203 D3D10_SB_OPCODE_RET ,
204 D3D10_SB_OPCODE_RETC ,
205 D3D10_SB_OPCODE_ROUND_NE ,
206 D3D10_SB_OPCODE_ROUND_NI ,
207 D3D10_SB_OPCODE_ROUND_PI ,
208 D3D10_SB_OPCODE_ROUND_Z ,
209 D3D10_SB_OPCODE_RSQ ,
210 D3D10_SB_OPCODE_SAMPLE ,
211 D3D10_SB_OPCODE_SAMPLE_C ,
212 D3D10_SB_OPCODE_SAMPLE_C_LZ ,
213 D3D10_SB_OPCODE_SAMPLE_L ,
214 D3D10_SB_OPCODE_SAMPLE_D ,
215 D3D10_SB_OPCODE_SAMPLE_B ,
216 D3D10_SB_OPCODE_SQRT ,
217 D3D10_SB_OPCODE_SWITCH ,
218 D3D10_SB_OPCODE_SINCOS ,
219 D3D10_SB_OPCODE_UDIV ,
220 D3D10_SB_OPCODE_ULT ,
221 D3D10_SB_OPCODE_UGE ,
222 D3D10_SB_OPCODE_UMUL ,
223 D3D10_SB_OPCODE_UMAD ,
224 D3D10_SB_OPCODE_UMAX ,
225 D3D10_SB_OPCODE_UMIN ,
226 D3D10_SB_OPCODE_USHR ,
227 D3D10_SB_OPCODE_UTOF ,
228 D3D10_SB_OPCODE_XOR ,
229 D3D10_SB_OPCODE_DCL_RESOURCE , // DCL* opcodes have
230 D3D10_SB_OPCODE_DCL_CONSTANT_BUFFER , // custom operand formats.
231 D3D10_SB_OPCODE_DCL_SAMPLER ,
232 D3D10_SB_OPCODE_DCL_INDEX_RANGE ,
233 D3D10_SB_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY ,
234 D3D10_SB_OPCODE_DCL_GS_INPUT_PRIMITIVE ,
235 D3D10_SB_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT ,
236 D3D10_SB_OPCODE_DCL_INPUT ,
237 D3D10_SB_OPCODE_DCL_INPUT_SGV ,
238 D3D10_SB_OPCODE_DCL_INPUT_SIV ,
239 D3D10_SB_OPCODE_DCL_INPUT_PS ,
240 D3D10_SB_OPCODE_DCL_INPUT_PS_SGV ,
241 D3D10_SB_OPCODE_DCL_INPUT_PS_SIV ,
242 D3D10_SB_OPCODE_DCL_OUTPUT ,
243 D3D10_SB_OPCODE_DCL_OUTPUT_SGV ,
244 D3D10_SB_OPCODE_DCL_OUTPUT_SIV ,
245 D3D10_SB_OPCODE_DCL_TEMPS ,
246 D3D10_SB_OPCODE_DCL_INDEXABLE_TEMP ,
247 D3D10_SB_OPCODE_DCL_GLOBAL_FLAGS ,
248
249// -----------------------------------------------
250
251 // This marks the end of D3D10.0 opcodes
252 D3D10_SB_OPCODE_RESERVED0,
253
254// ---------- DX 10.1 op codes---------------------
255
256 D3D10_1_SB_OPCODE_LOD,
257 D3D10_1_SB_OPCODE_GATHER4,
258 D3D10_1_SB_OPCODE_SAMPLE_POS,
259 D3D10_1_SB_OPCODE_SAMPLE_INFO,
260
261// -----------------------------------------------
262
263 // This marks the end of D3D10.1 opcodes
264 D3D10_1_SB_OPCODE_RESERVED1,
265
266// ---------- DX 11 op codes---------------------
267 D3D11_SB_OPCODE_HS_DECLS , // token marks beginning of HS sub-shader
268 D3D11_SB_OPCODE_HS_CONTROL_POINT_PHASE , // token marks beginning of HS sub-shader
269 D3D11_SB_OPCODE_HS_FORK_PHASE , // token marks beginning of HS sub-shader
270 D3D11_SB_OPCODE_HS_JOIN_PHASE , // token marks beginning of HS sub-shader
271
272 D3D11_SB_OPCODE_EMIT_STREAM ,
273 D3D11_SB_OPCODE_CUT_STREAM ,
274 D3D11_SB_OPCODE_EMITTHENCUT_STREAM ,
275 D3D11_SB_OPCODE_INTERFACE_CALL ,
276
277 D3D11_SB_OPCODE_BUFINFO ,
278 D3D11_SB_OPCODE_DERIV_RTX_COARSE ,
279 D3D11_SB_OPCODE_DERIV_RTX_FINE ,
280 D3D11_SB_OPCODE_DERIV_RTY_COARSE ,
281 D3D11_SB_OPCODE_DERIV_RTY_FINE ,
282 D3D11_SB_OPCODE_GATHER4_C ,
283 D3D11_SB_OPCODE_GATHER4_PO ,
284 D3D11_SB_OPCODE_GATHER4_PO_C ,
285 D3D11_SB_OPCODE_RCP ,
286 D3D11_SB_OPCODE_F32TOF16 ,
287 D3D11_SB_OPCODE_F16TOF32 ,
288 D3D11_SB_OPCODE_UADDC ,
289 D3D11_SB_OPCODE_USUBB ,
290 D3D11_SB_OPCODE_COUNTBITS ,
291 D3D11_SB_OPCODE_FIRSTBIT_HI ,
292 D3D11_SB_OPCODE_FIRSTBIT_LO ,
293 D3D11_SB_OPCODE_FIRSTBIT_SHI ,
294 D3D11_SB_OPCODE_UBFE ,
295 D3D11_SB_OPCODE_IBFE ,
296 D3D11_SB_OPCODE_BFI ,
297 D3D11_SB_OPCODE_BFREV ,
298 D3D11_SB_OPCODE_SWAPC ,
299
300 D3D11_SB_OPCODE_DCL_STREAM ,
301 D3D11_SB_OPCODE_DCL_FUNCTION_BODY ,
302 D3D11_SB_OPCODE_DCL_FUNCTION_TABLE ,
303 D3D11_SB_OPCODE_DCL_INTERFACE ,
304
305 D3D11_SB_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT ,
306 D3D11_SB_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT ,
307 D3D11_SB_OPCODE_DCL_TESS_DOMAIN ,
308 D3D11_SB_OPCODE_DCL_TESS_PARTITIONING ,
309 D3D11_SB_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE ,
310 D3D11_SB_OPCODE_DCL_HS_MAX_TESSFACTOR ,
311 D3D11_SB_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT ,
312 D3D11_SB_OPCODE_DCL_HS_JOIN_PHASE_INSTANCE_COUNT ,
313
314 D3D11_SB_OPCODE_DCL_THREAD_GROUP ,
315 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED ,
316 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW ,
317 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED,
318 D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW,
319 D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED,
320 D3D11_SB_OPCODE_DCL_RESOURCE_RAW ,
321 D3D11_SB_OPCODE_DCL_RESOURCE_STRUCTURED ,
322 D3D11_SB_OPCODE_LD_UAV_TYPED ,
323 D3D11_SB_OPCODE_STORE_UAV_TYPED ,
324 D3D11_SB_OPCODE_LD_RAW ,
325 D3D11_SB_OPCODE_STORE_RAW ,
326 D3D11_SB_OPCODE_LD_STRUCTURED ,
327 D3D11_SB_OPCODE_STORE_STRUCTURED ,
328 D3D11_SB_OPCODE_ATOMIC_AND ,
329 D3D11_SB_OPCODE_ATOMIC_OR ,
330 D3D11_SB_OPCODE_ATOMIC_XOR ,
331 D3D11_SB_OPCODE_ATOMIC_CMP_STORE ,
332 D3D11_SB_OPCODE_ATOMIC_IADD ,
333 D3D11_SB_OPCODE_ATOMIC_IMAX ,
334 D3D11_SB_OPCODE_ATOMIC_IMIN ,
335 D3D11_SB_OPCODE_ATOMIC_UMAX ,
336 D3D11_SB_OPCODE_ATOMIC_UMIN ,
337 D3D11_SB_OPCODE_IMM_ATOMIC_ALLOC ,
338 D3D11_SB_OPCODE_IMM_ATOMIC_CONSUME ,
339 D3D11_SB_OPCODE_IMM_ATOMIC_IADD ,
340 D3D11_SB_OPCODE_IMM_ATOMIC_AND ,
341 D3D11_SB_OPCODE_IMM_ATOMIC_OR ,
342 D3D11_SB_OPCODE_IMM_ATOMIC_XOR ,
343 D3D11_SB_OPCODE_IMM_ATOMIC_EXCH ,
344 D3D11_SB_OPCODE_IMM_ATOMIC_CMP_EXCH ,
345 D3D11_SB_OPCODE_IMM_ATOMIC_IMAX ,
346 D3D11_SB_OPCODE_IMM_ATOMIC_IMIN ,
347 D3D11_SB_OPCODE_IMM_ATOMIC_UMAX ,
348 D3D11_SB_OPCODE_IMM_ATOMIC_UMIN ,
349 D3D11_SB_OPCODE_SYNC ,
350
351 D3D11_SB_OPCODE_DADD ,
352 D3D11_SB_OPCODE_DMAX ,
353 D3D11_SB_OPCODE_DMIN ,
354 D3D11_SB_OPCODE_DMUL ,
355 D3D11_SB_OPCODE_DEQ ,
356 D3D11_SB_OPCODE_DGE ,
357 D3D11_SB_OPCODE_DLT ,
358 D3D11_SB_OPCODE_DNE ,
359 D3D11_SB_OPCODE_DMOV ,
360 D3D11_SB_OPCODE_DMOVC ,
361 D3D11_SB_OPCODE_DTOF ,
362 D3D11_SB_OPCODE_FTOD ,
363
364 D3D11_SB_OPCODE_EVAL_SNAPPED ,
365 D3D11_SB_OPCODE_EVAL_SAMPLE_INDEX ,
366 D3D11_SB_OPCODE_EVAL_CENTROID ,
367
368 D3D11_SB_OPCODE_DCL_GS_INSTANCE_COUNT ,
369
370 D3D11_SB_OPCODE_ABORT ,
371 D3D11_SB_OPCODE_DEBUG_BREAK ,
372
373// -----------------------------------------------
374
375 // This marks the end of D3D11.0 opcodes
376 D3D11_SB_OPCODE_RESERVED0,
377
378 D3D11_1_SB_OPCODE_DDIV,
379 D3D11_1_SB_OPCODE_DFMA,
380 D3D11_1_SB_OPCODE_DRCP,
381
382 D3D11_1_SB_OPCODE_MSAD,
383
384 D3D11_1_SB_OPCODE_DTOI,
385 D3D11_1_SB_OPCODE_DTOU,
386 D3D11_1_SB_OPCODE_ITOD,
387 D3D11_1_SB_OPCODE_UTOD,
388
389// -----------------------------------------------
390
391 // This marks the end of D3D11.1 opcodes
392 D3D11_1_SB_OPCODE_RESERVED0,
393
394 D3DWDDM1_3_SB_OPCODE_GATHER4_FEEDBACK,
395 D3DWDDM1_3_SB_OPCODE_GATHER4_C_FEEDBACK,
396 D3DWDDM1_3_SB_OPCODE_GATHER4_PO_FEEDBACK,
397 D3DWDDM1_3_SB_OPCODE_GATHER4_PO_C_FEEDBACK,
398 D3DWDDM1_3_SB_OPCODE_LD_FEEDBACK,
399 D3DWDDM1_3_SB_OPCODE_LD_MS_FEEDBACK,
400 D3DWDDM1_3_SB_OPCODE_LD_UAV_TYPED_FEEDBACK,
401 D3DWDDM1_3_SB_OPCODE_LD_RAW_FEEDBACK,
402 D3DWDDM1_3_SB_OPCODE_LD_STRUCTURED_FEEDBACK,
403 D3DWDDM1_3_SB_OPCODE_SAMPLE_L_FEEDBACK,
404 D3DWDDM1_3_SB_OPCODE_SAMPLE_C_LZ_FEEDBACK,
405
406 D3DWDDM1_3_SB_OPCODE_SAMPLE_CLAMP_FEEDBACK,
407 D3DWDDM1_3_SB_OPCODE_SAMPLE_B_CLAMP_FEEDBACK,
408 D3DWDDM1_3_SB_OPCODE_SAMPLE_D_CLAMP_FEEDBACK,
409 D3DWDDM1_3_SB_OPCODE_SAMPLE_C_CLAMP_FEEDBACK,
410
411 D3DWDDM1_3_SB_OPCODE_CHECK_ACCESS_FULLY_MAPPED,
412
413// -----------------------------------------------
414
415 // This marks the end of WDDM 1.3 opcodes
416 D3DWDDM1_3_SB_OPCODE_RESERVED0,
417
418 D3D10_SB_NUM_OPCODES // Should be the last entry
419} D3D10_SB_OPCODE_TYPE;
420
421#define D3D10_SB_OPCODE_TYPE_MASK 0x00007ff
422// DECODER MACRO: Retrieve program opcode
423#define DECODE_D3D10_SB_OPCODE_TYPE(OpcodeToken0) ((D3D10_SB_OPCODE_TYPE)((OpcodeToken0)&D3D10_SB_OPCODE_TYPE_MASK))
424// ENCODER MACRO: Create the opcode-type portion of OpcodeToken0
425#define ENCODE_D3D10_SB_OPCODE_TYPE(OpcodeName) ((OpcodeName)&D3D10_SB_OPCODE_TYPE_MASK)
426
427#define D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK 0x7f000000
428#define D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT 24
429// DECODER MACRO: Retrieve instruction length
430// in # of DWORDs including the opcode token(s).
431// The range is 1-127.
432#define DECODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(OpcodeToken0) (((OpcodeToken0)&D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK)>> D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT)
433
434// ENCODER MACRO: Store instruction length
435// portion of OpcodeToken0, in # of DWORDs
436// including the opcode token(s).
437// Valid range is 1-127.
438#define ENCODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(Length) (((Length)<<D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT)&D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK)
439#define MAX_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH 127
440
441#define D3D10_SB_INSTRUCTION_SATURATE_MASK 0x00002000
442// DECODER MACRO: Check OpcodeToken0 to see if an instruction
443// is to saturate the result [0..1]
444// This flag is indicated by one of the bits in the
445// opcode specific control range.
446#define DECODE_IS_D3D10_SB_INSTRUCTION_SATURATE_ENABLED(OpcodeToken0) ((OpcodeToken0)&D3D10_SB_INSTRUCTION_SATURATE_MASK)
447// ENCODER MACRO: Encode in OpcodeToken0 if instruction is to saturate the result.
448#define ENCODE_D3D10_SB_INSTRUCTION_SATURATE(bSat) (((bSat)!=0)?D3D10_SB_INSTRUCTION_SATURATE_MASK:0)
449
450// Boolean test for conditional instructions such as if (if_z or if_nz)
451// This is part of the opcode specific control range.
452typedef enum D3D10_SB_INSTRUCTION_TEST_BOOLEAN
453{
454 D3D10_SB_INSTRUCTION_TEST_ZERO = 0,
455 D3D10_SB_INSTRUCTION_TEST_NONZERO = 1
456} D3D10_SB_INSTRUCTION_TEST_BOOLEAN;
457#define D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK 0x00040000
458#define D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT 18
459
460// DECODER MACRO: For an OpcodeToken0 for requires either a
461// zero or non-zero test, determine which test was chosen.
462#define DECODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN(OpcodeToken0) ((D3D10_SB_INSTRUCTION_TEST_BOOLEAN)(((OpcodeToken0)&D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK)>>D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT))
463// ENCODER MACRO: Store "zero" or "nonzero" in the opcode
464// specific control range of OpcodeToken0
465#define ENCODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN(Boolean) (((Boolean)<<D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT)&D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK)
466
467// Precise value mask (bits 19-22)
468// This is part of the opcode specific control range.
469// It's 1 bit per-channel of the output, for instructions with multiple
470// output operands, it applies to that component in each operand. This
471// uses the components defined in D3D10_SB_COMPONENT_NAME.
472#define D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK 0x00780000
473#define D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT 19
474
475// DECODER MACRO: this macro extracts from OpcodeToken0 the 4 component
476// (xyzw) mask, as a field of D3D10_SB_4_COMPONENT_[X|Y|Z|W] flags.
477#define DECODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(OpcodeToken0) ((((OpcodeToken0)&D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK)>>D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT))
478// ENCODER MACRO: Given a set of
479// D3D10_SB_OPERAND_4_COMPONENT_[X|Y|Z|W] values
480// or'd together, encode them in OpcodeToken0.
481#define ENCODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(ComponentMask) (((ComponentMask)<<D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT)&D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK)
482
483// resinfo instruction return type
484typedef enum D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE
485{
486 D3D10_SB_RESINFO_INSTRUCTION_RETURN_FLOAT = 0,
487 D3D10_SB_RESINFO_INSTRUCTION_RETURN_RCPFLOAT = 1,
488 D3D10_SB_RESINFO_INSTRUCTION_RETURN_UINT = 2
489} D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE;
490
491#define D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK 0x00001800
492#define D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT 11
493
494// DECODER MACRO: For an OpcodeToken0 for the resinfo instruction,
495// determine the return type.
496#define DECODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE(OpcodeToken0) ((D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE)(((OpcodeToken0)&D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK)>>D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT))
497// ENCODER MACRO: Encode the return type for the resinfo instruction
498// in the opcode specific control range of OpcodeToken0
499#define ENCODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE(ReturnType) (((ReturnType)<<D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT)&D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK)
500
501// sync instruction flags
502#define D3D11_SB_SYNC_THREADS_IN_GROUP 0x00000800
503#define D3D11_SB_SYNC_THREAD_GROUP_SHARED_MEMORY 0x00001000
504#define D3D11_SB_SYNC_UNORDERED_ACCESS_VIEW_MEMORY_GROUP 0x00002000
505#define D3D11_SB_SYNC_UNORDERED_ACCESS_VIEW_MEMORY_GLOBAL 0x00004000
506#define D3D11_SB_SYNC_FLAGS_MASK 0x00007800
507
508// DECODER MACRO: Retrieve flags for sync instruction from OpcodeToken0.
509#define DECODE_D3D11_SB_SYNC_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_SYNC_FLAGS_MASK)
510
511// ENCODER MACRO: Given a set of sync instruciton flags, encode them in OpcodeToken0.
512#define ENCODE_D3D11_SB_SYNC_FLAGS(Flags) ((Flags)&D3D11_SB_SYNC_FLAGS_MASK)
513
514#define D3D10_SB_OPCODE_EXTENDED_MASK 0x80000000
515#define D3D10_SB_OPCODE_EXTENDED_SHIFT 31
516// DECODER MACRO: Determine if the opcode is extended
517// by an additional opcode token. Currently there are no
518// extended opcodes.
519#define DECODE_IS_D3D10_SB_OPCODE_EXTENDED(OpcodeToken0) (((OpcodeToken0)&D3D10_SB_OPCODE_EXTENDED_MASK)>> D3D10_SB_OPCODE_EXTENDED_SHIFT)
520// ENCODER MACRO: Store in OpcodeToken0 whether the opcode is extended
521// by an additional opcode token.
522#define ENCODE_D3D10_SB_OPCODE_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPCODE_EXTENDED_MASK:0)
523
524// ----------------------------------------------------------------------------
525// Extended Opcode Format (OpcodeToken1)
526//
527// If bit31 of an opcode token is set, the
528// opcode has an additional extended opcode token DWORD
529// directly following OpcodeToken0. Other tokens
530// expected for the opcode, such as the operand
531// token(s) always follow
532// OpcodeToken0 AND OpcodeToken1..n (extended
533// opcode tokens, if present).
534//
535// [05:00] D3D10_SB_EXTENDED_OPCODE_TYPE
536// [30:06] if([05:00] == D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS)
537// {
538// This custom opcode contains controls for SAMPLE.
539// [08:06] Ignored, 0.
540// [12:09] U texel immediate offset (4 bit 2's comp) (0 default)
541// [16:13] V texel immediate offset (4 bit 2's comp) (0 default)
542// [20:17] W texel immediate offset (4 bit 2's comp) (0 default)
543// [30:14] Ignored, 0.
544// }
545// else if( [05:00] == D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM )
546// {
547// [10:06] D3D10_SB_RESOURCE_DIMENSION
548// [22:11] When dimension is D3D11_SB_RESOURCE_DIMENSION_STRUCTURED_BUFFER this holds the buffer stride, otherwise 0
549// [30:23] Ignored, 0.
550// }
551// else if( [05:00] == D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE )
552// {
553// [09:06] D3D10_SB_RESOURCE_RETURN_TYPE for component X
554// [13:10] D3D10_SB_RESOURCE_RETURN_TYPE for component Y
555// [17:14] D3D10_SB_RESOURCE_RETURN_TYPE for component Z
556// [21:18] D3D10_SB_RESOURCE_RETURN_TYPE for component W
557// [30:22] Ignored, 0.
558// }
559// else
560// {
561// [30:04] Ignored, 0.
562// }
563// [31] 0 normally. 1 there is another extended opcode. Any number
564// of extended opcode tokens can be chained. It is possible that some extended
565// opcode tokens could include multiple DWORDS - that is defined
566// on a case by case basis.
567//
568// ----------------------------------------------------------------------------
569typedef enum D3D10_SB_EXTENDED_OPCODE_TYPE
570{
571 D3D10_SB_EXTENDED_OPCODE_EMPTY = 0,
572 D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS = 1,
573 D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM = 2,
574 D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE = 3,
575} D3D10_SB_EXTENDED_OPCODE_TYPE;
576#define D3D11_SB_MAX_SIMULTANEOUS_EXTENDED_OPCODES 3
577
578#define D3D10_SB_EXTENDED_OPCODE_TYPE_MASK 0x0000003f
579
580// DECODER MACRO: Given an extended opcode
581// token (OpcodeToken1), figure out what type
582// of token it is (from D3D10_SB_EXTENDED_OPCODE_TYPE enum)
583// to be able to interpret the rest of the token's contents.
584#define DECODE_D3D10_SB_EXTENDED_OPCODE_TYPE(OpcodeToken1) ((D3D10_SB_EXTENDED_OPCODE_TYPE)((OpcodeToken1)&D3D10_SB_EXTENDED_OPCODE_TYPE_MASK))
585
586// ENCODER MACRO: Store extended opcode token
587// type in OpcodeToken1.
588#define ENCODE_D3D10_SB_EXTENDED_OPCODE_TYPE(ExtOpcodeType) ((ExtOpcodeType)&D3D10_SB_EXTENDED_OPCODE_TYPE_MASK)
589
590typedef enum D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD
591{
592 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_U = 0,
593 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_V = 1,
594 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_W = 2,
595} D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD;
596#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD_MASK (3)
597#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord) (9+4*((Coord)&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD_MASK))
598#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord) (0x0000000f<<D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))
599
600// DECODER MACRO: Given an extended opcode token
601// (OpcodeToken1), and extended token type ==
602// D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS, determine the immediate
603// texel address offset for u/v/w (D3D10_SB_ADDRESS_OFFSET_COORD)
604// This macro returns a (signed) integer, by sign extending the
605// decoded 4 bit 2's complement immediate value.
606#define DECODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET(Coord,OpcodeToken1) ((((OpcodeToken1)&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord))>>(D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))))
607
608// ENCODER MACRO: Store the immediate texel address offset
609// for U or V or W Coord (D3D10_SB_ADDRESS_OFFSET_COORD) in an extended
610// opcode token (OpcodeToken1) that has extended opcode
611// type == D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS (opcode type encoded separately)
612// A 2's complement number is expected as input, from which the LSB 4 bits are extracted.
613#define ENCODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET(Coord,ImmediateOffset) (((ImmediateOffset)<<D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord))
614
615#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK 0x000007C0
616#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT 6
617
618// DECODER MACRO: Given an extended resource declaration token,
619// (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM), determine the resource dimension
620// (D3D10_SB_RESOURCE_DIMENSION enum)
621#define DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION(OpcodeTokenN) ((D3D10_SB_RESOURCE_DIMENSION)(((OpcodeTokenN)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK)>>D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT))
622
623// ENCODER MACRO: Store resource dimension
624// (D3D10_SB_RESOURCE_DIMENSION enum) into a
625// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM)
626#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION(ResourceDim) (((ResourceDim)<<D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK)
627
628#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK 0x007FF800
629#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT 11
630
631// DECODER MACRO: Given an extended resource declaration token for a structured buffer,
632// (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM), determine the structure stride
633// (12-bit unsigned integer)
634#define DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(OpcodeTokenN) (((OpcodeTokenN)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK)>>D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT)
635
636// ENCODER MACRO: Store resource dimension structure stride
637// (12-bit unsigned integer) into a
638// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM)
639#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(Stride) (((Stride)<<D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK)
640
641#define D3D10_SB_RESOURCE_RETURN_TYPE_MASK 0x0000000f
642#define D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS 0x00000004
643#define D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT 6
644
645// DECODER MACRO: Get the resource return type for component (0-3) from
646// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE)
647#define DECODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE(OpcodeTokenN, Component) \
648 ((D3D10_SB_RESOURCE_RETURN_TYPE)(((OpcodeTokenN) >> \
649 (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS + D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT))&D3D10_SB_RESOURCE_RETURN_TYPE_MASK))
650
651// ENCODER MACRO: Generate a resource return type for a component in an extended
652// resource delcaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE)
653#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE(ReturnType, Component) \
654 (((ReturnType)&D3D10_SB_RESOURCE_RETURN_TYPE_MASK) << (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS + D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT))
655
656// ----------------------------------------------------------------------------
657// Custom-Data Block Format
658//
659// DWORD 0 (CustomDataDescTok):
660// [10:00] == D3D10_SB_OPCODE_CUSTOMDATA
661// [31:11] == D3D10_SB_CUSTOMDATA_CLASS
662//
663// DWORD 1:
664// 32-bit unsigned integer count of number
665// of DWORDs in custom-data block,
666// including DWORD 0 and DWORD 1.
667// So the minimum value is 0x00000002,
668// meaning empty custom-data.
669//
670// Layout of custom-data contents, for the various meta-data classes,
671// not defined in this file.
672//
673// ----------------------------------------------------------------------------
674
675typedef enum D3D10_SB_CUSTOMDATA_CLASS
676{
677 D3D10_SB_CUSTOMDATA_COMMENT = 0,
678 D3D10_SB_CUSTOMDATA_DEBUGINFO,
679 D3D10_SB_CUSTOMDATA_OPAQUE,
680 D3D10_SB_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER,
681 D3D11_SB_CUSTOMDATA_SHADER_MESSAGE,
682 D3D11_SB_CUSTOMDATA_SHADER_CLIP_PLANE_CONSTANT_MAPPINGS_FOR_DX9,
683} D3D10_SB_CUSTOMDATA_CLASS;
684
685#define D3D10_SB_CUSTOMDATA_CLASS_MASK 0xfffff800
686#define D3D10_SB_CUSTOMDATA_CLASS_SHIFT 11
687// DECODER MACRO: Find out what class of custom-data is present.
688// The contents of the custom-data block are defined
689// for each class of custom-data.
690#define DECODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataDescTok) ((D3D10_SB_CUSTOMDATA_CLASS)(((CustomDataDescTok)&D3D10_SB_CUSTOMDATA_CLASS_MASK)>>D3D10_SB_CUSTOMDATA_CLASS_SHIFT))
691// ENCODER MACRO: Create complete CustomDataDescTok
692#define ENCODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataClass) (ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_SB_OPCODE_CUSTOMDATA)|(((CustomDataClass)<<D3D10_SB_CUSTOMDATA_CLASS_SHIFT)&D3D10_SB_CUSTOMDATA_CLASS_MASK))
693
694// ----------------------------------------------------------------------------
695// Instruction Operand Format (OperandToken0)
696//
697// [01:00] D3D10_SB_OPERAND_NUM_COMPONENTS
698// [11:02] Component Selection
699// if([01:00] == D3D10_SB_OPERAND_0_COMPONENT)
700// [11:02] = Ignored, 0
701// else if([01:00] == D3D10_SB_OPERAND_1_COMPONENT
702// [11:02] = Ignored, 0
703// else if([01:00] == D3D10_SB_OPERAND_4_COMPONENT
704// {
705// [03:02] = D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
706// if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE)
707// {
708// [07:04] = D3D10_SB_OPERAND_4_COMPONENT_MASK
709// [11:08] = Ignored, 0
710// }
711// else if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE)
712// {
713// [11:04] = D3D10_SB_4_COMPONENT_SWIZZLE
714// }
715// else if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE)
716// {
717// [05:04] = D3D10_SB_4_COMPONENT_NAME
718// [11:06] = Ignored, 0
719// }
720// }
721// else if([01:00] == D3D10_SB_OPERAND_N_COMPONENT)
722// {
723// Currently not defined.
724// }
725// [19:12] D3D10_SB_OPERAND_TYPE
726// [21:20] D3D10_SB_OPERAND_INDEX_DIMENSION:
727// Number of dimensions in the register
728// file (NOT the # of dimensions in the
729// individual register or memory
730// resource being referenced).
731// [24:22] if( [21:20] >= D3D10_SB_OPERAND_INDEX_1D )
732// D3D10_SB_OPERAND_INDEX_REPRESENTATION for first operand index
733// else
734// Ignored, 0
735// [27:25] if( [21:20] >= D3D10_SB_OPERAND_INDEX_2D )
736// D3D10_SB_OPERAND_INDEX_REPRESENTATION for second operand index
737// else
738// Ignored, 0
739// [30:28] if( [21:20] == D3D10_SB_OPERAND_INDEX_3D )
740// D3D10_SB_OPERAND_INDEX_REPRESENTATION for third operand index
741// else
742// Ignored, 0
743// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
744// contains extended operand description.
745//
746// ----------------------------------------------------------------------------
747
748// Number of components in data vector referred to by operand.
749typedef enum D3D10_SB_OPERAND_NUM_COMPONENTS
750{
751 D3D10_SB_OPERAND_0_COMPONENT = 0,
752 D3D10_SB_OPERAND_1_COMPONENT = 1,
753 D3D10_SB_OPERAND_4_COMPONENT = 2,
754 D3D10_SB_OPERAND_N_COMPONENT = 3 // unused for now
755} D3D10_SB_OPERAND_NUM_COMPONENTS;
756#define D3D10_SB_OPERAND_NUM_COMPONENTS_MASK 0x00000003
757
758// DECODER MACRO: Extract from OperandToken0 how many components
759// the data vector referred to by the operand contains.
760// (D3D10_SB_OPERAND_NUM_COMPONENTS enum)
761#define DECODE_D3D10_SB_OPERAND_NUM_COMPONENTS(OperandToken0) ((D3D10_SB_OPERAND_NUM_COMPONENTS)((OperandToken0)&D3D10_SB_OPERAND_NUM_COMPONENTS_MASK))
762
763// ENCODER MACRO: Define in OperandToken0 how many components
764// the data vector referred to by the operand contains.
765// (D3D10_SB_OPERAND_NUM_COMPONENTS enum).
766#define ENCODE_D3D10_SB_OPERAND_NUM_COMPONENTS(NumComp) ((NumComp)&D3D10_SB_OPERAND_NUM_COMPONENTS_MASK)
767
768typedef enum D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
769{
770 D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE = 0, // mask 4 components
771 D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE = 1, // swizzle 4 components
772 D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE = 2, // select 1 of 4 components
773} D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE;
774
775#define D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK 0x0000000c
776#define D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT 2
777
778// DECODER MACRO: For an operand representing 4component data,
779// extract from OperandToken0 the method for selecting data from
780// the 4 components (D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE).
781#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE(OperandToken0) ((D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE)(((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK)>>D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT))
782
783// ENCODER MACRO: For an operand representing 4component data,
784// encode in OperandToken0 a value from D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
785#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE(SelectionMode) (((SelectionMode)<<D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT)&D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK)
786
787typedef enum D3D10_SB_4_COMPONENT_NAME
788{
789 D3D10_SB_4_COMPONENT_X = 0,
790 D3D10_SB_4_COMPONENT_Y = 1,
791 D3D10_SB_4_COMPONENT_Z = 2,
792 D3D10_SB_4_COMPONENT_W = 3,
793 D3D10_SB_4_COMPONENT_R = 0,
794 D3D10_SB_4_COMPONENT_G = 1,
795 D3D10_SB_4_COMPONENT_B = 2,
796 D3D10_SB_4_COMPONENT_A = 3
797} D3D10_SB_4_COMPONENT_NAME;
798#define D3D10_SB_4_COMPONENT_NAME_MASK 3
799
800// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE:
801
802#define D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK 0x000000f0
803#define D3D10_SB_OPERAND_4_COMPONENT_MASK_SHIFT 4
804#define D3D10_SB_OPERAND_4_COMPONENT_MASK_X 0x00000010
805#define D3D10_SB_OPERAND_4_COMPONENT_MASK_Y 0x00000020
806#define D3D10_SB_OPERAND_4_COMPONENT_MASK_Z 0x00000040
807#define D3D10_SB_OPERAND_4_COMPONENT_MASK_W 0x00000080
808#define D3D10_SB_OPERAND_4_COMPONENT_MASK_R D3D10_SB_OPERAND_4_COMPONENT_MASK_X
809#define D3D10_SB_OPERAND_4_COMPONENT_MASK_G D3D10_SB_OPERAND_4_COMPONENT_MASK_Y
810#define D3D10_SB_OPERAND_4_COMPONENT_MASK_B D3D10_SB_OPERAND_4_COMPONENT_MASK_Z
811#define D3D10_SB_OPERAND_4_COMPONENT_MASK_A D3D10_SB_OPERAND_4_COMPONENT_MASK_W
812#define D3D10_SB_OPERAND_4_COMPONENT_MASK_ALL D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK
813
814// DECODER MACRO: When 4 component selection mode is
815// D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE, this macro
816// extracts from OperandToken0 the 4 component (xyzw) mask,
817// as a field of D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] flags.
818// Alternatively, the D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] masks
819// can be tested on OperandToken0 directly, without this macro.
820#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(OperandToken0) ((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
821
822// ENCODER MACRO: Given a set of
823// D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] values
824// or'd together, encode them in OperandToken0.
825#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentMask) ((ComponentMask)&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
826
827// ENCODER/DECODER MACRO: Given a D3D10_SB_4_COMPONENT_NAME,
828// generate the 4-component mask for it.
829// This can be used in loops that build masks or read masks.
830// Alternatively, the D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] masks
831// can be used directly, without this macro.
832#define D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentName) ((1<<(D3D10_SB_OPERAND_4_COMPONENT_MASK_SHIFT+ComponentName))&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
833
834// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE:
835
836#define D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MASK 0x00000ff0
837#define D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT 4
838
839// DECODER MACRO: When 4 component selection mode is
840// D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE, this macro
841// extracts from OperandToken0 the 4 component swizzle,
842// as a field of D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] flags.
843#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(OperandToken0) ((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MASK)
844
845// DECODER MACRO: Pass a D3D10_SB_4_COMPONENT_NAME as "DestComp" in following
846// macro to extract, from OperandToken0 or from a decoded swizzle,
847// the swizzle source component (D3D10_SB_4_COMPONENT_NAME enum):
848#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SOURCE(OperandToken0,DestComp) ((D3D10_SB_4_COMPONENT_NAME)(((OperandToken0)>>(D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT+2*((DestComp)&D3D10_SB_4_COMPONENT_NAME_MASK)))&D3D10_SB_4_COMPONENT_NAME_MASK))
849
850// ENCODER MACRO: Generate a 4 component swizzle given
851// 4 D3D10_SB_4_COMPONENT_NAME source values for dest
852// components x, y, z, w respectively.
853#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(XSrc,YSrc,ZSrc,WSrc) ((((XSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)| \
854 (((YSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<2)| \
855 (((ZSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<4)| \
856 (((WSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<6) \
857 )<<D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT)
858
859// ENCODER/DECODER MACROS: Various common swizzle patterns
860// (noswizzle and replicate of each channels)
861#define D3D10_SB_OPERAND_4_COMPONENT_NOSWIZZLE ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_X,\
862 D3D10_SB_4_COMPONENT_Y,\
863 D3D10_SB_4_COMPONENT_Z,\
864 D3D10_SB_4_COMPONENT_W)
865
866#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_X,\
867 D3D10_SB_4_COMPONENT_X,\
868 D3D10_SB_4_COMPONENT_X,\
869 D3D10_SB_4_COMPONENT_X)
870
871#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_Y,\
872 D3D10_SB_4_COMPONENT_Y,\
873 D3D10_SB_4_COMPONENT_Y,\
874 D3D10_SB_4_COMPONENT_Y)
875
876#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_Z,\
877 D3D10_SB_4_COMPONENT_Z,\
878 D3D10_SB_4_COMPONENT_Z,\
879 D3D10_SB_4_COMPONENT_Z)
880
881#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_W,\
882 D3D10_SB_4_COMPONENT_W,\
883 D3D10_SB_4_COMPONENT_W,\
884 D3D10_SB_4_COMPONENT_W)
885
886#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATERED D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX
887#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEGREEN D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY
888#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEBLUE D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ
889#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEALPHA D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW
890
891// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE:
892#define D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK 0x00000030
893#define D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT 4
894
895// DECODER MACRO: When 4 component selection mode is
896// D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE, this macro
897// extracts from OperandToken0 a D3D10_SB_4_COMPONENT_NAME
898// which picks one of the 4 components.
899#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1(OperandToken0) ((D3D10_SB_4_COMPONENT_NAME)(((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK)>>D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT))
900
901// ENCODER MACRO: Given a D3D10_SB_4_COMPONENT_NAME selecting
902// a single component for D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE,
903// encode it into OperandToken0
904#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1(SelectedComp) (((SelectedComp)<<D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT)&D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK)
905
906// MACROS FOR DETERMINING OPERAND TYPE:
907
908typedef enum D3D10_SB_OPERAND_TYPE
909{
910 D3D10_SB_OPERAND_TYPE_TEMP = 0, // Temporary Register File
911 D3D10_SB_OPERAND_TYPE_INPUT = 1, // General Input Register File
912 D3D10_SB_OPERAND_TYPE_OUTPUT = 2, // General Output Register File
913 D3D10_SB_OPERAND_TYPE_INDEXABLE_TEMP = 3, // Temporary Register File (indexable)
914 D3D10_SB_OPERAND_TYPE_IMMEDIATE32 = 4, // 32bit/component immediate value(s)
915 // If for example, operand token bits
916 // [01:00]==D3D10_SB_OPERAND_4_COMPONENT,
917 // this means that the operand type:
918 // D3D10_SB_OPERAND_TYPE_IMMEDIATE32
919 // results in 4 additional 32bit
920 // DWORDS present for the operand.
921 D3D10_SB_OPERAND_TYPE_IMMEDIATE64 = 5, // 64bit/comp.imm.val(s)HI:LO
922 D3D10_SB_OPERAND_TYPE_SAMPLER = 6, // Reference to sampler state
923 D3D10_SB_OPERAND_TYPE_RESOURCE = 7, // Reference to memory resource (e.g. texture)
924 D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER= 8, // Reference to constant buffer
925 D3D10_SB_OPERAND_TYPE_IMMEDIATE_CONSTANT_BUFFER= 9, // Reference to immediate constant buffer
926 D3D10_SB_OPERAND_TYPE_LABEL = 10, // Label
927 D3D10_SB_OPERAND_TYPE_INPUT_PRIMITIVEID = 11, // Input primitive ID
928 D3D10_SB_OPERAND_TYPE_OUTPUT_DEPTH = 12, // Output Depth
929 D3D10_SB_OPERAND_TYPE_NULL = 13, // Null register, used to discard results of operations
930 // Below Are operands new in DX 10.1
931 D3D10_SB_OPERAND_TYPE_RASTERIZER = 14, // DX10.1 Rasterizer register, used to denote the depth/stencil and render target resources
932 D3D10_SB_OPERAND_TYPE_OUTPUT_COVERAGE_MASK = 15, // DX10.1 PS output MSAA coverage mask (scalar)
933 // Below Are operands new in DX 11
934 D3D11_SB_OPERAND_TYPE_STREAM = 16, // Reference to GS stream output resource
935 D3D11_SB_OPERAND_TYPE_FUNCTION_BODY = 17, // Reference to a function definition
936 D3D11_SB_OPERAND_TYPE_FUNCTION_TABLE = 18, // Reference to a set of functions used by a class
937 D3D11_SB_OPERAND_TYPE_INTERFACE = 19, // Reference to an interface
938 D3D11_SB_OPERAND_TYPE_FUNCTION_INPUT = 20, // Reference to an input parameter to a function
939 D3D11_SB_OPERAND_TYPE_FUNCTION_OUTPUT = 21, // Reference to an output parameter to a function
940 D3D11_SB_OPERAND_TYPE_OUTPUT_CONTROL_POINT_ID = 22, // HS Control Point phase input saying which output control point ID this is
941 D3D11_SB_OPERAND_TYPE_INPUT_FORK_INSTANCE_ID = 23, // HS Fork Phase input instance ID
942 D3D11_SB_OPERAND_TYPE_INPUT_JOIN_INSTANCE_ID = 24, // HS Join Phase input instance ID
943 D3D11_SB_OPERAND_TYPE_INPUT_CONTROL_POINT = 25, // HS Fork+Join, DS phase input control points (array of them)
944 D3D11_SB_OPERAND_TYPE_OUTPUT_CONTROL_POINT = 26, // HS Fork+Join phase output control points (array of them)
945 D3D11_SB_OPERAND_TYPE_INPUT_PATCH_CONSTANT = 27, // DS+HSJoin Input Patch Constants (array of them)
946 D3D11_SB_OPERAND_TYPE_INPUT_DOMAIN_POINT = 28, // DS Input Domain point
947 D3D11_SB_OPERAND_TYPE_THIS_POINTER = 29, // Reference to an interface this pointer
948 D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW = 30, // Reference to UAV u#
949 D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY = 31, // Reference to Thread Group Shared Memory g#
950 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID = 32, // Compute Shader Thread ID
951 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_GROUP_ID = 33, // Compute Shader Thread Group ID
952 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP = 34, // Compute Shader Thread ID In Thread Group
953 D3D11_SB_OPERAND_TYPE_INPUT_COVERAGE_MASK = 35, // Pixel shader coverage mask input
954 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP_FLATTENED = 36, // Compute Shader Thread ID In Group Flattened to a 1D value.
955 D3D11_SB_OPERAND_TYPE_INPUT_GS_INSTANCE_ID = 37, // Input GS instance ID
956 D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL = 38, // Output Depth, forced to be greater than or equal than current depth
957 D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL = 39, // Output Depth, forced to be less than or equal to current depth
958 D3D11_SB_OPERAND_TYPE_CYCLE_COUNTER = 40, // Cycle counter
959 D3D11_SB_OPERAND_TYPE_OUTPUT_STENCIL_REF = 41, // DX11 PS output stencil reference (scalar)
960 D3D11_SB_OPERAND_TYPE_INNER_COVERAGE = 42, // DX11 PS input inner coverage (scalar)
961} D3D10_SB_OPERAND_TYPE;
962
963#define D3D10_SB_OPERAND_TYPE_MASK 0x000ff000
964#define D3D10_SB_OPERAND_TYPE_SHIFT 12
965
966// DECODER MACRO: Determine operand type from OperandToken0.
967#define DECODE_D3D10_SB_OPERAND_TYPE(OperandToken0) ((D3D10_SB_OPERAND_TYPE)(((OperandToken0)&D3D10_SB_OPERAND_TYPE_MASK)>>D3D10_SB_OPERAND_TYPE_SHIFT))
968
969// ENCODER MACRO: Store operand type in OperandToken0.
970#define ENCODE_D3D10_SB_OPERAND_TYPE(OperandType) (((OperandType)<<D3D10_SB_OPERAND_TYPE_SHIFT)&D3D10_SB_OPERAND_TYPE_MASK)
971
972typedef enum D3D10_SB_OPERAND_INDEX_DIMENSION
973{
974 D3D10_SB_OPERAND_INDEX_0D = 0, // e.g. Position
975 D3D10_SB_OPERAND_INDEX_1D = 1, // Most common. e.g. Temp registers.
976 D3D10_SB_OPERAND_INDEX_2D = 2, // e.g. Geometry Program Input registers.
977 D3D10_SB_OPERAND_INDEX_3D = 3, // 3D rarely if ever used.
978} D3D10_SB_OPERAND_INDEX_DIMENSION;
979#define D3D10_SB_OPERAND_INDEX_DIMENSION_MASK 0x00300000
980#define D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT 20
981
982// DECODER MACRO: Determine operand index dimension from OperandToken0.
983#define DECODE_D3D10_SB_OPERAND_INDEX_DIMENSION(OperandToken0) ((D3D10_SB_OPERAND_INDEX_DIMENSION)(((OperandToken0)&D3D10_SB_OPERAND_INDEX_DIMENSION_MASK)>>D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT))
984
985// ENCODER MACRO: Store operand index dimension
986// (D3D10_SB_OPERAND_INDEX_DIMENSION enum) in OperandToken0.
987#define ENCODE_D3D10_SB_OPERAND_INDEX_DIMENSION(OperandIndexDim) (((OperandIndexDim)<<D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT)&D3D10_SB_OPERAND_INDEX_DIMENSION_MASK)
988
989typedef enum D3D10_SB_OPERAND_INDEX_REPRESENTATION
990{
991 D3D10_SB_OPERAND_INDEX_IMMEDIATE32 = 0, // Extra DWORD
992 D3D10_SB_OPERAND_INDEX_IMMEDIATE64 = 1, // 2 Extra DWORDs
993 // (HI32:LO32)
994 D3D10_SB_OPERAND_INDEX_RELATIVE = 2, // Extra operand
995 D3D10_SB_OPERAND_INDEX_IMMEDIATE32_PLUS_RELATIVE = 3, // Extra DWORD followed by
996 // extra operand
997 D3D10_SB_OPERAND_INDEX_IMMEDIATE64_PLUS_RELATIVE = 4, // 2 Extra DWORDS
998 // (HI32:LO32) followed
999 // by extra operand
1000} D3D10_SB_OPERAND_INDEX_REPRESENTATION;
1001#define D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim) (22+3*((Dim)&3))
1002#define D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim) (0x3<<D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim))
1003
1004// DECODER MACRO: Determine from OperandToken0 what representation
1005// an operand index is provided as (D3D10_SB_OPERAND_INDEX_REPRESENTATION enum),
1006// for index dimension [0], [1] or [2], depending on D3D10_SB_OPERAND_INDEX_DIMENSION.
1007#define DECODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION(Dim,OperandToken0) ((D3D10_SB_OPERAND_INDEX_REPRESENTATION)(((OperandToken0)&D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim))>>D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim)))
1008
1009// ENCODER MACRO: Store in OperandToken0 what representation
1010// an operand index is provided as (D3D10_SB_OPERAND_INDEX_REPRESENTATION enum),
1011// for index dimension [0], [1] or [2], depending on D3D10_SB_OPERAND_INDEX_DIMENSION.
1012#define ENCODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION(Dim,IndexRepresentation) (((IndexRepresentation)<<D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim))&D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim))
1013
1014#define D3D10_SB_OPERAND_EXTENDED_MASK 0x80000000
1015#define D3D10_SB_OPERAND_EXTENDED_SHIFT 31
1016
1017// DECODER MACRO: Determine if the operand is extended
1018// by an additional opcode token.
1019#define DECODE_IS_D3D10_SB_OPERAND_EXTENDED(OperandToken0) (((OperandToken0)&D3D10_SB_OPERAND_EXTENDED_MASK)>>D3D10_SB_OPERAND_EXTENDED_SHIFT)
1020
1021// ENCODER MACRO: Store in OperandToken0 whether the operand is extended
1022// by an additional operand token.
1023#define ENCODE_D3D10_SB_OPERAND_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPERAND_EXTENDED_MASK:0)
1024
1025// ----------------------------------------------------------------------------
1026// Extended Instruction Operand Format (OperandToken1)
1027//
1028// If bit31 of an operand token is set, the
1029// operand has additional data in a second DWORD
1030// directly following OperandToken0. Other tokens
1031// expected for the operand, such as immmediate
1032// values or relative address operands (full
1033// operands in themselves) always follow
1034// OperandToken0 AND OperandToken1..n (extended
1035// operand tokens, if present).
1036//
1037// [05:00] D3D10_SB_EXTENDED_OPERAND_TYPE
1038// [16:06] if([05:00] == D3D10_SB_EXTENDED_OPERAND_MODIFIER)
1039// {
1040// [13:06] D3D10_SB_OPERAND_MODIFIER
1041// [16:14] Min Precision: D3D11_SB_OPERAND_MIN_PRECISION
1042// [17:17] Non-uniform: D3D12_SB_OPERAND_NON_UNIFORM
1043// }
1044// else
1045// {
1046// [17:06] Ignored, 0.
1047// }
1048// [30:18] Ignored, 0.
1049// [31] 0 normally. 1 if second order extended operand definition,
1050// meaning next DWORD contains yet ANOTHER extended operand
1051// description. Currently no second order extensions defined.
1052// This would be useful if a particular extended operand does
1053// not have enough space to store the required information in
1054// a single token and so is extended further.
1055//
1056// ----------------------------------------------------------------------------
1057
1058typedef enum D3D10_SB_EXTENDED_OPERAND_TYPE
1059{
1060 D3D10_SB_EXTENDED_OPERAND_EMPTY = 0, // Might be used if this
1061 // enum is full and
1062 // further extended opcode
1063 // is needed.
1064 D3D10_SB_EXTENDED_OPERAND_MODIFIER = 1,
1065} D3D10_SB_EXTENDED_OPERAND_TYPE;
1066#define D3D10_SB_EXTENDED_OPERAND_TYPE_MASK 0x0000003f
1067
1068// DECODER MACRO: Given an extended operand
1069// token (OperandToken1), figure out what type
1070// of token it is (from D3D10_SB_EXTENDED_OPERAND_TYPE enum)
1071// to be able to interpret the rest of the token's contents.
1072#define DECODE_D3D10_SB_EXTENDED_OPERAND_TYPE(OperandToken1) ((D3D10_SB_EXTENDED_OPERAND_TYPE)((OperandToken1)&D3D10_SB_EXTENDED_OPERAND_TYPE_MASK))
1073
1074// ENCODER MACRO: Store extended operand token
1075// type in OperandToken1.
1076#define ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE(ExtOperandType) ((ExtOperandType)&D3D10_SB_EXTENDED_OPERAND_TYPE_MASK)
1077
1078typedef enum D3D10_SB_OPERAND_MODIFIER
1079{
1080 D3D10_SB_OPERAND_MODIFIER_NONE = 0, // Nop. This is the implied
1081 // default if the extended
1082 // operand is not present for
1083 // an operand for which source
1084 // modifiers are meaningful
1085 D3D10_SB_OPERAND_MODIFIER_NEG = 1, // Negate
1086 D3D10_SB_OPERAND_MODIFIER_ABS = 2, // Absolute value, abs()
1087 D3D10_SB_OPERAND_MODIFIER_ABSNEG = 3, // -abs()
1088} D3D10_SB_OPERAND_MODIFIER;
1089#define D3D10_SB_OPERAND_MODIFIER_MASK 0x00003fc0
1090#define D3D10_SB_OPERAND_MODIFIER_SHIFT 6
1091
1092// DECODER MACRO: Given a D3D10_SB_EXTENDED_OPERAND_MODIFIER
1093// extended token (OperandToken1), determine the source modifier
1094// (D3D10_SB_OPERAND_MODIFIER enum)
1095#define DECODE_D3D10_SB_OPERAND_MODIFIER(OperandToken1) ((D3D10_SB_OPERAND_MODIFIER)(((OperandToken1)&D3D10_SB_OPERAND_MODIFIER_MASK)>>D3D10_SB_OPERAND_MODIFIER_SHIFT))
1096
1097// ENCODER MACRO: Generate a complete source modifier extended token
1098// (OperandToken1), given D3D10_SB_OPERAND_MODIFIER enum (the
1099// ext. operand type is also set to D3D10_SB_EXTENDED_OPERAND_MODIFIER).
1100#define ENCODE_D3D10_SB_EXTENDED_OPERAND_MODIFIER(SourceMod) ((((SourceMod)<<D3D10_SB_OPERAND_MODIFIER_SHIFT)&D3D10_SB_OPERAND_MODIFIER_MASK)| \
1101 ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE(D3D10_SB_EXTENDED_OPERAND_MODIFIER) | \
1102 ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(0))
1103
1104// Min precision specifier for source/dest operands. This
1105// fits in the extended operand token field. Implementations are free to
1106// execute at higher precision than the min - details spec'ed elsewhere.
1107// This is part of the opcode specific control range.
1108typedef enum D3D11_SB_OPERAND_MIN_PRECISION
1109{
1110 D3D11_SB_OPERAND_MIN_PRECISION_DEFAULT = 0, // Default precision
1111 // for the shader model
1112 D3D11_SB_OPERAND_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
1113 D3D11_SB_OPERAND_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
1114 D3D11_SB_OPERAND_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
1115 D3D11_SB_OPERAND_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
1116} D3D11_SB_OPERAND_MIN_PRECISION;
1117#define D3D11_SB_OPERAND_MIN_PRECISION_MASK 0x0001C000
1118#define D3D11_SB_OPERAND_MIN_PRECISION_SHIFT 14
1119
1120// DECODER MACRO: For an OperandToken1 that can specify
1121// a minimum precision for execution, find out what it is.
1122#define DECODE_D3D11_SB_OPERAND_MIN_PRECISION(OperandToken1) ((D3D11_SB_OPERAND_MIN_PRECISION)(((OperandToken1)& D3D11_SB_OPERAND_MIN_PRECISION_MASK)>> D3D11_SB_OPERAND_MIN_PRECISION_SHIFT))
1123
1124// ENCODER MACRO: Encode minimum precision for execution
1125// into the extended operand token, OperandToken1
1126#define ENCODE_D3D11_SB_OPERAND_MIN_PRECISION(MinPrecision) (((MinPrecision)<< D3D11_SB_OPERAND_MIN_PRECISION_SHIFT)& D3D11_SB_OPERAND_MIN_PRECISION_MASK)
1127
1128
1129// Non-uniform extended operand modifier.
1130#define D3D12_SB_OPERAND_NON_UNIFORM_MASK 0x00020000
1131#define D3D12_SB_OPERAND_NON_UNIFORM_SHIFT 17
1132
1133// DECODER MACRO: For an OperandToken1 that can specify a non-uniform operand
1134#define DECODE_D3D12_SB_OPERAND_NON_UNIFORM(OperandToken1) (((OperandToken1)& D3D12_SB_OPERAND_NON_UNIFORM_MASK)>> D3D12_SB_OPERAND_NON_UNIFORM_SHIFT)
1135
1136// ENCODER MACRO: Encode non-uniform state into the extended operand token, OperandToken1
1137#define ENCODE_D3D12_SB_OPERAND_NON_UNIFORM(NonUniform) (((NonUniform)<< D3D12_SB_OPERAND_NON_UNIFORM_SHIFT)& D3D12_SB_OPERAND_NON_UNIFORM_MASK)
1138
1139
1140#define D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK 0x80000000
1141#define D3D10_SB_OPERAND_DOUBLE_EXTENDED_SHIFT 31
1142// DECODER MACRO: Determine if an extended operand token
1143// (OperandToken1) is further extended by yet another token
1144// (OperandToken2). Currently there are no secondary
1145// extended operand tokens.
1146#define DECODE_IS_D3D10_SB_OPERAND_DOUBLE_EXTENDED(OperandToken1) (((OperandToken1)&D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK)>>D3D10_SB_OPERAND_DOUBLE_EXTENDED_SHIFT)
1147
1148// ENCODER MACRO: Store in OperandToken1 whether the operand is extended
1149// by an additional operand token. Currently there are no secondary
1150// extended operand tokens.
1151#define ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK:0)
1152
1153// ----------------------------------------------------------------------------
1154// Name Token (NameToken) (used in declaration statements)
1155//
1156// [15:00] D3D10_SB_NAME enumeration
1157// [31:16] Reserved, 0
1158//
1159// ----------------------------------------------------------------------------
1160#define D3D10_SB_NAME_MASK 0x0000ffff
1161
1162// DECODER MACRO: Get the name from NameToken
1163#define DECODE_D3D10_SB_NAME(NameToken) ((D3D10_SB_NAME)((NameToken)&D3D10_SB_NAME_MASK))
1164
1165// ENCODER MACRO: Generate a complete NameToken given a D3D10_SB_NAME
1166#define ENCODE_D3D10_SB_NAME(Name) ((Name)&D3D10_SB_NAME_MASK)
1167
1168//---------------------------------------------------------------------
1169// Declaration Statements
1170//
1171// Declarations start with a standard opcode token,
1172// having opcode type being D3D10_SB_OPCODE_DCL*.
1173// Each particular declaration type has custom
1174// operand token(s), described below.
1175//---------------------------------------------------------------------
1176
1177// ----------------------------------------------------------------------------
1178// Global Flags Declaration
1179//
1180// OpcodeToken0:
1181//
1182// [10:00] D3D10_SB_OPCODE_DCL_GLOBAL_FLAGS
1183// [11:11] Refactoring allowed if bit set.
1184// [12:12] Enable double precision float ops.
1185// [13:13] Force early depth-stencil test.
1186// [14:14] Enable RAW and structured buffers in non-CS 4.x shaders.
1187// [15:15] Skip optimizations of shader IL when translating to native code
1188// [16:16] Enable minimum-precision data types
1189// [17:17] Enable 11.1 double-precision floating-point instruction extensions
1190// [18:18] Enable 11.1 non-double instruction extensions
1191// [23:19] Reserved for future flags.
1192// [30:24] Instruction length in DWORDs including the opcode token. == 1
1193// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1194// contains extended operand description. This dcl is currently not
1195// extended.
1196//
1197// OpcodeToken0 is followed by no operands.
1198//
1199// ----------------------------------------------------------------------------
1200#define D3D10_SB_GLOBAL_FLAG_REFACTORING_ALLOWED (1<<11)
1201#define D3D11_SB_GLOBAL_FLAG_ENABLE_DOUBLE_PRECISION_FLOAT_OPS (1<<12)
1202#define D3D11_SB_GLOBAL_FLAG_FORCE_EARLY_DEPTH_STENCIL (1<<13)
1203#define D3D11_SB_GLOBAL_FLAG_ENABLE_RAW_AND_STRUCTURED_BUFFERS (1<<14)
1204#define D3D11_1_SB_GLOBAL_FLAG_SKIP_OPTIMIZATION (1<<15)
1205#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_MINIMUM_PRECISION (1<<16)
1206#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_DOUBLE_EXTENSIONS (1<<17)
1207#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_SHADER_EXTENSIONS (1<<18)
1208#define D3D12_SB_GLOBAL_FLAG_ALL_RESOURCES_BOUND (1<<19)
1209
1210#define D3D10_SB_GLOBAL_FLAGS_MASK 0x00fff800
1211
1212// DECODER MACRO: Get global flags
1213#define DECODE_D3D10_SB_GLOBAL_FLAGS(OpcodeToken0) ((OpcodeToken0)&D3D10_SB_GLOBAL_FLAGS_MASK)
1214
1215// ENCODER MACRO: Encode global flags
1216#define ENCODE_D3D10_SB_GLOBAL_FLAGS(Flags) ((Flags)&D3D10_SB_GLOBAL_FLAGS_MASK)
1217
1218// ----------------------------------------------------------------------------
1219// Resource Declaration (non multisampled)
1220//
1221// OpcodeToken0:
1222//
1223// [10:00] D3D10_SB_OPCODE_DCL_RESOURCE
1224// [15:11] D3D10_SB_RESOURCE_DIMENSION
1225// [23:16] Ignored, 0
1226// [30:24] Instruction length in DWORDs including the opcode token.
1227// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1228// contains extended operand description. This dcl is currently not
1229// extended.
1230//
1231// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
1232// (1) an operand, starting with OperandToken0, defining which
1233// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1234// (2) a Resource Return Type token (ResourceReturnTypeToken)
1235//
1236// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1237// (1) an operand, starting with OperandToken0, defining which
1238// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1239// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1240// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
1241// 1 <id>: variable ID being declared
1242// 2 <lbound>: the lower bound of the range of resources in the space
1243// 3 <ubound>: the upper bound (inclusive) of this range
1244// As opposed to when the t# is used in shader instructions, where the register
1245// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1246// dimensions are as follows: (t<id>[<idx>]):
1247// 1 <id>: variable ID being used (matches dcl)
1248// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
1249// (2) a Resource Return Type token (ResourceReturnTypeToken)
1250// (3) a DWORD indicating the space index.
1251//
1252// ----------------------------------------------------------------------------
1253#define D3D10_SB_RESOURCE_DIMENSION_MASK 0x0000F800
1254#define D3D10_SB_RESOURCE_DIMENSION_SHIFT 11
1255
1256// DECODER MACRO: Given a resource declaration token,
1257// (OpcodeToken0), determine the resource dimension
1258// (D3D10_SB_RESOURCE_DIMENSION enum)
1259#define DECODE_D3D10_SB_RESOURCE_DIMENSION(OpcodeToken0) ((D3D10_SB_RESOURCE_DIMENSION)(((OpcodeToken0)&D3D10_SB_RESOURCE_DIMENSION_MASK)>>D3D10_SB_RESOURCE_DIMENSION_SHIFT))
1260
1261// ENCODER MACRO: Store resource dimension
1262// (D3D10_SB_RESOURCE_DIMENSION enum) into a
1263// a resource declaration token (OpcodeToken0)
1264#define ENCODE_D3D10_SB_RESOURCE_DIMENSION(ResourceDim) (((ResourceDim)<<D3D10_SB_RESOURCE_DIMENSION_SHIFT)&D3D10_SB_RESOURCE_DIMENSION_MASK)
1265
1266// ----------------------------------------------------------------------------
1267// Resource Declaration (multisampled)
1268//
1269// OpcodeToken0:
1270//
1271// [10:00] D3D10_SB_OPCODE_DCL_RESOURCE (same opcode as non-multisampled case)
1272// [15:11] D3D10_SB_RESOURCE_DIMENSION (must be TEXTURE2DMS or TEXTURE2DMSARRAY)
1273// [22:16] Sample count 1...127. 0 is currently disallowed, though
1274// in future versions 0 could mean "configurable" sample count
1275// [23:23] Ignored, 0
1276// [30:24] Instruction length in DWORDs including the opcode token.
1277// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1278// contains extended operand description. This dcl is currently not
1279// extended.
1280//
1281// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
1282// (1) an operand, starting with OperandToken0, defining which
1283// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1284// (2) a Resource Return Type token (ResourceReturnTypeToken)
1285//
1286// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1287// (1) an operand, starting with OperandToken0, defining which
1288// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1289// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1290// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
1291// 1 <id>: variable ID being declared
1292// 2 <lbound>: the lower bound of the range of resources in the space
1293// 3 <ubound>: the upper bound (inclusive) of this range
1294// As opposed to when the t# is used in shader instructions, where the register
1295// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1296// dimensions are as follows: (t<id>[<idx>]):
1297// 1 <id>: variable ID being used (matches dcl)
1298// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
1299// (2) a Resource Return Type token (ResourceReturnTypeToken)
1300// (3) a DWORD indicating the space index.
1301//
1302// ----------------------------------------------------------------------------
1303
1304// use same macro for encoding/decoding resource dimension aas the non-msaa declaration
1305
1306#define D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK 0x07F0000
1307#define D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT 16
1308
1309// DECODER MACRO: Given a resource declaration token,
1310// (OpcodeToken0), determine the resource sample count (1..127)
1311#define DECODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK)>>D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT))
1312
1313// ENCODER MACRO: Store resource sample count up to 127 into a
1314// a resource declaration token (OpcodeToken0)
1315#define ENCODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(SampleCount) (((SampleCount > 127 ? 127 : SampleCount)<<D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT)&D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK)
1316
1317// ----------------------------------------------------------------------------
1318// Resource Return Type Token (ResourceReturnTypeToken) (used in resource
1319// declaration statements)
1320//
1321// [03:00] D3D10_SB_RESOURCE_RETURN_TYPE for component X
1322// [07:04] D3D10_SB_RESOURCE_RETURN_TYPE for component Y
1323// [11:08] D3D10_SB_RESOURCE_RETURN_TYPE for component Z
1324// [15:12] D3D10_SB_RESOURCE_RETURN_TYPE for component W
1325// [31:16] Reserved, 0
1326//
1327// ----------------------------------------------------------------------------
1328// DECODER MACRO: Get the resource return type for component (0-3) from
1329// ResourceReturnTypeToken
1330#define DECODE_D3D10_SB_RESOURCE_RETURN_TYPE(ResourceReturnTypeToken, Component) \
1331 ((D3D10_SB_RESOURCE_RETURN_TYPE)(((ResourceReturnTypeToken) >> \
1332 (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS))&D3D10_SB_RESOURCE_RETURN_TYPE_MASK))
1333
1334// ENCODER MACRO: Generate a resource return type for a component
1335#define ENCODE_D3D10_SB_RESOURCE_RETURN_TYPE(ReturnType, Component) \
1336 (((ReturnType)&D3D10_SB_RESOURCE_RETURN_TYPE_MASK) << (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS))
1337
1338// ----------------------------------------------------------------------------
1339// Sampler Declaration
1340//
1341// OpcodeToken0:
1342//
1343// [10:00] D3D10_SB_OPCODE_DCL_SAMPLER
1344// [14:11] D3D10_SB_SAMPLER_MODE
1345// [23:15] Ignored, 0
1346// [30:24] Instruction length in DWORDs including the opcode token.
1347// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1348// contains extended operand description. This dcl is currently not
1349// extended.
1350//
1351// OpcodeToken0 is followed by 1 operand on Shader Models 4.0 through 5.0:
1352// (1) Operand starting with OperandToken0, defining which sampler
1353// (D3D10_SB_OPERAND_TYPE_SAMPLER) register # is being declared.
1354//
1355// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
1356// (1) an operand, starting with OperandToken0, defining which
1357// s# register (D3D10_SB_OPERAND_TYPE_SAMPLER) is being declared.
1358// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1359// and the meaning of the index dimensions are as follows: (s<id>[<lbound>:<ubound>])
1360// 1 <id>: variable ID being declared
1361// 2 <lbound>: the lower bound of the range of samplers in the space
1362// 3 <ubound>: the upper bound (inclusive) of this range
1363// As opposed to when the s# is used in shader instructions, where the register
1364// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1365// dimensions are as follows: (s<id>[<idx>]):
1366// 1 <id>: variable ID being used (matches dcl)
1367// 2 <idx>: absolute index of sampler within space (may be dynamically indexed)
1368// (2) a DWORD indicating the space index.
1369//
1370// ----------------------------------------------------------------------------
1371typedef enum D3D10_SB_SAMPLER_MODE
1372{
1373 D3D10_SB_SAMPLER_MODE_DEFAULT = 0,
1374 D3D10_SB_SAMPLER_MODE_COMPARISON = 1,
1375 D3D10_SB_SAMPLER_MODE_MONO = 2,
1376} D3D10_SB_SAMPLER_MODE;
1377
1378#define D3D10_SB_SAMPLER_MODE_MASK 0x00007800
1379#define D3D10_SB_SAMPLER_MODE_SHIFT 11
1380
1381// DECODER MACRO: Find out if a Constant Buffer is going to be indexed or not
1382#define DECODE_D3D10_SB_SAMPLER_MODE(OpcodeToken0) ((D3D10_SB_SAMPLER_MODE)(((OpcodeToken0)&D3D10_SB_SAMPLER_MODE_MASK)>>D3D10_SB_SAMPLER_MODE_SHIFT))
1383
1384// ENCODER MACRO: Generate a resource return type for a component
1385#define ENCODE_D3D10_SB_SAMPLER_MODE(SamplerMode) (((SamplerMode)<<D3D10_SB_SAMPLER_MODE_SHIFT)&D3D10_SB_SAMPLER_MODE_MASK)
1386
1387// ----------------------------------------------------------------------------
1388// Input Register Declaration (see separate declarations for Pixel Shaders)
1389//
1390// OpcodeToken0:
1391//
1392// [10:00] D3D10_SB_OPCODE_DCL_INPUT
1393// [23:11] Ignored, 0
1394// [30:24] Instruction length in DWORDs including the opcode token.
1395// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1396// contains extended operand description. This dcl is currently not
1397// extended.
1398//
1399// OpcodeToken0 is followed by 1 operand:
1400// (1) Operand, starting with OperandToken0, defining which input
1401// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1402// including writemask.
1403//
1404// ----------------------------------------------------------------------------
1405
1406// ----------------------------------------------------------------------------
1407// Input Register Declaration w/System Interpreted Value
1408// (see separate declarations for Pixel Shaders)
1409//
1410// OpcodeToken0:
1411//
1412// [10:00] D3D10_SB_OPCODE_DCL_INPUT_SIV
1413// [23:11] Ignored, 0
1414// [30:24] Instruction length in DWORDs including the opcode token.
1415// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1416// contains extended operand description. This dcl is currently not
1417// extended.
1418//
1419// OpcodeToken0 is followed by 2 operands:
1420// (1) Operand, starting with OperandToken0, defining which input
1421// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1422// including writemask. For Geometry Shaders, the input is
1423// v[vertex][attribute], and this declaration is only for which register
1424// on the attribute axis is being declared. The vertex axis value must
1425// be equal to the # of vertices in the current input primitive for the GS
1426// (i.e. 6 for triangle + adjacency).
1427// (2) a System Interpreted Value Name (NameToken)
1428//
1429// ----------------------------------------------------------------------------
1430
1431// ----------------------------------------------------------------------------
1432// Input Register Declaration w/System Generated Value
1433// (available for all shaders incl. Pixel Shader, no interpolation mode needed)
1434//
1435// OpcodeToken0:
1436//
1437// [10:00] D3D10_SB_OPCODE_DCL_INPUT_SGV
1438// [23:11] Ignored, 0
1439// [30:24] Instruction length in DWORDs including the opcode token.
1440// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1441// contains extended operand description. This dcl is currently not
1442// extended.
1443//
1444// OpcodeToken0 is followed by 2 operands:
1445// (1) Operand, starting with OperandToken0, defining which input
1446// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1447// including writemask.
1448// (2) a System Generated Value Name (NameToken)
1449//
1450// ----------------------------------------------------------------------------
1451
1452// ----------------------------------------------------------------------------
1453// Pixel Shader Input Register Declaration
1454//
1455// OpcodeToken0:
1456//
1457// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS
1458// [14:11] D3D10_SB_INTERPOLATION_MODE
1459// [23:15] Ignored, 0
1460// [30:24] Instruction length in DWORDs including the opcode token.
1461// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1462// contains extended operand description. This dcl is currently not
1463// extended.
1464//
1465// OpcodeToken0 is followed by 1 operand:
1466// (1) Operand, starting with OperandToken0, defining which input
1467// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1468// including writemask.
1469//
1470// ----------------------------------------------------------------------------
1471#define D3D10_SB_INPUT_INTERPOLATION_MODE_MASK 0x00007800
1472#define D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT 11
1473
1474// DECODER MACRO: Find out interpolation mode for the input register
1475#define DECODE_D3D10_SB_INPUT_INTERPOLATION_MODE(OpcodeToken0) ((D3D10_SB_INTERPOLATION_MODE)(((OpcodeToken0)&D3D10_SB_INPUT_INTERPOLATION_MODE_MASK)>>D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT))
1476
1477// ENCODER MACRO: Encode interpolation mode for a register.
1478#define ENCODE_D3D10_SB_INPUT_INTERPOLATION_MODE(InterpolationMode) (((InterpolationMode)<<D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT)&D3D10_SB_INPUT_INTERPOLATION_MODE_MASK)
1479
1480// ----------------------------------------------------------------------------
1481// Pixel Shader Input Register Declaration w/System Interpreted Value
1482//
1483// OpcodeToken0:
1484//
1485// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS_SIV
1486// [14:11] D3D10_SB_INTERPOLATION_MODE
1487// [23:15] Ignored, 0
1488// [30:24] Instruction length in DWORDs including the opcode token.
1489// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1490// contains extended operand description. This dcl is currently not
1491// extended.
1492//
1493// OpcodeToken0 is followed by 2 operands:
1494// (1) Operand, starting with OperandToken0, defining which input
1495// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared.
1496// (2) a System Interpreted Value Name (NameToken)
1497//
1498// ----------------------------------------------------------------------------
1499
1500// ----------------------------------------------------------------------------
1501// Pixel Shader Input Register Declaration w/System Generated Value
1502//
1503// OpcodeToken0:
1504//
1505// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS_SGV
1506// [23:11] Ignored, 0
1507// [30:24] Instruction length in DWORDs including the opcode token.
1508// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1509// contains extended operand description. This dcl is currently not
1510// extended.
1511//
1512// OpcodeToken0 is followed by 2 operands:
1513// (1) Operand, starting with OperandToken0, defining which input
1514// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared.
1515// (2) a System Generated Value Name (NameToken)
1516//
1517// ----------------------------------------------------------------------------
1518
1519// ----------------------------------------------------------------------------
1520// Output Register Declaration
1521//
1522// OpcodeToken0:
1523//
1524// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT
1525// [23:11] Ignored, 0
1526// [30:24] Instruction length in DWORDs including the opcode token.
1527// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1528// contains extended operand description. This dcl is currently not
1529// extended.
1530//
1531// OpcodeToken0 is followed by 1 operand:
1532// (1) Operand, starting with OperandToken0, defining which
1533// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1534// including writemask.
1535// (in Pixel Shader, output can also be one of
1536// D3D10_SB_OPERAND_TYPE_OUTPUT_DEPTH,
1537// D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL, or
1538// D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL )
1539//
1540// ----------------------------------------------------------------------------
1541
1542// ----------------------------------------------------------------------------
1543// Output Register Declaration w/System Interpreted Value
1544//
1545// OpcodeToken0:
1546//
1547// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT_SIV
1548// [23:11] Ignored, 0
1549// [30:24] Instruction length in DWORDs including the opcode token.
1550// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1551// contains extended operand description. This dcl is currently not
1552// extended.
1553//
1554// OpcodeToken0 is followed by 2 operands:
1555// (1) an operand, starting with OperandToken0, defining which
1556// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1557// including writemask.
1558// (2) a System Interpreted Name token (NameToken)
1559//
1560// ----------------------------------------------------------------------------
1561
1562// ----------------------------------------------------------------------------
1563// Output Register Declaration w/System Generated Value
1564//
1565// OpcodeToken0:
1566//
1567// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT_SGV
1568// [23:11] Ignored, 0
1569// [30:24] Instruction length in DWORDs including the opcode token.
1570// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1571// contains extended operand description. This dcl is currently not
1572// extended.
1573//
1574// OpcodeToken0 is followed by 2 operands:
1575// (1) an operand, starting with OperandToken0, defining which
1576// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1577// including writemask.
1578// (2) a System Generated Name token (NameToken)
1579//
1580// ----------------------------------------------------------------------------
1581
1582
1583// ----------------------------------------------------------------------------
1584// Input or Output Register Indexing Range Declaration
1585//
1586// OpcodeToken0:
1587//
1588// [10:00] D3D10_SB_OPCODE_DCL_INDEX_RANGE
1589// [23:11] Ignored, 0
1590// [30:24] Instruction length in DWORDs including the opcode token.
1591// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1592// contains extended operand description. This dcl is currently not
1593// extended.
1594//
1595// OpcodeToken0 is followed by 2 operands:
1596// (1) an operand, starting with OperandToken0, defining which
1597// input (v#) or output (o#) register is having its array indexing range
1598// declared, including writemask. For Geometry Shader inputs,
1599// it is assumed that the vertex axis is always fully indexable,
1600// and 0 must be specified as the vertex# in this declaration, so that
1601// only the a range of attributes are having their index range defined.
1602//
1603// (2) a DWORD representing the count of registers starting from the one
1604// indicated in (1).
1605//
1606// ----------------------------------------------------------------------------
1607
1608// ----------------------------------------------------------------------------
1609// Temp Register Declaration r0...r(n-1)
1610//
1611// OpcodeToken0:
1612//
1613// [10:00] D3D10_SB_OPCODE_DCL_TEMPS
1614// [23:11] Ignored, 0
1615// [30:24] Instruction length in DWORDs including the opcode token.
1616// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1617// contains extended operand description. This dcl is currently not
1618// extended.
1619//
1620// OpcodeToken0 is followed by 1 operand:
1621// (1) DWORD (unsigned int) indicating how many temps are being declared.
1622// i.e. 5 means r0...r4 are declared.
1623//
1624// ----------------------------------------------------------------------------
1625
1626// ----------------------------------------------------------------------------
1627// Indexable Temp Register (x#[size]) Declaration
1628//
1629// OpcodeToken0:
1630//
1631// [10:00] D3D10_SB_OPCODE_DCL_INDEXABLE_TEMP
1632// [23:11] Ignored, 0
1633// [30:24] Instruction length in DWORDs including the opcode token.
1634// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1635// contains extended operand description. This dcl is currently not
1636// extended.
1637//
1638// OpcodeToken0 is followed by 3 DWORDs:
1639// (1) Register index (defines which x# register is declared)
1640// (2) Number of registers in this register bank
1641// (3) Number of components in the array (1-4). 1 means .x, 2 means .xy etc.
1642//
1643// ----------------------------------------------------------------------------
1644
1645// ----------------------------------------------------------------------------
1646// Constant Buffer Declaration
1647//
1648// OpcodeToken0:
1649//
1650// [10:00] D3D10_SB_OPCODE_DCL_CONSTANT_BUFFER
1651// [11] D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN
1652// [23:12] Ignored, 0
1653// [30:24] Instruction length in DWORDs including the opcode token.
1654// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1655// contains extended operand description. This dcl is currently not
1656// extended.
1657//
1658// OpcodeToken0 is followed by 1 operand on Shader Model 4.0 through 5.0:
1659// (1) Operand, starting with OperandToken0, defining which CB slot (cb#[size])
1660// is being declared. (operand type: D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER)
1661// The indexing dimension for the register must be
1662// D3D10_SB_OPERAND_INDEX_DIMENSION_2D, where the first index specifies
1663// which cb#[] is being declared, and the second (array) index specifies the size
1664// of the buffer, as a count of 32-bit*4 elements. (As opposed to when the
1665// cb#[] is used in shader instructions, and the array index represents which
1666// location in the constant buffer is being referenced.)
1667// If the size is specified as 0, the CB size is not known (any size CB
1668// can be bound to the slot).
1669//
1670// The order of constant buffer declarations in a shader indicates their
1671// relative priority from highest to lowest (hint to driver).
1672//
1673// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1674// (1) Operand, starting with OperandToken0, defining which CB range (ID and bounds)
1675// is being declared. (operand type: D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER)
1676// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1677// and the meaning of the index dimensions are as follows: (cb<id>[<lbound>:<ubound>])
1678// 1 <id>: variable ID being declared
1679// 2 <lbound>: the lower bound of the range of constant buffers in the space
1680// 3 <ubound>: the upper bound (inclusive) of this range
1681// As opposed to when the cb#[] is used in shader instructions: (cb<id>[<idx>][<loc>])
1682// 1 <id>: variable ID being used (matches dcl)
1683// 2 <idx>: absolute index of constant buffer within space (may be dynamically indexed)
1684// 3 <loc>: location of vector within constant buffer being referenced,
1685// which may also be dynamically indexed, with no access pattern flag required.
1686// (2) a DWORD indicating the size of the constant buffer as a count of 16-byte vectors.
1687// Each vector is 32-bit*4 elements == 128-bits == 16 bytes.
1688// If the size is specified as 0, the CB size is not known (any size CB
1689// can be bound to the slot).
1690// (3) a DWORD indicating the space index.
1691//
1692// ----------------------------------------------------------------------------
1693
1694typedef enum D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN
1695{
1696 D3D10_SB_CONSTANT_BUFFER_IMMEDIATE_INDEXED = 0,
1697 D3D10_SB_CONSTANT_BUFFER_DYNAMIC_INDEXED = 1
1698} D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN;
1699
1700#define D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK 0x00000800
1701#define D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT 11
1702
1703// DECODER MACRO: Find out if a Constant Buffer is going to be indexed or not
1704#define DECODE_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN(OpcodeToken0) ((D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN)(((OpcodeToken0)&D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK)>>D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT))
1705
1706// ENCODER MACRO: Encode the access pattern for the Constant Buffer
1707#define ENCODE_D3D10_SB_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN(AccessPattern) (((AccessPattern)<<D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT)&D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK)
1708
1709// ----------------------------------------------------------------------------
1710// Immediate Constant Buffer Declaration
1711//
1712// OpcodeToken0:
1713//
1714// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1715// [31:11] == D3D10_SB_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER
1716//
1717// OpcodeToken0 is followed by:
1718// (1) DWORD indicating length of declaration, including OpcodeToken0.
1719// This length must = 2(for OpcodeToken0 and 1) + a multiple of 4
1720// (# of immediate constants)
1721// (2) Sequence of 4-tuples of DWORDs defining the Immediate Constant Buffer.
1722// The number of 4-tuples is (length above - 1) / 4
1723// ----------------------------------------------------------------------------
1724
1725// ----------------------------------------------------------------------------
1726// Shader Message Declaration
1727//
1728// OpcodeToken0:
1729//
1730// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1731// [31:11] == D3D11_SB_CUSTOMDATA_SHADER_MESSAGE
1732//
1733// OpcodeToken0 is followed by:
1734// (1) DWORD indicating length of declaration, including OpcodeToken0.
1735// (2) DWORD (D3D11_SB_SHADER_MESSAGE_ID) indicating shader message or error.
1736// (3) D3D11_SB_SHADER_MESSAGE_FORMAT indicating the convention for formatting the message.
1737// (4) DWORD indicating the number of characters in the string without the terminator.
1738// (5) DWORD indicating the number of operands.
1739// (6) DWORD indicating length of operands.
1740// (7) Encoded operands.
1741// (8) String with trailing zero, padded to a multiple of DWORDs.
1742// The string is in the given format and the operands given should
1743// be used for argument substitutions when formatting.
1744// ----------------------------------------------------------------------------
1745
1746typedef enum D3D11_SB_SHADER_MESSAGE_ID
1747{
1748 D3D11_SB_SHADER_MESSAGE_ID_MESSAGE = 0x00200102,
1749 D3D11_SB_SHADER_MESSAGE_ID_ERROR = 0x00200103
1750} D3D11_SB_SHADER_MESSAGE_ID;
1751
1752typedef enum D3D11_SB_SHADER_MESSAGE_FORMAT
1753{
1754 // No formatting, just a text string. Operands are ignored.
1755 D3D11_SB_SHADER_MESSAGE_FORMAT_ANSI_TEXT,
1756 // Format string follows C/C++ printf conventions.
1757 D3D11_SB_SHADER_MESSAGE_FORMAT_ANSI_PRINTF,
1758} D3D11_SB_SHADER_MESSAGE_FORMAT;
1759
1760// ----------------------------------------------------------------------------
1761// Shader Clip Plane Constant Mappings for DX9 hardware
1762//
1763// OpcodeToken0:
1764//
1765// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1766// [31:11] == D3D11_SB_CUSTOMDATA_SHADER_CLIP_PLANE_CONSTANT_MAPPINGS_FOR_DX9
1767//
1768// OpcodeToken0 is followed by:
1769// (1) DWORD indicating length of declaration, including OpcodeToken0.
1770// (2) DWORD indicating number of constant mappings (up to 6 mappings).
1771// (3+) Constant mapping tables in following format.
1772//
1773// struct _Clip_Plane_Constant_Mapping
1774// {
1775// WORD ConstantBufferIndex; // cb[n]
1776// WORD StartConstantElement; // starting index of cb[n][m]
1777// WORD ConstantElemntCount; // number of elements cb[n][m] ~ cb[n][m+l]
1778// WORD Reserved; //
1779// };
1780// ----------------------------------------------------------------------------
1781
1782// ----------------------------------------------------------------------------
1783// Geometry Shader Input Primitive Declaration
1784//
1785// OpcodeToken0:
1786//
1787// [10:00] D3D10_SB_OPCODE_DCL_GS_INPUT_PRIMITIVE
1788// [16:11] D3D10_SB_PRIMITIVE [not D3D10_SB_PRIMITIVE_TOPOLOGY]
1789// [23:17] Ignored, 0
1790// [30:24] Instruction length in DWORDs including the opcode token. == 1
1791// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1792// contains extended operand description. This dcl is currently not
1793// extended.
1794//
1795// ----------------------------------------------------------------------------
1796
1797#define D3D10_SB_GS_INPUT_PRIMITIVE_MASK 0x0001f800
1798#define D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT 11
1799
1800// DECODER MACRO: Given a primitive topology declaration,
1801// (OpcodeToken0), determine the primitive topology
1802// (D3D10_SB_PRIMITIVE enum)
1803#define DECODE_D3D10_SB_GS_INPUT_PRIMITIVE(OpcodeToken0) ((D3D10_SB_PRIMITIVE)(((OpcodeToken0)&D3D10_SB_GS_INPUT_PRIMITIVE_MASK)>>D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT))
1804
1805// ENCODER MACRO: Store primitive topology
1806// (D3D10_SB_PRIMITIVE enum) into a
1807// a primitive topology declaration token (OpcodeToken0)
1808#define ENCODE_D3D10_SB_GS_INPUT_PRIMITIVE(Prim) (((Prim)<<D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT)&D3D10_SB_GS_INPUT_PRIMITIVE_MASK)
1809
1810// ----------------------------------------------------------------------------
1811// Geometry Shader Output Topology Declaration
1812//
1813// OpcodeToken0:
1814//
1815// [10:00] D3D10_SB_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY
1816// [17:11] D3D10_SB_PRIMITIVE_TOPOLOGY
1817// [23:18] Ignored, 0
1818// [30:24] Instruction length in DWORDs including the opcode token. == 1
1819// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1820// contains extended operand description. This dcl is currently not
1821// extended.
1822//
1823// ----------------------------------------------------------------------------
1824
1825#define D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK 0x0001f800
1826#define D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT 11
1827
1828// DECODER MACRO: Given a primitive topology declaration,
1829// (OpcodeToken0), determine the primitive topology
1830// (D3D10_SB_PRIMITIVE_TOPOLOGY enum)
1831#define DECODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY(OpcodeToken0) ((D3D10_SB_PRIMITIVE_TOPOLOGY)(((OpcodeToken0)&D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK)>>D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT))
1832
1833// ENCODER MACRO: Store primitive topology
1834// (D3D10_SB_PRIMITIVE_TOPOLOGY enum) into a
1835// a primitive topology declaration token (OpcodeToken0)
1836#define ENCODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY(PrimTopology) (((PrimTopology)<<D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT)&D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK)
1837
1838// ----------------------------------------------------------------------------
1839// Geometry Shader Maximum Output Vertex Count Declaration
1840//
1841// OpcodeToken0:
1842//
1843// [10:00] D3D10_SB_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT
1844// [23:11] Ignored, 0
1845// [30:24] Instruction length in DWORDs including the opcode token.
1846// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1847// contains extended operand description. This dcl is currently not
1848// extended.
1849//
1850// OpcodeToken0 is followed by a DWORD representing the
1851// maximum number of primitives that could be output
1852// by the Geometry Shader.
1853//
1854// ----------------------------------------------------------------------------
1855
1856// ----------------------------------------------------------------------------
1857// Geometry Shader Instance Count Declaration
1858//
1859// OpcodeToken0:
1860//
1861// [10:00] D3D11_SB_OPCODE_DCL_GS_INSTANCE_COUNT
1862// [23:11] Ignored, 0
1863// [30:24] Instruction length in DWORDs including the opcode token.
1864// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1865// contains extended operand description. This dcl is currently not
1866// extended.
1867//
1868// OpcodeToken0 is followed by a UINT32 representing the
1869// number of instances of the geometry shader program to execute.
1870//
1871// ----------------------------------------------------------------------------
1872
1873// ----------------------------------------------------------------------------
1874// Hull Shader Declaration Phase: HS/DS Input Control Point Count
1875//
1876// OpcodeToken0:
1877//
1878// [10:00] D3D11_SB_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT
1879// [16:11] Control point count
1880// [23:17] Ignored, 0
1881// [30:24] Instruction length in DWORDs including the opcode token. == 1
1882// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1883// contains extended operand description. This dcl is currently not
1884// extended.
1885//
1886// ----------------------------------------------------------------------------
1887#define D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK 0x0001f800
1888#define D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT 11
1889
1890// DECODER MACRO: Given an input control point count declaration token,
1891// (OpcodeToken0), determine the control point count
1892#define DECODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK)>>D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT))
1893
1894// ENCODER MACRO: Store input control point count into a declaration token
1895#define ENCODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(Count) (((Count)<<D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT)&D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK)
1896
1897// ----------------------------------------------------------------------------
1898// Hull Shader Declaration Phase: HS Output Control Point Count
1899//
1900// OpcodeToken0:
1901//
1902// [10:00] D3D11_SB_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT
1903// [16:11] Control point count
1904// [23:17] Ignored, 0
1905// [30:24] Instruction length in DWORDs including the opcode token. == 1
1906// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1907// contains extended operand description. This dcl is currently not
1908// extended.
1909//
1910// ----------------------------------------------------------------------------
1911#define D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK 0x0001f800
1912#define D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT 11
1913
1914// DECODER MACRO: Given an output control point count declaration token,
1915// (OpcodeToken0), determine the control point count
1916#define DECODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK)>>D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT))
1917
1918// ENCODER MACRO: Store output control point count into a declaration token
1919#define ENCODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(Count) (((Count)<<D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT)&D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK)
1920
1921// ----------------------------------------------------------------------------
1922// Hull Shader Declaration Phase: Tessellator Domain
1923//
1924// OpcodeToken0:
1925//
1926// [10:00] D3D11_SB_OPCODE_DCL_TESS_DOMAIN
1927// [12:11] Domain
1928// [23:13] Ignored, 0
1929// [30:24] Instruction length in DWORDs including the opcode token. == 1
1930// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1931// contains extended operand description. This dcl is currently not
1932// extended.
1933//
1934// ----------------------------------------------------------------------------
1935typedef enum D3D11_SB_TESSELLATOR_DOMAIN
1936{
1937 D3D11_SB_TESSELLATOR_DOMAIN_UNDEFINED = 0,
1938 D3D11_SB_TESSELLATOR_DOMAIN_ISOLINE = 1,
1939 D3D11_SB_TESSELLATOR_DOMAIN_TRI = 2,
1940 D3D11_SB_TESSELLATOR_DOMAIN_QUAD = 3
1941} D3D11_SB_TESSELLATOR_DOMAIN;
1942
1943#define D3D11_SB_TESS_DOMAIN_MASK 0x00001800
1944#define D3D11_SB_TESS_DOMAIN_SHIFT 11
1945
1946// DECODER MACRO: Given a tessellator domain declaration,
1947// (OpcodeToken0), determine the domain
1948// (D3D11_SB_TESSELLATOR_DOMAIN enum)
1949#define DECODE_D3D11_SB_TESS_DOMAIN(OpcodeToken0) ((D3D11_SB_TESSELLATOR_DOMAIN)(((OpcodeToken0)&D3D11_SB_TESS_DOMAIN_MASK)>>D3D11_SB_TESS_DOMAIN_SHIFT))
1950
1951// ENCODER MACRO: Store tessellator domain
1952// (D3D11_SB_TESSELLATOR_DOMAIN enum) into a
1953// a tessellator domain declaration token (OpcodeToken0)
1954#define ENCODE_D3D11_SB_TESS_DOMAIN(Domain) (((Domain)<<D3D11_SB_TESS_DOMAIN_SHIFT)&D3D11_SB_TESS_DOMAIN_MASK)
1955
1956// ----------------------------------------------------------------------------
1957// Hull Shader Declaration Phase: Tessellator Partitioning
1958//
1959// OpcodeToken0:
1960//
1961// [10:00] D3D11_SB_OPCODE_DCL_TESS_PARTITIONING
1962// [13:11] Partitioning
1963// [23:14] Ignored, 0
1964// [30:24] Instruction length in DWORDs including the opcode token. == 1
1965// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1966// contains extended operand description. This dcl is currently not
1967// extended.
1968//
1969// ----------------------------------------------------------------------------
1970typedef enum D3D11_SB_TESSELLATOR_PARTITIONING
1971{
1972 D3D11_SB_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
1973 D3D11_SB_TESSELLATOR_PARTITIONING_INTEGER = 1,
1974 D3D11_SB_TESSELLATOR_PARTITIONING_POW2 = 2,
1975 D3D11_SB_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
1976 D3D11_SB_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4
1977} D3D11_SB_TESSELLATOR_PARTITIONING;
1978
1979#define D3D11_SB_TESS_PARTITIONING_MASK 0x00003800
1980#define D3D11_SB_TESS_PARTITIONING_SHIFT 11
1981
1982// DECODER MACRO: Given a tessellator partitioning declaration,
1983// (OpcodeToken0), determine the domain
1984// (D3D11_SB_TESSELLATOR_PARTITIONING enum)
1985#define DECODE_D3D11_SB_TESS_PARTITIONING(OpcodeToken0) ((D3D11_SB_TESSELLATOR_PARTITIONING)(((OpcodeToken0)&D3D11_SB_TESS_PARTITIONING_MASK)>>D3D11_SB_TESS_PARTITIONING_SHIFT))
1986
1987// ENCODER MACRO: Store tessellator partitioning
1988// (D3D11_SB_TESSELLATOR_PARTITIONING enum) into a
1989// a tessellator partitioning declaration token (OpcodeToken0)
1990#define ENCODE_D3D11_SB_TESS_PARTITIONING(Partitioning) (((Partitioning)<<D3D11_SB_TESS_PARTITIONING_SHIFT)&D3D11_SB_TESS_PARTITIONING_MASK)
1991
1992// ----------------------------------------------------------------------------
1993// Hull Shader Declaration Phase: Tessellator Output Primitive
1994//
1995// OpcodeToken0:
1996//
1997// [10:00] D3D11_SB_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE
1998// [13:11] Output Primitive
1999// [23:14] Ignored, 0
2000// [30:24] Instruction length in DWORDs including the opcode token. == 1
2001// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2002// contains extended operand description. This dcl is currently not
2003// extended.
2004//
2005// ----------------------------------------------------------------------------
2006typedef enum D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE
2007{
2008 D3D11_SB_TESSELLATOR_OUTPUT_UNDEFINED = 0,
2009 D3D11_SB_TESSELLATOR_OUTPUT_POINT = 1,
2010 D3D11_SB_TESSELLATOR_OUTPUT_LINE = 2,
2011 D3D11_SB_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
2012 D3D11_SB_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4
2013} D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE;
2014
2015#define D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK 0x00003800
2016#define D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT 11
2017
2018// DECODER MACRO: Given a tessellator output primitive declaration,
2019// (OpcodeToken0), determine the domain
2020// (D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE enum)
2021#define DECODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE(OpcodeToken0) ((D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE)(((OpcodeToken0)&D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK)>>D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT))
2022
2023// ENCODER MACRO: Store tessellator output primitive
2024// (D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE enum) into a
2025// a tessellator output primitive declaration token (OpcodeToken0)
2026#define ENCODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE(OutputPrimitive) (((OutputPrimitive)<<D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT)&D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK)
2027
2028
2029// ----------------------------------------------------------------------------
2030// Hull Shader Declaration Phase: Hull Shader Max Tessfactor
2031//
2032// OpcodeToken0:
2033//
2034// [10:00] D3D11_SB_OPCODE_DCL_HS_MAX_TESSFACTOR
2035// [23:11] Ignored, 0
2036// [30:24] Instruction length in DWORDs including the opcode token.
2037// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2038// contains extended operand description. This dcl is currently not
2039// extended.
2040//
2041// OpcodeToken0 is followed by a float32 representing the
2042// maximum TessFactor.
2043//
2044// ----------------------------------------------------------------------------
2045
2046// ----------------------------------------------------------------------------
2047// Hull Shader Declaration Phase: Hull Shader Fork Phase Instance Count
2048//
2049// OpcodeToken0:
2050//
2051// [10:00] D3D11_SB_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT
2052// [23:11] Ignored, 0
2053// [30:24] Instruction length in DWORDs including the opcode token.
2054// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2055// contains extended operand description. This dcl is currently not
2056// extended.
2057//
2058// OpcodeToken0 is followed by a UINT32 representing the
2059// number of instances of the current fork phase program to execute.
2060//
2061// ----------------------------------------------------------------------------
2062
2063typedef enum D3D10_SB_INTERPOLATION_MODE
2064{
2065 D3D10_SB_INTERPOLATION_UNDEFINED = 0,
2066 D3D10_SB_INTERPOLATION_CONSTANT = 1,
2067 D3D10_SB_INTERPOLATION_LINEAR = 2,
2068 D3D10_SB_INTERPOLATION_LINEAR_CENTROID = 3,
2069 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
2070 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
2071 D3D10_SB_INTERPOLATION_LINEAR_SAMPLE = 6, // DX10.1
2072 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7, // DX10.1
2073} D3D10_SB_INTERPOLATION_MODE;
2074
2075// Keep PRIMITIVE_TOPOLOGY values in sync with earlier DX versions (HW consumes values directly).
2076typedef enum D3D10_SB_PRIMITIVE_TOPOLOGY
2077{
2078 D3D10_SB_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
2079 D3D10_SB_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
2080 D3D10_SB_PRIMITIVE_TOPOLOGY_LINELIST = 2,
2081 D3D10_SB_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
2082 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
2083 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
2084 // 6 is reserved for legacy triangle fans
2085 // Adjacency values should be equal to (0x8 & non-adjacency):
2086 D3D10_SB_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
2087 D3D10_SB_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
2088 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
2089 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
2090} D3D10_SB_PRIMITIVE_TOPOLOGY;
2091
2092typedef enum D3D10_SB_PRIMITIVE
2093{
2094 D3D10_SB_PRIMITIVE_UNDEFINED = 0,
2095 D3D10_SB_PRIMITIVE_POINT = 1,
2096 D3D10_SB_PRIMITIVE_LINE = 2,
2097 D3D10_SB_PRIMITIVE_TRIANGLE = 3,
2098 // Adjacency values should be equal to (0x4 & non-adjacency):
2099 D3D10_SB_PRIMITIVE_LINE_ADJ = 6,
2100 D3D10_SB_PRIMITIVE_TRIANGLE_ADJ = 7,
2101 D3D11_SB_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
2102 D3D11_SB_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
2103 D3D11_SB_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
2104 D3D11_SB_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
2105 D3D11_SB_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
2106 D3D11_SB_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
2107 D3D11_SB_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
2108 D3D11_SB_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
2109 D3D11_SB_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
2110 D3D11_SB_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
2111 D3D11_SB_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
2112 D3D11_SB_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
2113 D3D11_SB_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
2114 D3D11_SB_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
2115 D3D11_SB_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
2116 D3D11_SB_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
2117 D3D11_SB_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
2118 D3D11_SB_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
2119 D3D11_SB_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
2120 D3D11_SB_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
2121 D3D11_SB_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
2122 D3D11_SB_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
2123 D3D11_SB_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
2124 D3D11_SB_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
2125 D3D11_SB_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
2126 D3D11_SB_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
2127 D3D11_SB_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
2128 D3D11_SB_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
2129 D3D11_SB_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
2130 D3D11_SB_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
2131 D3D11_SB_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
2132 D3D11_SB_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
2133} D3D10_SB_PRIMITIVE;
2134
2135typedef enum D3D10_SB_COMPONENT_MASK
2136{
2137 D3D10_SB_COMPONENT_MASK_X = 1,
2138 D3D10_SB_COMPONENT_MASK_Y = 2,
2139 D3D10_SB_COMPONENT_MASK_Z = 4,
2140 D3D10_SB_COMPONENT_MASK_W = 8,
2141 D3D10_SB_COMPONENT_MASK_R = 1,
2142 D3D10_SB_COMPONENT_MASK_G = 2,
2143 D3D10_SB_COMPONENT_MASK_B = 4,
2144 D3D10_SB_COMPONENT_MASK_A = 8,
2145 D3D10_SB_COMPONENT_MASK_ALL = 15,
2146} D3D10_SB_COMPONENT_MASK;
2147
2148typedef enum D3D10_SB_NAME
2149{
2150 D3D10_SB_NAME_UNDEFINED = 0,
2151 D3D10_SB_NAME_POSITION = 1,
2152 D3D10_SB_NAME_CLIP_DISTANCE = 2,
2153 D3D10_SB_NAME_CULL_DISTANCE = 3,
2154 D3D10_SB_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
2155 D3D10_SB_NAME_VIEWPORT_ARRAY_INDEX = 5,
2156 D3D10_SB_NAME_VERTEX_ID = 6,
2157 D3D10_SB_NAME_PRIMITIVE_ID = 7,
2158 D3D10_SB_NAME_INSTANCE_ID = 8,
2159 D3D10_SB_NAME_IS_FRONT_FACE = 9,
2160 D3D10_SB_NAME_SAMPLE_INDEX = 10,
2161 // The following are added for D3D11
2162 D3D11_SB_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR = 11,
2163 D3D11_SB_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR = 12,
2164 D3D11_SB_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR = 13,
2165 D3D11_SB_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR = 14,
2166 D3D11_SB_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR = 15,
2167 D3D11_SB_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR = 16,
2168 D3D11_SB_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR = 17,
2169 D3D11_SB_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR = 18,
2170 D3D11_SB_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR = 19,
2171 D3D11_SB_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 20,
2172 D3D11_SB_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 21,
2173 D3D11_SB_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 22,
2174 // The following are added for D3D12
2175 D3D12_SB_NAME_BARYCENTRICS = 23,
2176 D3D12_SB_NAME_SHADINGRATE = 24,
2177 D3D12_SB_NAME_CULLPRIMITIVE = 25,
2178} D3D10_SB_NAME;
2179
2180typedef enum D3D10_SB_RESOURCE_DIMENSION
2181{
2182 D3D10_SB_RESOURCE_DIMENSION_UNKNOWN = 0,
2183 D3D10_SB_RESOURCE_DIMENSION_BUFFER = 1,
2184 D3D10_SB_RESOURCE_DIMENSION_TEXTURE1D = 2,
2185 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2D = 3,
2186 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DMS = 4,
2187 D3D10_SB_RESOURCE_DIMENSION_TEXTURE3D = 5,
2188 D3D10_SB_RESOURCE_DIMENSION_TEXTURECUBE = 6,
2189 D3D10_SB_RESOURCE_DIMENSION_TEXTURE1DARRAY = 7,
2190 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DARRAY = 8,
2191 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DMSARRAY = 9,
2192 D3D10_SB_RESOURCE_DIMENSION_TEXTURECUBEARRAY = 10,
2193 D3D11_SB_RESOURCE_DIMENSION_RAW_BUFFER = 11,
2194 D3D11_SB_RESOURCE_DIMENSION_STRUCTURED_BUFFER = 12,
2195} D3D10_SB_RESOURCE_DIMENSION;
2196
2197typedef enum D3D10_SB_RESOURCE_RETURN_TYPE
2198{
2199 D3D10_SB_RETURN_TYPE_UNORM = 1,
2200 D3D10_SB_RETURN_TYPE_SNORM = 2,
2201 D3D10_SB_RETURN_TYPE_SINT = 3,
2202 D3D10_SB_RETURN_TYPE_UINT = 4,
2203 D3D10_SB_RETURN_TYPE_FLOAT = 5,
2204 D3D10_SB_RETURN_TYPE_MIXED = 6,
2205 D3D11_SB_RETURN_TYPE_DOUBLE = 7,
2206 D3D11_SB_RETURN_TYPE_CONTINUED = 8,
2207 D3D11_SB_RETURN_TYPE_UNUSED = 9,
2208} D3D10_SB_RESOURCE_RETURN_TYPE;
2209
2210typedef enum D3D10_SB_REGISTER_COMPONENT_TYPE
2211{
2212 D3D10_SB_REGISTER_COMPONENT_UNKNOWN = 0,
2213 D3D10_SB_REGISTER_COMPONENT_UINT32 = 1,
2214 D3D10_SB_REGISTER_COMPONENT_SINT32 = 2,
2215 D3D10_SB_REGISTER_COMPONENT_FLOAT32 = 3,
2216 // Below types aren't used in DXBC, only signatures from DXIL shaders
2217 D3D10_SB_REGISTER_COMPONENT_UINT16 = 4,
2218 D3D10_SB_REGISTER_COMPONENT_SINT16 = 5,
2219 D3D10_SB_REGISTER_COMPONENT_FLOAT16 = 6,
2220 D3D10_SB_REGISTER_COMPONENT_UINT64 = 7,
2221 D3D10_SB_REGISTER_COMPONENT_SINT64 = 8,
2222 D3D10_SB_REGISTER_COMPONENT_FLOAT64 = 9,
2223} D3D10_SB_REGISTER_COMPONENT_TYPE;
2224
2225typedef enum D3D10_SB_INSTRUCTION_RETURN_TYPE
2226{
2227 D3D10_SB_INSTRUCTION_RETURN_FLOAT = 0,
2228 D3D10_SB_INSTRUCTION_RETURN_UINT = 1
2229} D3D10_SB_INSTRUCTION_RETURN_TYPE;
2230
2231#define D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK 0x00001800
2232#define D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT 11
2233
2234// DECODER MACRO: For an OpcodeToken0 with the return type
2235// determine the return type.
2236#define DECODE_D3D10_SB_INSTRUCTION_RETURN_TYPE(OpcodeToken0) ((D3D10_SB_INSTRUCTION_RETURN_TYPE)(((OpcodeToken0)&D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK)>>D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT))
2237// ENCODER MACRO: Encode the return type for instructions
2238// in the opcode specific control range of OpcodeToken0
2239#define ENCODE_D3D10_SB_INSTRUCTION_RETURN_TYPE(ReturnType) (((ReturnType)<<D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT)&D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK)
2240
2241// ----------------------------------------------------------------------------
2242// Interface function body Declaration
2243//
2244// OpcodeToken0:
2245//
2246// [10:00] D3D10_SB_OPCODE_DCL_FUNCTION_BODY
2247// [23:11] Ignored, 0
2248// [30:24] Instruction length in DWORDs including the opcode token.
2249// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2250// contains extended operand description. If it is extended, then
2251// it contains the actual instruction length in DWORDs, since
2252// it may not fit into 7 bits if enough operands are defined.
2253//
2254// OpcodeToken0 is followed by a DWORD that represents the function body
2255// identifier.
2256//
2257// ----------------------------------------------------------------------------
2258
2259// ----------------------------------------------------------------------------
2260// Interface function table Declaration
2261//
2262// OpcodeToken0:
2263//
2264// [10:00] D3D10_SB_OPCODE_DCL_FUNCTION_TABLE
2265// [23:11] Ignored, 0
2266// [30:24] Instruction length in DWORDs including the opcode token.
2267// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2268// contains extended operand description. If it is extended, then
2269// it contains the actual instruction length in DWORDs, since
2270// it may not fit into 7 bits if enough functions are defined.
2271//
2272// OpcodeToken0 is followed by a DWORD that represents the function table
2273// identifier and another DWORD (TableLength) that gives the number of
2274// functions in the table.
2275//
2276// This is followed by TableLength DWORDs which are function body indices.
2277//
2278// ----------------------------------------------------------------------------
2279
2280// ----------------------------------------------------------------------------
2281// Interface Declaration
2282//
2283// OpcodeToken0:
2284//
2285// [10:00] D3D10_SB_OPCODE_DCL_INTERFACE
2286// [11] 1 if the interface is indexed dynamically, 0 otherwise.
2287// [23:12] Ignored, 0
2288// [30:24] Instruction length in DWORDs including the opcode token.
2289// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2290// contains extended operand description. If it is extended, then
2291// it contains the actual instruction length in DWORDs, since
2292// it may not fit into 7 bits if enough types are used.
2293//
2294// OpcodeToken0 is followed by a DWORD that represents the interface
2295// identifier. Next is a DWORD that gives the expected function table
2296// length. Then another DWORD (OpcodeToken3) with the following layout:
2297//
2298// [15:00] TableLength, the number of types that implement this interface
2299// [31:16] ArrayLength, the number of interfaces that are defined in this array.
2300//
2301// This is followed by TableLength DWORDs which are function table
2302// identifiers, representing possible tables for a given interface.
2303//
2304// ----------------------------------------------------------------------------
2305
2306#define D3D11_SB_INTERFACE_INDEXED_BIT_MASK 0x00000800
2307#define D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT 11
2308
2309#define D3D11_SB_INTERFACE_TABLE_LENGTH_MASK 0x0000ffff
2310#define D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT 0
2311
2312#define D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK 0xffff0000
2313#define D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT 16
2314
2315// get/set the indexed bit for an interface definition
2316#define DECODE_D3D11_SB_INTERFACE_INDEXED_BIT(OpcodeToken0) ((((OpcodeToken0)&D3D11_SB_INTERFACE_INDEXED_BIT_MASK)>>D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT) ? true : false)
2317#define ENCODE_D3D11_SB_INTERFACE_INDEXED_BIT(IndexedBit) (((IndexedBit)<<D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT)&D3D11_SB_INTERFACE_INDEXED_BIT_MASK)
2318
2319// get/set the table length for an interface definition
2320#define DECODE_D3D11_SB_INTERFACE_TABLE_LENGTH(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INTERFACE_TABLE_LENGTH_MASK)>>D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT))
2321#define ENCODE_D3D11_SB_INTERFACE_TABLE_LENGTH(TableLength) (((TableLength)<<D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT)&D3D11_SB_INTERFACE_TABLE_LENGTH_MASK)
2322
2323// get/set the array length for an interface definition
2324#define DECODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK)>>D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT))
2325#define ENCODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(ArrayLength) (((ArrayLength)<<D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT)&D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK)
2326
2327// ----------------------------------------------------------------------------
2328// Interface call
2329//
2330// OpcodeToken0:
2331//
2332// [10:00] D3D10_SB_OPCODE_INTERFACE_CALL
2333// [23:11] Ignored, 0
2334// [30:24] Instruction length in DWORDs including the opcode token.
2335// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2336// contains extended operand description. If it is extended, then
2337// it contains the actual instruction length in DWORDs, since
2338// it may not fit into 7 bits if enough types are used.
2339//
2340// OpcodeToken0 is followed by a DWORD that gives the function index to
2341// call in the function table specified for the given interface.
2342// Next is the interface operand.
2343//
2344// ----------------------------------------------------------------------------
2345
2346// ----------------------------------------------------------------------------
2347// Thread Group Declaration (Compute Shader)
2348//
2349// OpcodeToken0:
2350//
2351// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP
2352// [23:11] Ignored, 0
2353// [30:24] Instruction length in DWORDs including the opcode token.
2354// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2355// contains extended operand description. If it is extended, then
2356// it contains the actual instruction length in DWORDs, since
2357// it may not fit into 7 bits if enough types are used.
2358//
2359// OpcodeToken0 is followed by 3 DWORDs, the Thread Group dimensions as UINT32:
2360// x, y, z
2361//
2362// ----------------------------------------------------------------------------
2363
2364// ----------------------------------------------------------------------------
2365// Typed Unordered Access View Declaration
2366//
2367// OpcodeToken0:
2368//
2369// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED
2370// [15:11] D3D10_SB_RESOURCE_DIMENSION
2371// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2372// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2373// [23:18] Ignored, 0
2374// [30:24] Instruction length in DWORDs including the opcode token.
2375// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2376// contains extended operand description. This dcl is currently not
2377// extended.
2378//
2379// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
2380// (1) an operand, starting with OperandToken0, defining which
2381// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2382// (2) a Resource Return Type token (ResourceReturnTypeToken)
2383//
2384// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2385// (1) an operand, starting with OperandToken0, defining which
2386// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2387// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2388// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2389// 1 <id>: variable ID being declared
2390// 2 <lbound>: the lower bound of the range of UAV's in the space
2391// 3 <ubound>: the upper bound (inclusive) of this range
2392// As opposed to when the u# is used in shader instructions, where the register
2393// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2394// dimensions are as follows: (u<id>[<idx>]):
2395// 1 <id>: variable ID being used (matches dcl)
2396// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2397// (2) a Resource Return Type token (ResourceReturnTypeToken)
2398// (3) a DWORD indicating the space index.
2399//
2400// ----------------------------------------------------------------------------
2401// UAV access scope flags
2402#define D3D11_SB_GLOBALLY_COHERENT_ACCESS 0x00010000
2403#define D3D11_SB_ACCESS_COHERENCY_MASK 0x00010000
2404
2405// DECODER MACRO: Retrieve flags for sync instruction from OpcodeToken0.
2406#define DECODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_ACCESS_COHERENCY_MASK)
2407
2408// ENCODER MACRO: Given a set of sync instruciton flags, encode them in OpcodeToken0.
2409#define ENCODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(Flags) ((Flags)&D3D11_SB_ACCESS_COHERENCY_MASK)
2410
2411// Additional UAV access flags
2412#define D3D11_SB_RASTERIZER_ORDERED_ACCESS 0x00020000
2413
2414// Resource flags mask. Use to retrieve all resource flags, including the order preserving counter.
2415#define D3D11_SB_RESOURCE_FLAGS_MASK (D3D11_SB_GLOBALLY_COHERENT_ACCESS|D3D11_SB_RASTERIZER_ORDERED_ACCESS|D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER)
2416
2417// DECODER MACRO: Retrieve UAV access flags for from OpcodeToken0.
2418#define DECODE_D3D11_SB_RESOURCE_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_RESOURCE_FLAGS_MASK)
2419
2420// ENCODER MACRO: Given UAV access flags, encode them in OpcodeToken0.
2421#define ENCODE_D3D11_SB_RESOURCE_FLAGS(Flags) ((Flags)&D3D11_SB_RESOURCE_FLAGS_MASK)
2422
2423// ----------------------------------------------------------------------------
2424// Raw Unordered Access View Declaration
2425//
2426// OpcodeToken0:
2427//
2428// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW
2429// [15:11] Ignored, 0
2430// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2431// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2432// [23:18] Ignored, 0
2433// [30:24] Instruction length in DWORDs including the opcode token.
2434// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2435// contains extended operand description. This dcl is currently not
2436// extended.
2437//
2438// OpcodeToken0 is followed by 1 operand on Shader Models 4.0 through 5.0:
2439// (1) an operand, starting with OperandToken0, defining which
2440// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2441//
2442// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
2443// (1) an operand, starting with OperandToken0, defining which
2444// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2445// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2446// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2447// 1 <id>: variable ID being declared
2448// 2 <lbound>: the lower bound of the range of UAV's in the space
2449// 3 <ubound>: the upper bound (inclusive) of this range
2450// As opposed to when the u# is used in shader instructions, where the register
2451// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2452// dimensions are as follows: (u<id>[<idx>]):
2453// 1 <id>: variable ID being used (matches dcl)
2454// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2455// (2) a DWORD indicating the space index.
2456//
2457// ----------------------------------------------------------------------------
2458
2459// ----------------------------------------------------------------------------
2460// Structured Unordered Access View Declaration
2461//
2462// OpcodeToken0:
2463//
2464// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED
2465// [15:11] Ignored, 0
2466// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2467// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2468// [22:18] Ignored, 0
2469// [23:23] D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER or 0
2470//
2471// The presence of this flag means that if a UAV is bound to the
2472// corresponding slot, it must have been created with
2473// D3D11_BUFFER_UAV_FLAG_COUNTER at the API. Also, the shader
2474// can contain either imm_atomic_alloc or _consume instructions
2475// operating on the given UAV.
2476//
2477// If this flag is not present, the shader can still contain
2478// either imm_atomic_alloc or imm_atomic_consume instructions for
2479// this UAV. But if such instructions are present in this case,
2480// and a UAV is bound corresponding slot, it must have been created
2481// with the D3D11_BUFFER_UAV_FLAG_APPEND flag at the API.
2482// Append buffers have a counter as well, but values returned
2483// to the shader are only valid for the lifetime of the shader
2484// invocation.
2485//
2486// [30:24] Instruction length in DWORDs including the opcode token.
2487// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2488// contains extended operand description. This dcl is currently not
2489// extended.
2490//
2491// OpcodeToken0 is followed by 2 operands:
2492// (1) an operand, starting with OperandToken0, defining which
2493// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is
2494// being declared.
2495// (2) a DWORD indicating UINT32 byte stride
2496//
2497// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2498// (1) an operand, starting with OperandToken0, defining which
2499// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2500// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2501// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2502// 1 <id>: variable ID being declared
2503// 2 <lbound>: the lower bound of the range of UAV's in the space
2504// 3 <ubound>: the upper bound (inclusive) of this range
2505// As opposed to when the u# is used in shader instructions, where the register
2506// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2507// dimensions are as follows: (u<id>[<idx>]):
2508// 1 <id>: variable ID being used (matches dcl)
2509// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2510// (2) a DWORD indicating UINT32 byte stride
2511// (3) a DWORD indicating the space index.
2512//
2513// ----------------------------------------------------------------------------
2514// UAV flags
2515#define D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER 0x00800000
2516#define D3D11_SB_UAV_FLAGS_MASK 0x00800000
2517
2518// DECODER MACRO: Retrieve flags about UAV from OpcodeToken0.
2519#define DECODE_D3D11_SB_UAV_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_UAV_FLAGS_MASK)
2520
2521// ENCODER MACRO: Given a set of UAV flags, encode them in OpcodeToken0.
2522#define ENCODE_D3D11_SB_UAV_FLAGS(Flags) ((Flags)&D3D11_SB_UAV_FLAGS_MASK)
2523
2524// ----------------------------------------------------------------------------
2525// Raw Thread Group Shared Memory Declaration
2526//
2527// OpcodeToken0:
2528//
2529// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW
2530// [23:11] Ignored, 0
2531// [30:24] Instruction length in DWORDs including the opcode token.
2532// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2533// contains extended operand description. This dcl is currently not
2534// extended.
2535//
2536// OpcodeToken0 is followed by 2 operands:
2537// (1) an operand, starting with OperandToken0, defining which
2538// g# register (D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY) is being declared.
2539// (2) a DWORD indicating the byte count, which must be a multiple of 4.
2540//
2541// ----------------------------------------------------------------------------
2542
2543// ----------------------------------------------------------------------------
2544// Structured Thread Group Shared Memory Declaration
2545//
2546// OpcodeToken0:
2547//
2548// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED
2549// [23:11] Ignored, 0
2550// [30:24] Instruction length in DWORDs including the opcode token.
2551// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2552// contains extended operand description. This dcl is currently not
2553// extended.
2554//
2555// OpcodeToken0 is followed by 3 operands:
2556// (1) an operand, starting with OperandToken0, defining which
2557// g# register (D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY) is
2558// being declared.
2559// (2) a DWORD indicating UINT32 struct byte stride
2560// (3) a DWORD indicating UINT32 struct count
2561//
2562// ----------------------------------------------------------------------------
2563
2564// ----------------------------------------------------------------------------
2565// Raw Shader Resource View Declaration
2566//
2567// OpcodeToken0:
2568//
2569// [10:00] D3D11_SB_OPCODE_DCL_RESOURCE_RAW
2570// [23:11] Ignored, 0
2571// [30:24] Instruction length in DWORDs including the opcode token.
2572// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2573// contains extended operand description. This dcl is currently not
2574// extended.
2575//
2576// OpcodeToken0 is followed by 1 operand:
2577// (1) an operand, starting with OperandToken0, defining which
2578// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2579//
2580// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
2581// (1) an operand, starting with OperandToken0, defining which
2582// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2583// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2584// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
2585// 1 <id>: variable ID being declared
2586// 2 <lbound>: the lower bound of the range of resources in the space
2587// 3 <ubound>: the upper bound (inclusive) of this range
2588// As opposed to when the t# is used in shader instructions, where the register
2589// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2590// dimensions are as follows: (t<id>[<idx>]):
2591// 1 <id>: variable ID being used (matches dcl)
2592// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
2593// (2) a DWORD indicating the space index.
2594//
2595// ----------------------------------------------------------------------------
2596
2597// ----------------------------------------------------------------------------
2598// Structured Shader Resource View Declaration
2599//
2600// OpcodeToken0:
2601//
2602// [10:00] D3D11_SB_OPCODE_DCL_RESOURCE_STRUCTURED
2603// [23:11] Ignored, 0
2604// [30:24] Instruction length in DWORDs including the opcode token.
2605// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2606// contains extended operand description. This dcl is currently not
2607// extended.
2608//
2609// OpcodeToken0 is followed by 2 operands:
2610// (1) an operand, starting with OperandToken0, defining which
2611// g# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is
2612// being declared.
2613// (2) a DWORD indicating UINT32 struct byte stride
2614//
2615// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2616// (1) an operand, starting with OperandToken0, defining which
2617// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2618// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2619// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
2620// 1 <id>: variable ID being declared
2621// 2 <lbound>: the lower bound of the range of resources in the space
2622// 3 <ubound>: the upper bound (inclusive) of this range
2623// As opposed to when the t# is used in shader instructions, where the register
2624// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2625// dimensions are as follows: (t<id>[<idx>]):
2626// 1 <id>: variable ID being used (matches dcl)
2627// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
2628// (2) a DWORD indicating UINT32 struct byte stride
2629// (3) a DWORD indicating the space index.
2630//
2631// ----------------------------------------------------------------------------
2632
2633#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
2634#pragma endregion
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/DirectML.h b/contrib/DirectX-Headers-1.618.2/include/directx/DirectML.h
new file mode 100644
index 0000000..3bd1921
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/DirectML.h
@@ -0,0 +1,2651 @@
1// Copyright (c) Microsoft Corporation. All rights reserved.
2
3#ifndef DIRECTML_H
4#define DIRECTML_H
5#pragma once
6
7#ifdef _GAMING_XBOX_SCARLETT
8#include "d3d12_xs.h"
9#elif _GAMING_XBOX_XBOXONE
10#include "d3d12_x.h"
11#else
12#include "d3d12.h"
13#endif
14
15#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
16
17#ifndef DML_DECLARE_INTERFACE
18#define DML_DECLARE_INTERFACE(iid) DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE
19#endif
20
21#ifndef DML_TARGET_VERSION
22
23#if !defined(NTDDI_VERSION) || defined(DML_TARGET_VERSION_USE_LATEST) // Use the latest if using redist or no Windows target set.
24#define DML_TARGET_VERSION 0x6400
25#elif defined(NTDDI_WIN10_ZN) && NTDDI_VERSION >= NTDDI_WIN10_ZN
26#define DML_TARGET_VERSION 0x6000
27#elif defined(NTDDI_WIN10_NI) && NTDDI_VERSION >= NTDDI_WIN10_NI
28#define DML_TARGET_VERSION 0x5000
29#elif defined(NTDDI_WIN10_CO) && NTDDI_VERSION >= NTDDI_WIN10_CO
30#define DML_TARGET_VERSION 0x4000
31#elif defined(NTDDI_WIN10_FE) && NTDDI_VERSION >= NTDDI_WIN10_FE
32#define DML_TARGET_VERSION 0x3000
33#elif defined(NTDDI_WIN10_VB) && NTDDI_VERSION >= NTDDI_WIN10_VB // Windows 10 2004 Update
34#define DML_TARGET_VERSION 0x2000
35#else // defined(NTDDI_WIN10_19H1) && NTDDI_VERSION >= NTDDI_WIN10_19H1 // Windows 10 1903 Update
36#define DML_TARGET_VERSION 0x1000
37#endif
38
39#endif // !defined(DML_TARGET_VERSION)
40
41// ===================================================================================================================
42// DirectML constants
43// ===================================================================================================================
44
45static const UINT DML_TENSOR_DIMENSION_COUNT_MAX = 5;
46#if DML_TARGET_VERSION >= 0x3000
47static const UINT DML_TENSOR_DIMENSION_COUNT_MAX1 = 8;
48#endif
49
50static const UINT DML_TEMPORARY_BUFFER_ALIGNMENT = 256;
51static const UINT DML_PERSISTENT_BUFFER_ALIGNMENT = 256;
52
53static const UINT DML_MINIMUM_BUFFER_TENSOR_ALIGNMENT = 16;
54
55
56// ===================================================================================================================
57// Interface declarations
58// ===================================================================================================================
59
60interface IDMLObject;
61interface IDMLDevice;
62interface IDMLDeviceChild;
63interface IDMLPageable;
64interface IDMLDispatchable;
65interface IDMLOperator;
66interface IDMLCompiledOperator;
67interface IDMLOperatorInitializer;
68interface IDMLBindingTable;
69interface IDMLCommandRecorder;
70
71
72// ===================================================================================================================
73// Tensor descriptions
74// ===================================================================================================================
75
76enum DML_TENSOR_DATA_TYPE
77{
78 DML_TENSOR_DATA_TYPE_UNKNOWN,
79 DML_TENSOR_DATA_TYPE_FLOAT32,
80 DML_TENSOR_DATA_TYPE_FLOAT16,
81 DML_TENSOR_DATA_TYPE_UINT32,
82 DML_TENSOR_DATA_TYPE_UINT16,
83 DML_TENSOR_DATA_TYPE_UINT8,
84 DML_TENSOR_DATA_TYPE_INT32,
85 DML_TENSOR_DATA_TYPE_INT16,
86 DML_TENSOR_DATA_TYPE_INT8,
87 DML_TENSOR_DATA_TYPE_FLOAT64,
88 DML_TENSOR_DATA_TYPE_UINT64,
89 DML_TENSOR_DATA_TYPE_INT64,
90#if DML_TARGET_VERSION >= 0x6300
91 DML_TENSOR_DATA_TYPE_UINT4,
92 DML_TENSOR_DATA_TYPE_INT4,
93#endif // DML_TARGET_VERSION >= 0x6300
94};
95
96enum DML_TENSOR_TYPE
97{
98 DML_TENSOR_TYPE_INVALID,
99
100 DML_TENSOR_TYPE_BUFFER,
101};
102
103enum DML_TENSOR_FLAGS
104{
105 DML_TENSOR_FLAG_NONE = 0x0,
106 DML_TENSOR_FLAG_OWNED_BY_DML = 0x1,
107};
108
109DEFINE_ENUM_FLAG_OPERATORS(DML_TENSOR_FLAGS)
110
111struct DML_BUFFER_TENSOR_DESC
112{
113 DML_TENSOR_DATA_TYPE DataType;
114 DML_TENSOR_FLAGS Flags;
115 UINT DimensionCount;
116 _Field_size_(DimensionCount) const UINT* Sizes;
117 _Field_size_opt_(DimensionCount) const UINT* Strides;
118 UINT64 TotalTensorSizeInBytes;
119 UINT GuaranteedBaseOffsetAlignment;
120};
121
122struct DML_TENSOR_DESC
123{
124 DML_TENSOR_TYPE Type;
125 _Field_size_(_Inexpressible_("Dependent on tensor type")) const void* Desc;
126};
127
128
129// ===================================================================================================================
130// Operator types
131// ===================================================================================================================
132
133enum DML_OPERATOR_TYPE
134{
135 DML_OPERATOR_INVALID,
136
137 DML_OPERATOR_ELEMENT_WISE_IDENTITY,
138 DML_OPERATOR_ELEMENT_WISE_ABS,
139 DML_OPERATOR_ELEMENT_WISE_ACOS,
140 DML_OPERATOR_ELEMENT_WISE_ADD,
141 DML_OPERATOR_ELEMENT_WISE_ASIN,
142 DML_OPERATOR_ELEMENT_WISE_ATAN,
143 DML_OPERATOR_ELEMENT_WISE_CEIL,
144 DML_OPERATOR_ELEMENT_WISE_CLIP,
145 DML_OPERATOR_ELEMENT_WISE_COS,
146 DML_OPERATOR_ELEMENT_WISE_DIVIDE,
147 DML_OPERATOR_ELEMENT_WISE_EXP,
148 DML_OPERATOR_ELEMENT_WISE_FLOOR,
149 DML_OPERATOR_ELEMENT_WISE_LOG,
150 DML_OPERATOR_ELEMENT_WISE_LOGICAL_AND,
151 DML_OPERATOR_ELEMENT_WISE_LOGICAL_EQUALS,
152 DML_OPERATOR_ELEMENT_WISE_LOGICAL_GREATER_THAN,
153 DML_OPERATOR_ELEMENT_WISE_LOGICAL_LESS_THAN,
154 DML_OPERATOR_ELEMENT_WISE_LOGICAL_NOT,
155 DML_OPERATOR_ELEMENT_WISE_LOGICAL_OR,
156 DML_OPERATOR_ELEMENT_WISE_LOGICAL_XOR,
157 DML_OPERATOR_ELEMENT_WISE_MAX,
158 DML_OPERATOR_ELEMENT_WISE_MEAN,
159 DML_OPERATOR_ELEMENT_WISE_MIN,
160 DML_OPERATOR_ELEMENT_WISE_MULTIPLY,
161 DML_OPERATOR_ELEMENT_WISE_POW,
162 DML_OPERATOR_ELEMENT_WISE_CONSTANT_POW,
163 DML_OPERATOR_ELEMENT_WISE_RECIP,
164 DML_OPERATOR_ELEMENT_WISE_SIN,
165 DML_OPERATOR_ELEMENT_WISE_SQRT,
166 DML_OPERATOR_ELEMENT_WISE_SUBTRACT,
167 DML_OPERATOR_ELEMENT_WISE_TAN,
168 DML_OPERATOR_ELEMENT_WISE_THRESHOLD,
169 DML_OPERATOR_ELEMENT_WISE_QUANTIZE_LINEAR,
170 DML_OPERATOR_ELEMENT_WISE_DEQUANTIZE_LINEAR,
171 DML_OPERATOR_ACTIVATION_ELU,
172 DML_OPERATOR_ACTIVATION_HARDMAX,
173 DML_OPERATOR_ACTIVATION_HARD_SIGMOID,
174 DML_OPERATOR_ACTIVATION_IDENTITY,
175 DML_OPERATOR_ACTIVATION_LEAKY_RELU,
176 DML_OPERATOR_ACTIVATION_LINEAR,
177 DML_OPERATOR_ACTIVATION_LOG_SOFTMAX,
178 DML_OPERATOR_ACTIVATION_PARAMETERIZED_RELU,
179 DML_OPERATOR_ACTIVATION_PARAMETRIC_SOFTPLUS,
180 DML_OPERATOR_ACTIVATION_RELU,
181 DML_OPERATOR_ACTIVATION_SCALED_ELU,
182 DML_OPERATOR_ACTIVATION_SCALED_TANH,
183 DML_OPERATOR_ACTIVATION_SIGMOID,
184 DML_OPERATOR_ACTIVATION_SOFTMAX,
185 DML_OPERATOR_ACTIVATION_SOFTPLUS,
186 DML_OPERATOR_ACTIVATION_SOFTSIGN,
187 DML_OPERATOR_ACTIVATION_TANH,
188 DML_OPERATOR_ACTIVATION_THRESHOLDED_RELU,
189 DML_OPERATOR_CONVOLUTION,
190 DML_OPERATOR_GEMM,
191 DML_OPERATOR_REDUCE,
192 DML_OPERATOR_AVERAGE_POOLING,
193 DML_OPERATOR_LP_POOLING,
194 DML_OPERATOR_MAX_POOLING,
195 DML_OPERATOR_ROI_POOLING,
196 DML_OPERATOR_SLICE,
197 DML_OPERATOR_CAST,
198 DML_OPERATOR_SPLIT,
199 DML_OPERATOR_JOIN,
200 DML_OPERATOR_PADDING,
201 DML_OPERATOR_VALUE_SCALE_2D,
202 DML_OPERATOR_UPSAMPLE_2D,
203 DML_OPERATOR_GATHER,
204 DML_OPERATOR_SPACE_TO_DEPTH,
205 DML_OPERATOR_DEPTH_TO_SPACE,
206 DML_OPERATOR_TILE,
207 DML_OPERATOR_TOP_K,
208 DML_OPERATOR_BATCH_NORMALIZATION,
209 DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION,
210 DML_OPERATOR_LOCAL_RESPONSE_NORMALIZATION,
211 DML_OPERATOR_LP_NORMALIZATION,
212 DML_OPERATOR_RNN,
213 DML_OPERATOR_LSTM,
214 DML_OPERATOR_GRU,
215
216#if DML_TARGET_VERSION >= 0x2000
217 DML_OPERATOR_ELEMENT_WISE_SIGN,
218 DML_OPERATOR_ELEMENT_WISE_IS_NAN,
219 DML_OPERATOR_ELEMENT_WISE_ERF,
220 DML_OPERATOR_ELEMENT_WISE_SINH,
221 DML_OPERATOR_ELEMENT_WISE_COSH,
222 DML_OPERATOR_ELEMENT_WISE_TANH,
223 DML_OPERATOR_ELEMENT_WISE_ASINH,
224 DML_OPERATOR_ELEMENT_WISE_ACOSH,
225 DML_OPERATOR_ELEMENT_WISE_ATANH,
226 DML_OPERATOR_ELEMENT_WISE_IF,
227 DML_OPERATOR_ELEMENT_WISE_ADD1,
228 DML_OPERATOR_ACTIVATION_SHRINK,
229 DML_OPERATOR_MAX_POOLING1,
230 DML_OPERATOR_MAX_UNPOOLING,
231 DML_OPERATOR_DIAGONAL_MATRIX,
232 DML_OPERATOR_SCATTER_ELEMENTS,
233 DML_OPERATOR_SCATTER = DML_OPERATOR_SCATTER_ELEMENTS, // Alias name for backwards compatibility.
234 DML_OPERATOR_ONE_HOT,
235 DML_OPERATOR_RESAMPLE,
236#endif // DML_TARGET_VERSION >= 0x2000
237
238#if DML_TARGET_VERSION >= 0x2100
239 DML_OPERATOR_ELEMENT_WISE_BIT_SHIFT_LEFT,
240 DML_OPERATOR_ELEMENT_WISE_BIT_SHIFT_RIGHT,
241 DML_OPERATOR_ELEMENT_WISE_ROUND,
242 DML_OPERATOR_ELEMENT_WISE_IS_INFINITY,
243 DML_OPERATOR_ELEMENT_WISE_MODULUS_TRUNCATE,
244 DML_OPERATOR_ELEMENT_WISE_MODULUS_FLOOR,
245 DML_OPERATOR_FILL_VALUE_CONSTANT,
246 DML_OPERATOR_FILL_VALUE_SEQUENCE,
247 DML_OPERATOR_CUMULATIVE_SUMMATION,
248 DML_OPERATOR_REVERSE_SUBSEQUENCES,
249 DML_OPERATOR_GATHER_ELEMENTS,
250 DML_OPERATOR_GATHER_ND,
251 DML_OPERATOR_SCATTER_ND,
252 DML_OPERATOR_MAX_POOLING2,
253 DML_OPERATOR_SLICE1,
254 DML_OPERATOR_TOP_K1,
255 DML_OPERATOR_DEPTH_TO_SPACE1,
256 DML_OPERATOR_SPACE_TO_DEPTH1,
257 DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION1,
258 DML_OPERATOR_RESAMPLE1,
259 DML_OPERATOR_MATRIX_MULTIPLY_INTEGER,
260 DML_OPERATOR_QUANTIZED_LINEAR_MATRIX_MULTIPLY,
261 DML_OPERATOR_CONVOLUTION_INTEGER,
262 DML_OPERATOR_QUANTIZED_LINEAR_CONVOLUTION,
263#endif // DML_TARGET_VERSION >= 0x2100
264
265#if DML_TARGET_VERSION >= 0x3000
266 DML_OPERATOR_ELEMENT_WISE_BIT_AND,
267 DML_OPERATOR_ELEMENT_WISE_BIT_OR,
268 DML_OPERATOR_ELEMENT_WISE_BIT_XOR,
269 DML_OPERATOR_ELEMENT_WISE_BIT_NOT,
270 DML_OPERATOR_ELEMENT_WISE_BIT_COUNT,
271 DML_OPERATOR_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL,
272 DML_OPERATOR_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL,
273 DML_OPERATOR_ACTIVATION_CELU,
274 DML_OPERATOR_ACTIVATION_RELU_GRAD,
275 DML_OPERATOR_AVERAGE_POOLING_GRAD,
276 DML_OPERATOR_MAX_POOLING_GRAD,
277 DML_OPERATOR_RANDOM_GENERATOR,
278 DML_OPERATOR_NONZERO_COORDINATES,
279 DML_OPERATOR_RESAMPLE_GRAD,
280 DML_OPERATOR_SLICE_GRAD,
281 DML_OPERATOR_ADAM_OPTIMIZER,
282 DML_OPERATOR_ARGMIN,
283 DML_OPERATOR_ARGMAX,
284 DML_OPERATOR_ROI_ALIGN,
285 DML_OPERATOR_GATHER_ND1,
286#endif // DML_TARGET_VERSION >= 0x3000
287
288#if DML_TARGET_VERSION >= 0x3100
289 DML_OPERATOR_ELEMENT_WISE_ATAN_YX,
290 DML_OPERATOR_ELEMENT_WISE_CLIP_GRAD,
291 DML_OPERATOR_ELEMENT_WISE_DIFFERENCE_SQUARE,
292 DML_OPERATOR_LOCAL_RESPONSE_NORMALIZATION_GRAD,
293 DML_OPERATOR_CUMULATIVE_PRODUCT,
294 DML_OPERATOR_BATCH_NORMALIZATION_GRAD,
295#endif // DML_TARGET_VERSION >= 0x3100
296
297#if DML_TARGET_VERSION >= 0x4000
298 DML_OPERATOR_ELEMENT_WISE_QUANTIZED_LINEAR_ADD,
299 DML_OPERATOR_DYNAMIC_QUANTIZE_LINEAR,
300 DML_OPERATOR_ROI_ALIGN1,
301#endif // DML_TARGET_VERSION >= 0x4000
302
303#if DML_TARGET_VERSION >= 0x4100
304 DML_OPERATOR_ROI_ALIGN_GRAD,
305 DML_OPERATOR_BATCH_NORMALIZATION_TRAINING,
306 DML_OPERATOR_BATCH_NORMALIZATION_TRAINING_GRAD,
307#endif // DML_TARGET_VERSION >= 0x4100
308
309#if DML_TARGET_VERSION >= 0x5000
310 DML_OPERATOR_ELEMENT_WISE_CLIP1,
311 DML_OPERATOR_ELEMENT_WISE_CLIP_GRAD1,
312 DML_OPERATOR_PADDING1,
313 DML_OPERATOR_ELEMENT_WISE_NEGATE,
314#endif // DML_TARGET_VERSION >= 0x5000
315
316#if DML_TARGET_VERSION >= 0x5100
317 DML_OPERATOR_ACTIVATION_GELU,
318 DML_OPERATOR_ACTIVATION_SOFTMAX1,
319 DML_OPERATOR_ACTIVATION_LOG_SOFTMAX1,
320 DML_OPERATOR_ACTIVATION_HARDMAX1,
321 DML_OPERATOR_RESAMPLE2,
322 DML_OPERATOR_RESAMPLE_GRAD1,
323 DML_OPERATOR_DIAGONAL_MATRIX1,
324#endif // DML_TARGET_VERSION >= 0x5100
325
326#if DML_TARGET_VERSION >= 0x6100
327 DML_OPERATOR_MULTIHEAD_ATTENTION,
328#endif // DML_TARGET_VERSION >= 0x6100
329
330#if DML_TARGET_VERSION >= 0x6200
331 DML_OPERATOR_LP_POOLING1,
332 DML_OPERATOR_AVERAGE_POOLING1,
333 DML_OPERATOR_ACTIVATION_SWISH,
334 DML_OPERATOR_ACTIVATION_HARD_SWISH,
335 DML_OPERATOR_QUANTIZED_LINEAR_AVERAGE_POOLING,
336 DML_OPERATOR_MATRIX_MULTIPLY_INTEGER_TO_FLOAT,
337#endif // DML_TARGET_VERSION >= 0x6200
338
339#if DML_TARGET_VERSION >= 0x6300
340 DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION2,
341 DML_OPERATOR_MULTIHEAD_ATTENTION1,
342 DML_OPERATOR_QUANTIZE,
343 DML_OPERATOR_DEQUANTIZE,
344#endif // DML_TARGET_VERSION >= 0x6300
345
346#if DML_TARGET_VERSION >= 0x6400
347 DML_OPERATOR_RESAMPLE3,
348 DML_OPERATOR_FOLD,
349 DML_OPERATOR_UNFOLD,
350#endif // DML_TARGET_VERSION >= 0x6400
351};
352
353// ===================================================================================================================
354// Operator enumerations and structures
355// ===================================================================================================================
356
357enum DML_REDUCE_FUNCTION
358{
359 DML_REDUCE_FUNCTION_ARGMAX,
360 DML_REDUCE_FUNCTION_ARGMIN,
361 DML_REDUCE_FUNCTION_AVERAGE,
362 DML_REDUCE_FUNCTION_L1,
363 DML_REDUCE_FUNCTION_L2,
364 DML_REDUCE_FUNCTION_LOG_SUM,
365 DML_REDUCE_FUNCTION_LOG_SUM_EXP,
366 DML_REDUCE_FUNCTION_MAX,
367 DML_REDUCE_FUNCTION_MIN,
368 DML_REDUCE_FUNCTION_MULTIPLY,
369 DML_REDUCE_FUNCTION_SUM,
370 DML_REDUCE_FUNCTION_SUM_SQUARE,
371};
372
373enum DML_MATRIX_TRANSFORM
374{
375 DML_MATRIX_TRANSFORM_NONE,
376 DML_MATRIX_TRANSFORM_TRANSPOSE,
377};
378
379enum DML_CONVOLUTION_MODE
380{
381 DML_CONVOLUTION_MODE_CONVOLUTION,
382 DML_CONVOLUTION_MODE_CROSS_CORRELATION,
383};
384
385enum DML_CONVOLUTION_DIRECTION
386{
387 DML_CONVOLUTION_DIRECTION_FORWARD,
388 DML_CONVOLUTION_DIRECTION_BACKWARD,
389};
390
391enum DML_PADDING_MODE
392{
393 DML_PADDING_MODE_CONSTANT,
394 DML_PADDING_MODE_EDGE,
395 DML_PADDING_MODE_REFLECTION,
396
397#if DML_TARGET_VERSION >= 0x3000
398 DML_PADDING_MODE_SYMMETRIC,
399#endif
400
401#if DML_TARGET_VERSION >= 0x6400
402 DML_PADDING_MODE_WRAP,
403#endif
404};
405
406enum DML_INTERPOLATION_MODE
407{
408 DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR,
409 DML_INTERPOLATION_MODE_LINEAR,
410};
411
412struct DML_SCALE_BIAS
413{
414 FLOAT Scale;
415 FLOAT Bias;
416};
417
418struct DML_SIZE_2D
419{
420 UINT Width;
421 UINT Height;
422};
423
424enum DML_RECURRENT_NETWORK_DIRECTION
425{
426 DML_RECURRENT_NETWORK_DIRECTION_FORWARD,
427 DML_RECURRENT_NETWORK_DIRECTION_BACKWARD,
428 DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL,
429};
430
431#if DML_TARGET_VERSION >= 0x2100
432
433enum DML_ROUNDING_MODE
434{
435 DML_ROUNDING_MODE_HALVES_TO_NEAREST_EVEN,
436 DML_ROUNDING_MODE_TOWARD_ZERO,
437 DML_ROUNDING_MODE_TOWARD_INFINITY,
438};
439
440enum DML_IS_INFINITY_MODE
441{
442 DML_IS_INFINITY_MODE_EITHER = 0,
443 DML_IS_INFINITY_MODE_POSITIVE = 1,
444 DML_IS_INFINITY_MODE_NEGATIVE = 2,
445};
446
447enum DML_AXIS_DIRECTION
448{
449 DML_AXIS_DIRECTION_INCREASING = 0,
450 DML_AXIS_DIRECTION_DECREASING = 1,
451};
452
453enum DML_DEPTH_SPACE_ORDER
454{
455 DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW,
456 DML_DEPTH_SPACE_ORDER_COLUMN_ROW_DEPTH,
457};
458
459union DML_SCALAR_UNION
460{
461 BYTE Bytes[8];
462 INT8 Int8;
463 UINT8 UInt8;
464 INT16 Int16;
465 UINT16 UInt16;
466 INT32 Int32;
467 UINT32 UInt32;
468 INT64 Int64;
469 UINT64 UInt64;
470 FLOAT Float32;
471 DOUBLE Float64;
472};
473
474#endif // DML_TARGET_VERSION >= 0x2100
475
476#if DML_TARGET_VERSION >= 0x3000
477
478enum DML_RANDOM_GENERATOR_TYPE
479{
480 DML_RANDOM_GENERATOR_TYPE_PHILOX_4X32_10
481};
482
483#endif // DML_TARGET_VERSION >= 0x3000
484
485#if DML_TARGET_VERSION >= 0x6100
486
487enum DML_MULTIHEAD_ATTENTION_MASK_TYPE
488{
489 DML_MULTIHEAD_ATTENTION_MASK_TYPE_NONE,
490 DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_SEQUENCE_LENGTH,
491 DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_SEQUENCE_END_START,
492 DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_QUERY_SEQUENCE_LENGTH_START_END,
493 DML_MULTIHEAD_ATTENTION_MASK_TYPE_BOOLEAN,
494};
495
496#endif // DML_TARGET_VERSION >= 0x6100
497
498#if DML_TARGET_VERSION >= 0x6300
499
500enum DML_QUANTIZATION_TYPE
501{
502 DML_QUANTIZATION_TYPE_NONE,
503 DML_QUANTIZATION_TYPE_SCALE,
504 DML_QUANTIZATION_TYPE_SCALE_ZERO_POINT,
505};
506
507#endif // DML_TARGET_VERSION >= 0x6300
508
509// ===================================================================================================================
510// Operator descriptions
511// ===================================================================================================================
512
513struct DML_OPERATOR_DESC
514{
515 DML_OPERATOR_TYPE Type;
516 _Field_size_(_Inexpressible_("Dependent on operator type")) const void* Desc;
517};
518
519struct DML_ELEMENT_WISE_IDENTITY_OPERATOR_DESC
520{
521 const DML_TENSOR_DESC* InputTensor;
522 const DML_TENSOR_DESC* OutputTensor;
523 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
524};
525
526struct DML_ELEMENT_WISE_ABS_OPERATOR_DESC
527{
528 const DML_TENSOR_DESC* InputTensor;
529 const DML_TENSOR_DESC* OutputTensor;
530 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
531};
532
533struct DML_ELEMENT_WISE_ACOS_OPERATOR_DESC
534{
535 const DML_TENSOR_DESC* InputTensor;
536 const DML_TENSOR_DESC* OutputTensor;
537 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
538};
539
540struct DML_ELEMENT_WISE_ADD_OPERATOR_DESC
541{
542 const DML_TENSOR_DESC* ATensor;
543 const DML_TENSOR_DESC* BTensor;
544 const DML_TENSOR_DESC* OutputTensor;
545};
546
547struct DML_ELEMENT_WISE_ADD1_OPERATOR_DESC
548{
549 const DML_TENSOR_DESC* ATensor;
550 const DML_TENSOR_DESC* BTensor;
551 const DML_TENSOR_DESC* OutputTensor;
552 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
553};
554
555struct DML_ELEMENT_WISE_ASIN_OPERATOR_DESC
556{
557 const DML_TENSOR_DESC* InputTensor;
558 const DML_TENSOR_DESC* OutputTensor;
559 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
560};
561
562struct DML_ELEMENT_WISE_ATAN_OPERATOR_DESC
563{
564 const DML_TENSOR_DESC* InputTensor;
565 const DML_TENSOR_DESC* OutputTensor;
566 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
567};
568
569struct DML_ELEMENT_WISE_CEIL_OPERATOR_DESC
570{
571 const DML_TENSOR_DESC* InputTensor;
572 const DML_TENSOR_DESC* OutputTensor;
573 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
574};
575
576struct DML_ELEMENT_WISE_CLIP_OPERATOR_DESC
577{
578 const DML_TENSOR_DESC* InputTensor;
579 const DML_TENSOR_DESC* OutputTensor;
580 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
581 FLOAT Min;
582 FLOAT Max;
583};
584
585struct DML_ELEMENT_WISE_COS_OPERATOR_DESC
586{
587 const DML_TENSOR_DESC* InputTensor;
588 const DML_TENSOR_DESC* OutputTensor;
589 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
590};
591
592struct DML_ELEMENT_WISE_DIVIDE_OPERATOR_DESC
593{
594 const DML_TENSOR_DESC* ATensor;
595 const DML_TENSOR_DESC* BTensor;
596 const DML_TENSOR_DESC* OutputTensor;
597};
598
599struct DML_ELEMENT_WISE_EXP_OPERATOR_DESC
600{
601 const DML_TENSOR_DESC* InputTensor;
602 const DML_TENSOR_DESC* OutputTensor;
603 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
604};
605
606struct DML_ELEMENT_WISE_FLOOR_OPERATOR_DESC
607{
608 const DML_TENSOR_DESC* InputTensor;
609 const DML_TENSOR_DESC* OutputTensor;
610 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
611};
612
613struct DML_ELEMENT_WISE_LOG_OPERATOR_DESC
614{
615 const DML_TENSOR_DESC* InputTensor;
616 const DML_TENSOR_DESC* OutputTensor;
617 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
618};
619
620struct DML_ELEMENT_WISE_LOGICAL_AND_OPERATOR_DESC
621{
622 const DML_TENSOR_DESC* ATensor;
623 const DML_TENSOR_DESC* BTensor;
624 const DML_TENSOR_DESC* OutputTensor;
625};
626
627struct DML_ELEMENT_WISE_LOGICAL_EQUALS_OPERATOR_DESC
628{
629 const DML_TENSOR_DESC* ATensor;
630 const DML_TENSOR_DESC* BTensor;
631 const DML_TENSOR_DESC* OutputTensor;
632};
633
634struct DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OPERATOR_DESC
635{
636 const DML_TENSOR_DESC* ATensor;
637 const DML_TENSOR_DESC* BTensor;
638 const DML_TENSOR_DESC* OutputTensor;
639};
640
641struct DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OPERATOR_DESC
642{
643 const DML_TENSOR_DESC* ATensor;
644 const DML_TENSOR_DESC* BTensor;
645 const DML_TENSOR_DESC* OutputTensor;
646};
647
648struct DML_ELEMENT_WISE_LOGICAL_NOT_OPERATOR_DESC
649{
650 const DML_TENSOR_DESC* InputTensor;
651 const DML_TENSOR_DESC* OutputTensor;
652};
653
654struct DML_ELEMENT_WISE_LOGICAL_OR_OPERATOR_DESC
655{
656 const DML_TENSOR_DESC* ATensor;
657 const DML_TENSOR_DESC* BTensor;
658 const DML_TENSOR_DESC* OutputTensor;
659};
660
661struct DML_ELEMENT_WISE_LOGICAL_XOR_OPERATOR_DESC
662{
663 const DML_TENSOR_DESC* ATensor;
664 const DML_TENSOR_DESC* BTensor;
665 const DML_TENSOR_DESC* OutputTensor;
666};
667
668struct DML_ELEMENT_WISE_MAX_OPERATOR_DESC
669{
670 const DML_TENSOR_DESC* ATensor;
671 const DML_TENSOR_DESC* BTensor;
672 const DML_TENSOR_DESC* OutputTensor;
673};
674
675struct DML_ELEMENT_WISE_MEAN_OPERATOR_DESC
676{
677 const DML_TENSOR_DESC* ATensor;
678 const DML_TENSOR_DESC* BTensor;
679 const DML_TENSOR_DESC* OutputTensor;
680};
681
682struct DML_ELEMENT_WISE_MIN_OPERATOR_DESC
683{
684 const DML_TENSOR_DESC* ATensor;
685 const DML_TENSOR_DESC* BTensor;
686 const DML_TENSOR_DESC* OutputTensor;
687};
688
689struct DML_ELEMENT_WISE_MULTIPLY_OPERATOR_DESC
690{
691 const DML_TENSOR_DESC* ATensor;
692 const DML_TENSOR_DESC* BTensor;
693 const DML_TENSOR_DESC* OutputTensor;
694};
695
696struct DML_ELEMENT_WISE_POW_OPERATOR_DESC
697{
698 const DML_TENSOR_DESC* InputTensor;
699 const DML_TENSOR_DESC* ExponentTensor;
700 const DML_TENSOR_DESC* OutputTensor;
701 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
702};
703
704struct DML_ELEMENT_WISE_CONSTANT_POW_OPERATOR_DESC
705{
706 const DML_TENSOR_DESC* InputTensor;
707 const DML_TENSOR_DESC* OutputTensor;
708 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
709 FLOAT Exponent;
710};
711
712struct DML_ELEMENT_WISE_RECIP_OPERATOR_DESC
713{
714 const DML_TENSOR_DESC* InputTensor;
715 const DML_TENSOR_DESC* OutputTensor;
716 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
717};
718
719struct DML_ELEMENT_WISE_SIN_OPERATOR_DESC
720{
721 const DML_TENSOR_DESC* InputTensor;
722 const DML_TENSOR_DESC* OutputTensor;
723 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
724};
725
726struct DML_ELEMENT_WISE_SQRT_OPERATOR_DESC
727{
728 const DML_TENSOR_DESC* InputTensor;
729 const DML_TENSOR_DESC* OutputTensor;
730 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
731};
732
733struct DML_ELEMENT_WISE_SUBTRACT_OPERATOR_DESC
734{
735 const DML_TENSOR_DESC* ATensor;
736 const DML_TENSOR_DESC* BTensor;
737 const DML_TENSOR_DESC* OutputTensor;
738};
739
740struct DML_ELEMENT_WISE_TAN_OPERATOR_DESC
741{
742 const DML_TENSOR_DESC* InputTensor;
743 const DML_TENSOR_DESC* OutputTensor;
744 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
745};
746
747struct DML_ELEMENT_WISE_THRESHOLD_OPERATOR_DESC
748{
749 const DML_TENSOR_DESC* InputTensor;
750 const DML_TENSOR_DESC* OutputTensor;
751 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
752 FLOAT Min;
753};
754
755struct DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC
756{
757 const DML_TENSOR_DESC* InputTensor;
758 const DML_TENSOR_DESC* ScaleTensor;
759 _Maybenull_ const DML_TENSOR_DESC* ZeroPointTensor;
760 const DML_TENSOR_DESC* OutputTensor;
761};
762
763struct DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC
764{
765 const DML_TENSOR_DESC* InputTensor;
766 const DML_TENSOR_DESC* ScaleTensor;
767 _Maybenull_ const DML_TENSOR_DESC* ZeroPointTensor;
768 const DML_TENSOR_DESC* OutputTensor;
769};
770
771struct DML_ACTIVATION_ELU_OPERATOR_DESC
772{
773 const DML_TENSOR_DESC* InputTensor;
774 const DML_TENSOR_DESC* OutputTensor;
775 FLOAT Alpha;
776};
777
778struct DML_ACTIVATION_HARDMAX_OPERATOR_DESC
779{
780 const DML_TENSOR_DESC* InputTensor;
781 const DML_TENSOR_DESC* OutputTensor;
782};
783
784struct DML_ACTIVATION_HARD_SIGMOID_OPERATOR_DESC
785{
786 const DML_TENSOR_DESC* InputTensor;
787 const DML_TENSOR_DESC* OutputTensor;
788 FLOAT Alpha;
789 FLOAT Beta;
790};
791
792struct DML_ACTIVATION_IDENTITY_OPERATOR_DESC
793{
794 const DML_TENSOR_DESC* InputTensor;
795 const DML_TENSOR_DESC* OutputTensor;
796};
797
798struct DML_ACTIVATION_LEAKY_RELU_OPERATOR_DESC
799{
800 const DML_TENSOR_DESC* InputTensor;
801 const DML_TENSOR_DESC* OutputTensor;
802 FLOAT Alpha;
803};
804
805struct DML_ACTIVATION_LINEAR_OPERATOR_DESC
806{
807 const DML_TENSOR_DESC* InputTensor;
808 const DML_TENSOR_DESC* OutputTensor;
809 FLOAT Alpha;
810 FLOAT Beta;
811};
812
813struct DML_ACTIVATION_LOG_SOFTMAX_OPERATOR_DESC
814{
815 const DML_TENSOR_DESC* InputTensor;
816 const DML_TENSOR_DESC* OutputTensor;
817};
818
819struct DML_ACTIVATION_PARAMETERIZED_RELU_OPERATOR_DESC
820{
821 const DML_TENSOR_DESC* InputTensor;
822 const DML_TENSOR_DESC* SlopeTensor;
823 const DML_TENSOR_DESC* OutputTensor;
824};
825
826struct DML_ACTIVATION_PARAMETRIC_SOFTPLUS_OPERATOR_DESC
827{
828 const DML_TENSOR_DESC* InputTensor;
829 const DML_TENSOR_DESC* OutputTensor;
830 FLOAT Alpha;
831 FLOAT Beta;
832};
833
834struct DML_ACTIVATION_RELU_OPERATOR_DESC
835{
836 const DML_TENSOR_DESC* InputTensor;
837 const DML_TENSOR_DESC* OutputTensor;
838};
839
840struct DML_ACTIVATION_SCALED_ELU_OPERATOR_DESC
841{
842 const DML_TENSOR_DESC* InputTensor;
843 const DML_TENSOR_DESC* OutputTensor;
844 FLOAT Alpha;
845 FLOAT Gamma;
846};
847
848struct DML_ACTIVATION_SCALED_TANH_OPERATOR_DESC
849{
850 const DML_TENSOR_DESC* InputTensor;
851 const DML_TENSOR_DESC* OutputTensor;
852 FLOAT Alpha;
853 FLOAT Beta;
854};
855
856struct DML_ACTIVATION_SIGMOID_OPERATOR_DESC
857{
858 const DML_TENSOR_DESC* InputTensor;
859 const DML_TENSOR_DESC* OutputTensor;
860};
861
862struct DML_ACTIVATION_SOFTMAX_OPERATOR_DESC
863{
864 const DML_TENSOR_DESC* InputTensor;
865 const DML_TENSOR_DESC* OutputTensor;
866};
867
868struct DML_ACTIVATION_SOFTPLUS_OPERATOR_DESC
869{
870 const DML_TENSOR_DESC* InputTensor;
871 const DML_TENSOR_DESC* OutputTensor;
872 FLOAT Steepness;
873};
874
875struct DML_ACTIVATION_SOFTSIGN_OPERATOR_DESC
876{
877 const DML_TENSOR_DESC* InputTensor;
878 const DML_TENSOR_DESC* OutputTensor;
879};
880
881struct DML_ACTIVATION_TANH_OPERATOR_DESC
882{
883 const DML_TENSOR_DESC* InputTensor;
884 const DML_TENSOR_DESC* OutputTensor;
885};
886
887struct DML_ACTIVATION_THRESHOLDED_RELU_OPERATOR_DESC
888{
889 const DML_TENSOR_DESC* InputTensor;
890 const DML_TENSOR_DESC* OutputTensor;
891 FLOAT Alpha;
892};
893
894struct DML_CONVOLUTION_OPERATOR_DESC
895{
896 const DML_TENSOR_DESC* InputTensor;
897 const DML_TENSOR_DESC* FilterTensor;
898 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
899 const DML_TENSOR_DESC* OutputTensor;
900 DML_CONVOLUTION_MODE Mode;
901 DML_CONVOLUTION_DIRECTION Direction;
902 UINT DimensionCount;
903 _Field_size_(DimensionCount) const UINT* Strides;
904 _Field_size_(DimensionCount) const UINT* Dilations;
905 _Field_size_(DimensionCount) const UINT* StartPadding;
906 _Field_size_(DimensionCount) const UINT* EndPadding;
907 _Field_size_(DimensionCount) const UINT* OutputPadding;
908 UINT GroupCount;
909 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
910};
911
912struct DML_GEMM_OPERATOR_DESC
913{
914 const DML_TENSOR_DESC* ATensor;
915 const DML_TENSOR_DESC* BTensor;
916 _Maybenull_ const DML_TENSOR_DESC* CTensor;
917 const DML_TENSOR_DESC* OutputTensor;
918 DML_MATRIX_TRANSFORM TransA;
919 DML_MATRIX_TRANSFORM TransB;
920 FLOAT Alpha;
921 FLOAT Beta;
922 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
923};
924
925struct DML_REDUCE_OPERATOR_DESC
926{
927 DML_REDUCE_FUNCTION Function;
928 const DML_TENSOR_DESC* InputTensor;
929 const DML_TENSOR_DESC* OutputTensor;
930 UINT AxisCount;
931 _Field_size_(AxisCount) const UINT* Axes;
932};
933
934struct DML_AVERAGE_POOLING_OPERATOR_DESC
935{
936 const DML_TENSOR_DESC* InputTensor;
937 const DML_TENSOR_DESC* OutputTensor;
938 UINT DimensionCount;
939 _Field_size_(DimensionCount) const UINT* Strides;
940 _Field_size_(DimensionCount) const UINT* WindowSize;
941 _Field_size_(DimensionCount) const UINT* StartPadding;
942 _Field_size_(DimensionCount) const UINT* EndPadding;
943 BOOL IncludePadding;
944};
945
946struct DML_LP_POOLING_OPERATOR_DESC
947{
948 const DML_TENSOR_DESC* InputTensor;
949 const DML_TENSOR_DESC* OutputTensor;
950 UINT DimensionCount;
951 _Field_size_(DimensionCount) const UINT* Strides;
952 _Field_size_(DimensionCount) const UINT* WindowSize;
953 _Field_size_(DimensionCount) const UINT* StartPadding;
954 _Field_size_(DimensionCount) const UINT* EndPadding;
955 UINT P;
956};
957
958struct DML_MAX_POOLING_OPERATOR_DESC
959{
960 const DML_TENSOR_DESC* InputTensor;
961 const DML_TENSOR_DESC* OutputTensor;
962 UINT DimensionCount;
963 _Field_size_(DimensionCount) const UINT* Strides;
964 _Field_size_(DimensionCount) const UINT* WindowSize;
965 _Field_size_(DimensionCount) const UINT* StartPadding;
966 _Field_size_(DimensionCount) const UINT* EndPadding;
967};
968
969struct DML_ROI_POOLING_OPERATOR_DESC
970{
971 const DML_TENSOR_DESC* InputTensor;
972 const DML_TENSOR_DESC* ROITensor;
973 const DML_TENSOR_DESC* OutputTensor;
974 FLOAT SpatialScale;
975 DML_SIZE_2D PooledSize;
976};
977
978struct DML_SLICE_OPERATOR_DESC
979{
980 const DML_TENSOR_DESC* InputTensor;
981 const DML_TENSOR_DESC* OutputTensor;
982 UINT DimensionCount;
983 _Field_size_(DimensionCount) const UINT* Offsets;
984 _Field_size_(DimensionCount) const UINT* Sizes;
985 _Field_size_(DimensionCount) const UINT* Strides;
986};
987
988struct DML_CAST_OPERATOR_DESC
989{
990 const DML_TENSOR_DESC* InputTensor;
991 const DML_TENSOR_DESC* OutputTensor;
992};
993
994struct DML_SPLIT_OPERATOR_DESC
995{
996 const DML_TENSOR_DESC* InputTensor;
997 UINT OutputCount;
998 _Field_size_(OutputCount) const DML_TENSOR_DESC* OutputTensors;
999 UINT Axis;
1000};
1001
1002struct DML_JOIN_OPERATOR_DESC
1003{
1004 UINT InputCount;
1005 _Field_size_(InputCount) const DML_TENSOR_DESC* InputTensors;
1006 const DML_TENSOR_DESC* OutputTensor;
1007 UINT Axis;
1008};
1009
1010struct DML_PADDING_OPERATOR_DESC
1011{
1012 const DML_TENSOR_DESC* InputTensor;
1013 const DML_TENSOR_DESC* OutputTensor;
1014 DML_PADDING_MODE PaddingMode;
1015 FLOAT PaddingValue;
1016 UINT DimensionCount;
1017 _Field_size_(DimensionCount) const UINT* StartPadding;
1018 _Field_size_(DimensionCount) const UINT* EndPadding;
1019};
1020
1021struct DML_VALUE_SCALE_2D_OPERATOR_DESC
1022{
1023 const DML_TENSOR_DESC* InputTensor;
1024 const DML_TENSOR_DESC* OutputTensor;
1025 FLOAT Scale;
1026 UINT ChannelCount;
1027 _Field_size_(ChannelCount) const FLOAT* Bias;
1028};
1029
1030struct DML_UPSAMPLE_2D_OPERATOR_DESC
1031{
1032 const DML_TENSOR_DESC* InputTensor;
1033 const DML_TENSOR_DESC* OutputTensor;
1034 DML_SIZE_2D ScaleSize;
1035 DML_INTERPOLATION_MODE InterpolationMode;
1036};
1037
1038struct DML_GATHER_OPERATOR_DESC
1039{
1040 const DML_TENSOR_DESC* InputTensor;
1041 const DML_TENSOR_DESC* IndicesTensor;
1042 const DML_TENSOR_DESC* OutputTensor;
1043 UINT Axis;
1044 UINT IndexDimensions;
1045};
1046
1047struct DML_SPACE_TO_DEPTH_OPERATOR_DESC
1048{
1049 const DML_TENSOR_DESC* InputTensor;
1050 const DML_TENSOR_DESC* OutputTensor;
1051 UINT BlockSize;
1052};
1053
1054struct DML_DEPTH_TO_SPACE_OPERATOR_DESC
1055{
1056 const DML_TENSOR_DESC* InputTensor;
1057 const DML_TENSOR_DESC* OutputTensor;
1058 UINT BlockSize;
1059};
1060
1061struct DML_TILE_OPERATOR_DESC
1062{
1063 const DML_TENSOR_DESC* InputTensor;
1064 const DML_TENSOR_DESC* OutputTensor;
1065 UINT RepeatsCount;
1066 _Field_size_(RepeatsCount) const UINT* Repeats;
1067};
1068
1069struct DML_TOP_K_OPERATOR_DESC
1070{
1071 const DML_TENSOR_DESC* InputTensor;
1072 const DML_TENSOR_DESC* OutputValueTensor;
1073 const DML_TENSOR_DESC* OutputIndexTensor;
1074 UINT Axis;
1075 UINT K;
1076};
1077
1078struct DML_BATCH_NORMALIZATION_OPERATOR_DESC
1079{
1080 const DML_TENSOR_DESC* InputTensor;
1081 const DML_TENSOR_DESC* MeanTensor;
1082 const DML_TENSOR_DESC* VarianceTensor;
1083 const DML_TENSOR_DESC* ScaleTensor;
1084 const DML_TENSOR_DESC* BiasTensor;
1085 const DML_TENSOR_DESC* OutputTensor;
1086 BOOL Spatial;
1087 FLOAT Epsilon;
1088 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
1089};
1090
1091struct DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC
1092{
1093 const DML_TENSOR_DESC* InputTensor;
1094 _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
1095 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1096 const DML_TENSOR_DESC* OutputTensor;
1097 BOOL CrossChannel;
1098 BOOL NormalizeVariance;
1099 FLOAT Epsilon;
1100 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
1101};
1102
1103struct DML_LOCAL_RESPONSE_NORMALIZATION_OPERATOR_DESC
1104{
1105 const DML_TENSOR_DESC* InputTensor;
1106 const DML_TENSOR_DESC* OutputTensor;
1107 BOOL CrossChannel;
1108 UINT LocalSize;
1109 FLOAT Alpha;
1110 FLOAT Beta;
1111 FLOAT Bias;
1112};
1113
1114struct DML_LP_NORMALIZATION_OPERATOR_DESC
1115{
1116 const DML_TENSOR_DESC* InputTensor;
1117 const DML_TENSOR_DESC* OutputTensor;
1118 UINT Axis;
1119 FLOAT Epsilon;
1120 UINT P;
1121};
1122
1123struct DML_RNN_OPERATOR_DESC
1124{
1125 const DML_TENSOR_DESC* InputTensor;
1126 const DML_TENSOR_DESC* WeightTensor;
1127 const DML_TENSOR_DESC* RecurrenceTensor;
1128 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1129 _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
1130 _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
1131 _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
1132 _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
1133 UINT ActivationDescCount;
1134 _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
1135 DML_RECURRENT_NETWORK_DIRECTION Direction;
1136};
1137
1138struct DML_LSTM_OPERATOR_DESC
1139{
1140 const DML_TENSOR_DESC* InputTensor;
1141 const DML_TENSOR_DESC* WeightTensor;
1142 const DML_TENSOR_DESC* RecurrenceTensor;
1143 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1144 _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
1145 _Maybenull_ const DML_TENSOR_DESC* CellMemInitTensor;
1146 _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
1147 _Maybenull_ const DML_TENSOR_DESC* PeepholeTensor;
1148 _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
1149 _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
1150 _Maybenull_ const DML_TENSOR_DESC* OutputCellSingleTensor;
1151 UINT ActivationDescCount;
1152 _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
1153 DML_RECURRENT_NETWORK_DIRECTION Direction;
1154 float ClipThreshold;
1155 BOOL UseClipThreshold;
1156 BOOL CoupleInputForget;
1157};
1158
1159struct DML_GRU_OPERATOR_DESC
1160{
1161 const DML_TENSOR_DESC* InputTensor;
1162 const DML_TENSOR_DESC* WeightTensor;
1163 const DML_TENSOR_DESC* RecurrenceTensor;
1164 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1165 _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
1166 _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
1167 _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
1168 _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
1169 UINT ActivationDescCount;
1170 _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
1171 DML_RECURRENT_NETWORK_DIRECTION Direction;
1172 BOOL LinearBeforeReset;
1173};
1174
1175#if DML_TARGET_VERSION >= 0x2000
1176
1177struct DML_ELEMENT_WISE_SIGN_OPERATOR_DESC
1178{
1179 const DML_TENSOR_DESC* InputTensor;
1180 const DML_TENSOR_DESC* OutputTensor;
1181};
1182
1183struct DML_ELEMENT_WISE_IS_NAN_OPERATOR_DESC
1184{
1185 const DML_TENSOR_DESC* InputTensor;
1186 const DML_TENSOR_DESC* OutputTensor;
1187};
1188
1189struct DML_ELEMENT_WISE_ERF_OPERATOR_DESC
1190{
1191 const DML_TENSOR_DESC* InputTensor;
1192 const DML_TENSOR_DESC* OutputTensor;
1193 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1194};
1195
1196struct DML_ELEMENT_WISE_SINH_OPERATOR_DESC
1197{
1198 const DML_TENSOR_DESC* InputTensor;
1199 const DML_TENSOR_DESC* OutputTensor;
1200 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1201};
1202
1203struct DML_ELEMENT_WISE_COSH_OPERATOR_DESC
1204{
1205 const DML_TENSOR_DESC* InputTensor;
1206 const DML_TENSOR_DESC* OutputTensor;
1207 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1208};
1209
1210struct DML_ELEMENT_WISE_TANH_OPERATOR_DESC
1211{
1212 const DML_TENSOR_DESC* InputTensor;
1213 const DML_TENSOR_DESC* OutputTensor;
1214 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1215};
1216
1217struct DML_ELEMENT_WISE_ASINH_OPERATOR_DESC
1218{
1219 const DML_TENSOR_DESC* InputTensor;
1220 const DML_TENSOR_DESC* OutputTensor;
1221 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1222};
1223
1224struct DML_ELEMENT_WISE_ACOSH_OPERATOR_DESC
1225{
1226 const DML_TENSOR_DESC* InputTensor;
1227 const DML_TENSOR_DESC* OutputTensor;
1228 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1229};
1230
1231struct DML_ELEMENT_WISE_ATANH_OPERATOR_DESC
1232{
1233 const DML_TENSOR_DESC* InputTensor;
1234 const DML_TENSOR_DESC* OutputTensor;
1235 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1236};
1237
1238struct DML_ELEMENT_WISE_IF_OPERATOR_DESC
1239{
1240 const DML_TENSOR_DESC* ConditionTensor;
1241 const DML_TENSOR_DESC* ATensor;
1242 const DML_TENSOR_DESC* BTensor;
1243 const DML_TENSOR_DESC* OutputTensor;
1244};
1245
1246struct DML_ACTIVATION_SHRINK_OPERATOR_DESC
1247{
1248 const DML_TENSOR_DESC* InputTensor;
1249 const DML_TENSOR_DESC* OutputTensor;
1250 FLOAT Bias;
1251 FLOAT Threshold;
1252};
1253
1254struct DML_MAX_POOLING1_OPERATOR_DESC
1255{
1256 const DML_TENSOR_DESC* InputTensor;
1257 const DML_TENSOR_DESC* OutputTensor;
1258 _Maybenull_ const DML_TENSOR_DESC* OutputIndicesTensor;
1259 UINT DimensionCount;
1260 _Field_size_(DimensionCount) const UINT* Strides;
1261 _Field_size_(DimensionCount) const UINT* WindowSize;
1262 _Field_size_(DimensionCount) const UINT* StartPadding;
1263 _Field_size_(DimensionCount) const UINT* EndPadding;
1264};
1265
1266struct DML_MAX_UNPOOLING_OPERATOR_DESC
1267{
1268 const DML_TENSOR_DESC* InputTensor;
1269 const DML_TENSOR_DESC* IndicesTensor;
1270 const DML_TENSOR_DESC* OutputTensor;
1271};
1272
1273struct DML_DIAGONAL_MATRIX_OPERATOR_DESC
1274{
1275 const DML_TENSOR_DESC* OutputTensor;
1276 INT Offset;
1277 FLOAT Value;
1278};
1279
1280struct DML_SCATTER_OPERATOR_DESC
1281{
1282 const DML_TENSOR_DESC* InputTensor;
1283 const DML_TENSOR_DESC* IndicesTensor;
1284 const DML_TENSOR_DESC* UpdatesTensor;
1285 const DML_TENSOR_DESC* OutputTensor;
1286 UINT Axis;
1287};
1288
1289struct DML_ONE_HOT_OPERATOR_DESC
1290{
1291 const DML_TENSOR_DESC* IndicesTensor;
1292 const DML_TENSOR_DESC* ValuesTensor;
1293 const DML_TENSOR_DESC* OutputTensor;
1294 UINT Axis;
1295};
1296
1297struct DML_RESAMPLE_OPERATOR_DESC
1298{
1299 const DML_TENSOR_DESC* InputTensor;
1300 const DML_TENSOR_DESC* OutputTensor;
1301 DML_INTERPOLATION_MODE InterpolationMode;
1302 UINT ScaleCount;
1303 _Field_size_(ScaleCount) const FLOAT* Scales;
1304};
1305
1306#endif // DML_TARGET_VERSION >= 0x2000
1307
1308#if DML_TARGET_VERSION >= 0x2100
1309
1310struct DML_ELEMENT_WISE_BIT_SHIFT_LEFT_OPERATOR_DESC
1311{
1312 const DML_TENSOR_DESC* ATensor;
1313 const DML_TENSOR_DESC* BTensor;
1314 const DML_TENSOR_DESC* OutputTensor;
1315};
1316
1317struct DML_ELEMENT_WISE_BIT_SHIFT_RIGHT_OPERATOR_DESC
1318{
1319 const DML_TENSOR_DESC* ATensor;
1320 const DML_TENSOR_DESC* BTensor;
1321 const DML_TENSOR_DESC* OutputTensor;
1322};
1323
1324struct DML_ELEMENT_WISE_ROUND_OPERATOR_DESC
1325{
1326 const DML_TENSOR_DESC* InputTensor;
1327 const DML_TENSOR_DESC* OutputTensor;
1328 DML_ROUNDING_MODE RoundingMode;
1329};
1330
1331struct DML_ELEMENT_WISE_IS_INFINITY_OPERATOR_DESC
1332{
1333 const DML_TENSOR_DESC* InputTensor;
1334 const DML_TENSOR_DESC* OutputTensor;
1335 DML_IS_INFINITY_MODE InfinityMode;
1336};
1337
1338struct DML_ELEMENT_WISE_MODULUS_TRUNCATE_OPERATOR_DESC
1339{
1340 const DML_TENSOR_DESC* ATensor;
1341 const DML_TENSOR_DESC* BTensor;
1342 const DML_TENSOR_DESC* OutputTensor;
1343};
1344
1345struct DML_ELEMENT_WISE_MODULUS_FLOOR_OPERATOR_DESC
1346{
1347 const DML_TENSOR_DESC* ATensor;
1348 const DML_TENSOR_DESC* BTensor;
1349 const DML_TENSOR_DESC* OutputTensor;
1350};
1351
1352struct DML_FILL_VALUE_CONSTANT_OPERATOR_DESC
1353{
1354 const DML_TENSOR_DESC* OutputTensor;
1355 DML_TENSOR_DATA_TYPE ValueDataType;
1356 DML_SCALAR_UNION Value;
1357};
1358
1359struct DML_FILL_VALUE_SEQUENCE_OPERATOR_DESC
1360{
1361 const DML_TENSOR_DESC* OutputTensor;
1362 DML_TENSOR_DATA_TYPE ValueDataType;
1363 DML_SCALAR_UNION ValueStart;
1364 DML_SCALAR_UNION ValueDelta;
1365};
1366
1367struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC
1368{
1369 const DML_TENSOR_DESC* InputTensor;
1370 const DML_TENSOR_DESC* OutputTensor;
1371 UINT Axis;
1372 DML_AXIS_DIRECTION AxisDirection;
1373 BOOL HasExclusiveSum;
1374};
1375
1376struct DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC
1377{
1378 const DML_TENSOR_DESC* InputTensor;
1379 const DML_TENSOR_DESC* SequenceLengthsTensor;
1380 const DML_TENSOR_DESC* OutputTensor;
1381 UINT Axis;
1382};
1383
1384struct DML_GATHER_ELEMENTS_OPERATOR_DESC
1385{
1386 const DML_TENSOR_DESC* InputTensor;
1387 const DML_TENSOR_DESC* IndicesTensor;
1388 const DML_TENSOR_DESC* OutputTensor;
1389 UINT Axis;
1390};
1391
1392// Alias existing operator, symmetric with DML_GATHER_ELEMENTS_OPERATOR_DESC.
1393using DML_SCATTER_ELEMENTS_OPERATOR_DESC = DML_SCATTER_OPERATOR_DESC;
1394
1395struct DML_GATHER_ND_OPERATOR_DESC
1396{
1397 const DML_TENSOR_DESC* InputTensor;
1398 const DML_TENSOR_DESC* IndicesTensor;
1399 const DML_TENSOR_DESC* OutputTensor;
1400 UINT InputDimensionCount;
1401 UINT IndicesDimensionCount;
1402};
1403
1404struct DML_SCATTER_ND_OPERATOR_DESC
1405{
1406 const DML_TENSOR_DESC* InputTensor;
1407 const DML_TENSOR_DESC* IndicesTensor;
1408 const DML_TENSOR_DESC* UpdatesTensor;
1409 const DML_TENSOR_DESC* OutputTensor;
1410 UINT InputDimensionCount;
1411 UINT IndicesDimensionCount;
1412};
1413
1414struct DML_MAX_POOLING2_OPERATOR_DESC
1415{
1416 const DML_TENSOR_DESC* InputTensor;
1417 const DML_TENSOR_DESC* OutputTensor;
1418 _Maybenull_ const DML_TENSOR_DESC* OutputIndicesTensor;
1419 UINT DimensionCount;
1420 _Field_size_(DimensionCount) const UINT* Strides;
1421 _Field_size_(DimensionCount) const UINT* WindowSize;
1422 _Field_size_(DimensionCount) const UINT* StartPadding;
1423 _Field_size_(DimensionCount) const UINT* EndPadding;
1424 _Field_size_(DimensionCount) const UINT* Dilations;
1425};
1426
1427struct DML_SLICE1_OPERATOR_DESC
1428{
1429 const DML_TENSOR_DESC* InputTensor;
1430 const DML_TENSOR_DESC* OutputTensor;
1431 UINT DimensionCount;
1432 _Field_size_(DimensionCount) const UINT* InputWindowOffsets;
1433 _Field_size_(DimensionCount) const UINT* InputWindowSizes;
1434 _Field_size_(DimensionCount) const INT* InputWindowStrides;
1435};
1436
1437struct DML_TOP_K1_OPERATOR_DESC
1438{
1439 const DML_TENSOR_DESC* InputTensor;
1440 const DML_TENSOR_DESC* OutputValueTensor;
1441 const DML_TENSOR_DESC* OutputIndexTensor;
1442 UINT Axis;
1443 UINT K;
1444 DML_AXIS_DIRECTION AxisDirection;
1445};
1446
1447struct DML_DEPTH_TO_SPACE1_OPERATOR_DESC
1448{
1449 const DML_TENSOR_DESC* InputTensor;
1450 const DML_TENSOR_DESC* OutputTensor;
1451 UINT BlockSize;
1452 DML_DEPTH_SPACE_ORDER Order;
1453};
1454
1455struct DML_SPACE_TO_DEPTH1_OPERATOR_DESC
1456{
1457 const DML_TENSOR_DESC* InputTensor;
1458 const DML_TENSOR_DESC* OutputTensor;
1459 UINT BlockSize;
1460 DML_DEPTH_SPACE_ORDER Order;
1461};
1462
1463struct DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC
1464{
1465 const DML_TENSOR_DESC* InputTensor;
1466 _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
1467 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1468 const DML_TENSOR_DESC* OutputTensor;
1469 UINT AxisCount;
1470 _Field_size_(AxisCount) const UINT* Axes;
1471 BOOL NormalizeVariance;
1472 FLOAT Epsilon;
1473 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
1474};
1475
1476struct DML_RESAMPLE1_OPERATOR_DESC
1477{
1478 const DML_TENSOR_DESC* InputTensor;
1479 const DML_TENSOR_DESC* OutputTensor;
1480 DML_INTERPOLATION_MODE InterpolationMode;
1481 UINT DimensionCount;
1482 _Field_size_(DimensionCount) const FLOAT* Scales;
1483 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
1484 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
1485};
1486
1487struct DML_MATRIX_MULTIPLY_INTEGER_OPERATOR_DESC
1488{
1489 const DML_TENSOR_DESC* ATensor;
1490 _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
1491 const DML_TENSOR_DESC* BTensor;
1492 _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
1493 const DML_TENSOR_DESC* OutputTensor;
1494};
1495
1496struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC
1497{
1498 const DML_TENSOR_DESC* ATensor;
1499 const DML_TENSOR_DESC* AScaleTensor;
1500 _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
1501 const DML_TENSOR_DESC* BTensor;
1502 const DML_TENSOR_DESC* BScaleTensor;
1503 _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
1504 const DML_TENSOR_DESC* OutputScaleTensor;
1505 _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
1506 const DML_TENSOR_DESC* OutputTensor;
1507};
1508
1509struct DML_CONVOLUTION_INTEGER_OPERATOR_DESC
1510{
1511 const DML_TENSOR_DESC* InputTensor;
1512 _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
1513 const DML_TENSOR_DESC* FilterTensor;
1514 _Maybenull_ const DML_TENSOR_DESC* FilterZeroPointTensor;
1515 const DML_TENSOR_DESC* OutputTensor;
1516 UINT DimensionCount;
1517 _Field_size_(DimensionCount) const UINT* Strides;
1518 _Field_size_(DimensionCount) const UINT* Dilations;
1519 _Field_size_(DimensionCount) const UINT* StartPadding;
1520 _Field_size_(DimensionCount) const UINT* EndPadding;
1521 UINT GroupCount;
1522};
1523
1524struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC
1525{
1526 const DML_TENSOR_DESC* InputTensor;
1527 const DML_TENSOR_DESC* InputScaleTensor;
1528 _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
1529 const DML_TENSOR_DESC* FilterTensor;
1530 const DML_TENSOR_DESC* FilterScaleTensor;
1531 _Maybenull_ const DML_TENSOR_DESC* FilterZeroPointTensor;
1532 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1533 const DML_TENSOR_DESC* OutputScaleTensor;
1534 _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
1535 const DML_TENSOR_DESC* OutputTensor;
1536 UINT DimensionCount;
1537 _Field_size_(DimensionCount) const UINT* Strides;
1538 _Field_size_(DimensionCount) const UINT* Dilations;
1539 _Field_size_(DimensionCount) const UINT* StartPadding;
1540 _Field_size_(DimensionCount) const UINT* EndPadding;
1541 UINT GroupCount;
1542};
1543
1544#endif // DML_TARGET_VERSION >= 0x2100
1545
1546#if DML_TARGET_VERSION >= 0x3000
1547
1548struct DML_ELEMENT_WISE_BIT_AND_OPERATOR_DESC
1549{
1550 const DML_TENSOR_DESC* ATensor;
1551 const DML_TENSOR_DESC* BTensor;
1552 const DML_TENSOR_DESC* OutputTensor;
1553};
1554
1555struct DML_ELEMENT_WISE_BIT_OR_OPERATOR_DESC
1556{
1557 const DML_TENSOR_DESC* ATensor;
1558 const DML_TENSOR_DESC* BTensor;
1559 const DML_TENSOR_DESC* OutputTensor;
1560};
1561
1562struct DML_ELEMENT_WISE_BIT_XOR_OPERATOR_DESC
1563{
1564 const DML_TENSOR_DESC* ATensor;
1565 const DML_TENSOR_DESC* BTensor;
1566 const DML_TENSOR_DESC* OutputTensor;
1567};
1568
1569struct DML_ELEMENT_WISE_BIT_NOT_OPERATOR_DESC
1570{
1571 const DML_TENSOR_DESC* InputTensor;
1572 const DML_TENSOR_DESC* OutputTensor;
1573};
1574
1575struct DML_ELEMENT_WISE_BIT_COUNT_OPERATOR_DESC
1576{
1577 const DML_TENSOR_DESC* InputTensor;
1578 const DML_TENSOR_DESC* OutputTensor;
1579};
1580
1581struct DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL_OPERATOR_DESC
1582{
1583 const DML_TENSOR_DESC* ATensor;
1584 const DML_TENSOR_DESC* BTensor;
1585 const DML_TENSOR_DESC* OutputTensor;
1586};
1587
1588struct DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL_OPERATOR_DESC
1589{
1590 const DML_TENSOR_DESC* ATensor;
1591 const DML_TENSOR_DESC* BTensor;
1592 const DML_TENSOR_DESC* OutputTensor;
1593};
1594
1595struct DML_ACTIVATION_CELU_OPERATOR_DESC
1596{
1597 const DML_TENSOR_DESC* InputTensor;
1598 const DML_TENSOR_DESC* OutputTensor;
1599 FLOAT Alpha;
1600};
1601
1602struct DML_ACTIVATION_RELU_GRAD_OPERATOR_DESC
1603{
1604 const DML_TENSOR_DESC* InputTensor;
1605 const DML_TENSOR_DESC* InputGradientTensor;
1606 const DML_TENSOR_DESC* OutputGradientTensor;
1607};
1608
1609struct DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC
1610{
1611 const DML_TENSOR_DESC* InputGradientTensor;
1612 const DML_TENSOR_DESC* OutputGradientTensor;
1613 UINT DimensionCount;
1614 _Field_size_(DimensionCount) const UINT* Strides;
1615 _Field_size_(DimensionCount) const UINT* WindowSize;
1616 _Field_size_(DimensionCount) const UINT* StartPadding;
1617 _Field_size_(DimensionCount) const UINT* EndPadding;
1618 BOOL IncludePadding;
1619};
1620
1621struct DML_MAX_POOLING_GRAD_OPERATOR_DESC
1622{
1623 const DML_TENSOR_DESC* InputTensor;
1624 const DML_TENSOR_DESC* InputGradientTensor;
1625 const DML_TENSOR_DESC* OutputGradientTensor;
1626 UINT DimensionCount;
1627 _Field_size_(DimensionCount) const UINT* Strides;
1628 _Field_size_(DimensionCount) const UINT* WindowSize;
1629 _Field_size_(DimensionCount) const UINT* StartPadding;
1630 _Field_size_(DimensionCount) const UINT* EndPadding;
1631 _Field_size_(DimensionCount) const UINT* Dilations;
1632};
1633
1634struct DML_RANDOM_GENERATOR_OPERATOR_DESC
1635{
1636 const DML_TENSOR_DESC* InputStateTensor;
1637 const DML_TENSOR_DESC* OutputTensor;
1638 _Maybenull_ const DML_TENSOR_DESC* OutputStateTensor;
1639 DML_RANDOM_GENERATOR_TYPE Type;
1640};
1641
1642struct DML_NONZERO_COORDINATES_OPERATOR_DESC
1643{
1644 const DML_TENSOR_DESC* InputTensor;
1645 const DML_TENSOR_DESC* OutputCountTensor;
1646 const DML_TENSOR_DESC* OutputCoordinatesTensor;
1647};
1648
1649struct DML_RESAMPLE_GRAD_OPERATOR_DESC
1650{
1651 const DML_TENSOR_DESC* InputGradientTensor;
1652 const DML_TENSOR_DESC* OutputGradientTensor;
1653 DML_INTERPOLATION_MODE InterpolationMode;
1654 UINT DimensionCount;
1655 _Field_size_(DimensionCount) const FLOAT* Scales;
1656 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
1657 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
1658};
1659
1660struct DML_SLICE_GRAD_OPERATOR_DESC
1661{
1662 const DML_TENSOR_DESC* InputGradientTensor;
1663 const DML_TENSOR_DESC* OutputGradientTensor;
1664 UINT DimensionCount;
1665 _Field_size_(DimensionCount) const UINT* InputWindowOffsets;
1666 _Field_size_(DimensionCount) const UINT* InputWindowSizes;
1667 _Field_size_(DimensionCount) const INT* InputWindowStrides;
1668};
1669
1670struct DML_ADAM_OPTIMIZER_OPERATOR_DESC
1671{
1672 const DML_TENSOR_DESC* InputParametersTensor;
1673 const DML_TENSOR_DESC* InputFirstMomentTensor;
1674 const DML_TENSOR_DESC* InputSecondMomentTensor;
1675 const DML_TENSOR_DESC* GradientTensor;
1676 const DML_TENSOR_DESC* TrainingStepTensor;
1677 const DML_TENSOR_DESC* OutputParametersTensor;
1678 const DML_TENSOR_DESC* OutputFirstMomentTensor;
1679 const DML_TENSOR_DESC* OutputSecondMomentTensor;
1680 FLOAT LearningRate;
1681 FLOAT Beta1;
1682 FLOAT Beta2;
1683 FLOAT Epsilon;
1684};
1685
1686struct DML_ARGMIN_OPERATOR_DESC
1687{
1688 const DML_TENSOR_DESC* InputTensor;
1689 const DML_TENSOR_DESC* OutputTensor;
1690 UINT AxisCount;
1691 _Field_size_(AxisCount) const UINT* Axes;
1692 DML_AXIS_DIRECTION AxisDirection;
1693};
1694
1695struct DML_ARGMAX_OPERATOR_DESC
1696{
1697 const DML_TENSOR_DESC* InputTensor;
1698 const DML_TENSOR_DESC* OutputTensor;
1699 UINT AxisCount;
1700 _Field_size_(AxisCount) const UINT* Axes;
1701 DML_AXIS_DIRECTION AxisDirection;
1702};
1703
1704struct DML_ROI_ALIGN_OPERATOR_DESC
1705{
1706 const DML_TENSOR_DESC* InputTensor;
1707 const DML_TENSOR_DESC* ROITensor;
1708 const DML_TENSOR_DESC* BatchIndicesTensor;
1709 const DML_TENSOR_DESC* OutputTensor;
1710 DML_REDUCE_FUNCTION ReductionFunction;
1711 DML_INTERPOLATION_MODE InterpolationMode;
1712 FLOAT SpatialScaleX;
1713 FLOAT SpatialScaleY;
1714 FLOAT OutOfBoundsInputValue;
1715 UINT MinimumSamplesPerOutput;
1716 UINT MaximumSamplesPerOutput;
1717};
1718
1719struct DML_GATHER_ND1_OPERATOR_DESC
1720{
1721 const DML_TENSOR_DESC* InputTensor;
1722 const DML_TENSOR_DESC* IndicesTensor;
1723 const DML_TENSOR_DESC* OutputTensor;
1724 UINT InputDimensionCount;
1725 UINT IndicesDimensionCount;
1726 UINT BatchDimensionCount;
1727};
1728
1729#endif // DML_TARGET_VERSION >= 0x3000
1730
1731#if DML_TARGET_VERSION >= 0x3100
1732
1733struct DML_ELEMENT_WISE_ATAN_YX_OPERATOR_DESC
1734{
1735 const DML_TENSOR_DESC* ATensor;
1736 const DML_TENSOR_DESC* BTensor;
1737 const DML_TENSOR_DESC* OutputTensor;
1738};
1739
1740struct DML_ELEMENT_WISE_CLIP_GRAD_OPERATOR_DESC
1741{
1742 const DML_TENSOR_DESC* InputTensor;
1743 const DML_TENSOR_DESC* InputGradientTensor;
1744 const DML_TENSOR_DESC* OutputGradientTensor;
1745 FLOAT Min;
1746 FLOAT Max;
1747};
1748
1749struct DML_ELEMENT_WISE_DIFFERENCE_SQUARE_OPERATOR_DESC
1750{
1751 const DML_TENSOR_DESC* ATensor;
1752 const DML_TENSOR_DESC* BTensor;
1753 const DML_TENSOR_DESC* OutputTensor;
1754};
1755
1756struct DML_LOCAL_RESPONSE_NORMALIZATION_GRAD_OPERATOR_DESC
1757{
1758 const DML_TENSOR_DESC* InputTensor;
1759 const DML_TENSOR_DESC* InputGradientTensor;
1760 const DML_TENSOR_DESC* OutputGradientTensor;
1761 BOOL CrossChannel;
1762 UINT LocalSize;
1763 FLOAT Alpha;
1764 FLOAT Beta;
1765 FLOAT Bias;
1766};
1767
1768struct DML_CUMULATIVE_PRODUCT_OPERATOR_DESC
1769{
1770 const DML_TENSOR_DESC* InputTensor;
1771 const DML_TENSOR_DESC* OutputTensor;
1772 UINT Axis;
1773 DML_AXIS_DIRECTION AxisDirection;
1774 BOOL HasExclusiveProduct;
1775};
1776
1777struct DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC
1778{
1779 const DML_TENSOR_DESC* InputTensor;
1780 const DML_TENSOR_DESC* InputGradientTensor;
1781 const DML_TENSOR_DESC* MeanTensor;
1782 const DML_TENSOR_DESC* VarianceTensor;
1783 const DML_TENSOR_DESC* ScaleTensor;
1784
1785 const DML_TENSOR_DESC* OutputGradientTensor;
1786 const DML_TENSOR_DESC* OutputScaleGradientTensor;
1787 const DML_TENSOR_DESC* OutputBiasGradientTensor;
1788
1789 FLOAT Epsilon;
1790};
1791
1792#endif // DML_TARGET_VERSION >= 0x3100
1793
1794#if DML_TARGET_VERSION >= 0x4000
1795struct DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC
1796{
1797 const DML_TENSOR_DESC* ATensor;
1798 const DML_TENSOR_DESC* AScaleTensor;
1799 _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
1800 const DML_TENSOR_DESC* BTensor;
1801 const DML_TENSOR_DESC* BScaleTensor;
1802 _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
1803 const DML_TENSOR_DESC* OutputScaleTensor; // This is an input tensor
1804 _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor; // This is an input tensor
1805 const DML_TENSOR_DESC* OutputTensor;
1806};
1807
1808struct DML_DYNAMIC_QUANTIZE_LINEAR_OPERATOR_DESC
1809{
1810 const DML_TENSOR_DESC* InputTensor;
1811 const DML_TENSOR_DESC* OutputTensor;
1812 const DML_TENSOR_DESC* OutputScaleTensor; // This is an output tensor
1813 const DML_TENSOR_DESC* OutputZeroPointTensor; // This is an output tensor
1814};
1815
1816struct DML_ROI_ALIGN1_OPERATOR_DESC
1817{
1818 const DML_TENSOR_DESC* InputTensor;
1819 const DML_TENSOR_DESC* ROITensor;
1820 const DML_TENSOR_DESC* BatchIndicesTensor;
1821 const DML_TENSOR_DESC* OutputTensor;
1822 DML_REDUCE_FUNCTION ReductionFunction;
1823 DML_INTERPOLATION_MODE InterpolationMode;
1824 FLOAT SpatialScaleX;
1825 FLOAT SpatialScaleY;
1826 FLOAT InputPixelOffset;
1827 FLOAT OutputPixelOffset;
1828 FLOAT OutOfBoundsInputValue;
1829 UINT MinimumSamplesPerOutput;
1830 UINT MaximumSamplesPerOutput;
1831 BOOL AlignRegionsToCorners;
1832};
1833
1834#endif // DML_TARGET_VERSION >= 0x4000
1835
1836#if DML_TARGET_VERSION >= 0x4100
1837
1838struct DML_ROI_ALIGN_GRAD_OPERATOR_DESC
1839{
1840 _Maybenull_ const DML_TENSOR_DESC* InputTensor;
1841 const DML_TENSOR_DESC* InputGradientTensor;
1842 const DML_TENSOR_DESC* ROITensor;
1843 const DML_TENSOR_DESC* BatchIndicesTensor;
1844 _Maybenull_ const DML_TENSOR_DESC* OutputGradientTensor;
1845 _Maybenull_ const DML_TENSOR_DESC* OutputROIGradientTensor;
1846 DML_REDUCE_FUNCTION ReductionFunction;
1847 DML_INTERPOLATION_MODE InterpolationMode;
1848 FLOAT SpatialScaleX;
1849 FLOAT SpatialScaleY;
1850 FLOAT InputPixelOffset;
1851 FLOAT OutputPixelOffset;
1852 UINT MinimumSamplesPerOutput;
1853 UINT MaximumSamplesPerOutput;
1854 BOOL AlignRegionsToCorners;
1855};
1856
1857struct DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC
1858{
1859 const DML_TENSOR_DESC* InputTensor;
1860 const DML_TENSOR_DESC* ScaleTensor;
1861 const DML_TENSOR_DESC* BiasTensor;
1862 _Maybenull_ const DML_TENSOR_DESC* FusedAddTensor;
1863 const DML_TENSOR_DESC* OutputTensor;
1864 const DML_TENSOR_DESC* OutputMeanTensor;
1865 const DML_TENSOR_DESC* OutputVarianceTensor;
1866 FLOAT Epsilon;
1867 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
1868};
1869
1870struct DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC
1871{
1872 const DML_TENSOR_DESC* InputTensor;
1873 const DML_TENSOR_DESC* InputGradientTensor;
1874 const DML_TENSOR_DESC* MeanTensor;
1875 const DML_TENSOR_DESC* VarianceTensor;
1876 const DML_TENSOR_DESC* ScaleTensor;
1877 const DML_TENSOR_DESC* OutputGradientTensor;
1878 const DML_TENSOR_DESC* OutputScaleGradientTensor;
1879 const DML_TENSOR_DESC* OutputBiasGradientTensor;
1880 FLOAT Epsilon;
1881};
1882
1883#endif // DML_TARGET_VERSION >= 0x4100
1884
1885#if DML_TARGET_VERSION >= 0x5000
1886
1887struct DML_ELEMENT_WISE_CLIP1_OPERATOR_DESC
1888{
1889 const DML_TENSOR_DESC* InputTensor;
1890 const DML_TENSOR_DESC* OutputTensor;
1891 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1892 DML_TENSOR_DATA_TYPE MinMaxDataType;
1893 DML_SCALAR_UNION Min;
1894 DML_SCALAR_UNION Max;
1895};
1896
1897struct DML_ELEMENT_WISE_CLIP_GRAD1_OPERATOR_DESC
1898{
1899 const DML_TENSOR_DESC* InputTensor;
1900 const DML_TENSOR_DESC* InputGradientTensor;
1901 const DML_TENSOR_DESC* OutputGradientTensor;
1902 DML_TENSOR_DATA_TYPE MinMaxDataType;
1903 DML_SCALAR_UNION Min;
1904 DML_SCALAR_UNION Max;
1905};
1906
1907struct DML_PADDING1_OPERATOR_DESC
1908{
1909 const DML_TENSOR_DESC* InputTensor;
1910 const DML_TENSOR_DESC* OutputTensor;
1911 DML_PADDING_MODE PaddingMode;
1912 DML_TENSOR_DATA_TYPE PaddingValueDataType;
1913 DML_SCALAR_UNION PaddingValue;
1914 UINT DimensionCount;
1915 _Field_size_(DimensionCount) const UINT* StartPadding;
1916 _Field_size_(DimensionCount) const UINT* EndPadding;
1917};
1918
1919struct DML_ELEMENT_WISE_NEGATE_OPERATOR_DESC
1920{
1921 const DML_TENSOR_DESC* InputTensor;
1922 const DML_TENSOR_DESC* OutputTensor;
1923};
1924
1925#endif // DML_TARGET_VERSION >= 0x5000
1926
1927#if DML_TARGET_VERSION >= 0x5100
1928
1929struct DML_ACTIVATION_GELU_OPERATOR_DESC
1930{
1931 const DML_TENSOR_DESC* InputTensor;
1932 const DML_TENSOR_DESC* OutputTensor;
1933};
1934
1935struct DML_ACTIVATION_SOFTMAX1_OPERATOR_DESC
1936{
1937 const DML_TENSOR_DESC* InputTensor;
1938 const DML_TENSOR_DESC* OutputTensor;
1939 UINT AxisCount;
1940 _Field_size_(AxisCount) const UINT* Axes;
1941};
1942
1943struct DML_ACTIVATION_LOG_SOFTMAX1_OPERATOR_DESC
1944{
1945 const DML_TENSOR_DESC* InputTensor;
1946 const DML_TENSOR_DESC* OutputTensor;
1947 UINT AxisCount;
1948 _Field_size_(AxisCount) const UINT* Axes;
1949};
1950
1951struct DML_ACTIVATION_HARDMAX1_OPERATOR_DESC
1952{
1953 const DML_TENSOR_DESC* InputTensor;
1954 const DML_TENSOR_DESC* OutputTensor;
1955 UINT AxisCount;
1956 _Field_size_(AxisCount) const UINT* Axes;
1957};
1958
1959struct DML_RESAMPLE2_OPERATOR_DESC
1960{
1961 const DML_TENSOR_DESC* InputTensor;
1962 const DML_TENSOR_DESC* OutputTensor;
1963 DML_INTERPOLATION_MODE InterpolationMode;
1964 DML_AXIS_DIRECTION RoundingDirection;
1965 UINT DimensionCount;
1966 _Field_size_(DimensionCount) const FLOAT* Scales;
1967 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
1968 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
1969};
1970
1971struct DML_RESAMPLE_GRAD1_OPERATOR_DESC
1972{
1973 const DML_TENSOR_DESC* InputGradientTensor;
1974 const DML_TENSOR_DESC* OutputGradientTensor;
1975 DML_INTERPOLATION_MODE InterpolationMode;
1976 DML_AXIS_DIRECTION RoundingDirection;
1977 UINT DimensionCount;
1978 _Field_size_(DimensionCount) const FLOAT* Scales;
1979 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
1980 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
1981};
1982
1983struct DML_DIAGONAL_MATRIX1_OPERATOR_DESC
1984{
1985 _Maybenull_ const DML_TENSOR_DESC* InputTensor;
1986 const DML_TENSOR_DESC* OutputTensor;
1987 DML_TENSOR_DATA_TYPE ValueDataType;
1988 DML_SCALAR_UNION Value;
1989 INT DiagonalFillBegin;
1990 INT DiagonalFillEnd;
1991};
1992
1993#endif // DML_TARGET_VERSION >= 0x5100
1994
1995#if DML_TARGET_VERSION >= 0x6100
1996
1997struct DML_MULTIHEAD_ATTENTION_OPERATOR_DESC
1998{
1999 _Maybenull_ const DML_TENSOR_DESC* QueryTensor;
2000 _Maybenull_ const DML_TENSOR_DESC* KeyTensor;
2001 _Maybenull_ const DML_TENSOR_DESC* ValueTensor;
2002 _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyTensor;
2003 _Maybenull_ const DML_TENSOR_DESC* StackedKeyValueTensor;
2004 _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyValueTensor;
2005 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
2006 _Maybenull_ const DML_TENSOR_DESC* MaskTensor;
2007 _Maybenull_ const DML_TENSOR_DESC* RelativePositionBiasTensor;
2008 _Maybenull_ const DML_TENSOR_DESC* PastKeyTensor;
2009 _Maybenull_ const DML_TENSOR_DESC* PastValueTensor;
2010 const DML_TENSOR_DESC* OutputTensor;
2011 _Maybenull_ const DML_TENSOR_DESC* OutputPresentKeyTensor;
2012 _Maybenull_ const DML_TENSOR_DESC* OutputPresentValueTensor;
2013 FLOAT Scale;
2014 FLOAT MaskFilterValue;
2015 UINT HeadCount;
2016 DML_MULTIHEAD_ATTENTION_MASK_TYPE MaskType;
2017};
2018
2019#endif // DML_TARGET_VERSION >= 0x6100
2020
2021#if DML_TARGET_VERSION >= 0x6200
2022
2023struct DML_LP_POOLING1_OPERATOR_DESC
2024{
2025 const DML_TENSOR_DESC* InputTensor;
2026 const DML_TENSOR_DESC* OutputTensor;
2027 UINT DimensionCount;
2028 _Field_size_(DimensionCount) const UINT* Strides;
2029 _Field_size_(DimensionCount) const UINT* WindowSize;
2030 _Field_size_(DimensionCount) const UINT* StartPadding;
2031 _Field_size_(DimensionCount) const UINT* EndPadding;
2032 _Field_size_(DimensionCount) const UINT* Dilations;
2033 UINT P;
2034};
2035
2036struct DML_AVERAGE_POOLING1_OPERATOR_DESC
2037{
2038 const DML_TENSOR_DESC* InputTensor;
2039 const DML_TENSOR_DESC* OutputTensor;
2040 UINT DimensionCount;
2041 _Field_size_(DimensionCount) const UINT* Strides;
2042 _Field_size_(DimensionCount) const UINT* WindowSize;
2043 _Field_size_(DimensionCount) const UINT* StartPadding;
2044 _Field_size_(DimensionCount) const UINT* EndPadding;
2045 _Field_size_(DimensionCount) const UINT* Dilations;
2046 BOOL IncludePadding;
2047};
2048
2049struct DML_ACTIVATION_SWISH_OPERATOR_DESC
2050{
2051 const DML_TENSOR_DESC* InputTensor;
2052 const DML_TENSOR_DESC* OutputTensor;
2053 FLOAT SigmoidInputScale;
2054};
2055
2056struct DML_ACTIVATION_HARD_SWISH_OPERATOR_DESC
2057{
2058 const DML_TENSOR_DESC* InputTensor;
2059 const DML_TENSOR_DESC* OutputTensor;
2060 FLOAT Alpha;
2061 FLOAT Beta;
2062};
2063
2064struct DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC
2065{
2066 const DML_TENSOR_DESC* InputTensor;
2067 const DML_TENSOR_DESC* InputScaleTensor;
2068 _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
2069 const DML_TENSOR_DESC* OutputScaleTensor;
2070 _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
2071 const DML_TENSOR_DESC* OutputTensor;
2072 UINT DimensionCount;
2073 _Field_size_(DimensionCount) const UINT* Strides;
2074 _Field_size_(DimensionCount) const UINT* WindowSize;
2075 _Field_size_(DimensionCount) const UINT* StartPadding;
2076 _Field_size_(DimensionCount) const UINT* EndPadding;
2077 _Field_size_(DimensionCount) const UINT* Dilations;
2078 BOOL IncludePadding;
2079};
2080
2081struct DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC
2082{
2083 const DML_TENSOR_DESC* ATensor;
2084 const DML_TENSOR_DESC* AScaleTensor;
2085 _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
2086 const DML_TENSOR_DESC* BTensor;
2087 const DML_TENSOR_DESC* BScaleTensor;
2088 _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
2089 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
2090 const DML_TENSOR_DESC* OutputTensor;
2091};
2092
2093#endif // DML_TARGET_VERSION >= 0x6200
2094
2095#if DML_TARGET_VERSION >= 0x6300
2096
2097struct DML_MEAN_VARIANCE_NORMALIZATION2_OPERATOR_DESC
2098{
2099 const DML_TENSOR_DESC* InputTensor;
2100 _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
2101 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
2102 const DML_TENSOR_DESC* OutputTensor;
2103 UINT AxisCount;
2104 _Field_size_(AxisCount) const UINT* Axes;
2105 BOOL UseMean;
2106 BOOL UseVariance;
2107 FLOAT Epsilon;
2108 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
2109};
2110
2111struct DML_MULTIHEAD_ATTENTION1_OPERATOR_DESC
2112{
2113 _Maybenull_ const DML_TENSOR_DESC* QueryTensor;
2114 _Maybenull_ const DML_TENSOR_DESC* KeyTensor;
2115 _Maybenull_ const DML_TENSOR_DESC* ValueTensor;
2116 _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyTensor;
2117 _Maybenull_ const DML_TENSOR_DESC* StackedKeyValueTensor;
2118 _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyValueTensor;
2119 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
2120 _Maybenull_ const DML_TENSOR_DESC* MaskTensor;
2121 _Maybenull_ const DML_TENSOR_DESC* RelativePositionBiasTensor;
2122 _Maybenull_ const DML_TENSOR_DESC* PastKeyTensor;
2123 _Maybenull_ const DML_TENSOR_DESC* PastValueTensor;
2124 _Maybenull_ const DML_TENSOR_DESC* PastSequenceLengthsTensor;
2125 const DML_TENSOR_DESC* OutputTensor;
2126 _Maybenull_ const DML_TENSOR_DESC* OutputPresentKeyTensor;
2127 _Maybenull_ const DML_TENSOR_DESC* OutputPresentValueTensor;
2128 FLOAT Scale;
2129 FLOAT MaskFilterValue;
2130 UINT QueryHeadCount;
2131 UINT KeyValueHeadCount;
2132 DML_MULTIHEAD_ATTENTION_MASK_TYPE MaskType;
2133};
2134
2135struct DML_QUANTIZE_OPERATOR_DESC
2136{
2137 const DML_TENSOR_DESC* InputTensor;
2138 DML_QUANTIZATION_TYPE QuantizationType;
2139 UINT QuantizationTensorCount;
2140 _Field_size_(QuantizationTensorCount) const DML_TENSOR_DESC* QuantizationTensors;
2141 const DML_TENSOR_DESC* OutputTensor;
2142};
2143
2144struct DML_DEQUANTIZE_OPERATOR_DESC
2145{
2146 const DML_TENSOR_DESC* InputTensor;
2147 DML_QUANTIZATION_TYPE QuantizationType;
2148 UINT QuantizationTensorCount;
2149 _Field_size_(QuantizationTensorCount) const DML_TENSOR_DESC* QuantizationTensors;
2150 const DML_TENSOR_DESC* OutputTensor;
2151};
2152
2153#endif // DML_TARGET_VERSION >= 0x6300
2154
2155#if DML_TARGET_VERSION >= 0x6400
2156
2157struct DML_RESAMPLE3_OPERATOR_DESC
2158{
2159 const DML_TENSOR_DESC* InputTensor;
2160 const DML_TENSOR_DESC* OutputTensor;
2161 DML_INTERPOLATION_MODE InterpolationMode;
2162 DML_AXIS_DIRECTION RoundingDirection;
2163 UINT DimensionCount;
2164 _Field_size_(DimensionCount) const FLOAT* Scales;
2165 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
2166 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
2167 BOOL Antialiased;
2168};
2169
2170struct DML_FOLD_OPERATOR_DESC
2171{
2172 const DML_TENSOR_DESC* InputTensor;
2173 const DML_TENSOR_DESC* OutputTensor;
2174 UINT DimensionCount;
2175 _Field_size_(DimensionCount) const UINT* WindowSizes; // Size of the extracted patch
2176 _Field_size_(DimensionCount) const UINT* Strides; // Step size of the extracted patches
2177 _Field_size_(DimensionCount) const UINT* Dilations; // Dialations of the extracted patch
2178 _Field_size_(DimensionCount) const UINT* StartPadding; // Start padding of the "source tensor"
2179 _Field_size_(DimensionCount) const UINT* EndPadding; // End padding of the "source tensor"
2180};
2181
2182struct DML_UNFOLD_OPERATOR_DESC
2183{
2184 const DML_TENSOR_DESC* InputTensor;
2185 const DML_TENSOR_DESC* OutputTensor;
2186 UINT DimensionCount;
2187 _Field_size_(DimensionCount) const UINT* WindowSizes; // Size of the extracted patch
2188 _Field_size_(DimensionCount) const UINT* Strides; // Step size of the extracted patches
2189 _Field_size_(DimensionCount) const UINT* Dilations; // Dialations of the extracted patch
2190 _Field_size_(DimensionCount) const UINT* StartPadding; // Start padding of the "source tensor"
2191 _Field_size_(DimensionCount) const UINT* EndPadding; // End padding of the "source tensor"
2192};
2193
2194#endif // DML_TARGET_VERSION >= 0x6400
2195
2196// ===================================================================================================================
2197// DML feature support queries
2198// ===================================================================================================================
2199
2200#if DML_TARGET_VERSION >= 0x2000
2201
2202enum DML_FEATURE_LEVEL
2203{
2204 DML_FEATURE_LEVEL_1_0 = 0x1000,
2205 DML_FEATURE_LEVEL_2_0 = 0x2000,
2206 DML_FEATURE_LEVEL_2_1 = 0x2100,
2207 DML_FEATURE_LEVEL_3_0 = 0x3000,
2208 DML_FEATURE_LEVEL_3_1 = 0x3100,
2209 DML_FEATURE_LEVEL_4_0 = 0x4000,
2210 DML_FEATURE_LEVEL_4_1 = 0x4100,
2211 DML_FEATURE_LEVEL_5_0 = 0x5000,
2212 DML_FEATURE_LEVEL_5_1 = 0x5100,
2213 DML_FEATURE_LEVEL_5_2 = 0x5200,
2214 DML_FEATURE_LEVEL_6_0 = 0x6000,
2215 DML_FEATURE_LEVEL_6_1 = 0x6100,
2216 DML_FEATURE_LEVEL_6_2 = 0x6200,
2217 DML_FEATURE_LEVEL_6_3 = 0x6300,
2218 DML_FEATURE_LEVEL_6_4 = 0x6400,
2219};
2220
2221#endif // DML_TARGET_VERSION >= 0x2000
2222
2223enum DML_FEATURE
2224{
2225 DML_FEATURE_TENSOR_DATA_TYPE_SUPPORT,
2226
2227#if DML_TARGET_VERSION >= 0x2000
2228 DML_FEATURE_FEATURE_LEVELS,
2229#endif // DML_TARGET_VERSION >= 0x2000
2230};
2231
2232struct DML_FEATURE_QUERY_TENSOR_DATA_TYPE_SUPPORT
2233{
2234 DML_TENSOR_DATA_TYPE DataType;
2235};
2236
2237struct DML_FEATURE_DATA_TENSOR_DATA_TYPE_SUPPORT
2238{
2239 BOOL IsSupported;
2240};
2241
2242#if DML_TARGET_VERSION >= 0x2000
2243
2244struct DML_FEATURE_QUERY_FEATURE_LEVELS
2245{
2246 UINT RequestedFeatureLevelCount;
2247 _Field_size_(RequestedFeatureLevelCount) const DML_FEATURE_LEVEL* RequestedFeatureLevels;
2248};
2249
2250struct DML_FEATURE_DATA_FEATURE_LEVELS
2251{
2252 DML_FEATURE_LEVEL MaxSupportedFeatureLevel;
2253};
2254
2255#endif // DML_TARGET_VERSION >= 0x2000
2256
2257// ===================================================================================================================
2258// DML device functions, enumerations, and structures
2259// ===================================================================================================================
2260
2261struct DML_BINDING_TABLE_DESC
2262{
2263 IDMLDispatchable* Dispatchable;
2264 D3D12_CPU_DESCRIPTOR_HANDLE CPUDescriptorHandle;
2265 D3D12_GPU_DESCRIPTOR_HANDLE GPUDescriptorHandle;
2266 UINT SizeInDescriptors;
2267};
2268
2269enum DML_EXECUTION_FLAGS
2270{
2271 DML_EXECUTION_FLAG_NONE = 0,
2272 DML_EXECUTION_FLAG_ALLOW_HALF_PRECISION_COMPUTATION = 0x1,
2273 DML_EXECUTION_FLAG_DISABLE_META_COMMANDS = 0x2,
2274 DML_EXECUTION_FLAG_DESCRIPTORS_VOLATILE = 0x4,
2275};
2276
2277DEFINE_ENUM_FLAG_OPERATORS(DML_EXECUTION_FLAGS)
2278
2279enum DML_CREATE_DEVICE_FLAGS
2280{
2281 DML_CREATE_DEVICE_FLAG_NONE = 0,
2282 DML_CREATE_DEVICE_FLAG_DEBUG = 0x1,
2283};
2284
2285DEFINE_ENUM_FLAG_OPERATORS(DML_CREATE_DEVICE_FLAGS)
2286
2287STDAPI DMLCreateDevice(
2288 ID3D12Device* d3d12Device,
2289 DML_CREATE_DEVICE_FLAGS flags,
2290 REFIID riid, // Expected: IDMLDevice
2291 _COM_Outptr_opt_ void** ppv
2292 );
2293
2294#if DML_TARGET_VERSION >= 0x2000
2295
2296STDAPI DMLCreateDevice1(
2297 ID3D12Device* d3d12Device,
2298 DML_CREATE_DEVICE_FLAGS flags,
2299 DML_FEATURE_LEVEL minimumFeatureLevel,
2300 REFIID riid, // Expected: IDMLDevice
2301 _COM_Outptr_opt_ void** ppv
2302 );
2303
2304#endif // DML_TARGET_VERSION >= 0x2000
2305
2306// ===================================================================================================================
2307// DML object
2308// ===================================================================================================================
2309
2310interface DML_DECLARE_INTERFACE("c8263aac-9e0c-4a2d-9b8e-007521a3317c") IDMLObject : IUnknown
2311{
2312 IFACEMETHOD(GetPrivateData)(
2313 REFGUID guid,
2314 _Inout_ UINT* dataSize,
2315 _Out_writes_bytes_opt_(*dataSize) void* data
2316 ) = 0;
2317
2318 IFACEMETHOD(SetPrivateData)(
2319 REFGUID guid,
2320 UINT dataSize,
2321 _In_reads_bytes_opt_(dataSize) const void* data
2322 ) = 0;
2323
2324 IFACEMETHOD(SetPrivateDataInterface)(
2325 REFGUID guid,
2326 _In_opt_ IUnknown* data
2327 ) = 0;
2328
2329 IFACEMETHOD(SetName)(
2330 PCWSTR name
2331 ) = 0;
2332};
2333
2334// ===================================================================================================================
2335// DML device
2336// ===================================================================================================================
2337
2338interface DML_DECLARE_INTERFACE("6dbd6437-96fd-423f-a98c-ae5e7c2a573f") IDMLDevice : IDMLObject
2339{
2340 IFACEMETHOD(CheckFeatureSupport)(
2341 DML_FEATURE feature,
2342 UINT featureQueryDataSize,
2343 _In_reads_bytes_opt_(featureQueryDataSize) const void* featureQueryData,
2344 UINT featureSupportDataSize,
2345 _Out_writes_bytes_(featureSupportDataSize) void* featureSupportData
2346 ) = 0;
2347
2348 IFACEMETHOD(CreateOperator)(
2349 const DML_OPERATOR_DESC* desc,
2350 REFIID riid, // expected: IDMLOperator
2351 _COM_Outptr_opt_ void** ppv
2352 ) = 0;
2353
2354 IFACEMETHOD(CompileOperator)(
2355 IDMLOperator* op,
2356 DML_EXECUTION_FLAGS flags,
2357 REFIID riid, // expected: IDMLCompiledOperator
2358 _COM_Outptr_opt_ void** ppv
2359 ) = 0;
2360
2361 IFACEMETHOD(CreateOperatorInitializer)(
2362 UINT operatorCount,
2363 _In_reads_opt_(operatorCount) IDMLCompiledOperator* const* operators,
2364 REFIID riid, // expected: IDMLOperatorInitializer
2365 _COM_Outptr_ void** ppv
2366 ) = 0;
2367
2368 IFACEMETHOD(CreateCommandRecorder)(
2369 REFIID riid, // expected: IDMLCommandRecorder
2370 _COM_Outptr_ void** ppv
2371 ) = 0;
2372
2373 IFACEMETHOD(CreateBindingTable)(
2374 _In_opt_ const DML_BINDING_TABLE_DESC* desc,
2375 REFIID riid, // expected: IDMLBindingTable
2376 _COM_Outptr_ void** ppv
2377 ) = 0;
2378
2379 IFACEMETHOD(Evict)(
2380 UINT count,
2381 _In_reads_(count) IDMLPageable* const* ppObjects
2382 ) = 0;
2383
2384 IFACEMETHOD(MakeResident)(
2385 UINT count,
2386 _In_reads_(count) IDMLPageable* const* ppObjects
2387 ) = 0;
2388
2389 IFACEMETHOD(GetDeviceRemovedReason)(
2390 ) = 0;
2391
2392 IFACEMETHOD(GetParentDevice)(
2393 REFIID riid,
2394 _COM_Outptr_ void** ppv
2395 ) = 0;
2396};
2397
2398
2399// ===================================================================================================================
2400// DML device children
2401// ===================================================================================================================
2402
2403interface DML_DECLARE_INTERFACE("27e83142-8165-49e3-974e-2fd66e4cb69d") IDMLDeviceChild : IDMLObject
2404{
2405 IFACEMETHOD(GetDevice)(
2406 REFIID riid, // expected: IDMLDevice
2407 _COM_Outptr_ void** ppv
2408 ) = 0;
2409};
2410
2411interface DML_DECLARE_INTERFACE("b1ab0825-4542-4a4b-8617-6dde6e8f6201") IDMLPageable : IDMLDeviceChild
2412{
2413};
2414
2415
2416// ===================================================================================================================
2417// DML operator
2418// ===================================================================================================================
2419
2420interface DML_DECLARE_INTERFACE("26caae7a-3081-4633-9581-226fbe57695d") IDMLOperator : IDMLDeviceChild
2421{
2422};
2423
2424
2425// ===================================================================================================================
2426// DML dispatchable
2427// ===================================================================================================================
2428
2429struct DML_BINDING_PROPERTIES
2430{
2431 UINT RequiredDescriptorCount;
2432 UINT64 TemporaryResourceSize;
2433 UINT64 PersistentResourceSize;
2434};
2435
2436interface DML_DECLARE_INTERFACE("dcb821a8-1039-441e-9f1c-b1759c2f3cec") IDMLDispatchable : IDMLPageable
2437{
2438 IFACEMETHOD_(DML_BINDING_PROPERTIES, GetBindingProperties)() = 0;
2439};
2440
2441
2442// ===================================================================================================================
2443// DML compiled operator
2444// ===================================================================================================================
2445
2446interface DML_DECLARE_INTERFACE("6b15e56a-bf5c-4902-92d8-da3a650afea4") IDMLCompiledOperator : IDMLDispatchable
2447{
2448};
2449
2450
2451// ===================================================================================================================
2452// DML operator initializer
2453// ===================================================================================================================
2454
2455interface DML_DECLARE_INTERFACE("427c1113-435c-469c-8676-4d5dd072f813") IDMLOperatorInitializer : IDMLDispatchable
2456{
2457 IFACEMETHOD(Reset)(
2458 UINT operatorCount,
2459 _In_reads_opt_(operatorCount) IDMLCompiledOperator* const* operators
2460 ) = 0;
2461};
2462
2463// ===================================================================================================================
2464// DML binding table
2465// ===================================================================================================================
2466
2467enum DML_BINDING_TYPE
2468{
2469 DML_BINDING_TYPE_NONE,
2470 DML_BINDING_TYPE_BUFFER,
2471 DML_BINDING_TYPE_BUFFER_ARRAY,
2472};
2473
2474struct DML_BINDING_DESC
2475{
2476 DML_BINDING_TYPE Type;
2477 _Field_size_opt_(_Inexpressible_("Dependent on binding type")) const void* Desc;
2478};
2479
2480struct DML_BUFFER_BINDING
2481{
2482 _Maybenull_ ID3D12Resource* Buffer;
2483 UINT64 Offset;
2484 UINT64 SizeInBytes;
2485};
2486
2487struct DML_BUFFER_ARRAY_BINDING
2488{
2489 UINT BindingCount;
2490 _Field_size_(BindingCount) const DML_BUFFER_BINDING* Bindings;
2491};
2492
2493interface DML_DECLARE_INTERFACE("29c687dc-de74-4e3b-ab00-1168f2fc3cfc") IDMLBindingTable : IDMLDeviceChild
2494{
2495 IFACEMETHOD_(void, BindInputs)(
2496 UINT bindingCount,
2497 _In_reads_opt_(bindingCount) const DML_BINDING_DESC* bindings
2498 ) = 0;
2499
2500 IFACEMETHOD_(void, BindOutputs)(
2501 UINT bindingCount,
2502 _In_reads_opt_(bindingCount) const DML_BINDING_DESC* bindings
2503 ) = 0;
2504
2505 IFACEMETHOD_(void, BindTemporaryResource)(
2506 _In_opt_ const DML_BINDING_DESC* binding
2507 ) = 0;
2508
2509 IFACEMETHOD_(void, BindPersistentResource)(
2510 _In_opt_ const DML_BINDING_DESC* binding
2511 ) = 0;
2512
2513 IFACEMETHOD(Reset)(
2514 _In_opt_ const DML_BINDING_TABLE_DESC* desc
2515 ) = 0;
2516};
2517
2518
2519// ===================================================================================================================
2520// DML command recorder
2521// ===================================================================================================================
2522
2523interface DML_DECLARE_INTERFACE("e6857a76-2e3e-4fdd-bff4-5d2ba10fb453") IDMLCommandRecorder : IDMLDeviceChild
2524{
2525 IFACEMETHOD_(void, RecordDispatch)(
2526 ID3D12CommandList* commandList,
2527 IDMLDispatchable* dispatchable,
2528 IDMLBindingTable* bindings
2529 ) = 0;
2530};
2531
2532
2533// ===================================================================================================================
2534// DML debug
2535// ===================================================================================================================
2536
2537interface DML_DECLARE_INTERFACE("7d6f3ac9-394a-4ac3-92a7-390cc57a8217") IDMLDebugDevice : IUnknown
2538{
2539 IFACEMETHOD_(void, SetMuteDebugOutput)(
2540 BOOL mute
2541 ) = 0;
2542};
2543
2544
2545// ===================================================================================================================
2546// DML graph
2547// ===================================================================================================================
2548
2549#if DML_TARGET_VERSION >= 0x2100
2550
2551enum DML_GRAPH_EDGE_TYPE
2552{
2553 DML_GRAPH_EDGE_TYPE_INVALID,
2554 DML_GRAPH_EDGE_TYPE_INPUT,
2555 DML_GRAPH_EDGE_TYPE_OUTPUT,
2556 DML_GRAPH_EDGE_TYPE_INTERMEDIATE,
2557};
2558
2559struct DML_GRAPH_EDGE_DESC
2560{
2561 DML_GRAPH_EDGE_TYPE Type;
2562 _Field_size_(_Inexpressible_("Dependent on edge type")) const void* Desc;
2563};
2564
2565struct DML_INPUT_GRAPH_EDGE_DESC
2566{
2567 UINT GraphInputIndex;
2568 UINT ToNodeIndex;
2569 UINT ToNodeInputIndex;
2570 _Field_z_ _Maybenull_ const char* Name;
2571};
2572
2573struct DML_OUTPUT_GRAPH_EDGE_DESC
2574{
2575 UINT FromNodeIndex;
2576 UINT FromNodeOutputIndex;
2577 UINT GraphOutputIndex;
2578 _Field_z_ _Maybenull_ const char* Name;
2579};
2580
2581struct DML_INTERMEDIATE_GRAPH_EDGE_DESC
2582{
2583 UINT FromNodeIndex;
2584 UINT FromNodeOutputIndex;
2585 UINT ToNodeIndex;
2586 UINT ToNodeInputIndex;
2587 _Field_z_ _Maybenull_ const char* Name;
2588};
2589
2590enum DML_GRAPH_NODE_TYPE
2591{
2592 DML_GRAPH_NODE_TYPE_INVALID,
2593 DML_GRAPH_NODE_TYPE_OPERATOR,
2594#if DML_TARGET_VERSION >= 0x6200
2595 DML_GRAPH_NODE_TYPE_CONSTANT
2596#endif // DML_TARGET_VERSION >= 0x6200
2597};
2598
2599struct DML_GRAPH_NODE_DESC
2600{
2601 DML_GRAPH_NODE_TYPE Type;
2602 _Field_size_(_Inexpressible_("Dependent on node type")) const void* Desc;
2603};
2604
2605struct DML_OPERATOR_GRAPH_NODE_DESC
2606{
2607 IDMLOperator* Operator;
2608 _Field_z_ _Maybenull_ const char* Name;
2609};
2610
2611#if DML_TARGET_VERSION >= 0x6200
2612struct DML_CONSTANT_DATA_GRAPH_NODE_DESC
2613{
2614 _Field_size_bytes_(DataSize) const void* Data;
2615 SIZE_T DataSize;
2616 _Field_z_ _Maybenull_ const char* Name;
2617};
2618#endif // DML_TARGET_VERSION >= 0x6200
2619
2620struct DML_GRAPH_DESC
2621{
2622 UINT InputCount;
2623 UINT OutputCount;
2624
2625 UINT NodeCount;
2626 _Field_size_(NodeCount) const DML_GRAPH_NODE_DESC* Nodes;
2627
2628 UINT InputEdgeCount;
2629 _Field_size_opt_(InputEdgeCount) const DML_GRAPH_EDGE_DESC* InputEdges;
2630
2631 UINT OutputEdgeCount;
2632 _Field_size_(OutputEdgeCount) const DML_GRAPH_EDGE_DESC* OutputEdges;
2633
2634 UINT IntermediateEdgeCount;
2635 _Field_size_opt_(IntermediateEdgeCount) const DML_GRAPH_EDGE_DESC* IntermediateEdges;
2636};
2637
2638interface DML_DECLARE_INTERFACE("a0884f9a-d2be-4355-aa5d-5901281ad1d2") IDMLDevice1 : IDMLDevice
2639{
2640 IFACEMETHOD(CompileGraph)(
2641 const DML_GRAPH_DESC* desc,
2642 DML_EXECUTION_FLAGS flags,
2643 REFIID riid, // expected: IDMLCompiledOperator
2644 _COM_Outptr_opt_ void** ppv
2645 ) = 0;
2646};
2647
2648#endif // DML_TARGET_VERSION >= 0x2100
2649
2650#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
2651#endif // DIRECTML_H
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.h
new file mode 100644
index 0000000..0d12a2b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.h
@@ -0,0 +1,36886 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12_h__
39#define __d3d12_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Object_FWD_DEFINED__
56#define __ID3D12Object_FWD_DEFINED__
57typedef interface ID3D12Object ID3D12Object;
58
59#endif /* __ID3D12Object_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12DeviceChild_FWD_DEFINED__
63#define __ID3D12DeviceChild_FWD_DEFINED__
64typedef interface ID3D12DeviceChild ID3D12DeviceChild;
65
66#endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12RootSignature_FWD_DEFINED__
70#define __ID3D12RootSignature_FWD_DEFINED__
71typedef interface ID3D12RootSignature ID3D12RootSignature;
72
73#endif /* __ID3D12RootSignature_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
77#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
78typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
79
80#endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
84#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
85typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
86
87#endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Pageable_FWD_DEFINED__
91#define __ID3D12Pageable_FWD_DEFINED__
92typedef interface ID3D12Pageable ID3D12Pageable;
93
94#endif /* __ID3D12Pageable_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Heap_FWD_DEFINED__
98#define __ID3D12Heap_FWD_DEFINED__
99typedef interface ID3D12Heap ID3D12Heap;
100
101#endif /* __ID3D12Heap_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12Resource_FWD_DEFINED__
105#define __ID3D12Resource_FWD_DEFINED__
106typedef interface ID3D12Resource ID3D12Resource;
107
108#endif /* __ID3D12Resource_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
112#define __ID3D12CommandAllocator_FWD_DEFINED__
113typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
114
115#endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12Fence_FWD_DEFINED__
119#define __ID3D12Fence_FWD_DEFINED__
120typedef interface ID3D12Fence ID3D12Fence;
121
122#endif /* __ID3D12Fence_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12Fence1_FWD_DEFINED__
126#define __ID3D12Fence1_FWD_DEFINED__
127typedef interface ID3D12Fence1 ID3D12Fence1;
128
129#endif /* __ID3D12Fence1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12PipelineState_FWD_DEFINED__
133#define __ID3D12PipelineState_FWD_DEFINED__
134typedef interface ID3D12PipelineState ID3D12PipelineState;
135
136#endif /* __ID3D12PipelineState_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12PipelineState1_FWD_DEFINED__
140#define __ID3D12PipelineState1_FWD_DEFINED__
141typedef interface ID3D12PipelineState1 ID3D12PipelineState1;
142
143#endif /* __ID3D12PipelineState1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
147#define __ID3D12DescriptorHeap_FWD_DEFINED__
148typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
149
150#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12QueryHeap_FWD_DEFINED__
154#define __ID3D12QueryHeap_FWD_DEFINED__
155typedef interface ID3D12QueryHeap ID3D12QueryHeap;
156
157#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12CommandSignature_FWD_DEFINED__
161#define __ID3D12CommandSignature_FWD_DEFINED__
162typedef interface ID3D12CommandSignature ID3D12CommandSignature;
163
164#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12CommandList_FWD_DEFINED__
168#define __ID3D12CommandList_FWD_DEFINED__
169typedef interface ID3D12CommandList ID3D12CommandList;
170
171#endif /* __ID3D12CommandList_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
175#define __ID3D12GraphicsCommandList_FWD_DEFINED__
176typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
177
178#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
182#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
183typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
184
185#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
189#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
190typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
191
192#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12CommandQueue_FWD_DEFINED__
196#define __ID3D12CommandQueue_FWD_DEFINED__
197typedef interface ID3D12CommandQueue ID3D12CommandQueue;
198
199#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12CommandQueue1_FWD_DEFINED__
203#define __ID3D12CommandQueue1_FWD_DEFINED__
204typedef interface ID3D12CommandQueue1 ID3D12CommandQueue1;
205
206#endif /* __ID3D12CommandQueue1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12Device_FWD_DEFINED__
210#define __ID3D12Device_FWD_DEFINED__
211typedef interface ID3D12Device ID3D12Device;
212
213#endif /* __ID3D12Device_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
217#define __ID3D12PipelineLibrary_FWD_DEFINED__
218typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
219
220#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
224#define __ID3D12PipelineLibrary1_FWD_DEFINED__
225typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
226
227#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12Device1_FWD_DEFINED__
231#define __ID3D12Device1_FWD_DEFINED__
232typedef interface ID3D12Device1 ID3D12Device1;
233
234#endif /* __ID3D12Device1_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12Device2_FWD_DEFINED__
238#define __ID3D12Device2_FWD_DEFINED__
239typedef interface ID3D12Device2 ID3D12Device2;
240
241#endif /* __ID3D12Device2_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12Device3_FWD_DEFINED__
245#define __ID3D12Device3_FWD_DEFINED__
246typedef interface ID3D12Device3 ID3D12Device3;
247
248#endif /* __ID3D12Device3_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
252#define __ID3D12ProtectedSession_FWD_DEFINED__
253typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
254
255#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
259#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
260typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
261
262#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */
263
264
265#ifndef __ID3D12Device4_FWD_DEFINED__
266#define __ID3D12Device4_FWD_DEFINED__
267typedef interface ID3D12Device4 ID3D12Device4;
268
269#endif /* __ID3D12Device4_FWD_DEFINED__ */
270
271
272#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
273#define __ID3D12LifetimeOwner_FWD_DEFINED__
274typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
275
276#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */
277
278
279#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
280#define __ID3D12SwapChainAssistant_FWD_DEFINED__
281typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
282
283#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */
284
285
286#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
287#define __ID3D12LifetimeTracker_FWD_DEFINED__
288typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
289
290#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */
291
292
293#ifndef __ID3D12StateObject_FWD_DEFINED__
294#define __ID3D12StateObject_FWD_DEFINED__
295typedef interface ID3D12StateObject ID3D12StateObject;
296
297#endif /* __ID3D12StateObject_FWD_DEFINED__ */
298
299
300#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
301#define __ID3D12StateObjectProperties_FWD_DEFINED__
302typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
303
304#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
305
306
307#ifndef __ID3D12StateObjectProperties1_FWD_DEFINED__
308#define __ID3D12StateObjectProperties1_FWD_DEFINED__
309typedef interface ID3D12StateObjectProperties1 ID3D12StateObjectProperties1;
310
311#endif /* __ID3D12StateObjectProperties1_FWD_DEFINED__ */
312
313
314#ifndef __ID3D12StateObjectProperties2_FWD_DEFINED__
315#define __ID3D12StateObjectProperties2_FWD_DEFINED__
316typedef interface ID3D12StateObjectProperties2 ID3D12StateObjectProperties2;
317
318#endif /* __ID3D12StateObjectProperties2_FWD_DEFINED__ */
319
320
321#ifndef __ID3D12WorkGraphProperties_FWD_DEFINED__
322#define __ID3D12WorkGraphProperties_FWD_DEFINED__
323typedef interface ID3D12WorkGraphProperties ID3D12WorkGraphProperties;
324
325#endif /* __ID3D12WorkGraphProperties_FWD_DEFINED__ */
326
327
328#ifndef __ID3D12Device5_FWD_DEFINED__
329#define __ID3D12Device5_FWD_DEFINED__
330typedef interface ID3D12Device5 ID3D12Device5;
331
332#endif /* __ID3D12Device5_FWD_DEFINED__ */
333
334
335#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
336#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
337typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
338
339#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */
340
341
342#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
343#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
344typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
345
346#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__ */
347
348
349#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
350#define __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
351typedef interface ID3D12DeviceRemovedExtendedDataSettings2 ID3D12DeviceRemovedExtendedDataSettings2;
352
353#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__ */
354
355
356#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
357#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
358typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
359
360#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */
361
362
363#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
364#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
365typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
366
367#endif /* __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__ */
368
369
370#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
371#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
372typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
373
374#endif /* __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__ */
375
376
377#ifndef __ID3D12Device6_FWD_DEFINED__
378#define __ID3D12Device6_FWD_DEFINED__
379typedef interface ID3D12Device6 ID3D12Device6;
380
381#endif /* __ID3D12Device6_FWD_DEFINED__ */
382
383
384#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
385#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
386typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
387
388#endif /* __ID3D12ProtectedResourceSession1_FWD_DEFINED__ */
389
390
391#ifndef __ID3D12Device7_FWD_DEFINED__
392#define __ID3D12Device7_FWD_DEFINED__
393typedef interface ID3D12Device7 ID3D12Device7;
394
395#endif /* __ID3D12Device7_FWD_DEFINED__ */
396
397
398#ifndef __ID3D12Device8_FWD_DEFINED__
399#define __ID3D12Device8_FWD_DEFINED__
400typedef interface ID3D12Device8 ID3D12Device8;
401
402#endif /* __ID3D12Device8_FWD_DEFINED__ */
403
404
405#ifndef __ID3D12Resource1_FWD_DEFINED__
406#define __ID3D12Resource1_FWD_DEFINED__
407typedef interface ID3D12Resource1 ID3D12Resource1;
408
409#endif /* __ID3D12Resource1_FWD_DEFINED__ */
410
411
412#ifndef __ID3D12Resource2_FWD_DEFINED__
413#define __ID3D12Resource2_FWD_DEFINED__
414typedef interface ID3D12Resource2 ID3D12Resource2;
415
416#endif /* __ID3D12Resource2_FWD_DEFINED__ */
417
418
419#ifndef __ID3D12Heap1_FWD_DEFINED__
420#define __ID3D12Heap1_FWD_DEFINED__
421typedef interface ID3D12Heap1 ID3D12Heap1;
422
423#endif /* __ID3D12Heap1_FWD_DEFINED__ */
424
425
426#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
427#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
428typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
429
430#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */
431
432
433#ifndef __ID3D12MetaCommand_FWD_DEFINED__
434#define __ID3D12MetaCommand_FWD_DEFINED__
435typedef interface ID3D12MetaCommand ID3D12MetaCommand;
436
437#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */
438
439
440#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
441#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
442typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
443
444#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */
445
446
447#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
448#define __ID3D12ShaderCacheSession_FWD_DEFINED__
449typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
450
451#endif /* __ID3D12ShaderCacheSession_FWD_DEFINED__ */
452
453
454#ifndef __ID3D12Device9_FWD_DEFINED__
455#define __ID3D12Device9_FWD_DEFINED__
456typedef interface ID3D12Device9 ID3D12Device9;
457
458#endif /* __ID3D12Device9_FWD_DEFINED__ */
459
460
461#ifndef __ID3D12Device10_FWD_DEFINED__
462#define __ID3D12Device10_FWD_DEFINED__
463typedef interface ID3D12Device10 ID3D12Device10;
464
465#endif /* __ID3D12Device10_FWD_DEFINED__ */
466
467
468#ifndef __ID3D12Device11_FWD_DEFINED__
469#define __ID3D12Device11_FWD_DEFINED__
470typedef interface ID3D12Device11 ID3D12Device11;
471
472#endif /* __ID3D12Device11_FWD_DEFINED__ */
473
474
475#ifndef __ID3D12Device12_FWD_DEFINED__
476#define __ID3D12Device12_FWD_DEFINED__
477typedef interface ID3D12Device12 ID3D12Device12;
478
479#endif /* __ID3D12Device12_FWD_DEFINED__ */
480
481
482#ifndef __ID3D12Device13_FWD_DEFINED__
483#define __ID3D12Device13_FWD_DEFINED__
484typedef interface ID3D12Device13 ID3D12Device13;
485
486#endif /* __ID3D12Device13_FWD_DEFINED__ */
487
488
489#ifndef __ID3D12Device14_FWD_DEFINED__
490#define __ID3D12Device14_FWD_DEFINED__
491typedef interface ID3D12Device14 ID3D12Device14;
492
493#endif /* __ID3D12Device14_FWD_DEFINED__ */
494
495
496#ifndef __ID3D12StateObjectDatabase_FWD_DEFINED__
497#define __ID3D12StateObjectDatabase_FWD_DEFINED__
498typedef interface ID3D12StateObjectDatabase ID3D12StateObjectDatabase;
499
500#endif /* __ID3D12StateObjectDatabase_FWD_DEFINED__ */
501
502
503#ifndef __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
504#define __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
505typedef interface ID3D12VirtualizationGuestDevice ID3D12VirtualizationGuestDevice;
506
507#endif /* __ID3D12VirtualizationGuestDevice_FWD_DEFINED__ */
508
509
510#ifndef __ID3D12Tools_FWD_DEFINED__
511#define __ID3D12Tools_FWD_DEFINED__
512typedef interface ID3D12Tools ID3D12Tools;
513
514#endif /* __ID3D12Tools_FWD_DEFINED__ */
515
516
517#ifndef __ID3D12Tools1_FWD_DEFINED__
518#define __ID3D12Tools1_FWD_DEFINED__
519typedef interface ID3D12Tools1 ID3D12Tools1;
520
521#endif /* __ID3D12Tools1_FWD_DEFINED__ */
522
523
524#ifndef __ID3D12Tools2_FWD_DEFINED__
525#define __ID3D12Tools2_FWD_DEFINED__
526typedef interface ID3D12Tools2 ID3D12Tools2;
527
528#endif /* __ID3D12Tools2_FWD_DEFINED__ */
529
530
531#ifndef __ID3D12PageableTools_FWD_DEFINED__
532#define __ID3D12PageableTools_FWD_DEFINED__
533typedef interface ID3D12PageableTools ID3D12PageableTools;
534
535#endif /* __ID3D12PageableTools_FWD_DEFINED__ */
536
537
538#ifndef __ID3D12DeviceTools_FWD_DEFINED__
539#define __ID3D12DeviceTools_FWD_DEFINED__
540typedef interface ID3D12DeviceTools ID3D12DeviceTools;
541
542#endif /* __ID3D12DeviceTools_FWD_DEFINED__ */
543
544
545#ifndef __ID3D12DeviceTools1_FWD_DEFINED__
546#define __ID3D12DeviceTools1_FWD_DEFINED__
547typedef interface ID3D12DeviceTools1 ID3D12DeviceTools1;
548
549#endif /* __ID3D12DeviceTools1_FWD_DEFINED__ */
550
551
552#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
553#define __ID3D12SDKConfiguration_FWD_DEFINED__
554typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
555
556#endif /* __ID3D12SDKConfiguration_FWD_DEFINED__ */
557
558
559#ifndef __ID3D12SDKConfiguration1_FWD_DEFINED__
560#define __ID3D12SDKConfiguration1_FWD_DEFINED__
561typedef interface ID3D12SDKConfiguration1 ID3D12SDKConfiguration1;
562
563#endif /* __ID3D12SDKConfiguration1_FWD_DEFINED__ */
564
565
566#ifndef __ID3D12DeviceFactory_FWD_DEFINED__
567#define __ID3D12DeviceFactory_FWD_DEFINED__
568typedef interface ID3D12DeviceFactory ID3D12DeviceFactory;
569
570#endif /* __ID3D12DeviceFactory_FWD_DEFINED__ */
571
572
573#ifndef __ID3D12DeviceConfiguration_FWD_DEFINED__
574#define __ID3D12DeviceConfiguration_FWD_DEFINED__
575typedef interface ID3D12DeviceConfiguration ID3D12DeviceConfiguration;
576
577#endif /* __ID3D12DeviceConfiguration_FWD_DEFINED__ */
578
579
580#ifndef __ID3D12DeviceConfiguration1_FWD_DEFINED__
581#define __ID3D12DeviceConfiguration1_FWD_DEFINED__
582typedef interface ID3D12DeviceConfiguration1 ID3D12DeviceConfiguration1;
583
584#endif /* __ID3D12DeviceConfiguration1_FWD_DEFINED__ */
585
586
587#ifndef __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
588#define __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
589typedef interface ID3D12StateObjectDatabaseFactory ID3D12StateObjectDatabaseFactory;
590
591#endif /* __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__ */
592
593
594#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
595#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
596typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
597
598#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */
599
600
601#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
602#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
603typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
604
605#endif /* __ID3D12GraphicsCommandList6_FWD_DEFINED__ */
606
607
608#ifndef __ID3D12GraphicsCommandList7_FWD_DEFINED__
609#define __ID3D12GraphicsCommandList7_FWD_DEFINED__
610typedef interface ID3D12GraphicsCommandList7 ID3D12GraphicsCommandList7;
611
612#endif /* __ID3D12GraphicsCommandList7_FWD_DEFINED__ */
613
614
615#ifndef __ID3D12GraphicsCommandList8_FWD_DEFINED__
616#define __ID3D12GraphicsCommandList8_FWD_DEFINED__
617typedef interface ID3D12GraphicsCommandList8 ID3D12GraphicsCommandList8;
618
619#endif /* __ID3D12GraphicsCommandList8_FWD_DEFINED__ */
620
621
622#ifndef __ID3D12GraphicsCommandList9_FWD_DEFINED__
623#define __ID3D12GraphicsCommandList9_FWD_DEFINED__
624typedef interface ID3D12GraphicsCommandList9 ID3D12GraphicsCommandList9;
625
626#endif /* __ID3D12GraphicsCommandList9_FWD_DEFINED__ */
627
628
629#ifndef __ID3D12GraphicsCommandList10_FWD_DEFINED__
630#define __ID3D12GraphicsCommandList10_FWD_DEFINED__
631typedef interface ID3D12GraphicsCommandList10 ID3D12GraphicsCommandList10;
632
633#endif /* __ID3D12GraphicsCommandList10_FWD_DEFINED__ */
634
635
636#ifndef __ID3D12DSRDeviceFactory_FWD_DEFINED__
637#define __ID3D12DSRDeviceFactory_FWD_DEFINED__
638typedef interface ID3D12DSRDeviceFactory ID3D12DSRDeviceFactory;
639
640#endif /* __ID3D12DSRDeviceFactory_FWD_DEFINED__ */
641
642
643#ifndef __ID3D12GBVDiagnostics_FWD_DEFINED__
644#define __ID3D12GBVDiagnostics_FWD_DEFINED__
645typedef interface ID3D12GBVDiagnostics ID3D12GBVDiagnostics;
646
647#endif /* __ID3D12GBVDiagnostics_FWD_DEFINED__ */
648
649
650/* header files for imported files */
651#include "oaidl.h"
652#include "ocidl.h"
653#include "dxgicommon.h"
654#include "dxgiformat.h"
655#include "d3dcommon.h"
656
657#ifdef __cplusplus
658extern "C"{
659#endif
660
661
662/* interface __MIDL_itf_d3d12_0000_0000 */
663/* [local] */
664
665#include <winapifamily.h>
666#pragma region App Family
667#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
668#ifndef _D3D12_CONSTANTS
669#define _D3D12_CONSTANTS
670#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
671
672#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
673
674#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
675
676#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
677
678#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
679
680#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
681
682#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
683
684#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
685
686#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
687
688#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
689
690#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
691
692#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
693
694#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
695
696#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
697
698#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
699
700#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
701
702#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
703
704#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
705
706#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
707
708#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
709
710#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
711
712#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
713
714#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
715
716#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
717
718#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
719
720#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
721
722#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
723
724#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
725
726#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
727
728#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
729
730#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
731
732#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
733
734#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
735
736#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
737
738#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
739
740#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
741
742#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
743
744#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
745
746#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
747
748#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
749
750#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
751
752#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
753
754#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
755
756#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
757
758#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
759
760#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
761
762#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
763
764#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
765
766#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
767
768#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
769
770#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
771
772#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
773
774#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
775
776#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
777
778#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
779
780#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
781
782#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
783
784#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
785
786#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
787
788#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
789
790#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
791
792#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
793
794#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
795
796#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
797
798#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
799
800#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
801
802#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
803
804#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
805
806#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
807
808#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
809
810#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
811
812#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
813
814#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
815
816#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
817
818#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
819
820#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
821
822#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
823
824#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
825
826#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
827
828#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
829
830#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
831
832#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
833
834#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
835
836#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
837
838#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
839
840#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
841
842#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
843
844#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
845
846#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
847
848#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
849
850#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
851
852#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
853
854#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
855
856#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
857
858#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
859
860#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
861
862#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
863
864#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
865
866#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
867
868#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
869
870#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
871
872#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
873
874#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
875#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
876#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
877#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
878#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
879#define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
880
881#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
882#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
883
884#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
885#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
886
887#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
888
889#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
890
891#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
892
893#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
894
895#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
896
897#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
898
899#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
900
901#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
902#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
903
904#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
905
906#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
907
908#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
909
910#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
911
912#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
913#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
914#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
915
916#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
917
918#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
919
920#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
921
922#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
923
924#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
925
926#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
927
928#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
929
930#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
931
932#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
933
934#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
935
936#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
937
938#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
939
940#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
941
942#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
943
944#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
945
946#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
947
948#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
949
950#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
951
952#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
953
954#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
955
956#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
957
958#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
959
960#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
961
962#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
963
964#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
965
966#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
967
968#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
969
970#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
971
972#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
973
974#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
975#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
976#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
977#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
978#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
979#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
980#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
981#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
982#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
983#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
984#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
985#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
986#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
987#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
988
989#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
990
991#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
992
993#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
994
995#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
996
997#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
998
999#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1000
1001#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
1002
1003#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
1004
1005#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
1006
1007#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
1008
1009#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1010
1011#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
1012
1013#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
1014
1015#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
1016
1017#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
1018
1019#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
1020
1021#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
1022
1023#define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
1024
1025#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1026
1027#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1028
1029#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
1030
1031#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
1032
1033#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
1034
1035#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
1036
1037#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1038
1039#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
1040
1041#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
1042
1043#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
1044
1045#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
1046
1047#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1048
1049#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
1050
1051#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
1052
1053#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
1054
1055#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
1056
1057#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1058
1059#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
1060
1061#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
1062
1063#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
1064
1065#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
1066
1067#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1068
1069#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
1070
1071#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
1072
1073#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
1074
1075#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
1076
1077#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
1078#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
1079#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
1080
1081#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
1082
1083#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1084
1085#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
1086
1087#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
1088
1089#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
1090
1091#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
1092
1093#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1094
1095#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
1096
1097#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
1098
1099#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
1100
1101#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
1102
1103#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
1104
1105#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
1106
1107#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
1108
1109#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
1110
1111#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
1112
1113#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
1114
1115#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
1116
1117#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
1118
1119#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
1120
1121#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
1122
1123#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
1124
1125#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
1126
1127#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
1128
1129#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
1130
1131#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
1132
1133#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
1134
1135#define D3D12_LINEAR_GAMMA ( 1.0f )
1136#define D3D12_MAJOR_VERSION ( 12 )
1137
1138#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
1139#define D3D12_MAX_DEPTH ( 1.0f )
1140#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
1141
1142#define D3D12_MAX_MAXANISOTROPY ( 16 )
1143
1144#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
1145
1146#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
1147#define D3D12_MAX_ROOT_COST ( 64 )
1148
1149#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
1150
1151#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
1152
1153#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
1154
1155#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
1156
1157#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 )
1158
1159#define D3D12_MINOR_VERSION ( 0 )
1160
1161#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
1162#define D3D12_MIN_DEPTH ( 0.0f )
1163#define D3D12_MIN_MAXANISOTROPY ( 0 )
1164
1165#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
1166#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
1167#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
1168
1169#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
1170
1171#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
1172#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
1173
1174#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1175
1176#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
1177
1178#define D3D12_PACKED_TILE ( 0xffffffff )
1179
1180#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
1181
1182#define D3D12_PREVIEW_SDK_VERSION ( 717 )
1183
1184#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1185
1186#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
1187
1188#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
1189
1190#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
1191
1192#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
1193
1194#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
1195
1196#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
1197
1198#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
1199
1200#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
1201
1202#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1203
1204#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
1205
1206#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
1207
1208#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
1209
1210#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
1211#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
1212
1213#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1214
1215#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
1216
1217#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
1218
1219#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1220
1221#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
1222
1223#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1224
1225#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1226
1227#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
1228
1229#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
1230#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
1231
1232#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 )
1233
1234#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 )
1235
1236#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 )
1237
1238#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 )
1239
1240#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 )
1241
1242#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1243
1244#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1245
1246#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 )
1247
1248#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 )
1249
1250#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
1251
1252#define D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT ( 128 )
1253
1254#define D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL ( 12 )
1255
1256#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
1257
1258#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
1259
1260#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 )
1261
1262#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
1263
1264#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
1265
1266#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1267
1268#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
1269
1270#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
1271
1272#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
1273
1274#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
1275
1276#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
1277
1278#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1279
1280#define D3D12_REQ_MAXANISOTROPY ( 16 )
1281
1282#define D3D12_REQ_MIP_LEVELS ( 15 )
1283
1284#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
1285
1286#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1287
1288#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
1289
1290#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
1291
1292#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
1293#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
1294
1295#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
1296
1297#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1298
1299#define D3D12_REQ_SUBRESOURCES ( 30720 )
1300
1301#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
1302
1303#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
1304
1305#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
1306
1307#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
1308
1309#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
1310
1311#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
1312
1313#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
1314
1315#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
1316
1317#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
1318
1319#define D3D12_SDK_VERSION ( 618 )
1320
1321#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
1322
1323#define D3D12_SHADER_MAJOR_VERSION ( 5 )
1324
1325#define D3D12_SHADER_MAX_INSTANCES ( 65535 )
1326
1327#define D3D12_SHADER_MAX_INTERFACES ( 253 )
1328
1329#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
1330
1331#define D3D12_SHADER_MAX_TYPES ( 65535 )
1332
1333#define D3D12_SHADER_MINOR_VERSION ( 1 )
1334
1335#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
1336
1337#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
1338
1339#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
1340
1341#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
1342
1343#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
1344
1345#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
1346
1347#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
1348
1349#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
1350
1351#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
1352
1353#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
1354
1355#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
1356
1357#define D3D12_SO_STREAM_COUNT ( 4 )
1358
1359#define D3D12_SPEC_DATE_DAY ( 14 )
1360
1361#define D3D12_SPEC_DATE_MONTH ( 11 )
1362
1363#define D3D12_SPEC_DATE_YEAR ( 2014 )
1364
1365#define D3D12_SPEC_VERSION ( 1.16 )
1366#define D3D12_SRGB_GAMMA ( 2.2f )
1367#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
1368#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
1369#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
1370#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
1371#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
1372#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
1373#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
1374
1375#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
1376
1377#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
1378
1379#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
1380
1381#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
1382
1383#define D3D12_STANDARD_VECTOR_SIZE ( 4 )
1384
1385#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
1386
1387#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
1388
1389#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
1390
1391#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
1392
1393#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1394
1395#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
1396
1397#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
1398
1399#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
1400
1401#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
1402
1403#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
1404
1405#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
1406
1407#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
1408
1409#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
1410
1411#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1412
1413#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
1414
1415#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
1416
1417#define D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT ( 4096 )
1418
1419#define D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT ( 8 )
1420
1421#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
1422
1423#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
1424
1425#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
1426
1427#define D3D12_UAV_SLOT_COUNT ( 64 )
1428
1429#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
1430
1431#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 )
1432
1433#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 )
1434
1435#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 )
1436
1437#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 )
1438
1439#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff )
1440
1441#define D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX ( 0xff )
1442
1443#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS ( 64 )
1444
1445#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS ( 64 )
1446
1447#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN ( 9 )
1448
1449#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM ( 8 )
1450
1451#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 )
1452
1453#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 )
1454
1455#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
1456
1457#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
1458
1459#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
1460
1461#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
1462
1463#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
1464
1465#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1466
1467#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
1468
1469#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
1470
1471#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
1472
1473#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1474
1475#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1476
1477#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
1478
1479#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
1480
1481#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
1482
1483#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
1484
1485#define D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES ( 8 )
1486
1487#define D3D12_WORK_GRAPHS_MAX_NODE_DEPTH ( 32 )
1488
1489#endif
1490
1491typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
1492
1493typedef
1494enum D3D12_COMMAND_LIST_TYPE
1495 {
1496 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
1497 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
1498 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
1499 D3D12_COMMAND_LIST_TYPE_COPY = 3,
1500 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
1501 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
1502 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
1503 D3D12_COMMAND_LIST_TYPE_NONE = -1
1504 } D3D12_COMMAND_LIST_TYPE;
1505
1506typedef
1507enum D3D12_COMMAND_QUEUE_FLAGS
1508 {
1509 D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
1510 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
1511 D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2
1512 } D3D12_COMMAND_QUEUE_FLAGS;
1513
1514DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )
1515typedef
1516enum D3D12_COMMAND_QUEUE_PRIORITY
1517 {
1518 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
1519 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
1520 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
1521 } D3D12_COMMAND_QUEUE_PRIORITY;
1522
1523typedef struct D3D12_COMMAND_QUEUE_DESC
1524 {
1525 D3D12_COMMAND_LIST_TYPE Type;
1526 INT Priority;
1527 D3D12_COMMAND_QUEUE_FLAGS Flags;
1528 UINT NodeMask;
1529 } D3D12_COMMAND_QUEUE_DESC;
1530
1531typedef
1532enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
1533 {
1534 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
1535 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
1536 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
1537 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
1538 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
1539 } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
1540
1541typedef
1542enum D3D12_INPUT_CLASSIFICATION
1543 {
1544 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
1545 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
1546 } D3D12_INPUT_CLASSIFICATION;
1547
1548typedef struct D3D12_INPUT_ELEMENT_DESC
1549 {
1550 LPCSTR SemanticName;
1551 UINT SemanticIndex;
1552 DXGI_FORMAT Format;
1553 UINT InputSlot;
1554 UINT AlignedByteOffset;
1555 D3D12_INPUT_CLASSIFICATION InputSlotClass;
1556 UINT InstanceDataStepRate;
1557 } D3D12_INPUT_ELEMENT_DESC;
1558
1559typedef
1560enum D3D12_FILL_MODE
1561 {
1562 D3D12_FILL_MODE_WIREFRAME = 2,
1563 D3D12_FILL_MODE_SOLID = 3
1564 } D3D12_FILL_MODE;
1565
1566typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
1567
1568typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
1569
1570typedef
1571enum D3D12_CULL_MODE
1572 {
1573 D3D12_CULL_MODE_NONE = 1,
1574 D3D12_CULL_MODE_FRONT = 2,
1575 D3D12_CULL_MODE_BACK = 3
1576 } D3D12_CULL_MODE;
1577
1578typedef struct D3D12_SO_DECLARATION_ENTRY
1579 {
1580 UINT Stream;
1581 LPCSTR SemanticName;
1582 UINT SemanticIndex;
1583 BYTE StartComponent;
1584 BYTE ComponentCount;
1585 BYTE OutputSlot;
1586 } D3D12_SO_DECLARATION_ENTRY;
1587
1588typedef struct D3D12_VIEWPORT
1589 {
1590 FLOAT TopLeftX;
1591 FLOAT TopLeftY;
1592 FLOAT Width;
1593 FLOAT Height;
1594 FLOAT MinDepth;
1595 FLOAT MaxDepth;
1596 } D3D12_VIEWPORT;
1597
1598typedef RECT D3D12_RECT;
1599
1600typedef struct D3D12_BOX
1601 {
1602 UINT left;
1603 UINT top;
1604 UINT front;
1605 UINT right;
1606 UINT bottom;
1607 UINT back;
1608 } D3D12_BOX;
1609
1610#ifdef __midl
1611#ifndef LUID_DEFINED
1612#define LUID_DEFINED 1
1613typedef struct __LUID
1614 {
1615 DWORD LowPart;
1616 LONG HighPart;
1617 } LUID;
1618
1619typedef struct __LUID *PLUID;
1620
1621#endif
1622#endif
1623typedef
1624enum D3D12_COMPARISON_FUNC
1625 {
1626 D3D12_COMPARISON_FUNC_NONE = 0,
1627 D3D12_COMPARISON_FUNC_NEVER = 1,
1628 D3D12_COMPARISON_FUNC_LESS = 2,
1629 D3D12_COMPARISON_FUNC_EQUAL = 3,
1630 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
1631 D3D12_COMPARISON_FUNC_GREATER = 5,
1632 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
1633 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
1634 D3D12_COMPARISON_FUNC_ALWAYS = 8
1635 } D3D12_COMPARISON_FUNC;
1636
1637typedef
1638enum D3D12_DEPTH_WRITE_MASK
1639 {
1640 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
1641 D3D12_DEPTH_WRITE_MASK_ALL = 1
1642 } D3D12_DEPTH_WRITE_MASK;
1643
1644typedef
1645enum D3D12_STENCIL_OP
1646 {
1647 D3D12_STENCIL_OP_KEEP = 1,
1648 D3D12_STENCIL_OP_ZERO = 2,
1649 D3D12_STENCIL_OP_REPLACE = 3,
1650 D3D12_STENCIL_OP_INCR_SAT = 4,
1651 D3D12_STENCIL_OP_DECR_SAT = 5,
1652 D3D12_STENCIL_OP_INVERT = 6,
1653 D3D12_STENCIL_OP_INCR = 7,
1654 D3D12_STENCIL_OP_DECR = 8
1655 } D3D12_STENCIL_OP;
1656
1657typedef struct D3D12_DEPTH_STENCILOP_DESC
1658 {
1659 D3D12_STENCIL_OP StencilFailOp;
1660 D3D12_STENCIL_OP StencilDepthFailOp;
1661 D3D12_STENCIL_OP StencilPassOp;
1662 D3D12_COMPARISON_FUNC StencilFunc;
1663 } D3D12_DEPTH_STENCILOP_DESC;
1664
1665typedef struct D3D12_DEPTH_STENCIL_DESC
1666 {
1667 BOOL DepthEnable;
1668 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1669 D3D12_COMPARISON_FUNC DepthFunc;
1670 BOOL StencilEnable;
1671 UINT8 StencilReadMask;
1672 UINT8 StencilWriteMask;
1673 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1674 D3D12_DEPTH_STENCILOP_DESC BackFace;
1675 } D3D12_DEPTH_STENCIL_DESC;
1676
1677typedef struct D3D12_DEPTH_STENCIL_DESC1
1678 {
1679 BOOL DepthEnable;
1680 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1681 D3D12_COMPARISON_FUNC DepthFunc;
1682 BOOL StencilEnable;
1683 UINT8 StencilReadMask;
1684 UINT8 StencilWriteMask;
1685 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1686 D3D12_DEPTH_STENCILOP_DESC BackFace;
1687 BOOL DepthBoundsTestEnable;
1688 } D3D12_DEPTH_STENCIL_DESC1;
1689
1690typedef struct D3D12_DEPTH_STENCILOP_DESC1
1691 {
1692 D3D12_STENCIL_OP StencilFailOp;
1693 D3D12_STENCIL_OP StencilDepthFailOp;
1694 D3D12_STENCIL_OP StencilPassOp;
1695 D3D12_COMPARISON_FUNC StencilFunc;
1696 UINT8 StencilReadMask;
1697 UINT8 StencilWriteMask;
1698 } D3D12_DEPTH_STENCILOP_DESC1;
1699
1700typedef struct D3D12_DEPTH_STENCIL_DESC2
1701 {
1702 BOOL DepthEnable;
1703 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1704 D3D12_COMPARISON_FUNC DepthFunc;
1705 BOOL StencilEnable;
1706 D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
1707 D3D12_DEPTH_STENCILOP_DESC1 BackFace;
1708 BOOL DepthBoundsTestEnable;
1709 } D3D12_DEPTH_STENCIL_DESC2;
1710
1711typedef
1712enum D3D12_BLEND
1713 {
1714 D3D12_BLEND_ZERO = 1,
1715 D3D12_BLEND_ONE = 2,
1716 D3D12_BLEND_SRC_COLOR = 3,
1717 D3D12_BLEND_INV_SRC_COLOR = 4,
1718 D3D12_BLEND_SRC_ALPHA = 5,
1719 D3D12_BLEND_INV_SRC_ALPHA = 6,
1720 D3D12_BLEND_DEST_ALPHA = 7,
1721 D3D12_BLEND_INV_DEST_ALPHA = 8,
1722 D3D12_BLEND_DEST_COLOR = 9,
1723 D3D12_BLEND_INV_DEST_COLOR = 10,
1724 D3D12_BLEND_SRC_ALPHA_SAT = 11,
1725 D3D12_BLEND_BLEND_FACTOR = 14,
1726 D3D12_BLEND_INV_BLEND_FACTOR = 15,
1727 D3D12_BLEND_SRC1_COLOR = 16,
1728 D3D12_BLEND_INV_SRC1_COLOR = 17,
1729 D3D12_BLEND_SRC1_ALPHA = 18,
1730 D3D12_BLEND_INV_SRC1_ALPHA = 19,
1731 D3D12_BLEND_ALPHA_FACTOR = 20,
1732 D3D12_BLEND_INV_ALPHA_FACTOR = 21
1733 } D3D12_BLEND;
1734
1735typedef
1736enum D3D12_BLEND_OP
1737 {
1738 D3D12_BLEND_OP_ADD = 1,
1739 D3D12_BLEND_OP_SUBTRACT = 2,
1740 D3D12_BLEND_OP_REV_SUBTRACT = 3,
1741 D3D12_BLEND_OP_MIN = 4,
1742 D3D12_BLEND_OP_MAX = 5
1743 } D3D12_BLEND_OP;
1744
1745typedef
1746enum D3D12_COLOR_WRITE_ENABLE
1747 {
1748 D3D12_COLOR_WRITE_ENABLE_RED = 1,
1749 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
1750 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
1751 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
1752 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 )
1753 } D3D12_COLOR_WRITE_ENABLE;
1754
1755typedef
1756enum D3D12_LOGIC_OP
1757 {
1758 D3D12_LOGIC_OP_CLEAR = 0,
1759 D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
1760 D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
1761 D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
1762 D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
1763 D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
1764 D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
1765 D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
1766 D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
1767 D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
1768 D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
1769 D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
1770 D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
1771 D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
1772 D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
1773 D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
1774 } D3D12_LOGIC_OP;
1775
1776typedef struct D3D12_RENDER_TARGET_BLEND_DESC
1777 {
1778 BOOL BlendEnable;
1779 BOOL LogicOpEnable;
1780 D3D12_BLEND SrcBlend;
1781 D3D12_BLEND DestBlend;
1782 D3D12_BLEND_OP BlendOp;
1783 D3D12_BLEND SrcBlendAlpha;
1784 D3D12_BLEND DestBlendAlpha;
1785 D3D12_BLEND_OP BlendOpAlpha;
1786 D3D12_LOGIC_OP LogicOp;
1787 UINT8 RenderTargetWriteMask;
1788 } D3D12_RENDER_TARGET_BLEND_DESC;
1789
1790typedef struct D3D12_BLEND_DESC
1791 {
1792 BOOL AlphaToCoverageEnable;
1793 BOOL IndependentBlendEnable;
1794 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
1795 } D3D12_BLEND_DESC;
1796
1797/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
1798 IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
1799typedef
1800enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
1801 {
1802 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
1803 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
1804 } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
1805
1806typedef struct D3D12_RASTERIZER_DESC
1807 {
1808 D3D12_FILL_MODE FillMode;
1809 D3D12_CULL_MODE CullMode;
1810 BOOL FrontCounterClockwise;
1811 INT DepthBias;
1812 FLOAT DepthBiasClamp;
1813 FLOAT SlopeScaledDepthBias;
1814 BOOL DepthClipEnable;
1815 BOOL MultisampleEnable;
1816 BOOL AntialiasedLineEnable;
1817 UINT ForcedSampleCount;
1818 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1819 } D3D12_RASTERIZER_DESC;
1820
1821typedef struct D3D12_RASTERIZER_DESC1
1822 {
1823 D3D12_FILL_MODE FillMode;
1824 D3D12_CULL_MODE CullMode;
1825 BOOL FrontCounterClockwise;
1826 FLOAT DepthBias;
1827 FLOAT DepthBiasClamp;
1828 FLOAT SlopeScaledDepthBias;
1829 BOOL DepthClipEnable;
1830 BOOL MultisampleEnable;
1831 BOOL AntialiasedLineEnable;
1832 UINT ForcedSampleCount;
1833 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1834 } D3D12_RASTERIZER_DESC1;
1835
1836typedef
1837enum D3D12_LINE_RASTERIZATION_MODE
1838 {
1839 D3D12_LINE_RASTERIZATION_MODE_ALIASED = 0,
1840 D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED = ( D3D12_LINE_RASTERIZATION_MODE_ALIASED + 1 ) ,
1841 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE = ( D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED + 1 ) ,
1842 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW = ( D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE + 1 )
1843 } D3D12_LINE_RASTERIZATION_MODE;
1844
1845typedef struct D3D12_RASTERIZER_DESC2
1846 {
1847 D3D12_FILL_MODE FillMode;
1848 D3D12_CULL_MODE CullMode;
1849 BOOL FrontCounterClockwise;
1850 FLOAT DepthBias;
1851 FLOAT DepthBiasClamp;
1852 FLOAT SlopeScaledDepthBias;
1853 BOOL DepthClipEnable;
1854 D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
1855 UINT ForcedSampleCount;
1856 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1857 } D3D12_RASTERIZER_DESC2;
1858
1859
1860
1861extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
1862extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
1863
1864#ifndef __ID3D12Object_INTERFACE_DEFINED__
1865#define __ID3D12Object_INTERFACE_DEFINED__
1866
1867/* interface ID3D12Object */
1868/* [unique][local][object][uuid] */
1869
1870
1871EXTERN_C const IID IID_ID3D12Object;
1872
1873#if defined(__cplusplus) && !defined(CINTERFACE)
1874
1875 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
1876 ID3D12Object : public IUnknown
1877 {
1878 public:
1879 virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
1880 _In_ REFGUID guid,
1881 _Inout_ UINT *pDataSize,
1882 _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
1883
1884 virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
1885 _In_ REFGUID guid,
1886 _In_ UINT DataSize,
1887 _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
1888
1889 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
1890 _In_ REFGUID guid,
1891 _In_opt_ const IUnknown *pData) = 0;
1892
1893 virtual HRESULT STDMETHODCALLTYPE SetName(
1894 _In_z_ LPCWSTR Name) = 0;
1895
1896 };
1897
1898
1899#else /* C style interface */
1900
1901 typedef struct ID3D12ObjectVtbl
1902 {
1903 BEGIN_INTERFACE
1904
1905 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1906 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1907 ID3D12Object * This,
1908 REFIID riid,
1909 _COM_Outptr_ void **ppvObject);
1910
1911 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1912 ULONG ( STDMETHODCALLTYPE *AddRef )(
1913 ID3D12Object * This);
1914
1915 DECLSPEC_XFGVIRT(IUnknown, Release)
1916 ULONG ( STDMETHODCALLTYPE *Release )(
1917 ID3D12Object * This);
1918
1919 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1920 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1921 ID3D12Object * This,
1922 _In_ REFGUID guid,
1923 _Inout_ UINT *pDataSize,
1924 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1925
1926 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1927 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1928 ID3D12Object * This,
1929 _In_ REFGUID guid,
1930 _In_ UINT DataSize,
1931 _In_reads_bytes_opt_( DataSize ) const void *pData);
1932
1933 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1934 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1935 ID3D12Object * This,
1936 _In_ REFGUID guid,
1937 _In_opt_ const IUnknown *pData);
1938
1939 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1940 HRESULT ( STDMETHODCALLTYPE *SetName )(
1941 ID3D12Object * This,
1942 _In_z_ LPCWSTR Name);
1943
1944 END_INTERFACE
1945 } ID3D12ObjectVtbl;
1946
1947 interface ID3D12Object
1948 {
1949 CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
1950 };
1951
1952
1953
1954#ifdef COBJMACROS
1955
1956
1957#define ID3D12Object_QueryInterface(This,riid,ppvObject) \
1958 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1959
1960#define ID3D12Object_AddRef(This) \
1961 ( (This)->lpVtbl -> AddRef(This) )
1962
1963#define ID3D12Object_Release(This) \
1964 ( (This)->lpVtbl -> Release(This) )
1965
1966
1967#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
1968 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1969
1970#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
1971 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1972
1973#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
1974 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1975
1976#define ID3D12Object_SetName(This,Name) \
1977 ( (This)->lpVtbl -> SetName(This,Name) )
1978
1979#endif /* COBJMACROS */
1980
1981
1982#endif /* C style interface */
1983
1984
1985
1986
1987#endif /* __ID3D12Object_INTERFACE_DEFINED__ */
1988
1989
1990#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
1991#define __ID3D12DeviceChild_INTERFACE_DEFINED__
1992
1993/* interface ID3D12DeviceChild */
1994/* [unique][local][object][uuid] */
1995
1996
1997EXTERN_C const IID IID_ID3D12DeviceChild;
1998
1999#if defined(__cplusplus) && !defined(CINTERFACE)
2000
2001 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
2002 ID3D12DeviceChild : public ID3D12Object
2003 {
2004 public:
2005 virtual HRESULT STDMETHODCALLTYPE GetDevice(
2006 REFIID riid,
2007 _COM_Outptr_opt_ void **ppvDevice) = 0;
2008
2009 };
2010
2011
2012#else /* C style interface */
2013
2014 typedef struct ID3D12DeviceChildVtbl
2015 {
2016 BEGIN_INTERFACE
2017
2018 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2019 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2020 ID3D12DeviceChild * This,
2021 REFIID riid,
2022 _COM_Outptr_ void **ppvObject);
2023
2024 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2025 ULONG ( STDMETHODCALLTYPE *AddRef )(
2026 ID3D12DeviceChild * This);
2027
2028 DECLSPEC_XFGVIRT(IUnknown, Release)
2029 ULONG ( STDMETHODCALLTYPE *Release )(
2030 ID3D12DeviceChild * This);
2031
2032 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2033 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2034 ID3D12DeviceChild * This,
2035 _In_ REFGUID guid,
2036 _Inout_ UINT *pDataSize,
2037 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2038
2039 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2040 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2041 ID3D12DeviceChild * This,
2042 _In_ REFGUID guid,
2043 _In_ UINT DataSize,
2044 _In_reads_bytes_opt_( DataSize ) const void *pData);
2045
2046 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2047 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2048 ID3D12DeviceChild * This,
2049 _In_ REFGUID guid,
2050 _In_opt_ const IUnknown *pData);
2051
2052 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2053 HRESULT ( STDMETHODCALLTYPE *SetName )(
2054 ID3D12DeviceChild * This,
2055 _In_z_ LPCWSTR Name);
2056
2057 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2058 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2059 ID3D12DeviceChild * This,
2060 REFIID riid,
2061 _COM_Outptr_opt_ void **ppvDevice);
2062
2063 END_INTERFACE
2064 } ID3D12DeviceChildVtbl;
2065
2066 interface ID3D12DeviceChild
2067 {
2068 CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
2069 };
2070
2071
2072
2073#ifdef COBJMACROS
2074
2075
2076#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
2077 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2078
2079#define ID3D12DeviceChild_AddRef(This) \
2080 ( (This)->lpVtbl -> AddRef(This) )
2081
2082#define ID3D12DeviceChild_Release(This) \
2083 ( (This)->lpVtbl -> Release(This) )
2084
2085
2086#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
2087 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2088
2089#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
2090 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2091
2092#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
2093 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2094
2095#define ID3D12DeviceChild_SetName(This,Name) \
2096 ( (This)->lpVtbl -> SetName(This,Name) )
2097
2098
2099#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
2100 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2101
2102#endif /* COBJMACROS */
2103
2104
2105#endif /* C style interface */
2106
2107
2108
2109
2110#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
2111
2112
2113#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
2114#define __ID3D12RootSignature_INTERFACE_DEFINED__
2115
2116/* interface ID3D12RootSignature */
2117/* [unique][local][object][uuid] */
2118
2119
2120EXTERN_C const IID IID_ID3D12RootSignature;
2121
2122#if defined(__cplusplus) && !defined(CINTERFACE)
2123
2124 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
2125 ID3D12RootSignature : public ID3D12DeviceChild
2126 {
2127 public:
2128 };
2129
2130
2131#else /* C style interface */
2132
2133 typedef struct ID3D12RootSignatureVtbl
2134 {
2135 BEGIN_INTERFACE
2136
2137 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2138 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2139 ID3D12RootSignature * This,
2140 REFIID riid,
2141 _COM_Outptr_ void **ppvObject);
2142
2143 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2144 ULONG ( STDMETHODCALLTYPE *AddRef )(
2145 ID3D12RootSignature * This);
2146
2147 DECLSPEC_XFGVIRT(IUnknown, Release)
2148 ULONG ( STDMETHODCALLTYPE *Release )(
2149 ID3D12RootSignature * This);
2150
2151 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2152 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2153 ID3D12RootSignature * This,
2154 _In_ REFGUID guid,
2155 _Inout_ UINT *pDataSize,
2156 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2157
2158 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2159 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2160 ID3D12RootSignature * This,
2161 _In_ REFGUID guid,
2162 _In_ UINT DataSize,
2163 _In_reads_bytes_opt_( DataSize ) const void *pData);
2164
2165 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2166 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2167 ID3D12RootSignature * This,
2168 _In_ REFGUID guid,
2169 _In_opt_ const IUnknown *pData);
2170
2171 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2172 HRESULT ( STDMETHODCALLTYPE *SetName )(
2173 ID3D12RootSignature * This,
2174 _In_z_ LPCWSTR Name);
2175
2176 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2177 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2178 ID3D12RootSignature * This,
2179 REFIID riid,
2180 _COM_Outptr_opt_ void **ppvDevice);
2181
2182 END_INTERFACE
2183 } ID3D12RootSignatureVtbl;
2184
2185 interface ID3D12RootSignature
2186 {
2187 CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
2188 };
2189
2190
2191
2192#ifdef COBJMACROS
2193
2194
2195#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
2196 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2197
2198#define ID3D12RootSignature_AddRef(This) \
2199 ( (This)->lpVtbl -> AddRef(This) )
2200
2201#define ID3D12RootSignature_Release(This) \
2202 ( (This)->lpVtbl -> Release(This) )
2203
2204
2205#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
2206 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2207
2208#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
2209 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2210
2211#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
2212 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2213
2214#define ID3D12RootSignature_SetName(This,Name) \
2215 ( (This)->lpVtbl -> SetName(This,Name) )
2216
2217
2218#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
2219 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2220
2221
2222#endif /* COBJMACROS */
2223
2224
2225#endif /* C style interface */
2226
2227
2228
2229
2230#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
2231
2232
2233/* interface __MIDL_itf_d3d12_0000_0001 */
2234/* [local] */
2235
2236typedef struct D3D12_SHADER_BYTECODE
2237 {
2238 _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
2239 SIZE_T BytecodeLength;
2240 } D3D12_SHADER_BYTECODE;
2241
2242typedef struct D3D12_STREAM_OUTPUT_DESC
2243 {
2244 _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
2245 UINT NumEntries;
2246 _Field_size_full_(NumStrides) const UINT *pBufferStrides;
2247 UINT NumStrides;
2248 UINT RasterizedStream;
2249 } D3D12_STREAM_OUTPUT_DESC;
2250
2251typedef struct D3D12_INPUT_LAYOUT_DESC
2252 {
2253 _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
2254 UINT NumElements;
2255 } D3D12_INPUT_LAYOUT_DESC;
2256
2257typedef
2258enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
2259 {
2260 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
2261 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
2262 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
2263 } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
2264
2265typedef
2266enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
2267 {
2268 D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
2269 D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
2270 } D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
2271
2272typedef struct D3D12_CACHED_PIPELINE_STATE
2273 {
2274 _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
2275 SIZE_T CachedBlobSizeInBytes;
2276 } D3D12_CACHED_PIPELINE_STATE;
2277
2278typedef
2279enum D3D12_PIPELINE_STATE_FLAGS
2280 {
2281 D3D12_PIPELINE_STATE_FLAG_NONE = 0,
2282 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
2283 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
2284 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8
2285 } D3D12_PIPELINE_STATE_FLAGS;
2286
2287DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )
2288typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
2289 {
2290 ID3D12RootSignature *pRootSignature;
2291 D3D12_SHADER_BYTECODE VS;
2292 D3D12_SHADER_BYTECODE PS;
2293 D3D12_SHADER_BYTECODE DS;
2294 D3D12_SHADER_BYTECODE HS;
2295 D3D12_SHADER_BYTECODE GS;
2296 D3D12_STREAM_OUTPUT_DESC StreamOutput;
2297 D3D12_BLEND_DESC BlendState;
2298 UINT SampleMask;
2299 D3D12_RASTERIZER_DESC RasterizerState;
2300 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
2301 D3D12_INPUT_LAYOUT_DESC InputLayout;
2302 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
2303 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
2304 UINT NumRenderTargets;
2305 DXGI_FORMAT RTVFormats[ 8 ];
2306 DXGI_FORMAT DSVFormat;
2307 DXGI_SAMPLE_DESC SampleDesc;
2308 UINT NodeMask;
2309 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2310 D3D12_PIPELINE_STATE_FLAGS Flags;
2311 } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
2312
2313typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
2314 {
2315 ID3D12RootSignature *pRootSignature;
2316 D3D12_SHADER_BYTECODE CS;
2317 UINT NodeMask;
2318 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2319 D3D12_PIPELINE_STATE_FLAGS Flags;
2320 } D3D12_COMPUTE_PIPELINE_STATE_DESC;
2321
2322typedef
2323enum D3D_ROOT_SIGNATURE_VERSION
2324 {
2325 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
2326 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2327 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
2328 D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3
2329 } D3D_ROOT_SIGNATURE_VERSION;
2330
2331typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
2332 {
2333 _Field_size_bytes_full_(SerializedBlobSizeInBytes) const void *pSerializedBlob;
2334 SIZE_T SerializedBlobSizeInBytes;
2335 } D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
2336
2337typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
2338 {
2339 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
2340 } D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
2341
2342typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
2343 {
2344 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
2345 } D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
2346
2347struct D3D12_RT_FORMAT_ARRAY
2348 {
2349 DXGI_FORMAT RTFormats[ 8 ];
2350 UINT NumRenderTargets;
2351 } ;
2352typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
2353 {
2354 _In_ SIZE_T SizeInBytes;
2355 _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
2356 } D3D12_PIPELINE_STATE_STREAM_DESC;
2357
2358typedef
2359enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
2360 {
2361 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
2362 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
2363 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
2364 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
2365 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
2366 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
2367 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
2368 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
2369 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
2370 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
2371 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
2372 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
2373 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
2374 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
2375 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
2376 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
2377 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
2378 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
2379 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
2380 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
2381 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
2382 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
2383 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
2384 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24,
2385 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25,
2386 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26,
2387 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27,
2388 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28,
2389 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29,
2390 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE + 1 )
2391 } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
2392
2393typedef
2394enum D3D12_FEATURE
2395 {
2396 D3D12_FEATURE_D3D12_OPTIONS = 0,
2397 D3D12_FEATURE_ARCHITECTURE = 1,
2398 D3D12_FEATURE_FEATURE_LEVELS = 2,
2399 D3D12_FEATURE_FORMAT_SUPPORT = 3,
2400 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
2401 D3D12_FEATURE_FORMAT_INFO = 5,
2402 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
2403 D3D12_FEATURE_SHADER_MODEL = 7,
2404 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
2405 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
2406 D3D12_FEATURE_ROOT_SIGNATURE = 12,
2407 D3D12_FEATURE_ARCHITECTURE1 = 16,
2408 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
2409 D3D12_FEATURE_SHADER_CACHE = 19,
2410 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
2411 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
2412 D3D12_FEATURE_EXISTING_HEAPS = 22,
2413 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
2414 D3D12_FEATURE_SERIALIZATION = 24,
2415 D3D12_FEATURE_CROSS_NODE = 25,
2416 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
2417 D3D12_FEATURE_DISPLAYABLE = 28,
2418 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
2419 D3D12_FEATURE_QUERY_META_COMMAND = 31,
2420 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
2421 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
2422 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
2423 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
2424 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
2425 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
2426 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
2427 D3D12_FEATURE_D3D12_OPTIONS12 = 41,
2428 D3D12_FEATURE_D3D12_OPTIONS13 = 42,
2429 D3D12_FEATURE_D3D12_OPTIONS14 = 43,
2430 D3D12_FEATURE_D3D12_OPTIONS15 = 44,
2431 D3D12_FEATURE_D3D12_OPTIONS16 = 45,
2432 D3D12_FEATURE_D3D12_OPTIONS17 = 46,
2433 D3D12_FEATURE_D3D12_OPTIONS18 = 47,
2434 D3D12_FEATURE_D3D12_OPTIONS19 = 48,
2435 D3D12_FEATURE_D3D12_OPTIONS20 = 49,
2436 D3D12_FEATURE_PREDICATION = 50,
2437 D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
2438 D3D12_FEATURE_HARDWARE_COPY = 52,
2439 D3D12_FEATURE_D3D12_OPTIONS21 = 53,
2440 D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
2441 D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
2442 D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
2443 D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61
2444 } D3D12_FEATURE;
2445
2446typedef
2447enum D3D12_SHADER_MIN_PRECISION_SUPPORT
2448 {
2449 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
2450 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
2451 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
2452 } D3D12_SHADER_MIN_PRECISION_SUPPORT;
2453
2454DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )
2455typedef
2456enum D3D12_TILED_RESOURCES_TIER
2457 {
2458 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
2459 D3D12_TILED_RESOURCES_TIER_1 = 1,
2460 D3D12_TILED_RESOURCES_TIER_2 = 2,
2461 D3D12_TILED_RESOURCES_TIER_3 = 3,
2462 D3D12_TILED_RESOURCES_TIER_4 = 4
2463 } D3D12_TILED_RESOURCES_TIER;
2464
2465typedef
2466enum D3D12_RESOURCE_BINDING_TIER
2467 {
2468 D3D12_RESOURCE_BINDING_TIER_1 = 1,
2469 D3D12_RESOURCE_BINDING_TIER_2 = 2,
2470 D3D12_RESOURCE_BINDING_TIER_3 = 3
2471 } D3D12_RESOURCE_BINDING_TIER;
2472
2473typedef
2474enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
2475 {
2476 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
2477 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
2478 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
2479 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
2480 } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
2481
2482typedef
2483enum D3D12_FORMAT_SUPPORT1
2484 {
2485 D3D12_FORMAT_SUPPORT1_NONE = 0,
2486 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
2487 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
2488 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
2489 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
2490 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
2491 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
2492 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
2493 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
2494 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
2495 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
2496 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
2497 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
2498 D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
2499 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
2500 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
2501 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
2502 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
2503 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
2504 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
2505 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
2506 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
2507 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
2508 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
2509 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
2510 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
2511 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
2512 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
2513 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
2514 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
2515 } D3D12_FORMAT_SUPPORT1;
2516
2517DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )
2518typedef
2519enum D3D12_FORMAT_SUPPORT2
2520 {
2521 D3D12_FORMAT_SUPPORT2_NONE = 0,
2522 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
2523 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
2524 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
2525 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
2526 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
2527 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
2528 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
2529 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
2530 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
2531 D3D12_FORMAT_SUPPORT2_TILED = 0x200,
2532 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
2533 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000,
2534 D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x10000
2535 } D3D12_FORMAT_SUPPORT2;
2536
2537DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )
2538typedef
2539enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
2540 {
2541 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
2542 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
2543 } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
2544
2545DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )
2546typedef
2547enum D3D12_CROSS_NODE_SHARING_TIER
2548 {
2549 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
2550 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
2551 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
2552 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
2553 D3D12_CROSS_NODE_SHARING_TIER_3 = 4
2554 } D3D12_CROSS_NODE_SHARING_TIER;
2555
2556typedef
2557enum D3D12_RESOURCE_HEAP_TIER
2558 {
2559 D3D12_RESOURCE_HEAP_TIER_1 = 1,
2560 D3D12_RESOURCE_HEAP_TIER_2 = 2
2561 } D3D12_RESOURCE_HEAP_TIER;
2562
2563typedef
2564enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
2565 {
2566 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
2567 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
2568 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
2569 } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
2570
2571typedef
2572enum D3D12_VIEW_INSTANCING_TIER
2573 {
2574 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
2575 D3D12_VIEW_INSTANCING_TIER_1 = 1,
2576 D3D12_VIEW_INSTANCING_TIER_2 = 2,
2577 D3D12_VIEW_INSTANCING_TIER_3 = 3
2578 } D3D12_VIEW_INSTANCING_TIER;
2579
2580typedef
2581enum D3D12_WORK_GRAPHS_TIER
2582 {
2583 D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
2584 D3D12_WORK_GRAPHS_TIER_1_0 = 10
2585 } D3D12_WORK_GRAPHS_TIER;
2586
2587typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
2588 {
2589 _Out_ BOOL DoublePrecisionFloatShaderOps;
2590 _Out_ BOOL OutputMergerLogicOp;
2591 _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
2592 _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
2593 _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
2594 _Out_ BOOL PSSpecifiedStencilRefSupported;
2595 _Out_ BOOL TypedUAVLoadAdditionalFormats;
2596 _Out_ BOOL ROVsSupported;
2597 _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
2598 _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
2599 _Out_ BOOL StandardSwizzle64KBSupported;
2600 _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
2601 _Out_ BOOL CrossAdapterRowMajorTextureSupported;
2602 _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
2603 _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
2604 } D3D12_FEATURE_DATA_D3D12_OPTIONS;
2605
2606typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
2607 {
2608 _Out_ BOOL WaveOps;
2609 _Out_ UINT WaveLaneCountMin;
2610 _Out_ UINT WaveLaneCountMax;
2611 _Out_ UINT TotalLaneCount;
2612 _Out_ BOOL ExpandedComputeResourceStates;
2613 _Out_ BOOL Int64ShaderOps;
2614 } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
2615
2616typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
2617 {
2618 _Out_ BOOL DepthBoundsTestSupported;
2619 _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
2620 } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
2621
2622typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
2623 {
2624 _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
2625 } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
2626
2627typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
2628 {
2629 _In_ UINT NodeIndex;
2630 _Out_ BOOL TileBasedRenderer;
2631 _Out_ BOOL UMA;
2632 _Out_ BOOL CacheCoherentUMA;
2633 } D3D12_FEATURE_DATA_ARCHITECTURE;
2634
2635typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
2636 {
2637 _In_ UINT NodeIndex;
2638 _Out_ BOOL TileBasedRenderer;
2639 _Out_ BOOL UMA;
2640 _Out_ BOOL CacheCoherentUMA;
2641 _Out_ BOOL IsolatedMMU;
2642 } D3D12_FEATURE_DATA_ARCHITECTURE1;
2643
2644typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
2645 {
2646 _In_ UINT NumFeatureLevels;
2647 _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
2648 _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
2649 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
2650
2651typedef
2652enum D3D_SHADER_MODEL
2653 {
2654 D3D_SHADER_MODEL_NONE = 0,
2655 D3D_SHADER_MODEL_5_1 = 0x51,
2656 D3D_SHADER_MODEL_6_0 = 0x60,
2657 D3D_SHADER_MODEL_6_1 = 0x61,
2658 D3D_SHADER_MODEL_6_2 = 0x62,
2659 D3D_SHADER_MODEL_6_3 = 0x63,
2660 D3D_SHADER_MODEL_6_4 = 0x64,
2661 D3D_SHADER_MODEL_6_5 = 0x65,
2662 D3D_SHADER_MODEL_6_6 = 0x66,
2663 D3D_SHADER_MODEL_6_7 = 0x67,
2664 D3D_SHADER_MODEL_6_8 = 0x68,
2665 D3D_SHADER_MODEL_6_9 = 0x69,
2666 D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
2667 } D3D_SHADER_MODEL;
2668
2669typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
2670 {
2671 _Inout_ D3D_SHADER_MODEL HighestShaderModel;
2672 } D3D12_FEATURE_DATA_SHADER_MODEL;
2673
2674typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
2675 {
2676 _In_ DXGI_FORMAT Format;
2677 _Out_ D3D12_FORMAT_SUPPORT1 Support1;
2678 _Out_ D3D12_FORMAT_SUPPORT2 Support2;
2679 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
2680
2681typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
2682 {
2683 _In_ DXGI_FORMAT Format;
2684 _In_ UINT SampleCount;
2685 _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
2686 _Out_ UINT NumQualityLevels;
2687 } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
2688
2689typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
2690 {
2691 DXGI_FORMAT Format;
2692 UINT8 PlaneCount;
2693 } D3D12_FEATURE_DATA_FORMAT_INFO;
2694
2695typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
2696 {
2697 UINT MaxGPUVirtualAddressBitsPerResource;
2698 UINT MaxGPUVirtualAddressBitsPerProcess;
2699 } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
2700
2701typedef
2702enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
2703 {
2704 D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
2705 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
2706 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
2707 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
2708 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
2709 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
2710 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
2711 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
2712 } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
2713
2714DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )
2715typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
2716 {
2717 _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
2718 } D3D12_FEATURE_DATA_SHADER_CACHE;
2719
2720typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
2721 {
2722 _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
2723 _In_ UINT Priority;
2724 _Out_ BOOL PriorityForTypeIsSupported;
2725 } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
2726
2727typedef
2728enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
2729 {
2730 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0,
2731 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
2732 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
2733 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
2734 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) ,
2735 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
2736 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
2737 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
2738 } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
2739
2740DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )
2741typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
2742 {
2743 _Out_ BOOL CopyQueueTimestampQueriesSupported;
2744 _Out_ BOOL CastingFullyTypedFormatSupported;
2745 _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
2746 _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
2747 _Out_ BOOL BarycentricsSupported;
2748 } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
2749
2750typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
2751 {
2752 _Out_ BOOL Supported;
2753 } D3D12_FEATURE_DATA_EXISTING_HEAPS;
2754
2755typedef
2756enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
2757 {
2758 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0,
2759 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) ,
2760 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 + 1 )
2761 } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
2762
2763typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
2764 {
2765 _Out_ BOOL DisplayableTexture;
2766 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2767 } D3D12_FEATURE_DATA_DISPLAYABLE;
2768
2769typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
2770 {
2771 _Out_ BOOL MSAA64KBAlignedTextureSupported;
2772 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2773 _Out_ BOOL Native16BitShaderOpsSupported;
2774 } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
2775
2776typedef
2777enum D3D12_HEAP_SERIALIZATION_TIER
2778 {
2779 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
2780 D3D12_HEAP_SERIALIZATION_TIER_10 = 10
2781 } D3D12_HEAP_SERIALIZATION_TIER;
2782
2783typedef struct D3D12_FEATURE_DATA_SERIALIZATION
2784 {
2785 _In_ UINT NodeIndex;
2786 _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
2787 } D3D12_FEATURE_DATA_SERIALIZATION;
2788
2789typedef struct D3D12_FEATURE_DATA_CROSS_NODE
2790 {
2791 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
2792 BOOL AtomicShaderInstructions;
2793 } D3D12_FEATURE_DATA_CROSS_NODE;
2794
2795typedef
2796enum D3D12_RENDER_PASS_TIER
2797 {
2798 D3D12_RENDER_PASS_TIER_0 = 0,
2799 D3D12_RENDER_PASS_TIER_1 = 1,
2800 D3D12_RENDER_PASS_TIER_2 = 2
2801 } D3D12_RENDER_PASS_TIER;
2802
2803typedef
2804enum D3D12_RAYTRACING_TIER
2805 {
2806 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
2807 D3D12_RAYTRACING_TIER_1_0 = 10,
2808 D3D12_RAYTRACING_TIER_1_1 = 11,
2809 D3D12_RAYTRACING_TIER_1_2 = 12
2810 } D3D12_RAYTRACING_TIER;
2811
2812typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
2813 {
2814 _Out_ BOOL SRVOnlyTiledResourceTier3;
2815 _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier;
2816 _Out_ D3D12_RAYTRACING_TIER RaytracingTier;
2817 } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
2818
2819typedef
2820enum D3D12_VARIABLE_SHADING_RATE_TIER
2821 {
2822 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
2823 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
2824 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2
2825 } D3D12_VARIABLE_SHADING_RATE_TIER;
2826
2827typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
2828 {
2829 _Out_ BOOL AdditionalShadingRatesSupported;
2830 _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
2831 _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
2832 _Out_ UINT ShadingRateImageTileSize;
2833 _Out_ BOOL BackgroundProcessingSupported;
2834 } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
2835
2836typedef
2837enum D3D12_MESH_SHADER_TIER
2838 {
2839 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
2840 D3D12_MESH_SHADER_TIER_1 = 10
2841 } D3D12_MESH_SHADER_TIER;
2842
2843typedef
2844enum D3D12_SAMPLER_FEEDBACK_TIER
2845 {
2846 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
2847 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
2848 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
2849 } D3D12_SAMPLER_FEEDBACK_TIER;
2850
2851typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
2852 {
2853 _Out_ D3D12_MESH_SHADER_TIER MeshShaderTier;
2854 _Out_ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
2855 } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
2856
2857typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
2858 {
2859 _In_ GUID CommandId;
2860 _In_ UINT NodeMask;
2861 _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData;
2862 _In_ SIZE_T QueryInputDataSizeInBytes;
2863 _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData;
2864 _In_ SIZE_T QueryOutputDataSizeInBytes;
2865 } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
2866
2867typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
2868 {
2869 _Out_ BOOL UnalignedBlockTexturesSupported;
2870 } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
2871
2872typedef
2873enum D3D12_WAVE_MMA_TIER
2874 {
2875 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
2876 D3D12_WAVE_MMA_TIER_1_0 = 10
2877 } D3D12_WAVE_MMA_TIER;
2878
2879typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
2880 {
2881 _Out_ BOOL MeshShaderPipelineStatsSupported;
2882 _Out_ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
2883 _Out_ BOOL AtomicInt64OnTypedResourceSupported;
2884 _Out_ BOOL AtomicInt64OnGroupSharedSupported;
2885 _Out_ BOOL DerivativesInMeshAndAmplificationShadersSupported;
2886 _Out_ D3D12_WAVE_MMA_TIER WaveMMATier;
2887 } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
2888
2889typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
2890 {
2891 _Out_ BOOL VariableRateShadingSumCombinerSupported;
2892 _Out_ BOOL MeshShaderPerPrimitiveShadingRateSupported;
2893 } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
2894
2895typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
2896 {
2897 _Out_ BOOL AtomicInt64OnDescriptorHeapResourceSupported;
2898 } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
2899
2900typedef
2901enum D3D12_TRI_STATE
2902 {
2903 D3D12_TRI_STATE_UNKNOWN = -1,
2904 D3D12_TRI_STATE_FALSE = 0,
2905 D3D12_TRI_STATE_TRUE = 1
2906 } D3D12_TRI_STATE;
2907
2908typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
2909 {
2910 _Out_ D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
2911 _Out_ BOOL EnhancedBarriersSupported;
2912 _Out_ BOOL RelaxedFormatCastingSupported;
2913 } D3D12_FEATURE_DATA_D3D12_OPTIONS12;
2914
2915typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
2916 {
2917 _Out_ BOOL UnrestrictedBufferTextureCopyPitchSupported;
2918 _Out_ BOOL UnrestrictedVertexElementAlignmentSupported;
2919 _Out_ BOOL InvertedViewportHeightFlipsYSupported;
2920 _Out_ BOOL InvertedViewportDepthFlipsZSupported;
2921 _Out_ BOOL TextureCopyBetweenDimensionsSupported;
2922 _Out_ BOOL AlphaBlendFactorSupported;
2923 } D3D12_FEATURE_DATA_D3D12_OPTIONS13;
2924
2925typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
2926 {
2927 _Out_ BOOL AdvancedTextureOpsSupported;
2928 _Out_ BOOL WriteableMSAATexturesSupported;
2929 _Out_ BOOL IndependentFrontAndBackStencilRefMaskSupported;
2930 } D3D12_FEATURE_DATA_D3D12_OPTIONS14;
2931
2932typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
2933 {
2934 _Out_ BOOL TriangleFanSupported;
2935 _Out_ BOOL DynamicIndexBufferStripCutSupported;
2936 } D3D12_FEATURE_DATA_D3D12_OPTIONS15;
2937
2938typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
2939 {
2940 _Out_ BOOL DynamicDepthBiasSupported;
2941 _Out_ BOOL GPUUploadHeapSupported;
2942 } D3D12_FEATURE_DATA_D3D12_OPTIONS16;
2943
2944typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
2945 {
2946 _Out_ BOOL NonNormalizedCoordinateSamplersSupported;
2947 _Out_ BOOL ManualWriteTrackingResourceSupported;
2948 } D3D12_FEATURE_DATA_D3D12_OPTIONS17;
2949
2950typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
2951 {
2952 _Out_ BOOL RenderPassesValid;
2953 } D3D12_FEATURE_DATA_D3D12_OPTIONS18;
2954
2955typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
2956 {
2957 BOOL MismatchingOutputDimensionsSupported;
2958 UINT SupportedSampleCountsWithNoOutputs;
2959 BOOL PointSamplingAddressesNeverRoundUp;
2960 BOOL RasterizerDesc2Supported;
2961 BOOL NarrowQuadrilateralLinesSupported;
2962 BOOL AnisoFilterWithPointMipSupported;
2963 UINT MaxSamplerDescriptorHeapSize;
2964 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
2965 UINT MaxViewDescriptorHeapSize;
2966 _Out_ BOOL ComputeOnlyCustomHeapSupported;
2967 } D3D12_FEATURE_DATA_D3D12_OPTIONS19;
2968
2969typedef
2970enum D3D12_RECREATE_AT_TIER
2971 {
2972 D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
2973 D3D12_RECREATE_AT_TIER_1 = 1
2974 } D3D12_RECREATE_AT_TIER;
2975
2976typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
2977 {
2978 _Out_ BOOL ComputeOnlyWriteWatchSupported;
2979 D3D12_RECREATE_AT_TIER RecreateAtTier;
2980 } D3D12_FEATURE_DATA_D3D12_OPTIONS20;
2981
2982typedef
2983enum D3D12_EXECUTE_INDIRECT_TIER
2984 {
2985 D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
2986 D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11
2987 } D3D12_EXECUTE_INDIRECT_TIER;
2988
2989typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
2990 {
2991 _Out_ D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
2992 _Out_ D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
2993 _Out_ BOOL SampleCmpGradientAndBiasSupported;
2994 _Out_ BOOL ExtendedCommandInfoSupported;
2995 } D3D12_FEATURE_DATA_D3D12_OPTIONS21;
2996
2997typedef
2998enum D3D12_TIGHT_ALIGNMENT_TIER
2999 {
3000 D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED = 0,
3001 D3D12_TIGHT_ALIGNMENT_TIER_1 = ( D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED + 1 )
3002 } D3D12_TIGHT_ALIGNMENT_TIER;
3003
3004typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
3005 {
3006 _Out_ D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
3007 } D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
3008
3009typedef struct D3D12_FEATURE_DATA_PREDICATION
3010 {
3011 _Out_ BOOL Supported;
3012 } D3D12_FEATURE_DATA_PREDICATION;
3013
3014typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
3015 {
3016 _Out_ BOOL Supported;
3017 } D3D12_FEATURE_DATA_HARDWARE_COPY;
3018
3019typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
3020 {
3021 _Out_ BOOL Supported;
3022 } D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
3023
3024typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
3025 {
3026 _Out_ BOOL Supported;
3027 } D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
3028
3029typedef struct D3D12_RESOURCE_ALLOCATION_INFO
3030 {
3031 UINT64 SizeInBytes;
3032 UINT64 Alignment;
3033 } D3D12_RESOURCE_ALLOCATION_INFO;
3034
3035typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
3036 {
3037 UINT64 Offset;
3038 UINT64 Alignment;
3039 UINT64 SizeInBytes;
3040 } D3D12_RESOURCE_ALLOCATION_INFO1;
3041
3042typedef
3043enum D3D12_HEAP_TYPE
3044 {
3045 D3D12_HEAP_TYPE_DEFAULT = 1,
3046 D3D12_HEAP_TYPE_UPLOAD = 2,
3047 D3D12_HEAP_TYPE_READBACK = 3,
3048 D3D12_HEAP_TYPE_CUSTOM = 4,
3049 D3D12_HEAP_TYPE_GPU_UPLOAD = 5
3050 } D3D12_HEAP_TYPE;
3051
3052typedef
3053enum D3D12_CPU_PAGE_PROPERTY
3054 {
3055 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
3056 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
3057 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
3058 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
3059 } D3D12_CPU_PAGE_PROPERTY;
3060
3061typedef
3062enum D3D12_MEMORY_POOL
3063 {
3064 D3D12_MEMORY_POOL_UNKNOWN = 0,
3065 D3D12_MEMORY_POOL_L0 = 1,
3066 D3D12_MEMORY_POOL_L1 = 2
3067 } D3D12_MEMORY_POOL;
3068
3069typedef struct D3D12_HEAP_PROPERTIES
3070 {
3071 D3D12_HEAP_TYPE Type;
3072 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
3073 D3D12_MEMORY_POOL MemoryPoolPreference;
3074 UINT CreationNodeMask;
3075 UINT VisibleNodeMask;
3076 } D3D12_HEAP_PROPERTIES;
3077
3078typedef
3079enum D3D12_HEAP_FLAGS
3080 {
3081 D3D12_HEAP_FLAG_NONE = 0,
3082 D3D12_HEAP_FLAG_SHARED = 0x1,
3083 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
3084 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
3085 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
3086 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
3087 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
3088 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
3089 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
3090 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
3091 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
3092 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
3093 D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
3094 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
3095 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
3096 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
3097 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
3098 } D3D12_HEAP_FLAGS;
3099
3100DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )
3101typedef struct D3D12_HEAP_DESC
3102 {
3103 UINT64 SizeInBytes;
3104 D3D12_HEAP_PROPERTIES Properties;
3105 UINT64 Alignment;
3106 D3D12_HEAP_FLAGS Flags;
3107 } D3D12_HEAP_DESC;
3108
3109typedef
3110enum D3D12_RESOURCE_DIMENSION
3111 {
3112 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
3113 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
3114 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
3115 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
3116 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
3117 } D3D12_RESOURCE_DIMENSION;
3118
3119typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
3120 {
3121 _In_ DXGI_FORMAT Format;
3122 _In_ D3D12_RESOURCE_DIMENSION Dimension;
3123 _In_ D3D12_HEAP_PROPERTIES DestHeapProperties;
3124 _Out_ BOOL Supported;
3125 } D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
3126
3127typedef
3128enum D3D12_TEXTURE_LAYOUT
3129 {
3130 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
3131 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
3132 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
3133 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
3134 } D3D12_TEXTURE_LAYOUT;
3135
3136typedef
3137enum D3D12_RESOURCE_FLAGS
3138 {
3139 D3D12_RESOURCE_FLAG_NONE = 0,
3140 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
3141 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
3142 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
3143 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
3144 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
3145 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
3146 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
3147 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
3148 D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
3149 D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400
3150 } D3D12_RESOURCE_FLAGS;
3151
3152DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )
3153typedef struct D3D12_MIP_REGION
3154 {
3155 UINT Width;
3156 UINT Height;
3157 UINT Depth;
3158 } D3D12_MIP_REGION;
3159
3160typedef struct D3D12_RESOURCE_DESC
3161 {
3162 D3D12_RESOURCE_DIMENSION Dimension;
3163 UINT64 Alignment;
3164 UINT64 Width;
3165 UINT Height;
3166 UINT16 DepthOrArraySize;
3167 UINT16 MipLevels;
3168 DXGI_FORMAT Format;
3169 DXGI_SAMPLE_DESC SampleDesc;
3170 D3D12_TEXTURE_LAYOUT Layout;
3171 D3D12_RESOURCE_FLAGS Flags;
3172 } D3D12_RESOURCE_DESC;
3173
3174typedef struct D3D12_RESOURCE_DESC1
3175 {
3176 D3D12_RESOURCE_DIMENSION Dimension;
3177 UINT64 Alignment;
3178 UINT64 Width;
3179 UINT Height;
3180 UINT16 DepthOrArraySize;
3181 UINT16 MipLevels;
3182 DXGI_FORMAT Format;
3183 DXGI_SAMPLE_DESC SampleDesc;
3184 D3D12_TEXTURE_LAYOUT Layout;
3185 D3D12_RESOURCE_FLAGS Flags;
3186 D3D12_MIP_REGION SamplerFeedbackMipRegion;
3187 } D3D12_RESOURCE_DESC1;
3188
3189typedef struct D3D12_DEPTH_STENCIL_VALUE
3190 {
3191 FLOAT Depth;
3192 UINT8 Stencil;
3193 } D3D12_DEPTH_STENCIL_VALUE;
3194
3195typedef struct D3D12_CLEAR_VALUE
3196 {
3197 DXGI_FORMAT Format;
3198 union
3199 {
3200 FLOAT Color[ 4 ];
3201 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
3202 } ;
3203 } D3D12_CLEAR_VALUE;
3204
3205typedef struct D3D12_RANGE
3206 {
3207 SIZE_T Begin;
3208 SIZE_T End;
3209 } D3D12_RANGE;
3210
3211typedef struct D3D12_RANGE_UINT64
3212 {
3213 UINT64 Begin;
3214 UINT64 End;
3215 } D3D12_RANGE_UINT64;
3216
3217typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
3218 {
3219 UINT Subresource;
3220 D3D12_RANGE_UINT64 Range;
3221 } D3D12_SUBRESOURCE_RANGE_UINT64;
3222
3223typedef struct D3D12_SUBRESOURCE_INFO
3224 {
3225 UINT64 Offset;
3226 UINT RowPitch;
3227 UINT DepthPitch;
3228 } D3D12_SUBRESOURCE_INFO;
3229
3230typedef struct D3D12_TILED_RESOURCE_COORDINATE
3231 {
3232 UINT X;
3233 UINT Y;
3234 UINT Z;
3235 UINT Subresource;
3236 } D3D12_TILED_RESOURCE_COORDINATE;
3237
3238typedef struct D3D12_TILE_REGION_SIZE
3239 {
3240 UINT NumTiles;
3241 BOOL UseBox;
3242 UINT Width;
3243 UINT16 Height;
3244 UINT16 Depth;
3245 } D3D12_TILE_REGION_SIZE;
3246
3247typedef
3248enum D3D12_TILE_RANGE_FLAGS
3249 {
3250 D3D12_TILE_RANGE_FLAG_NONE = 0,
3251 D3D12_TILE_RANGE_FLAG_NULL = 1,
3252 D3D12_TILE_RANGE_FLAG_SKIP = 2,
3253 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
3254 } D3D12_TILE_RANGE_FLAGS;
3255
3256typedef struct D3D12_SUBRESOURCE_TILING
3257 {
3258 UINT WidthInTiles;
3259 UINT16 HeightInTiles;
3260 UINT16 DepthInTiles;
3261 UINT StartTileIndexInOverallResource;
3262 } D3D12_SUBRESOURCE_TILING;
3263
3264typedef struct D3D12_TILE_SHAPE
3265 {
3266 UINT WidthInTexels;
3267 UINT HeightInTexels;
3268 UINT DepthInTexels;
3269 } D3D12_TILE_SHAPE;
3270
3271typedef struct D3D12_PACKED_MIP_INFO
3272 {
3273 UINT8 NumStandardMips;
3274 UINT8 NumPackedMips;
3275 UINT NumTilesForPackedMips;
3276 UINT StartTileIndexInOverallResource;
3277 } D3D12_PACKED_MIP_INFO;
3278
3279typedef
3280enum D3D12_TILE_MAPPING_FLAGS
3281 {
3282 D3D12_TILE_MAPPING_FLAG_NONE = 0,
3283 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
3284 } D3D12_TILE_MAPPING_FLAGS;
3285
3286DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )
3287typedef
3288enum D3D12_TILE_COPY_FLAGS
3289 {
3290 D3D12_TILE_COPY_FLAG_NONE = 0,
3291 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
3292 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
3293 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
3294 } D3D12_TILE_COPY_FLAGS;
3295
3296DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )
3297typedef
3298enum D3D12_RESOURCE_STATES
3299 {
3300 D3D12_RESOURCE_STATE_COMMON = 0,
3301 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
3302 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
3303 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
3304 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
3305 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
3306 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
3307 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
3308 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
3309 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
3310 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
3311 D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
3312 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
3313 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
3314 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
3315 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
3316 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
3317 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
3318 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
3319 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
3320 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
3321 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
3322 D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
3323 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = ( 0x40 | 0x80 ) ,
3324 D3D12_RESOURCE_STATE_PRESENT = 0,
3325 D3D12_RESOURCE_STATE_PREDICATION = 0x200,
3326 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
3327 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
3328 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
3329 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
3330 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
3331 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
3332 } D3D12_RESOURCE_STATES;
3333
3334DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )
3335typedef
3336enum D3D12_RESOURCE_BARRIER_TYPE
3337 {
3338 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
3339 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
3340 D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
3341 } D3D12_RESOURCE_BARRIER_TYPE;
3342
3343
3344typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
3345 {
3346 ID3D12Resource *pResource;
3347 UINT Subresource;
3348 D3D12_RESOURCE_STATES StateBefore;
3349 D3D12_RESOURCE_STATES StateAfter;
3350 } D3D12_RESOURCE_TRANSITION_BARRIER;
3351
3352typedef struct D3D12_RESOURCE_ALIASING_BARRIER
3353 {
3354 ID3D12Resource *pResourceBefore;
3355 ID3D12Resource *pResourceAfter;
3356 } D3D12_RESOURCE_ALIASING_BARRIER;
3357
3358typedef struct D3D12_RESOURCE_UAV_BARRIER
3359 {
3360 ID3D12Resource *pResource;
3361 } D3D12_RESOURCE_UAV_BARRIER;
3362
3363typedef
3364enum D3D12_RESOURCE_BARRIER_FLAGS
3365 {
3366 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
3367 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
3368 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
3369 } D3D12_RESOURCE_BARRIER_FLAGS;
3370
3371DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )
3372typedef struct D3D12_RESOURCE_BARRIER
3373 {
3374 D3D12_RESOURCE_BARRIER_TYPE Type;
3375 D3D12_RESOURCE_BARRIER_FLAGS Flags;
3376 union
3377 {
3378 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
3379 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
3380 D3D12_RESOURCE_UAV_BARRIER UAV;
3381 } ;
3382 } D3D12_RESOURCE_BARRIER;
3383
3384typedef struct D3D12_SUBRESOURCE_FOOTPRINT
3385 {
3386 DXGI_FORMAT Format;
3387 UINT Width;
3388 UINT Height;
3389 UINT Depth;
3390 UINT RowPitch;
3391 } D3D12_SUBRESOURCE_FOOTPRINT;
3392
3393typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
3394 {
3395 UINT64 Offset;
3396 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
3397 } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
3398
3399typedef
3400enum D3D12_TEXTURE_COPY_TYPE
3401 {
3402 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
3403 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
3404 } D3D12_TEXTURE_COPY_TYPE;
3405
3406typedef struct D3D12_TEXTURE_COPY_LOCATION
3407 {
3408 ID3D12Resource *pResource;
3409 D3D12_TEXTURE_COPY_TYPE Type;
3410 union
3411 {
3412 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
3413 UINT SubresourceIndex;
3414 } ;
3415 } D3D12_TEXTURE_COPY_LOCATION;
3416
3417typedef
3418enum D3D12_RESOLVE_MODE
3419 {
3420 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
3421 D3D12_RESOLVE_MODE_MIN = 1,
3422 D3D12_RESOLVE_MODE_MAX = 2,
3423 D3D12_RESOLVE_MODE_AVERAGE = 3,
3424 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
3425 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
3426 } D3D12_RESOLVE_MODE;
3427
3428typedef struct D3D12_SAMPLE_POSITION
3429 {
3430 INT8 X;
3431 INT8 Y;
3432 } D3D12_SAMPLE_POSITION;
3433
3434typedef struct D3D12_VIEW_INSTANCE_LOCATION
3435 {
3436 UINT ViewportArrayIndex;
3437 UINT RenderTargetArrayIndex;
3438 } D3D12_VIEW_INSTANCE_LOCATION;
3439
3440typedef
3441enum D3D12_VIEW_INSTANCING_FLAGS
3442 {
3443 D3D12_VIEW_INSTANCING_FLAG_NONE = 0,
3444 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
3445 } D3D12_VIEW_INSTANCING_FLAGS;
3446
3447DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )
3448typedef struct D3D12_VIEW_INSTANCING_DESC
3449 {
3450 UINT ViewInstanceCount;
3451 _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
3452 D3D12_VIEW_INSTANCING_FLAGS Flags;
3453 } D3D12_VIEW_INSTANCING_DESC;
3454
3455typedef
3456enum D3D12_SHADER_COMPONENT_MAPPING
3457 {
3458 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
3459 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
3460 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
3461 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
3462 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
3463 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
3464 } D3D12_SHADER_COMPONENT_MAPPING;
3465
3466#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
3467#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
3468#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
3469#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
3470 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
3471 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
3472 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
3473 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
3474#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))
3475#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
3476typedef
3477enum D3D12_BUFFER_SRV_FLAGS
3478 {
3479 D3D12_BUFFER_SRV_FLAG_NONE = 0,
3480 D3D12_BUFFER_SRV_FLAG_RAW = 0x1
3481 } D3D12_BUFFER_SRV_FLAGS;
3482
3483DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )
3484typedef struct D3D12_BUFFER_SRV
3485 {
3486 UINT64 FirstElement;
3487 UINT NumElements;
3488 UINT StructureByteStride;
3489 D3D12_BUFFER_SRV_FLAGS Flags;
3490 } D3D12_BUFFER_SRV;
3491
3492typedef struct D3D12_TEX1D_SRV
3493 {
3494 UINT MostDetailedMip;
3495 UINT MipLevels;
3496 FLOAT ResourceMinLODClamp;
3497 } D3D12_TEX1D_SRV;
3498
3499typedef struct D3D12_TEX1D_ARRAY_SRV
3500 {
3501 UINT MostDetailedMip;
3502 UINT MipLevels;
3503 UINT FirstArraySlice;
3504 UINT ArraySize;
3505 FLOAT ResourceMinLODClamp;
3506 } D3D12_TEX1D_ARRAY_SRV;
3507
3508typedef struct D3D12_TEX2D_SRV
3509 {
3510 UINT MostDetailedMip;
3511 UINT MipLevels;
3512 UINT PlaneSlice;
3513 FLOAT ResourceMinLODClamp;
3514 } D3D12_TEX2D_SRV;
3515
3516typedef struct D3D12_TEX2D_ARRAY_SRV
3517 {
3518 UINT MostDetailedMip;
3519 UINT MipLevels;
3520 UINT FirstArraySlice;
3521 UINT ArraySize;
3522 UINT PlaneSlice;
3523 FLOAT ResourceMinLODClamp;
3524 } D3D12_TEX2D_ARRAY_SRV;
3525
3526typedef struct D3D12_TEX3D_SRV
3527 {
3528 UINT MostDetailedMip;
3529 UINT MipLevels;
3530 FLOAT ResourceMinLODClamp;
3531 } D3D12_TEX3D_SRV;
3532
3533typedef struct D3D12_TEXCUBE_SRV
3534 {
3535 UINT MostDetailedMip;
3536 UINT MipLevels;
3537 FLOAT ResourceMinLODClamp;
3538 } D3D12_TEXCUBE_SRV;
3539
3540typedef struct D3D12_TEXCUBE_ARRAY_SRV
3541 {
3542 UINT MostDetailedMip;
3543 UINT MipLevels;
3544 UINT First2DArrayFace;
3545 UINT NumCubes;
3546 FLOAT ResourceMinLODClamp;
3547 } D3D12_TEXCUBE_ARRAY_SRV;
3548
3549typedef struct D3D12_TEX2DMS_SRV
3550 {
3551 UINT UnusedField_NothingToDefine;
3552 } D3D12_TEX2DMS_SRV;
3553
3554typedef struct D3D12_TEX2DMS_ARRAY_SRV
3555 {
3556 UINT FirstArraySlice;
3557 UINT ArraySize;
3558 } D3D12_TEX2DMS_ARRAY_SRV;
3559
3560typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
3561 {
3562 D3D12_GPU_VIRTUAL_ADDRESS Location;
3563 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
3564
3565typedef
3566enum D3D12_SRV_DIMENSION
3567 {
3568 D3D12_SRV_DIMENSION_UNKNOWN = 0,
3569 D3D12_SRV_DIMENSION_BUFFER = 1,
3570 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
3571 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
3572 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
3573 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
3574 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
3575 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
3576 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
3577 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
3578 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
3579 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
3580 } D3D12_SRV_DIMENSION;
3581
3582typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
3583 {
3584 DXGI_FORMAT Format;
3585 D3D12_SRV_DIMENSION ViewDimension;
3586 UINT Shader4ComponentMapping;
3587 union
3588 {
3589 D3D12_BUFFER_SRV Buffer;
3590 D3D12_TEX1D_SRV Texture1D;
3591 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
3592 D3D12_TEX2D_SRV Texture2D;
3593 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
3594 D3D12_TEX2DMS_SRV Texture2DMS;
3595 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
3596 D3D12_TEX3D_SRV Texture3D;
3597 D3D12_TEXCUBE_SRV TextureCube;
3598 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
3599 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
3600 } ;
3601 } D3D12_SHADER_RESOURCE_VIEW_DESC;
3602
3603typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
3604 {
3605 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3606 UINT SizeInBytes;
3607 } D3D12_CONSTANT_BUFFER_VIEW_DESC;
3608
3609typedef
3610enum D3D12_FILTER
3611 {
3612 D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
3613 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
3614 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
3615 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
3616 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
3617 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
3618 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
3619 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
3620 D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x54,
3621 D3D12_FILTER_ANISOTROPIC = 0x55,
3622 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
3623 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
3624 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
3625 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
3626 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
3627 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
3628 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
3629 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
3630 D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0xd4,
3631 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
3632 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
3633 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
3634 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
3635 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
3636 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
3637 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
3638 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
3639 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
3640 D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x154,
3641 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
3642 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
3643 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
3644 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
3645 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
3646 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
3647 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
3648 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
3649 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
3650 D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x1d4,
3651 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
3652 } D3D12_FILTER;
3653
3654typedef
3655enum D3D12_FILTER_TYPE
3656 {
3657 D3D12_FILTER_TYPE_POINT = 0,
3658 D3D12_FILTER_TYPE_LINEAR = 1
3659 } D3D12_FILTER_TYPE;
3660
3661typedef
3662enum D3D12_FILTER_REDUCTION_TYPE
3663 {
3664 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
3665 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
3666 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
3667 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
3668 } D3D12_FILTER_REDUCTION_TYPE;
3669
3670#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
3671
3672#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
3673
3674#define D3D12_FILTER_TYPE_MASK ( 0x3 )
3675
3676#define D3D12_MIN_FILTER_SHIFT ( 4 )
3677
3678#define D3D12_MAG_FILTER_SHIFT ( 2 )
3679
3680#define D3D12_MIP_FILTER_SHIFT ( 0 )
3681
3682#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
3683
3684#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
3685 ( ( D3D12_FILTER ) ( \
3686 ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
3687 ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
3688 ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
3689 ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
3690#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
3691 ( ( D3D12_FILTER ) ( \
3692 D3D12_ANISOTROPIC_FILTERING_BIT | \
3693 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3694 D3D12_FILTER_TYPE_LINEAR, \
3695 D3D12_FILTER_TYPE_LINEAR, \
3696 reduction ) ) )
3697#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \
3698 ( ( D3D12_FILTER ) ( \
3699 D3D12_ANISOTROPIC_FILTERING_BIT | \
3700 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3701 D3D12_FILTER_TYPE_LINEAR, \
3702 D3D12_FILTER_TYPE_POINT, \
3703 reduction ) ) )
3704#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
3705 ( ( D3D12_FILTER_TYPE ) \
3706 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3707#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
3708 ( ( D3D12_FILTER_TYPE ) \
3709 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3710#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
3711 ( ( D3D12_FILTER_TYPE ) \
3712 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3713#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
3714 ( ( D3D12_FILTER_REDUCTION_TYPE ) \
3715 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
3716#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
3717 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
3718#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
3719 ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
3720 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
3721 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) )
3722typedef
3723enum D3D12_TEXTURE_ADDRESS_MODE
3724 {
3725 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
3726 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
3727 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
3728 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
3729 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
3730 } D3D12_TEXTURE_ADDRESS_MODE;
3731
3732typedef struct D3D12_SAMPLER_DESC
3733 {
3734 D3D12_FILTER Filter;
3735 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3736 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3737 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3738 FLOAT MipLODBias;
3739 UINT MaxAnisotropy;
3740 D3D12_COMPARISON_FUNC ComparisonFunc;
3741 FLOAT BorderColor[ 4 ];
3742 FLOAT MinLOD;
3743 FLOAT MaxLOD;
3744 } D3D12_SAMPLER_DESC;
3745
3746typedef
3747enum D3D12_SAMPLER_FLAGS
3748 {
3749 D3D12_SAMPLER_FLAG_NONE = 0,
3750 D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x1,
3751 D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x2
3752 } D3D12_SAMPLER_FLAGS;
3753
3754DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )
3755typedef struct D3D12_SAMPLER_DESC2
3756 {
3757 D3D12_FILTER Filter;
3758 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3759 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3760 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3761 FLOAT MipLODBias;
3762 UINT MaxAnisotropy;
3763 D3D12_COMPARISON_FUNC ComparisonFunc;
3764 union
3765 {
3766 FLOAT FloatBorderColor[ 4 ];
3767 UINT UintBorderColor[ 4 ];
3768 } ;
3769 FLOAT MinLOD;
3770 FLOAT MaxLOD;
3771 D3D12_SAMPLER_FLAGS Flags;
3772 } D3D12_SAMPLER_DESC2;
3773
3774typedef
3775enum D3D12_BUFFER_UAV_FLAGS
3776 {
3777 D3D12_BUFFER_UAV_FLAG_NONE = 0,
3778 D3D12_BUFFER_UAV_FLAG_RAW = 0x1
3779 } D3D12_BUFFER_UAV_FLAGS;
3780
3781DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )
3782typedef struct D3D12_BUFFER_UAV
3783 {
3784 UINT64 FirstElement;
3785 UINT NumElements;
3786 UINT StructureByteStride;
3787 UINT64 CounterOffsetInBytes;
3788 D3D12_BUFFER_UAV_FLAGS Flags;
3789 } D3D12_BUFFER_UAV;
3790
3791typedef struct D3D12_TEX1D_UAV
3792 {
3793 UINT MipSlice;
3794 } D3D12_TEX1D_UAV;
3795
3796typedef struct D3D12_TEX1D_ARRAY_UAV
3797 {
3798 UINT MipSlice;
3799 UINT FirstArraySlice;
3800 UINT ArraySize;
3801 } D3D12_TEX1D_ARRAY_UAV;
3802
3803typedef struct D3D12_TEX2D_UAV
3804 {
3805 UINT MipSlice;
3806 UINT PlaneSlice;
3807 } D3D12_TEX2D_UAV;
3808
3809typedef struct D3D12_TEX2D_ARRAY_UAV
3810 {
3811 UINT MipSlice;
3812 UINT FirstArraySlice;
3813 UINT ArraySize;
3814 UINT PlaneSlice;
3815 } D3D12_TEX2D_ARRAY_UAV;
3816
3817typedef struct D3D12_TEX2DMS_UAV
3818 {
3819 UINT UnusedField_NothingToDefine;
3820 } D3D12_TEX2DMS_UAV;
3821
3822typedef struct D3D12_TEX2DMS_ARRAY_UAV
3823 {
3824 UINT FirstArraySlice;
3825 UINT ArraySize;
3826 } D3D12_TEX2DMS_ARRAY_UAV;
3827
3828typedef struct D3D12_TEX3D_UAV
3829 {
3830 UINT MipSlice;
3831 UINT FirstWSlice;
3832 UINT WSize;
3833 } D3D12_TEX3D_UAV;
3834
3835typedef
3836enum D3D12_UAV_DIMENSION
3837 {
3838 D3D12_UAV_DIMENSION_UNKNOWN = 0,
3839 D3D12_UAV_DIMENSION_BUFFER = 1,
3840 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
3841 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
3842 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
3843 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
3844 D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
3845 D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
3846 D3D12_UAV_DIMENSION_TEXTURE3D = 8
3847 } D3D12_UAV_DIMENSION;
3848
3849typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
3850 {
3851 DXGI_FORMAT Format;
3852 D3D12_UAV_DIMENSION ViewDimension;
3853 union
3854 {
3855 D3D12_BUFFER_UAV Buffer;
3856 D3D12_TEX1D_UAV Texture1D;
3857 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
3858 D3D12_TEX2D_UAV Texture2D;
3859 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
3860 D3D12_TEX2DMS_UAV Texture2DMS;
3861 D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
3862 D3D12_TEX3D_UAV Texture3D;
3863 } ;
3864 } D3D12_UNORDERED_ACCESS_VIEW_DESC;
3865
3866typedef struct D3D12_BUFFER_RTV
3867 {
3868 UINT64 FirstElement;
3869 UINT NumElements;
3870 } D3D12_BUFFER_RTV;
3871
3872typedef struct D3D12_TEX1D_RTV
3873 {
3874 UINT MipSlice;
3875 } D3D12_TEX1D_RTV;
3876
3877typedef struct D3D12_TEX1D_ARRAY_RTV
3878 {
3879 UINT MipSlice;
3880 UINT FirstArraySlice;
3881 UINT ArraySize;
3882 } D3D12_TEX1D_ARRAY_RTV;
3883
3884typedef struct D3D12_TEX2D_RTV
3885 {
3886 UINT MipSlice;
3887 UINT PlaneSlice;
3888 } D3D12_TEX2D_RTV;
3889
3890typedef struct D3D12_TEX2DMS_RTV
3891 {
3892 UINT UnusedField_NothingToDefine;
3893 } D3D12_TEX2DMS_RTV;
3894
3895typedef struct D3D12_TEX2D_ARRAY_RTV
3896 {
3897 UINT MipSlice;
3898 UINT FirstArraySlice;
3899 UINT ArraySize;
3900 UINT PlaneSlice;
3901 } D3D12_TEX2D_ARRAY_RTV;
3902
3903typedef struct D3D12_TEX2DMS_ARRAY_RTV
3904 {
3905 UINT FirstArraySlice;
3906 UINT ArraySize;
3907 } D3D12_TEX2DMS_ARRAY_RTV;
3908
3909typedef struct D3D12_TEX3D_RTV
3910 {
3911 UINT MipSlice;
3912 UINT FirstWSlice;
3913 UINT WSize;
3914 } D3D12_TEX3D_RTV;
3915
3916typedef
3917enum D3D12_RTV_DIMENSION
3918 {
3919 D3D12_RTV_DIMENSION_UNKNOWN = 0,
3920 D3D12_RTV_DIMENSION_BUFFER = 1,
3921 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
3922 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
3923 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
3924 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
3925 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
3926 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
3927 D3D12_RTV_DIMENSION_TEXTURE3D = 8
3928 } D3D12_RTV_DIMENSION;
3929
3930typedef struct D3D12_RENDER_TARGET_VIEW_DESC
3931 {
3932 DXGI_FORMAT Format;
3933 D3D12_RTV_DIMENSION ViewDimension;
3934 union
3935 {
3936 D3D12_BUFFER_RTV Buffer;
3937 D3D12_TEX1D_RTV Texture1D;
3938 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
3939 D3D12_TEX2D_RTV Texture2D;
3940 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
3941 D3D12_TEX2DMS_RTV Texture2DMS;
3942 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
3943 D3D12_TEX3D_RTV Texture3D;
3944 } ;
3945 } D3D12_RENDER_TARGET_VIEW_DESC;
3946
3947typedef struct D3D12_TEX1D_DSV
3948 {
3949 UINT MipSlice;
3950 } D3D12_TEX1D_DSV;
3951
3952typedef struct D3D12_TEX1D_ARRAY_DSV
3953 {
3954 UINT MipSlice;
3955 UINT FirstArraySlice;
3956 UINT ArraySize;
3957 } D3D12_TEX1D_ARRAY_DSV;
3958
3959typedef struct D3D12_TEX2D_DSV
3960 {
3961 UINT MipSlice;
3962 } D3D12_TEX2D_DSV;
3963
3964typedef struct D3D12_TEX2D_ARRAY_DSV
3965 {
3966 UINT MipSlice;
3967 UINT FirstArraySlice;
3968 UINT ArraySize;
3969 } D3D12_TEX2D_ARRAY_DSV;
3970
3971typedef struct D3D12_TEX2DMS_DSV
3972 {
3973 UINT UnusedField_NothingToDefine;
3974 } D3D12_TEX2DMS_DSV;
3975
3976typedef struct D3D12_TEX2DMS_ARRAY_DSV
3977 {
3978 UINT FirstArraySlice;
3979 UINT ArraySize;
3980 } D3D12_TEX2DMS_ARRAY_DSV;
3981
3982typedef
3983enum D3D12_DSV_FLAGS
3984 {
3985 D3D12_DSV_FLAG_NONE = 0,
3986 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
3987 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
3988 } D3D12_DSV_FLAGS;
3989
3990DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )
3991typedef
3992enum D3D12_DSV_DIMENSION
3993 {
3994 D3D12_DSV_DIMENSION_UNKNOWN = 0,
3995 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
3996 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
3997 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
3998 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
3999 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
4000 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
4001 } D3D12_DSV_DIMENSION;
4002
4003typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
4004 {
4005 DXGI_FORMAT Format;
4006 D3D12_DSV_DIMENSION ViewDimension;
4007 D3D12_DSV_FLAGS Flags;
4008 union
4009 {
4010 D3D12_TEX1D_DSV Texture1D;
4011 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
4012 D3D12_TEX2D_DSV Texture2D;
4013 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
4014 D3D12_TEX2DMS_DSV Texture2DMS;
4015 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
4016 } ;
4017 } D3D12_DEPTH_STENCIL_VIEW_DESC;
4018
4019typedef
4020enum D3D12_CLEAR_FLAGS
4021 {
4022 D3D12_CLEAR_FLAG_DEPTH = 0x1,
4023 D3D12_CLEAR_FLAG_STENCIL = 0x2
4024 } D3D12_CLEAR_FLAGS;
4025
4026DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )
4027typedef
4028enum D3D12_FENCE_FLAGS
4029 {
4030 D3D12_FENCE_FLAG_NONE = 0,
4031 D3D12_FENCE_FLAG_SHARED = 0x1,
4032 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
4033 D3D12_FENCE_FLAG_NON_MONITORED = 0x4
4034 } D3D12_FENCE_FLAGS;
4035
4036DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )
4037typedef
4038enum D3D12_DESCRIPTOR_HEAP_TYPE
4039 {
4040 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
4041 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
4042 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
4043 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
4044 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
4045 } D3D12_DESCRIPTOR_HEAP_TYPE;
4046
4047typedef
4048enum D3D12_DESCRIPTOR_HEAP_FLAGS
4049 {
4050 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
4051 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
4052 } D3D12_DESCRIPTOR_HEAP_FLAGS;
4053
4054DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )
4055typedef struct D3D12_DESCRIPTOR_HEAP_DESC
4056 {
4057 D3D12_DESCRIPTOR_HEAP_TYPE Type;
4058 UINT NumDescriptors;
4059 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
4060 UINT NodeMask;
4061 } D3D12_DESCRIPTOR_HEAP_DESC;
4062
4063typedef
4064enum D3D12_DESCRIPTOR_RANGE_TYPE
4065 {
4066 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
4067 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
4068 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
4069 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
4070 } D3D12_DESCRIPTOR_RANGE_TYPE;
4071
4072typedef struct D3D12_DESCRIPTOR_RANGE
4073 {
4074 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
4075 UINT NumDescriptors;
4076 UINT BaseShaderRegister;
4077 UINT RegisterSpace;
4078 UINT OffsetInDescriptorsFromTableStart;
4079 } D3D12_DESCRIPTOR_RANGE;
4080
4081typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
4082 {
4083 UINT NumDescriptorRanges;
4084 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
4085 } D3D12_ROOT_DESCRIPTOR_TABLE;
4086
4087typedef struct D3D12_ROOT_CONSTANTS
4088 {
4089 UINT ShaderRegister;
4090 UINT RegisterSpace;
4091 UINT Num32BitValues;
4092 } D3D12_ROOT_CONSTANTS;
4093
4094typedef struct D3D12_ROOT_DESCRIPTOR
4095 {
4096 UINT ShaderRegister;
4097 UINT RegisterSpace;
4098 } D3D12_ROOT_DESCRIPTOR;
4099
4100typedef
4101enum D3D12_SHADER_VISIBILITY
4102 {
4103 D3D12_SHADER_VISIBILITY_ALL = 0,
4104 D3D12_SHADER_VISIBILITY_VERTEX = 1,
4105 D3D12_SHADER_VISIBILITY_HULL = 2,
4106 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
4107 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
4108 D3D12_SHADER_VISIBILITY_PIXEL = 5,
4109 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
4110 D3D12_SHADER_VISIBILITY_MESH = 7
4111 } D3D12_SHADER_VISIBILITY;
4112
4113typedef
4114enum D3D12_ROOT_PARAMETER_TYPE
4115 {
4116 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
4117 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
4118 D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
4119 D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
4120 D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
4121 } D3D12_ROOT_PARAMETER_TYPE;
4122
4123typedef struct D3D12_ROOT_PARAMETER
4124 {
4125 D3D12_ROOT_PARAMETER_TYPE ParameterType;
4126 union
4127 {
4128 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
4129 D3D12_ROOT_CONSTANTS Constants;
4130 D3D12_ROOT_DESCRIPTOR Descriptor;
4131 } ;
4132 D3D12_SHADER_VISIBILITY ShaderVisibility;
4133 } D3D12_ROOT_PARAMETER;
4134
4135typedef
4136enum D3D12_ROOT_SIGNATURE_FLAGS
4137 {
4138 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
4139 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
4140 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
4141 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
4142 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
4143 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
4144 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
4145 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
4146 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
4147 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
4148 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
4149 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
4150 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
4151 } D3D12_ROOT_SIGNATURE_FLAGS;
4152
4153DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )
4154typedef
4155enum D3D12_STATIC_BORDER_COLOR
4156 {
4157 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
4158 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
4159 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 ) ,
4160 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE + 1 ) ,
4161 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT + 1 )
4162 } D3D12_STATIC_BORDER_COLOR;
4163
4164typedef struct D3D12_STATIC_SAMPLER_DESC
4165 {
4166 D3D12_FILTER Filter;
4167 D3D12_TEXTURE_ADDRESS_MODE AddressU;
4168 D3D12_TEXTURE_ADDRESS_MODE AddressV;
4169 D3D12_TEXTURE_ADDRESS_MODE AddressW;
4170 FLOAT MipLODBias;
4171 UINT MaxAnisotropy;
4172 D3D12_COMPARISON_FUNC ComparisonFunc;
4173 D3D12_STATIC_BORDER_COLOR BorderColor;
4174 FLOAT MinLOD;
4175 FLOAT MaxLOD;
4176 UINT ShaderRegister;
4177 UINT RegisterSpace;
4178 D3D12_SHADER_VISIBILITY ShaderVisibility;
4179 } D3D12_STATIC_SAMPLER_DESC;
4180
4181typedef struct D3D12_STATIC_SAMPLER_DESC1
4182 {
4183 D3D12_FILTER Filter;
4184 D3D12_TEXTURE_ADDRESS_MODE AddressU;
4185 D3D12_TEXTURE_ADDRESS_MODE AddressV;
4186 D3D12_TEXTURE_ADDRESS_MODE AddressW;
4187 FLOAT MipLODBias;
4188 UINT MaxAnisotropy;
4189 D3D12_COMPARISON_FUNC ComparisonFunc;
4190 D3D12_STATIC_BORDER_COLOR BorderColor;
4191 FLOAT MinLOD;
4192 FLOAT MaxLOD;
4193 UINT ShaderRegister;
4194 UINT RegisterSpace;
4195 D3D12_SHADER_VISIBILITY ShaderVisibility;
4196 D3D12_SAMPLER_FLAGS Flags;
4197 } D3D12_STATIC_SAMPLER_DESC1;
4198
4199typedef struct D3D12_ROOT_SIGNATURE_DESC
4200 {
4201 UINT NumParameters;
4202 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
4203 UINT NumStaticSamplers;
4204 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
4205 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4206 } D3D12_ROOT_SIGNATURE_DESC;
4207
4208typedef
4209enum D3D12_DESCRIPTOR_RANGE_FLAGS
4210 {
4211 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
4212 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
4213 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
4214 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
4215 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
4216 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
4217 } D3D12_DESCRIPTOR_RANGE_FLAGS;
4218
4219DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )
4220typedef struct D3D12_DESCRIPTOR_RANGE1
4221 {
4222 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
4223 UINT NumDescriptors;
4224 UINT BaseShaderRegister;
4225 UINT RegisterSpace;
4226 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
4227 UINT OffsetInDescriptorsFromTableStart;
4228 } D3D12_DESCRIPTOR_RANGE1;
4229
4230typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
4231 {
4232 UINT NumDescriptorRanges;
4233 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
4234 } D3D12_ROOT_DESCRIPTOR_TABLE1;
4235
4236typedef
4237enum D3D12_ROOT_DESCRIPTOR_FLAGS
4238 {
4239 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
4240 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
4241 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
4242 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
4243 } D3D12_ROOT_DESCRIPTOR_FLAGS;
4244
4245DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )
4246typedef struct D3D12_ROOT_DESCRIPTOR1
4247 {
4248 UINT ShaderRegister;
4249 UINT RegisterSpace;
4250 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
4251 } D3D12_ROOT_DESCRIPTOR1;
4252
4253typedef struct D3D12_ROOT_PARAMETER1
4254 {
4255 D3D12_ROOT_PARAMETER_TYPE ParameterType;
4256 union
4257 {
4258 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
4259 D3D12_ROOT_CONSTANTS Constants;
4260 D3D12_ROOT_DESCRIPTOR1 Descriptor;
4261 } ;
4262 D3D12_SHADER_VISIBILITY ShaderVisibility;
4263 } D3D12_ROOT_PARAMETER1;
4264
4265typedef struct D3D12_ROOT_SIGNATURE_DESC1
4266 {
4267 UINT NumParameters;
4268 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
4269 UINT NumStaticSamplers;
4270 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
4271 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4272 } D3D12_ROOT_SIGNATURE_DESC1;
4273
4274typedef struct D3D12_ROOT_SIGNATURE_DESC2
4275 {
4276 UINT NumParameters;
4277 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
4278 UINT NumStaticSamplers;
4279 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1 *pStaticSamplers;
4280 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4281 } D3D12_ROOT_SIGNATURE_DESC2;
4282
4283typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
4284 {
4285 D3D_ROOT_SIGNATURE_VERSION Version;
4286 union
4287 {
4288 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
4289 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
4290 D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
4291 } ;
4292 } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
4293
4294
4295
4296extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
4297extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
4298
4299#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
4300#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
4301
4302/* interface ID3D12RootSignatureDeserializer */
4303/* [unique][local][object][uuid] */
4304
4305
4306EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
4307
4308#if defined(__cplusplus) && !defined(CINTERFACE)
4309
4310 MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
4311 ID3D12RootSignatureDeserializer : public IUnknown
4312 {
4313 public:
4314 virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
4315
4316 };
4317
4318
4319#else /* C style interface */
4320
4321 typedef struct ID3D12RootSignatureDeserializerVtbl
4322 {
4323 BEGIN_INTERFACE
4324
4325 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4326 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4327 ID3D12RootSignatureDeserializer * This,
4328 REFIID riid,
4329 _COM_Outptr_ void **ppvObject);
4330
4331 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4332 ULONG ( STDMETHODCALLTYPE *AddRef )(
4333 ID3D12RootSignatureDeserializer * This);
4334
4335 DECLSPEC_XFGVIRT(IUnknown, Release)
4336 ULONG ( STDMETHODCALLTYPE *Release )(
4337 ID3D12RootSignatureDeserializer * This);
4338
4339 DECLSPEC_XFGVIRT(ID3D12RootSignatureDeserializer, GetRootSignatureDesc)
4340 const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
4341 ID3D12RootSignatureDeserializer * This);
4342
4343 END_INTERFACE
4344 } ID3D12RootSignatureDeserializerVtbl;
4345
4346 interface ID3D12RootSignatureDeserializer
4347 {
4348 CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
4349 };
4350
4351
4352
4353#ifdef COBJMACROS
4354
4355
4356#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
4357 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4358
4359#define ID3D12RootSignatureDeserializer_AddRef(This) \
4360 ( (This)->lpVtbl -> AddRef(This) )
4361
4362#define ID3D12RootSignatureDeserializer_Release(This) \
4363 ( (This)->lpVtbl -> Release(This) )
4364
4365
4366#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
4367 ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
4368
4369#endif /* COBJMACROS */
4370
4371
4372#endif /* C style interface */
4373
4374
4375
4376
4377#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
4378
4379
4380#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
4381#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
4382
4383/* interface ID3D12VersionedRootSignatureDeserializer */
4384/* [unique][local][object][uuid] */
4385
4386
4387EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
4388
4389#if defined(__cplusplus) && !defined(CINTERFACE)
4390
4391 MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
4392 ID3D12VersionedRootSignatureDeserializer : public IUnknown
4393 {
4394 public:
4395 virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
4396 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
4397 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
4398
4399 virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
4400
4401 };
4402
4403
4404#else /* C style interface */
4405
4406 typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
4407 {
4408 BEGIN_INTERFACE
4409
4410 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4411 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4412 ID3D12VersionedRootSignatureDeserializer * This,
4413 REFIID riid,
4414 _COM_Outptr_ void **ppvObject);
4415
4416 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4417 ULONG ( STDMETHODCALLTYPE *AddRef )(
4418 ID3D12VersionedRootSignatureDeserializer * This);
4419
4420 DECLSPEC_XFGVIRT(IUnknown, Release)
4421 ULONG ( STDMETHODCALLTYPE *Release )(
4422 ID3D12VersionedRootSignatureDeserializer * This);
4423
4424 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetRootSignatureDescAtVersion)
4425 HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
4426 ID3D12VersionedRootSignatureDeserializer * This,
4427 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
4428 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
4429
4430 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetUnconvertedRootSignatureDesc)
4431 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
4432 ID3D12VersionedRootSignatureDeserializer * This);
4433
4434 END_INTERFACE
4435 } ID3D12VersionedRootSignatureDeserializerVtbl;
4436
4437 interface ID3D12VersionedRootSignatureDeserializer
4438 {
4439 CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
4440 };
4441
4442
4443
4444#ifdef COBJMACROS
4445
4446
4447#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
4448 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4449
4450#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
4451 ( (This)->lpVtbl -> AddRef(This) )
4452
4453#define ID3D12VersionedRootSignatureDeserializer_Release(This) \
4454 ( (This)->lpVtbl -> Release(This) )
4455
4456
4457#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
4458 ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
4459
4460#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
4461 ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
4462
4463#endif /* COBJMACROS */
4464
4465
4466#endif /* C style interface */
4467
4468
4469
4470
4471#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
4472
4473
4474/* interface __MIDL_itf_d3d12_0000_0003 */
4475/* [local] */
4476
4477typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
4478 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
4479 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
4480 _Out_ ID3DBlob** ppBlob,
4481 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4482
4483HRESULT WINAPI D3D12SerializeRootSignature(
4484 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
4485 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
4486 _Out_ ID3DBlob** ppBlob,
4487 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4488
4489typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
4490 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4491 _In_ SIZE_T SrcDataSizeInBytes,
4492 _In_ REFIID pRootSignatureDeserializerInterface,
4493 _Out_ void** ppRootSignatureDeserializer);
4494
4495HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
4496 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4497 _In_ SIZE_T SrcDataSizeInBytes,
4498 _In_ REFIID pRootSignatureDeserializerInterface,
4499 _Out_ void** ppRootSignatureDeserializer);
4500
4501typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
4502 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
4503 _Out_ ID3DBlob** ppBlob,
4504 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4505
4506HRESULT WINAPI D3D12SerializeVersionedRootSignature(
4507 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
4508 _Out_ ID3DBlob** ppBlob,
4509 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4510
4511typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
4512 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4513 _In_ SIZE_T SrcDataSizeInBytes,
4514 _In_ REFIID pRootSignatureDeserializerInterface,
4515 _Out_ void** ppRootSignatureDeserializer);
4516
4517HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
4518 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4519 _In_ SIZE_T SrcDataSizeInBytes,
4520 _In_ REFIID pRootSignatureDeserializerInterface,
4521 _Out_ void** ppRootSignatureDeserializer);
4522
4523typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(
4524 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4525 _In_ SIZE_T SrcDataSizeInBytes,
4526 _In_ LPCWSTR RootSignatureSubobjectName,
4527 _In_ REFIID pRootSignatureDeserializerInterface,
4528 _Out_ void** ppRootSignatureDeserializer);
4529
4530HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
4531 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4532 _In_ SIZE_T SrcDataSizeInBytes,
4533 _In_opt_ LPCWSTR RootSignatureSubobjectName,
4534 _In_ REFIID pRootSignatureDeserializerInterface,
4535 _Out_ void** ppRootSignatureDeserializer);
4536
4537typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
4538 {
4539 SIZE_T ptr;
4540 } D3D12_CPU_DESCRIPTOR_HANDLE;
4541
4542typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
4543 {
4544 UINT64 ptr;
4545 } D3D12_GPU_DESCRIPTOR_HANDLE;
4546
4547// If rects are supplied in D3D12_DISCARD_REGION, below, the resource
4548// must have 2D subresources with all specified subresources the same dimension.
4549typedef struct D3D12_DISCARD_REGION
4550 {
4551 UINT NumRects;
4552 _In_reads_(NumRects) const D3D12_RECT *pRects;
4553 UINT FirstSubresource;
4554 UINT NumSubresources;
4555 } D3D12_DISCARD_REGION;
4556
4557typedef
4558enum D3D12_QUERY_HEAP_TYPE
4559 {
4560 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
4561 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
4562 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
4563 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
4564 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
4565 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
4566 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
4567 } D3D12_QUERY_HEAP_TYPE;
4568
4569typedef struct D3D12_QUERY_HEAP_DESC
4570 {
4571 D3D12_QUERY_HEAP_TYPE Type;
4572 UINT Count;
4573 UINT NodeMask;
4574 } D3D12_QUERY_HEAP_DESC;
4575
4576typedef
4577enum D3D12_QUERY_TYPE
4578 {
4579 D3D12_QUERY_TYPE_OCCLUSION = 0,
4580 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
4581 D3D12_QUERY_TYPE_TIMESTAMP = 2,
4582 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
4583 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
4584 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
4585 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
4586 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
4587 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
4588 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
4589 } D3D12_QUERY_TYPE;
4590
4591typedef
4592enum D3D12_PREDICATION_OP
4593 {
4594 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
4595 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
4596 } D3D12_PREDICATION_OP;
4597
4598typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
4599 {
4600 UINT64 IAVertices;
4601 UINT64 IAPrimitives;
4602 UINT64 VSInvocations;
4603 UINT64 GSInvocations;
4604 UINT64 GSPrimitives;
4605 UINT64 CInvocations;
4606 UINT64 CPrimitives;
4607 UINT64 PSInvocations;
4608 UINT64 HSInvocations;
4609 UINT64 DSInvocations;
4610 UINT64 CSInvocations;
4611 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
4612
4613typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
4614 {
4615 UINT64 IAVertices;
4616 UINT64 IAPrimitives;
4617 UINT64 VSInvocations;
4618 UINT64 GSInvocations;
4619 UINT64 GSPrimitives;
4620 UINT64 CInvocations;
4621 UINT64 CPrimitives;
4622 UINT64 PSInvocations;
4623 UINT64 HSInvocations;
4624 UINT64 DSInvocations;
4625 UINT64 CSInvocations;
4626 UINT64 ASInvocations;
4627 UINT64 MSInvocations;
4628 UINT64 MSPrimitives;
4629 } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
4630
4631typedef struct D3D12_QUERY_DATA_SO_STATISTICS
4632 {
4633 UINT64 NumPrimitivesWritten;
4634 UINT64 PrimitivesStorageNeeded;
4635 } D3D12_QUERY_DATA_SO_STATISTICS;
4636
4637typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
4638 {
4639 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4640 UINT64 SizeInBytes;
4641 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
4642 } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
4643
4644typedef struct D3D12_DRAW_ARGUMENTS
4645 {
4646 UINT VertexCountPerInstance;
4647 UINT InstanceCount;
4648 UINT StartVertexLocation;
4649 UINT StartInstanceLocation;
4650 } D3D12_DRAW_ARGUMENTS;
4651
4652typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
4653 {
4654 UINT IndexCountPerInstance;
4655 UINT InstanceCount;
4656 UINT StartIndexLocation;
4657 INT BaseVertexLocation;
4658 UINT StartInstanceLocation;
4659 } D3D12_DRAW_INDEXED_ARGUMENTS;
4660
4661typedef struct D3D12_DISPATCH_ARGUMENTS
4662 {
4663 UINT ThreadGroupCountX;
4664 UINT ThreadGroupCountY;
4665 UINT ThreadGroupCountZ;
4666 } D3D12_DISPATCH_ARGUMENTS;
4667
4668typedef struct D3D12_VERTEX_BUFFER_VIEW
4669 {
4670 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4671 UINT SizeInBytes;
4672 UINT StrideInBytes;
4673 } D3D12_VERTEX_BUFFER_VIEW;
4674
4675typedef struct D3D12_INDEX_BUFFER_VIEW
4676 {
4677 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4678 UINT SizeInBytes;
4679 DXGI_FORMAT Format;
4680 } D3D12_INDEX_BUFFER_VIEW;
4681
4682typedef
4683enum D3D12_INDIRECT_ARGUMENT_TYPE
4684 {
4685 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
4686 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
4687 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
4688 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
4689 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
4690 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
4691 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
4692 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
4693 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
4694 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
4695 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 ) ,
4696 D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH + 1 )
4697 } D3D12_INDIRECT_ARGUMENT_TYPE;
4698
4699typedef struct D3D12_INDIRECT_ARGUMENT_DESC
4700 {
4701 D3D12_INDIRECT_ARGUMENT_TYPE Type;
4702 union
4703 {
4704 struct
4705 {
4706 UINT Slot;
4707 } VertexBuffer;
4708 struct
4709 {
4710 UINT RootParameterIndex;
4711 UINT DestOffsetIn32BitValues;
4712 UINT Num32BitValuesToSet;
4713 } Constant;
4714 struct
4715 {
4716 UINT RootParameterIndex;
4717 } ConstantBufferView;
4718 struct
4719 {
4720 UINT RootParameterIndex;
4721 } ShaderResourceView;
4722 struct
4723 {
4724 UINT RootParameterIndex;
4725 } UnorderedAccessView;
4726 struct
4727 {
4728 UINT RootParameterIndex;
4729 UINT DestOffsetIn32BitValues;
4730 } IncrementingConstant;
4731 } ;
4732 } D3D12_INDIRECT_ARGUMENT_DESC;
4733
4734typedef struct D3D12_COMMAND_SIGNATURE_DESC
4735 {
4736 UINT ByteStride;
4737 UINT NumArgumentDescs;
4738 _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
4739 UINT NodeMask;
4740 } D3D12_COMMAND_SIGNATURE_DESC;
4741
4742
4743
4744
4745extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
4746extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
4747
4748#ifndef __ID3D12Pageable_INTERFACE_DEFINED__
4749#define __ID3D12Pageable_INTERFACE_DEFINED__
4750
4751/* interface ID3D12Pageable */
4752/* [unique][local][object][uuid] */
4753
4754
4755EXTERN_C const IID IID_ID3D12Pageable;
4756
4757#if defined(__cplusplus) && !defined(CINTERFACE)
4758
4759 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
4760 ID3D12Pageable : public ID3D12DeviceChild
4761 {
4762 public:
4763 };
4764
4765
4766#else /* C style interface */
4767
4768 typedef struct ID3D12PageableVtbl
4769 {
4770 BEGIN_INTERFACE
4771
4772 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4773 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4774 ID3D12Pageable * This,
4775 REFIID riid,
4776 _COM_Outptr_ void **ppvObject);
4777
4778 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4779 ULONG ( STDMETHODCALLTYPE *AddRef )(
4780 ID3D12Pageable * This);
4781
4782 DECLSPEC_XFGVIRT(IUnknown, Release)
4783 ULONG ( STDMETHODCALLTYPE *Release )(
4784 ID3D12Pageable * This);
4785
4786 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4787 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4788 ID3D12Pageable * This,
4789 _In_ REFGUID guid,
4790 _Inout_ UINT *pDataSize,
4791 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4792
4793 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4794 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4795 ID3D12Pageable * This,
4796 _In_ REFGUID guid,
4797 _In_ UINT DataSize,
4798 _In_reads_bytes_opt_( DataSize ) const void *pData);
4799
4800 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4801 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4802 ID3D12Pageable * This,
4803 _In_ REFGUID guid,
4804 _In_opt_ const IUnknown *pData);
4805
4806 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4807 HRESULT ( STDMETHODCALLTYPE *SetName )(
4808 ID3D12Pageable * This,
4809 _In_z_ LPCWSTR Name);
4810
4811 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4812 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4813 ID3D12Pageable * This,
4814 REFIID riid,
4815 _COM_Outptr_opt_ void **ppvDevice);
4816
4817 END_INTERFACE
4818 } ID3D12PageableVtbl;
4819
4820 interface ID3D12Pageable
4821 {
4822 CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
4823 };
4824
4825
4826
4827#ifdef COBJMACROS
4828
4829
4830#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
4831 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4832
4833#define ID3D12Pageable_AddRef(This) \
4834 ( (This)->lpVtbl -> AddRef(This) )
4835
4836#define ID3D12Pageable_Release(This) \
4837 ( (This)->lpVtbl -> Release(This) )
4838
4839
4840#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
4841 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4842
4843#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
4844 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4845
4846#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
4847 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4848
4849#define ID3D12Pageable_SetName(This,Name) \
4850 ( (This)->lpVtbl -> SetName(This,Name) )
4851
4852
4853#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
4854 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4855
4856
4857#endif /* COBJMACROS */
4858
4859
4860#endif /* C style interface */
4861
4862
4863
4864
4865#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
4866
4867
4868#ifndef __ID3D12Heap_INTERFACE_DEFINED__
4869#define __ID3D12Heap_INTERFACE_DEFINED__
4870
4871/* interface ID3D12Heap */
4872/* [unique][local][object][uuid] */
4873
4874
4875EXTERN_C const IID IID_ID3D12Heap;
4876
4877#if defined(__cplusplus) && !defined(CINTERFACE)
4878
4879 MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
4880 ID3D12Heap : public ID3D12Pageable
4881 {
4882 public:
4883#if defined(_MSC_VER) || !defined(_WIN32)
4884 virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4885#else
4886 virtual D3D12_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
4887 D3D12_HEAP_DESC * RetVal) = 0;
4888#endif
4889
4890 };
4891
4892
4893#else /* C style interface */
4894
4895 typedef struct ID3D12HeapVtbl
4896 {
4897 BEGIN_INTERFACE
4898
4899 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4900 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4901 ID3D12Heap * This,
4902 REFIID riid,
4903 _COM_Outptr_ void **ppvObject);
4904
4905 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4906 ULONG ( STDMETHODCALLTYPE *AddRef )(
4907 ID3D12Heap * This);
4908
4909 DECLSPEC_XFGVIRT(IUnknown, Release)
4910 ULONG ( STDMETHODCALLTYPE *Release )(
4911 ID3D12Heap * This);
4912
4913 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4914 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4915 ID3D12Heap * This,
4916 _In_ REFGUID guid,
4917 _Inout_ UINT *pDataSize,
4918 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4919
4920 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4921 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4922 ID3D12Heap * This,
4923 _In_ REFGUID guid,
4924 _In_ UINT DataSize,
4925 _In_reads_bytes_opt_( DataSize ) const void *pData);
4926
4927 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4928 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4929 ID3D12Heap * This,
4930 _In_ REFGUID guid,
4931 _In_opt_ const IUnknown *pData);
4932
4933 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4934 HRESULT ( STDMETHODCALLTYPE *SetName )(
4935 ID3D12Heap * This,
4936 _In_z_ LPCWSTR Name);
4937
4938 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4939 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4940 ID3D12Heap * This,
4941 REFIID riid,
4942 _COM_Outptr_opt_ void **ppvDevice);
4943
4944 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
4945#if !defined(_WIN32)
4946 D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4947 ID3D12Heap * This);
4948
4949#else
4950 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4951 ID3D12Heap * This,
4952 D3D12_HEAP_DESC * RetVal);
4953
4954#endif
4955
4956 END_INTERFACE
4957 } ID3D12HeapVtbl;
4958
4959 interface ID3D12Heap
4960 {
4961 CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
4962 };
4963
4964
4965
4966#ifdef COBJMACROS
4967
4968
4969#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
4970 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4971
4972#define ID3D12Heap_AddRef(This) \
4973 ( (This)->lpVtbl -> AddRef(This) )
4974
4975#define ID3D12Heap_Release(This) \
4976 ( (This)->lpVtbl -> Release(This) )
4977
4978
4979#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
4980 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4981
4982#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
4983 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4984
4985#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
4986 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4987
4988#define ID3D12Heap_SetName(This,Name) \
4989 ( (This)->lpVtbl -> SetName(This,Name) )
4990
4991
4992#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
4993 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4994
4995
4996#if !defined(_WIN32)
4997
4998#define ID3D12Heap_GetDesc(This) \
4999 ( (This)->lpVtbl -> GetDesc(This) )
5000#else
5001#define ID3D12Heap_GetDesc(This,RetVal) \
5002 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5003#endif
5004
5005#endif /* COBJMACROS */
5006
5007
5008#endif /* C style interface */
5009
5010
5011
5012
5013#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
5014
5015
5016#ifndef __ID3D12Resource_INTERFACE_DEFINED__
5017#define __ID3D12Resource_INTERFACE_DEFINED__
5018
5019/* interface ID3D12Resource */
5020/* [unique][local][object][uuid] */
5021
5022
5023EXTERN_C const IID IID_ID3D12Resource;
5024
5025#if defined(__cplusplus) && !defined(CINTERFACE)
5026
5027 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
5028 ID3D12Resource : public ID3D12Pageable
5029 {
5030 public:
5031 virtual HRESULT STDMETHODCALLTYPE Map(
5032 UINT Subresource,
5033 _In_opt_ const D3D12_RANGE *pReadRange,
5034 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
5035
5036 virtual void STDMETHODCALLTYPE Unmap(
5037 UINT Subresource,
5038 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
5039
5040#if defined(_MSC_VER) || !defined(_WIN32)
5041 virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5042#else
5043 virtual D3D12_RESOURCE_DESC *STDMETHODCALLTYPE GetDesc(
5044 D3D12_RESOURCE_DESC * RetVal) = 0;
5045#endif
5046
5047 virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
5048
5049 virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
5050 UINT DstSubresource,
5051 _In_opt_ const D3D12_BOX *pDstBox,
5052 _In_ const void *pSrcData,
5053 UINT SrcRowPitch,
5054 UINT SrcDepthPitch) = 0;
5055
5056 virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
5057 _Out_ void *pDstData,
5058 UINT DstRowPitch,
5059 UINT DstDepthPitch,
5060 UINT SrcSubresource,
5061 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
5062
5063 virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
5064 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
5065 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
5066
5067 };
5068
5069
5070#else /* C style interface */
5071
5072 typedef struct ID3D12ResourceVtbl
5073 {
5074 BEGIN_INTERFACE
5075
5076 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5077 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5078 ID3D12Resource * This,
5079 REFIID riid,
5080 _COM_Outptr_ void **ppvObject);
5081
5082 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5083 ULONG ( STDMETHODCALLTYPE *AddRef )(
5084 ID3D12Resource * This);
5085
5086 DECLSPEC_XFGVIRT(IUnknown, Release)
5087 ULONG ( STDMETHODCALLTYPE *Release )(
5088 ID3D12Resource * This);
5089
5090 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5091 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5092 ID3D12Resource * This,
5093 _In_ REFGUID guid,
5094 _Inout_ UINT *pDataSize,
5095 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5096
5097 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5098 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5099 ID3D12Resource * This,
5100 _In_ REFGUID guid,
5101 _In_ UINT DataSize,
5102 _In_reads_bytes_opt_( DataSize ) const void *pData);
5103
5104 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5105 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5106 ID3D12Resource * This,
5107 _In_ REFGUID guid,
5108 _In_opt_ const IUnknown *pData);
5109
5110 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5111 HRESULT ( STDMETHODCALLTYPE *SetName )(
5112 ID3D12Resource * This,
5113 _In_z_ LPCWSTR Name);
5114
5115 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5116 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5117 ID3D12Resource * This,
5118 REFIID riid,
5119 _COM_Outptr_opt_ void **ppvDevice);
5120
5121 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
5122 HRESULT ( STDMETHODCALLTYPE *Map )(
5123 ID3D12Resource * This,
5124 UINT Subresource,
5125 _In_opt_ const D3D12_RANGE *pReadRange,
5126 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
5127
5128 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
5129 void ( STDMETHODCALLTYPE *Unmap )(
5130 ID3D12Resource * This,
5131 UINT Subresource,
5132 _In_opt_ const D3D12_RANGE *pWrittenRange);
5133
5134 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
5135#if !defined(_WIN32)
5136 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
5137 ID3D12Resource * This);
5138
5139#else
5140 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
5141 ID3D12Resource * This,
5142 D3D12_RESOURCE_DESC * RetVal);
5143
5144#endif
5145
5146 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
5147 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
5148 ID3D12Resource * This);
5149
5150 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
5151 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
5152 ID3D12Resource * This,
5153 UINT DstSubresource,
5154 _In_opt_ const D3D12_BOX *pDstBox,
5155 _In_ const void *pSrcData,
5156 UINT SrcRowPitch,
5157 UINT SrcDepthPitch);
5158
5159 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
5160 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
5161 ID3D12Resource * This,
5162 _Out_ void *pDstData,
5163 UINT DstRowPitch,
5164 UINT DstDepthPitch,
5165 UINT SrcSubresource,
5166 _In_opt_ const D3D12_BOX *pSrcBox);
5167
5168 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
5169 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
5170 ID3D12Resource * This,
5171 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
5172 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
5173
5174 END_INTERFACE
5175 } ID3D12ResourceVtbl;
5176
5177 interface ID3D12Resource
5178 {
5179 CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
5180 };
5181
5182
5183
5184#ifdef COBJMACROS
5185
5186
5187#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
5188 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5189
5190#define ID3D12Resource_AddRef(This) \
5191 ( (This)->lpVtbl -> AddRef(This) )
5192
5193#define ID3D12Resource_Release(This) \
5194 ( (This)->lpVtbl -> Release(This) )
5195
5196
5197#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
5198 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5199
5200#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
5201 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5202
5203#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
5204 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5205
5206#define ID3D12Resource_SetName(This,Name) \
5207 ( (This)->lpVtbl -> SetName(This,Name) )
5208
5209
5210#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
5211 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5212
5213
5214
5215#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
5216 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
5217
5218#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
5219 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
5220#if !defined(_WIN32)
5221
5222#define ID3D12Resource_GetDesc(This) \
5223 ( (This)->lpVtbl -> GetDesc(This) )
5224#else
5225#define ID3D12Resource_GetDesc(This,RetVal) \
5226 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5227#endif
5228
5229#define ID3D12Resource_GetGPUVirtualAddress(This) \
5230 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
5231
5232#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
5233 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
5234
5235#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
5236 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
5237
5238#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
5239 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
5240
5241#endif /* COBJMACROS */
5242
5243
5244#endif /* C style interface */
5245
5246
5247
5248
5249#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
5250
5251
5252#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
5253#define __ID3D12CommandAllocator_INTERFACE_DEFINED__
5254
5255/* interface ID3D12CommandAllocator */
5256/* [unique][local][object][uuid] */
5257
5258
5259EXTERN_C const IID IID_ID3D12CommandAllocator;
5260
5261#if defined(__cplusplus) && !defined(CINTERFACE)
5262
5263 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
5264 ID3D12CommandAllocator : public ID3D12Pageable
5265 {
5266 public:
5267 virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
5268
5269 };
5270
5271
5272#else /* C style interface */
5273
5274 typedef struct ID3D12CommandAllocatorVtbl
5275 {
5276 BEGIN_INTERFACE
5277
5278 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5279 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5280 ID3D12CommandAllocator * This,
5281 REFIID riid,
5282 _COM_Outptr_ void **ppvObject);
5283
5284 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5285 ULONG ( STDMETHODCALLTYPE *AddRef )(
5286 ID3D12CommandAllocator * This);
5287
5288 DECLSPEC_XFGVIRT(IUnknown, Release)
5289 ULONG ( STDMETHODCALLTYPE *Release )(
5290 ID3D12CommandAllocator * This);
5291
5292 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5293 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5294 ID3D12CommandAllocator * This,
5295 _In_ REFGUID guid,
5296 _Inout_ UINT *pDataSize,
5297 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5298
5299 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5300 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5301 ID3D12CommandAllocator * This,
5302 _In_ REFGUID guid,
5303 _In_ UINT DataSize,
5304 _In_reads_bytes_opt_( DataSize ) const void *pData);
5305
5306 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5307 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5308 ID3D12CommandAllocator * This,
5309 _In_ REFGUID guid,
5310 _In_opt_ const IUnknown *pData);
5311
5312 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5313 HRESULT ( STDMETHODCALLTYPE *SetName )(
5314 ID3D12CommandAllocator * This,
5315 _In_z_ LPCWSTR Name);
5316
5317 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5318 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5319 ID3D12CommandAllocator * This,
5320 REFIID riid,
5321 _COM_Outptr_opt_ void **ppvDevice);
5322
5323 DECLSPEC_XFGVIRT(ID3D12CommandAllocator, Reset)
5324 HRESULT ( STDMETHODCALLTYPE *Reset )(
5325 ID3D12CommandAllocator * This);
5326
5327 END_INTERFACE
5328 } ID3D12CommandAllocatorVtbl;
5329
5330 interface ID3D12CommandAllocator
5331 {
5332 CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
5333 };
5334
5335
5336
5337#ifdef COBJMACROS
5338
5339
5340#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
5341 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5342
5343#define ID3D12CommandAllocator_AddRef(This) \
5344 ( (This)->lpVtbl -> AddRef(This) )
5345
5346#define ID3D12CommandAllocator_Release(This) \
5347 ( (This)->lpVtbl -> Release(This) )
5348
5349
5350#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
5351 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5352
5353#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
5354 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5355
5356#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
5357 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5358
5359#define ID3D12CommandAllocator_SetName(This,Name) \
5360 ( (This)->lpVtbl -> SetName(This,Name) )
5361
5362
5363#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
5364 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5365
5366
5367
5368#define ID3D12CommandAllocator_Reset(This) \
5369 ( (This)->lpVtbl -> Reset(This) )
5370
5371#endif /* COBJMACROS */
5372
5373
5374#endif /* C style interface */
5375
5376
5377
5378
5379#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
5380
5381
5382#ifndef __ID3D12Fence_INTERFACE_DEFINED__
5383#define __ID3D12Fence_INTERFACE_DEFINED__
5384
5385/* interface ID3D12Fence */
5386/* [unique][local][object][uuid] */
5387
5388
5389EXTERN_C const IID IID_ID3D12Fence;
5390
5391#if defined(__cplusplus) && !defined(CINTERFACE)
5392
5393 MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
5394 ID3D12Fence : public ID3D12Pageable
5395 {
5396 public:
5397 virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
5398
5399 virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
5400 UINT64 Value,
5401 HANDLE hEvent) = 0;
5402
5403 virtual HRESULT STDMETHODCALLTYPE Signal(
5404 UINT64 Value) = 0;
5405
5406 };
5407
5408
5409#else /* C style interface */
5410
5411 typedef struct ID3D12FenceVtbl
5412 {
5413 BEGIN_INTERFACE
5414
5415 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5416 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5417 ID3D12Fence * This,
5418 REFIID riid,
5419 _COM_Outptr_ void **ppvObject);
5420
5421 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5422 ULONG ( STDMETHODCALLTYPE *AddRef )(
5423 ID3D12Fence * This);
5424
5425 DECLSPEC_XFGVIRT(IUnknown, Release)
5426 ULONG ( STDMETHODCALLTYPE *Release )(
5427 ID3D12Fence * This);
5428
5429 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5430 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5431 ID3D12Fence * This,
5432 _In_ REFGUID guid,
5433 _Inout_ UINT *pDataSize,
5434 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5435
5436 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5437 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5438 ID3D12Fence * This,
5439 _In_ REFGUID guid,
5440 _In_ UINT DataSize,
5441 _In_reads_bytes_opt_( DataSize ) const void *pData);
5442
5443 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5444 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5445 ID3D12Fence * This,
5446 _In_ REFGUID guid,
5447 _In_opt_ const IUnknown *pData);
5448
5449 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5450 HRESULT ( STDMETHODCALLTYPE *SetName )(
5451 ID3D12Fence * This,
5452 _In_z_ LPCWSTR Name);
5453
5454 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5455 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5456 ID3D12Fence * This,
5457 REFIID riid,
5458 _COM_Outptr_opt_ void **ppvDevice);
5459
5460 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
5461 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
5462 ID3D12Fence * This);
5463
5464 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
5465 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
5466 ID3D12Fence * This,
5467 UINT64 Value,
5468 HANDLE hEvent);
5469
5470 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
5471 HRESULT ( STDMETHODCALLTYPE *Signal )(
5472 ID3D12Fence * This,
5473 UINT64 Value);
5474
5475 END_INTERFACE
5476 } ID3D12FenceVtbl;
5477
5478 interface ID3D12Fence
5479 {
5480 CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
5481 };
5482
5483
5484
5485#ifdef COBJMACROS
5486
5487
5488#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
5489 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5490
5491#define ID3D12Fence_AddRef(This) \
5492 ( (This)->lpVtbl -> AddRef(This) )
5493
5494#define ID3D12Fence_Release(This) \
5495 ( (This)->lpVtbl -> Release(This) )
5496
5497
5498#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
5499 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5500
5501#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
5502 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5503
5504#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
5505 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5506
5507#define ID3D12Fence_SetName(This,Name) \
5508 ( (This)->lpVtbl -> SetName(This,Name) )
5509
5510
5511#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
5512 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5513
5514
5515
5516#define ID3D12Fence_GetCompletedValue(This) \
5517 ( (This)->lpVtbl -> GetCompletedValue(This) )
5518
5519#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
5520 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5521
5522#define ID3D12Fence_Signal(This,Value) \
5523 ( (This)->lpVtbl -> Signal(This,Value) )
5524
5525#endif /* COBJMACROS */
5526
5527
5528#endif /* C style interface */
5529
5530
5531
5532
5533#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
5534
5535
5536#ifndef __ID3D12Fence1_INTERFACE_DEFINED__
5537#define __ID3D12Fence1_INTERFACE_DEFINED__
5538
5539/* interface ID3D12Fence1 */
5540/* [unique][local][object][uuid] */
5541
5542
5543EXTERN_C const IID IID_ID3D12Fence1;
5544
5545#if defined(__cplusplus) && !defined(CINTERFACE)
5546
5547 MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
5548 ID3D12Fence1 : public ID3D12Fence
5549 {
5550 public:
5551 virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0;
5552
5553 };
5554
5555
5556#else /* C style interface */
5557
5558 typedef struct ID3D12Fence1Vtbl
5559 {
5560 BEGIN_INTERFACE
5561
5562 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5563 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5564 ID3D12Fence1 * This,
5565 REFIID riid,
5566 _COM_Outptr_ void **ppvObject);
5567
5568 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5569 ULONG ( STDMETHODCALLTYPE *AddRef )(
5570 ID3D12Fence1 * This);
5571
5572 DECLSPEC_XFGVIRT(IUnknown, Release)
5573 ULONG ( STDMETHODCALLTYPE *Release )(
5574 ID3D12Fence1 * This);
5575
5576 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5577 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5578 ID3D12Fence1 * This,
5579 _In_ REFGUID guid,
5580 _Inout_ UINT *pDataSize,
5581 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5582
5583 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5584 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5585 ID3D12Fence1 * This,
5586 _In_ REFGUID guid,
5587 _In_ UINT DataSize,
5588 _In_reads_bytes_opt_( DataSize ) const void *pData);
5589
5590 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5591 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5592 ID3D12Fence1 * This,
5593 _In_ REFGUID guid,
5594 _In_opt_ const IUnknown *pData);
5595
5596 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5597 HRESULT ( STDMETHODCALLTYPE *SetName )(
5598 ID3D12Fence1 * This,
5599 _In_z_ LPCWSTR Name);
5600
5601 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5602 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5603 ID3D12Fence1 * This,
5604 REFIID riid,
5605 _COM_Outptr_opt_ void **ppvDevice);
5606
5607 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
5608 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
5609 ID3D12Fence1 * This);
5610
5611 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
5612 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
5613 ID3D12Fence1 * This,
5614 UINT64 Value,
5615 HANDLE hEvent);
5616
5617 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
5618 HRESULT ( STDMETHODCALLTYPE *Signal )(
5619 ID3D12Fence1 * This,
5620 UINT64 Value);
5621
5622 DECLSPEC_XFGVIRT(ID3D12Fence1, GetCreationFlags)
5623 D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )(
5624 ID3D12Fence1 * This);
5625
5626 END_INTERFACE
5627 } ID3D12Fence1Vtbl;
5628
5629 interface ID3D12Fence1
5630 {
5631 CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl;
5632 };
5633
5634
5635
5636#ifdef COBJMACROS
5637
5638
5639#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \
5640 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5641
5642#define ID3D12Fence1_AddRef(This) \
5643 ( (This)->lpVtbl -> AddRef(This) )
5644
5645#define ID3D12Fence1_Release(This) \
5646 ( (This)->lpVtbl -> Release(This) )
5647
5648
5649#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \
5650 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5651
5652#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \
5653 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5654
5655#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \
5656 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5657
5658#define ID3D12Fence1_SetName(This,Name) \
5659 ( (This)->lpVtbl -> SetName(This,Name) )
5660
5661
5662#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \
5663 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5664
5665
5666
5667#define ID3D12Fence1_GetCompletedValue(This) \
5668 ( (This)->lpVtbl -> GetCompletedValue(This) )
5669
5670#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \
5671 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5672
5673#define ID3D12Fence1_Signal(This,Value) \
5674 ( (This)->lpVtbl -> Signal(This,Value) )
5675
5676
5677#define ID3D12Fence1_GetCreationFlags(This) \
5678 ( (This)->lpVtbl -> GetCreationFlags(This) )
5679
5680#endif /* COBJMACROS */
5681
5682
5683#endif /* C style interface */
5684
5685
5686
5687
5688#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */
5689
5690
5691#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
5692#define __ID3D12PipelineState_INTERFACE_DEFINED__
5693
5694/* interface ID3D12PipelineState */
5695/* [unique][local][object][uuid] */
5696
5697
5698EXTERN_C const IID IID_ID3D12PipelineState;
5699
5700#if defined(__cplusplus) && !defined(CINTERFACE)
5701
5702 MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
5703 ID3D12PipelineState : public ID3D12Pageable
5704 {
5705 public:
5706 virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
5707 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
5708
5709 };
5710
5711
5712#else /* C style interface */
5713
5714 typedef struct ID3D12PipelineStateVtbl
5715 {
5716 BEGIN_INTERFACE
5717
5718 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5719 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5720 ID3D12PipelineState * This,
5721 REFIID riid,
5722 _COM_Outptr_ void **ppvObject);
5723
5724 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5725 ULONG ( STDMETHODCALLTYPE *AddRef )(
5726 ID3D12PipelineState * This);
5727
5728 DECLSPEC_XFGVIRT(IUnknown, Release)
5729 ULONG ( STDMETHODCALLTYPE *Release )(
5730 ID3D12PipelineState * This);
5731
5732 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5733 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5734 ID3D12PipelineState * This,
5735 _In_ REFGUID guid,
5736 _Inout_ UINT *pDataSize,
5737 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5738
5739 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5740 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5741 ID3D12PipelineState * This,
5742 _In_ REFGUID guid,
5743 _In_ UINT DataSize,
5744 _In_reads_bytes_opt_( DataSize ) const void *pData);
5745
5746 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5747 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5748 ID3D12PipelineState * This,
5749 _In_ REFGUID guid,
5750 _In_opt_ const IUnknown *pData);
5751
5752 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5753 HRESULT ( STDMETHODCALLTYPE *SetName )(
5754 ID3D12PipelineState * This,
5755 _In_z_ LPCWSTR Name);
5756
5757 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5758 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5759 ID3D12PipelineState * This,
5760 REFIID riid,
5761 _COM_Outptr_opt_ void **ppvDevice);
5762
5763 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5764 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5765 ID3D12PipelineState * This,
5766 _COM_Outptr_ ID3DBlob **ppBlob);
5767
5768 END_INTERFACE
5769 } ID3D12PipelineStateVtbl;
5770
5771 interface ID3D12PipelineState
5772 {
5773 CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
5774 };
5775
5776
5777
5778#ifdef COBJMACROS
5779
5780
5781#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
5782 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5783
5784#define ID3D12PipelineState_AddRef(This) \
5785 ( (This)->lpVtbl -> AddRef(This) )
5786
5787#define ID3D12PipelineState_Release(This) \
5788 ( (This)->lpVtbl -> Release(This) )
5789
5790
5791#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
5792 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5793
5794#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
5795 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5796
5797#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
5798 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5799
5800#define ID3D12PipelineState_SetName(This,Name) \
5801 ( (This)->lpVtbl -> SetName(This,Name) )
5802
5803
5804#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
5805 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5806
5807
5808
5809#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
5810 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5811
5812#endif /* COBJMACROS */
5813
5814
5815#endif /* C style interface */
5816
5817
5818
5819
5820#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
5821
5822
5823#ifndef __ID3D12PipelineState1_INTERFACE_DEFINED__
5824#define __ID3D12PipelineState1_INTERFACE_DEFINED__
5825
5826/* interface ID3D12PipelineState1 */
5827/* [unique][local][object][uuid] */
5828
5829
5830EXTERN_C const IID IID_ID3D12PipelineState1;
5831
5832#if defined(__cplusplus) && !defined(CINTERFACE)
5833
5834 MIDL_INTERFACE("5646804c-9638-48f7-9182-b3ee5a6b60fb")
5835 ID3D12PipelineState1 : public ID3D12PipelineState
5836 {
5837 public:
5838 virtual HRESULT STDMETHODCALLTYPE GetRootSignature(
5839 REFIID riid,
5840 _COM_Outptr_ void **ppvRootSignature) = 0;
5841
5842 };
5843
5844
5845#else /* C style interface */
5846
5847 typedef struct ID3D12PipelineState1Vtbl
5848 {
5849 BEGIN_INTERFACE
5850
5851 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5852 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5853 ID3D12PipelineState1 * This,
5854 REFIID riid,
5855 _COM_Outptr_ void **ppvObject);
5856
5857 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5858 ULONG ( STDMETHODCALLTYPE *AddRef )(
5859 ID3D12PipelineState1 * This);
5860
5861 DECLSPEC_XFGVIRT(IUnknown, Release)
5862 ULONG ( STDMETHODCALLTYPE *Release )(
5863 ID3D12PipelineState1 * This);
5864
5865 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5866 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5867 ID3D12PipelineState1 * This,
5868 _In_ REFGUID guid,
5869 _Inout_ UINT *pDataSize,
5870 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5871
5872 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5873 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5874 ID3D12PipelineState1 * This,
5875 _In_ REFGUID guid,
5876 _In_ UINT DataSize,
5877 _In_reads_bytes_opt_( DataSize ) const void *pData);
5878
5879 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5880 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5881 ID3D12PipelineState1 * This,
5882 _In_ REFGUID guid,
5883 _In_opt_ const IUnknown *pData);
5884
5885 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5886 HRESULT ( STDMETHODCALLTYPE *SetName )(
5887 ID3D12PipelineState1 * This,
5888 _In_z_ LPCWSTR Name);
5889
5890 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5891 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5892 ID3D12PipelineState1 * This,
5893 REFIID riid,
5894 _COM_Outptr_opt_ void **ppvDevice);
5895
5896 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5897 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5898 ID3D12PipelineState1 * This,
5899 _COM_Outptr_ ID3DBlob **ppBlob);
5900
5901 DECLSPEC_XFGVIRT(ID3D12PipelineState1, GetRootSignature)
5902 HRESULT ( STDMETHODCALLTYPE *GetRootSignature )(
5903 ID3D12PipelineState1 * This,
5904 REFIID riid,
5905 _COM_Outptr_ void **ppvRootSignature);
5906
5907 END_INTERFACE
5908 } ID3D12PipelineState1Vtbl;
5909
5910 interface ID3D12PipelineState1
5911 {
5912 CONST_VTBL struct ID3D12PipelineState1Vtbl *lpVtbl;
5913 };
5914
5915
5916
5917#ifdef COBJMACROS
5918
5919
5920#define ID3D12PipelineState1_QueryInterface(This,riid,ppvObject) \
5921 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5922
5923#define ID3D12PipelineState1_AddRef(This) \
5924 ( (This)->lpVtbl -> AddRef(This) )
5925
5926#define ID3D12PipelineState1_Release(This) \
5927 ( (This)->lpVtbl -> Release(This) )
5928
5929
5930#define ID3D12PipelineState1_GetPrivateData(This,guid,pDataSize,pData) \
5931 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5932
5933#define ID3D12PipelineState1_SetPrivateData(This,guid,DataSize,pData) \
5934 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5935
5936#define ID3D12PipelineState1_SetPrivateDataInterface(This,guid,pData) \
5937 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5938
5939#define ID3D12PipelineState1_SetName(This,Name) \
5940 ( (This)->lpVtbl -> SetName(This,Name) )
5941
5942
5943#define ID3D12PipelineState1_GetDevice(This,riid,ppvDevice) \
5944 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5945
5946
5947
5948#define ID3D12PipelineState1_GetCachedBlob(This,ppBlob) \
5949 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5950
5951
5952#define ID3D12PipelineState1_GetRootSignature(This,riid,ppvRootSignature) \
5953 ( (This)->lpVtbl -> GetRootSignature(This,riid,ppvRootSignature) )
5954
5955#endif /* COBJMACROS */
5956
5957
5958#endif /* C style interface */
5959
5960
5961
5962
5963#endif /* __ID3D12PipelineState1_INTERFACE_DEFINED__ */
5964
5965
5966#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5967#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5968
5969/* interface ID3D12DescriptorHeap */
5970/* [unique][local][object][uuid] */
5971
5972
5973EXTERN_C const IID IID_ID3D12DescriptorHeap;
5974
5975#if defined(__cplusplus) && !defined(CINTERFACE)
5976
5977 MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
5978 ID3D12DescriptorHeap : public ID3D12Pageable
5979 {
5980 public:
5981#if defined(_MSC_VER) || !defined(_WIN32)
5982 virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5983#else
5984 virtual D3D12_DESCRIPTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
5985 D3D12_DESCRIPTOR_HEAP_DESC * RetVal) = 0;
5986#endif
5987
5988#if defined(_MSC_VER) || !defined(_WIN32)
5989 virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
5990#else
5991 virtual D3D12_CPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart(
5992 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal) = 0;
5993#endif
5994
5995#if defined(_MSC_VER) || !defined(_WIN32)
5996 virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
5997#else
5998 virtual D3D12_GPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart(
5999 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal) = 0;
6000#endif
6001
6002 };
6003
6004
6005#else /* C style interface */
6006
6007 typedef struct ID3D12DescriptorHeapVtbl
6008 {
6009 BEGIN_INTERFACE
6010
6011 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6012 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6013 ID3D12DescriptorHeap * This,
6014 REFIID riid,
6015 _COM_Outptr_ void **ppvObject);
6016
6017 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6018 ULONG ( STDMETHODCALLTYPE *AddRef )(
6019 ID3D12DescriptorHeap * This);
6020
6021 DECLSPEC_XFGVIRT(IUnknown, Release)
6022 ULONG ( STDMETHODCALLTYPE *Release )(
6023 ID3D12DescriptorHeap * This);
6024
6025 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6026 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6027 ID3D12DescriptorHeap * This,
6028 _In_ REFGUID guid,
6029 _Inout_ UINT *pDataSize,
6030 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6031
6032 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6033 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6034 ID3D12DescriptorHeap * This,
6035 _In_ REFGUID guid,
6036 _In_ UINT DataSize,
6037 _In_reads_bytes_opt_( DataSize ) const void *pData);
6038
6039 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6040 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6041 ID3D12DescriptorHeap * This,
6042 _In_ REFGUID guid,
6043 _In_opt_ const IUnknown *pData);
6044
6045 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6046 HRESULT ( STDMETHODCALLTYPE *SetName )(
6047 ID3D12DescriptorHeap * This,
6048 _In_z_ LPCWSTR Name);
6049
6050 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6051 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6052 ID3D12DescriptorHeap * This,
6053 REFIID riid,
6054 _COM_Outptr_opt_ void **ppvDevice);
6055
6056 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetDesc)
6057#if !defined(_WIN32)
6058 D3D12_DESCRIPTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
6059 ID3D12DescriptorHeap * This);
6060
6061#else
6062 D3D12_DESCRIPTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
6063 ID3D12DescriptorHeap * This,
6064 D3D12_DESCRIPTOR_HEAP_DESC * RetVal);
6065
6066#endif
6067
6068 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetCPUDescriptorHandleForHeapStart)
6069#if !defined(_WIN32)
6070 D3D12_CPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
6071 ID3D12DescriptorHeap * This);
6072
6073#else
6074 D3D12_CPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
6075 ID3D12DescriptorHeap * This,
6076 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal);
6077
6078#endif
6079
6080 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetGPUDescriptorHandleForHeapStart)
6081#if !defined(_WIN32)
6082 D3D12_GPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
6083 ID3D12DescriptorHeap * This);
6084
6085#else
6086 D3D12_GPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
6087 ID3D12DescriptorHeap * This,
6088 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal);
6089
6090#endif
6091
6092 END_INTERFACE
6093 } ID3D12DescriptorHeapVtbl;
6094
6095 interface ID3D12DescriptorHeap
6096 {
6097 CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
6098 };
6099
6100
6101
6102#ifdef COBJMACROS
6103
6104
6105#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
6106 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6107
6108#define ID3D12DescriptorHeap_AddRef(This) \
6109 ( (This)->lpVtbl -> AddRef(This) )
6110
6111#define ID3D12DescriptorHeap_Release(This) \
6112 ( (This)->lpVtbl -> Release(This) )
6113
6114
6115#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
6116 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6117
6118#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
6119 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6120
6121#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
6122 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6123
6124#define ID3D12DescriptorHeap_SetName(This,Name) \
6125 ( (This)->lpVtbl -> SetName(This,Name) )
6126
6127
6128#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
6129 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6130
6131
6132#if !defined(_WIN32)
6133
6134#define ID3D12DescriptorHeap_GetDesc(This) \
6135 ( (This)->lpVtbl -> GetDesc(This) )
6136#else
6137#define ID3D12DescriptorHeap_GetDesc(This,RetVal) \
6138 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
6139#endif
6140#if !defined(_WIN32)
6141
6142#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This) \
6143 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This) )
6144#else
6145#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This,RetVal) \
6146 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This,RetVal) )
6147#endif
6148#if !defined(_WIN32)
6149
6150#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This) \
6151 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This) )
6152#else
6153#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This,RetVal) \
6154 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This,RetVal) )
6155#endif
6156
6157#endif /* COBJMACROS */
6158
6159
6160#endif /* C style interface */
6161
6162
6163
6164
6165#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
6166
6167
6168#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
6169#define __ID3D12QueryHeap_INTERFACE_DEFINED__
6170
6171/* interface ID3D12QueryHeap */
6172/* [unique][local][object][uuid] */
6173
6174
6175EXTERN_C const IID IID_ID3D12QueryHeap;
6176
6177#if defined(__cplusplus) && !defined(CINTERFACE)
6178
6179 MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
6180 ID3D12QueryHeap : public ID3D12Pageable
6181 {
6182 public:
6183 };
6184
6185
6186#else /* C style interface */
6187
6188 typedef struct ID3D12QueryHeapVtbl
6189 {
6190 BEGIN_INTERFACE
6191
6192 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6193 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6194 ID3D12QueryHeap * This,
6195 REFIID riid,
6196 _COM_Outptr_ void **ppvObject);
6197
6198 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6199 ULONG ( STDMETHODCALLTYPE *AddRef )(
6200 ID3D12QueryHeap * This);
6201
6202 DECLSPEC_XFGVIRT(IUnknown, Release)
6203 ULONG ( STDMETHODCALLTYPE *Release )(
6204 ID3D12QueryHeap * This);
6205
6206 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6207 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6208 ID3D12QueryHeap * This,
6209 _In_ REFGUID guid,
6210 _Inout_ UINT *pDataSize,
6211 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6212
6213 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6214 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6215 ID3D12QueryHeap * This,
6216 _In_ REFGUID guid,
6217 _In_ UINT DataSize,
6218 _In_reads_bytes_opt_( DataSize ) const void *pData);
6219
6220 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6221 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6222 ID3D12QueryHeap * This,
6223 _In_ REFGUID guid,
6224 _In_opt_ const IUnknown *pData);
6225
6226 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6227 HRESULT ( STDMETHODCALLTYPE *SetName )(
6228 ID3D12QueryHeap * This,
6229 _In_z_ LPCWSTR Name);
6230
6231 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6232 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6233 ID3D12QueryHeap * This,
6234 REFIID riid,
6235 _COM_Outptr_opt_ void **ppvDevice);
6236
6237 END_INTERFACE
6238 } ID3D12QueryHeapVtbl;
6239
6240 interface ID3D12QueryHeap
6241 {
6242 CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
6243 };
6244
6245
6246
6247#ifdef COBJMACROS
6248
6249
6250#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
6251 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6252
6253#define ID3D12QueryHeap_AddRef(This) \
6254 ( (This)->lpVtbl -> AddRef(This) )
6255
6256#define ID3D12QueryHeap_Release(This) \
6257 ( (This)->lpVtbl -> Release(This) )
6258
6259
6260#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
6261 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6262
6263#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
6264 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6265
6266#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
6267 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6268
6269#define ID3D12QueryHeap_SetName(This,Name) \
6270 ( (This)->lpVtbl -> SetName(This,Name) )
6271
6272
6273#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
6274 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6275
6276
6277
6278#endif /* COBJMACROS */
6279
6280
6281#endif /* C style interface */
6282
6283
6284
6285
6286#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
6287
6288
6289#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
6290#define __ID3D12CommandSignature_INTERFACE_DEFINED__
6291
6292/* interface ID3D12CommandSignature */
6293/* [unique][local][object][uuid] */
6294
6295
6296EXTERN_C const IID IID_ID3D12CommandSignature;
6297
6298#if defined(__cplusplus) && !defined(CINTERFACE)
6299
6300 MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
6301 ID3D12CommandSignature : public ID3D12Pageable
6302 {
6303 public:
6304 };
6305
6306
6307#else /* C style interface */
6308
6309 typedef struct ID3D12CommandSignatureVtbl
6310 {
6311 BEGIN_INTERFACE
6312
6313 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6314 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6315 ID3D12CommandSignature * This,
6316 REFIID riid,
6317 _COM_Outptr_ void **ppvObject);
6318
6319 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6320 ULONG ( STDMETHODCALLTYPE *AddRef )(
6321 ID3D12CommandSignature * This);
6322
6323 DECLSPEC_XFGVIRT(IUnknown, Release)
6324 ULONG ( STDMETHODCALLTYPE *Release )(
6325 ID3D12CommandSignature * This);
6326
6327 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6328 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6329 ID3D12CommandSignature * This,
6330 _In_ REFGUID guid,
6331 _Inout_ UINT *pDataSize,
6332 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6333
6334 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6335 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6336 ID3D12CommandSignature * This,
6337 _In_ REFGUID guid,
6338 _In_ UINT DataSize,
6339 _In_reads_bytes_opt_( DataSize ) const void *pData);
6340
6341 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6342 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6343 ID3D12CommandSignature * This,
6344 _In_ REFGUID guid,
6345 _In_opt_ const IUnknown *pData);
6346
6347 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6348 HRESULT ( STDMETHODCALLTYPE *SetName )(
6349 ID3D12CommandSignature * This,
6350 _In_z_ LPCWSTR Name);
6351
6352 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6353 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6354 ID3D12CommandSignature * This,
6355 REFIID riid,
6356 _COM_Outptr_opt_ void **ppvDevice);
6357
6358 END_INTERFACE
6359 } ID3D12CommandSignatureVtbl;
6360
6361 interface ID3D12CommandSignature
6362 {
6363 CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
6364 };
6365
6366
6367
6368#ifdef COBJMACROS
6369
6370
6371#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
6372 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6373
6374#define ID3D12CommandSignature_AddRef(This) \
6375 ( (This)->lpVtbl -> AddRef(This) )
6376
6377#define ID3D12CommandSignature_Release(This) \
6378 ( (This)->lpVtbl -> Release(This) )
6379
6380
6381#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
6382 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6383
6384#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
6385 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6386
6387#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
6388 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6389
6390#define ID3D12CommandSignature_SetName(This,Name) \
6391 ( (This)->lpVtbl -> SetName(This,Name) )
6392
6393
6394#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
6395 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6396
6397
6398
6399#endif /* COBJMACROS */
6400
6401
6402#endif /* C style interface */
6403
6404
6405
6406
6407#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
6408
6409
6410#ifndef __ID3D12CommandList_INTERFACE_DEFINED__
6411#define __ID3D12CommandList_INTERFACE_DEFINED__
6412
6413/* interface ID3D12CommandList */
6414/* [unique][local][object][uuid] */
6415
6416
6417EXTERN_C const IID IID_ID3D12CommandList;
6418
6419#if defined(__cplusplus) && !defined(CINTERFACE)
6420
6421 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
6422 ID3D12CommandList : public ID3D12DeviceChild
6423 {
6424 public:
6425 virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
6426
6427 };
6428
6429
6430#else /* C style interface */
6431
6432 typedef struct ID3D12CommandListVtbl
6433 {
6434 BEGIN_INTERFACE
6435
6436 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6437 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6438 ID3D12CommandList * This,
6439 REFIID riid,
6440 _COM_Outptr_ void **ppvObject);
6441
6442 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6443 ULONG ( STDMETHODCALLTYPE *AddRef )(
6444 ID3D12CommandList * This);
6445
6446 DECLSPEC_XFGVIRT(IUnknown, Release)
6447 ULONG ( STDMETHODCALLTYPE *Release )(
6448 ID3D12CommandList * This);
6449
6450 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6451 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6452 ID3D12CommandList * This,
6453 _In_ REFGUID guid,
6454 _Inout_ UINT *pDataSize,
6455 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6456
6457 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6458 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6459 ID3D12CommandList * This,
6460 _In_ REFGUID guid,
6461 _In_ UINT DataSize,
6462 _In_reads_bytes_opt_( DataSize ) const void *pData);
6463
6464 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6465 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6466 ID3D12CommandList * This,
6467 _In_ REFGUID guid,
6468 _In_opt_ const IUnknown *pData);
6469
6470 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6471 HRESULT ( STDMETHODCALLTYPE *SetName )(
6472 ID3D12CommandList * This,
6473 _In_z_ LPCWSTR Name);
6474
6475 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6476 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6477 ID3D12CommandList * This,
6478 REFIID riid,
6479 _COM_Outptr_opt_ void **ppvDevice);
6480
6481 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6482 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6483 ID3D12CommandList * This);
6484
6485 END_INTERFACE
6486 } ID3D12CommandListVtbl;
6487
6488 interface ID3D12CommandList
6489 {
6490 CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
6491 };
6492
6493
6494
6495#ifdef COBJMACROS
6496
6497
6498#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
6499 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6500
6501#define ID3D12CommandList_AddRef(This) \
6502 ( (This)->lpVtbl -> AddRef(This) )
6503
6504#define ID3D12CommandList_Release(This) \
6505 ( (This)->lpVtbl -> Release(This) )
6506
6507
6508#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
6509 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6510
6511#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
6512 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6513
6514#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
6515 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6516
6517#define ID3D12CommandList_SetName(This,Name) \
6518 ( (This)->lpVtbl -> SetName(This,Name) )
6519
6520
6521#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
6522 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6523
6524
6525#define ID3D12CommandList_GetType(This) \
6526 ( (This)->lpVtbl -> GetType(This) )
6527
6528#endif /* COBJMACROS */
6529
6530
6531#endif /* C style interface */
6532
6533
6534
6535
6536#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
6537
6538
6539#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
6540#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
6541
6542/* interface ID3D12GraphicsCommandList */
6543/* [unique][local][object][uuid] */
6544
6545
6546EXTERN_C const IID IID_ID3D12GraphicsCommandList;
6547
6548#if defined(__cplusplus) && !defined(CINTERFACE)
6549
6550 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
6551 ID3D12GraphicsCommandList : public ID3D12CommandList
6552 {
6553 public:
6554 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
6555
6556 virtual HRESULT STDMETHODCALLTYPE Reset(
6557 _In_ ID3D12CommandAllocator *pAllocator,
6558 _In_opt_ ID3D12PipelineState *pInitialState) = 0;
6559
6560 virtual void STDMETHODCALLTYPE ClearState(
6561 _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
6562
6563 virtual void STDMETHODCALLTYPE DrawInstanced(
6564 _In_ UINT VertexCountPerInstance,
6565 _In_ UINT InstanceCount,
6566 _In_ UINT StartVertexLocation,
6567 _In_ UINT StartInstanceLocation) = 0;
6568
6569 virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
6570 _In_ UINT IndexCountPerInstance,
6571 _In_ UINT InstanceCount,
6572 _In_ UINT StartIndexLocation,
6573 _In_ INT BaseVertexLocation,
6574 _In_ UINT StartInstanceLocation) = 0;
6575
6576 virtual void STDMETHODCALLTYPE Dispatch(
6577 _In_ UINT ThreadGroupCountX,
6578 _In_ UINT ThreadGroupCountY,
6579 _In_ UINT ThreadGroupCountZ) = 0;
6580
6581 virtual void STDMETHODCALLTYPE CopyBufferRegion(
6582 _In_ ID3D12Resource *pDstBuffer,
6583 UINT64 DstOffset,
6584 _In_ ID3D12Resource *pSrcBuffer,
6585 UINT64 SrcOffset,
6586 UINT64 NumBytes) = 0;
6587
6588 virtual void STDMETHODCALLTYPE CopyTextureRegion(
6589 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6590 UINT DstX,
6591 UINT DstY,
6592 UINT DstZ,
6593 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6594 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
6595
6596 virtual void STDMETHODCALLTYPE CopyResource(
6597 _In_ ID3D12Resource *pDstResource,
6598 _In_ ID3D12Resource *pSrcResource) = 0;
6599
6600 virtual void STDMETHODCALLTYPE CopyTiles(
6601 _In_ ID3D12Resource *pTiledResource,
6602 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6603 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6604 _In_ ID3D12Resource *pBuffer,
6605 UINT64 BufferStartOffsetInBytes,
6606 D3D12_TILE_COPY_FLAGS Flags) = 0;
6607
6608 virtual void STDMETHODCALLTYPE ResolveSubresource(
6609 _In_ ID3D12Resource *pDstResource,
6610 _In_ UINT DstSubresource,
6611 _In_ ID3D12Resource *pSrcResource,
6612 _In_ UINT SrcSubresource,
6613 _In_ DXGI_FORMAT Format) = 0;
6614
6615 virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
6616 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
6617
6618 virtual void STDMETHODCALLTYPE RSSetViewports(
6619 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6620 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
6621
6622 virtual void STDMETHODCALLTYPE RSSetScissorRects(
6623 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6624 _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
6625
6626 virtual void STDMETHODCALLTYPE OMSetBlendFactor(
6627 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0;
6628
6629 virtual void STDMETHODCALLTYPE OMSetStencilRef(
6630 _In_ UINT StencilRef) = 0;
6631
6632 virtual void STDMETHODCALLTYPE SetPipelineState(
6633 _In_ ID3D12PipelineState *pPipelineState) = 0;
6634
6635 virtual void STDMETHODCALLTYPE ResourceBarrier(
6636 _In_ UINT NumBarriers,
6637 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
6638
6639 virtual void STDMETHODCALLTYPE ExecuteBundle(
6640 _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
6641
6642 virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
6643 _In_ UINT NumDescriptorHeaps,
6644 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
6645
6646 virtual void STDMETHODCALLTYPE SetComputeRootSignature(
6647 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
6648
6649 virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
6650 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
6651
6652 virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
6653 _In_ UINT RootParameterIndex,
6654 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
6655
6656 virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
6657 _In_ UINT RootParameterIndex,
6658 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
6659
6660 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
6661 _In_ UINT RootParameterIndex,
6662 _In_ UINT SrcData,
6663 _In_ UINT DestOffsetIn32BitValues) = 0;
6664
6665 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
6666 _In_ UINT RootParameterIndex,
6667 _In_ UINT SrcData,
6668 _In_ UINT DestOffsetIn32BitValues) = 0;
6669
6670 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
6671 _In_ UINT RootParameterIndex,
6672 _In_ UINT Num32BitValuesToSet,
6673 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6674 _In_ UINT DestOffsetIn32BitValues) = 0;
6675
6676 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
6677 _In_ UINT RootParameterIndex,
6678 _In_ UINT Num32BitValuesToSet,
6679 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6680 _In_ UINT DestOffsetIn32BitValues) = 0;
6681
6682 virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
6683 _In_ UINT RootParameterIndex,
6684 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6685
6686 virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
6687 _In_ UINT RootParameterIndex,
6688 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6689
6690 virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
6691 _In_ UINT RootParameterIndex,
6692 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6693
6694 virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
6695 _In_ UINT RootParameterIndex,
6696 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6697
6698 virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
6699 _In_ UINT RootParameterIndex,
6700 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6701
6702 virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
6703 _In_ UINT RootParameterIndex,
6704 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6705
6706 virtual void STDMETHODCALLTYPE IASetIndexBuffer(
6707 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
6708
6709 virtual void STDMETHODCALLTYPE IASetVertexBuffers(
6710 _In_ UINT StartSlot,
6711 _In_ UINT NumViews,
6712 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
6713
6714 virtual void STDMETHODCALLTYPE SOSetTargets(
6715 _In_ UINT StartSlot,
6716 _In_ UINT NumViews,
6717 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
6718
6719 virtual void STDMETHODCALLTYPE OMSetRenderTargets(
6720 _In_ UINT NumRenderTargetDescriptors,
6721 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6722 _In_ BOOL RTsSingleHandleToDescriptorRange,
6723 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
6724
6725 virtual void STDMETHODCALLTYPE ClearDepthStencilView(
6726 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6727 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6728 _In_ FLOAT Depth,
6729 _In_ UINT8 Stencil,
6730 _In_ UINT NumRects,
6731 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6732
6733 virtual void STDMETHODCALLTYPE ClearRenderTargetView(
6734 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6735 _In_ const FLOAT ColorRGBA[ 4 ],
6736 _In_ UINT NumRects,
6737 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6738
6739 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
6740 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6741 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6742 _In_ ID3D12Resource *pResource,
6743 _In_ const UINT Values[ 4 ],
6744 _In_ UINT NumRects,
6745 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6746
6747 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
6748 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6749 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6750 _In_ ID3D12Resource *pResource,
6751 _In_ const FLOAT Values[ 4 ],
6752 _In_ UINT NumRects,
6753 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6754
6755 virtual void STDMETHODCALLTYPE DiscardResource(
6756 _In_ ID3D12Resource *pResource,
6757 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
6758
6759 virtual void STDMETHODCALLTYPE BeginQuery(
6760 _In_ ID3D12QueryHeap *pQueryHeap,
6761 _In_ D3D12_QUERY_TYPE Type,
6762 _In_ UINT Index) = 0;
6763
6764 virtual void STDMETHODCALLTYPE EndQuery(
6765 _In_ ID3D12QueryHeap *pQueryHeap,
6766 _In_ D3D12_QUERY_TYPE Type,
6767 _In_ UINT Index) = 0;
6768
6769 virtual void STDMETHODCALLTYPE ResolveQueryData(
6770 _In_ ID3D12QueryHeap *pQueryHeap,
6771 _In_ D3D12_QUERY_TYPE Type,
6772 _In_ UINT StartIndex,
6773 _In_ UINT NumQueries,
6774 _In_ ID3D12Resource *pDestinationBuffer,
6775 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
6776
6777 virtual void STDMETHODCALLTYPE SetPredication(
6778 _In_opt_ ID3D12Resource *pBuffer,
6779 _In_ UINT64 AlignedBufferOffset,
6780 _In_ D3D12_PREDICATION_OP Operation) = 0;
6781
6782 virtual void STDMETHODCALLTYPE SetMarker(
6783 UINT Metadata,
6784 _In_reads_bytes_opt_(Size) const void *pData,
6785 UINT Size) = 0;
6786
6787 virtual void STDMETHODCALLTYPE BeginEvent(
6788 UINT Metadata,
6789 _In_reads_bytes_opt_(Size) const void *pData,
6790 UINT Size) = 0;
6791
6792 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
6793
6794 virtual void STDMETHODCALLTYPE ExecuteIndirect(
6795 _In_ ID3D12CommandSignature *pCommandSignature,
6796 _In_ UINT MaxCommandCount,
6797 _In_ ID3D12Resource *pArgumentBuffer,
6798 _In_ UINT64 ArgumentBufferOffset,
6799 _In_opt_ ID3D12Resource *pCountBuffer,
6800 _In_ UINT64 CountBufferOffset) = 0;
6801
6802 };
6803
6804
6805#else /* C style interface */
6806
6807 typedef struct ID3D12GraphicsCommandListVtbl
6808 {
6809 BEGIN_INTERFACE
6810
6811 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6812 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6813 ID3D12GraphicsCommandList * This,
6814 REFIID riid,
6815 _COM_Outptr_ void **ppvObject);
6816
6817 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6818 ULONG ( STDMETHODCALLTYPE *AddRef )(
6819 ID3D12GraphicsCommandList * This);
6820
6821 DECLSPEC_XFGVIRT(IUnknown, Release)
6822 ULONG ( STDMETHODCALLTYPE *Release )(
6823 ID3D12GraphicsCommandList * This);
6824
6825 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6826 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6827 ID3D12GraphicsCommandList * This,
6828 _In_ REFGUID guid,
6829 _Inout_ UINT *pDataSize,
6830 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6831
6832 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6833 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6834 ID3D12GraphicsCommandList * This,
6835 _In_ REFGUID guid,
6836 _In_ UINT DataSize,
6837 _In_reads_bytes_opt_( DataSize ) const void *pData);
6838
6839 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6840 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6841 ID3D12GraphicsCommandList * This,
6842 _In_ REFGUID guid,
6843 _In_opt_ const IUnknown *pData);
6844
6845 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6846 HRESULT ( STDMETHODCALLTYPE *SetName )(
6847 ID3D12GraphicsCommandList * This,
6848 _In_z_ LPCWSTR Name);
6849
6850 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6851 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6852 ID3D12GraphicsCommandList * This,
6853 REFIID riid,
6854 _COM_Outptr_opt_ void **ppvDevice);
6855
6856 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6857 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6858 ID3D12GraphicsCommandList * This);
6859
6860 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6861 HRESULT ( STDMETHODCALLTYPE *Close )(
6862 ID3D12GraphicsCommandList * This);
6863
6864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6865 HRESULT ( STDMETHODCALLTYPE *Reset )(
6866 ID3D12GraphicsCommandList * This,
6867 _In_ ID3D12CommandAllocator *pAllocator,
6868 _In_opt_ ID3D12PipelineState *pInitialState);
6869
6870 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6871 void ( STDMETHODCALLTYPE *ClearState )(
6872 ID3D12GraphicsCommandList * This,
6873 _In_opt_ ID3D12PipelineState *pPipelineState);
6874
6875 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6876 void ( STDMETHODCALLTYPE *DrawInstanced )(
6877 ID3D12GraphicsCommandList * This,
6878 _In_ UINT VertexCountPerInstance,
6879 _In_ UINT InstanceCount,
6880 _In_ UINT StartVertexLocation,
6881 _In_ UINT StartInstanceLocation);
6882
6883 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6884 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6885 ID3D12GraphicsCommandList * This,
6886 _In_ UINT IndexCountPerInstance,
6887 _In_ UINT InstanceCount,
6888 _In_ UINT StartIndexLocation,
6889 _In_ INT BaseVertexLocation,
6890 _In_ UINT StartInstanceLocation);
6891
6892 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6893 void ( STDMETHODCALLTYPE *Dispatch )(
6894 ID3D12GraphicsCommandList * This,
6895 _In_ UINT ThreadGroupCountX,
6896 _In_ UINT ThreadGroupCountY,
6897 _In_ UINT ThreadGroupCountZ);
6898
6899 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6900 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6901 ID3D12GraphicsCommandList * This,
6902 _In_ ID3D12Resource *pDstBuffer,
6903 UINT64 DstOffset,
6904 _In_ ID3D12Resource *pSrcBuffer,
6905 UINT64 SrcOffset,
6906 UINT64 NumBytes);
6907
6908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6909 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6910 ID3D12GraphicsCommandList * This,
6911 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6912 UINT DstX,
6913 UINT DstY,
6914 UINT DstZ,
6915 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6916 _In_opt_ const D3D12_BOX *pSrcBox);
6917
6918 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6919 void ( STDMETHODCALLTYPE *CopyResource )(
6920 ID3D12GraphicsCommandList * This,
6921 _In_ ID3D12Resource *pDstResource,
6922 _In_ ID3D12Resource *pSrcResource);
6923
6924 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6925 void ( STDMETHODCALLTYPE *CopyTiles )(
6926 ID3D12GraphicsCommandList * This,
6927 _In_ ID3D12Resource *pTiledResource,
6928 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6929 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6930 _In_ ID3D12Resource *pBuffer,
6931 UINT64 BufferStartOffsetInBytes,
6932 D3D12_TILE_COPY_FLAGS Flags);
6933
6934 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6935 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6936 ID3D12GraphicsCommandList * This,
6937 _In_ ID3D12Resource *pDstResource,
6938 _In_ UINT DstSubresource,
6939 _In_ ID3D12Resource *pSrcResource,
6940 _In_ UINT SrcSubresource,
6941 _In_ DXGI_FORMAT Format);
6942
6943 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6944 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6945 ID3D12GraphicsCommandList * This,
6946 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6947
6948 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6949 void ( STDMETHODCALLTYPE *RSSetViewports )(
6950 ID3D12GraphicsCommandList * This,
6951 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6952 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6953
6954 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6955 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6956 ID3D12GraphicsCommandList * This,
6957 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6958 _In_reads_( NumRects) const D3D12_RECT *pRects);
6959
6960 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6961 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6962 ID3D12GraphicsCommandList * This,
6963 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6964
6965 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6966 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6967 ID3D12GraphicsCommandList * This,
6968 _In_ UINT StencilRef);
6969
6970 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6971 void ( STDMETHODCALLTYPE *SetPipelineState )(
6972 ID3D12GraphicsCommandList * This,
6973 _In_ ID3D12PipelineState *pPipelineState);
6974
6975 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6976 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6977 ID3D12GraphicsCommandList * This,
6978 _In_ UINT NumBarriers,
6979 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6980
6981 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6982 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6983 ID3D12GraphicsCommandList * This,
6984 _In_ ID3D12GraphicsCommandList *pCommandList);
6985
6986 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6987 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6988 ID3D12GraphicsCommandList * This,
6989 _In_ UINT NumDescriptorHeaps,
6990 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6991
6992 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6993 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6994 ID3D12GraphicsCommandList * This,
6995 _In_opt_ ID3D12RootSignature *pRootSignature);
6996
6997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
6998 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
6999 ID3D12GraphicsCommandList * This,
7000 _In_opt_ ID3D12RootSignature *pRootSignature);
7001
7002 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7003 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7004 ID3D12GraphicsCommandList * This,
7005 _In_ UINT RootParameterIndex,
7006 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7007
7008 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7009 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7010 ID3D12GraphicsCommandList * This,
7011 _In_ UINT RootParameterIndex,
7012 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7013
7014 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7015 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7016 ID3D12GraphicsCommandList * This,
7017 _In_ UINT RootParameterIndex,
7018 _In_ UINT SrcData,
7019 _In_ UINT DestOffsetIn32BitValues);
7020
7021 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7022 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7023 ID3D12GraphicsCommandList * This,
7024 _In_ UINT RootParameterIndex,
7025 _In_ UINT SrcData,
7026 _In_ UINT DestOffsetIn32BitValues);
7027
7028 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7029 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7030 ID3D12GraphicsCommandList * This,
7031 _In_ UINT RootParameterIndex,
7032 _In_ UINT Num32BitValuesToSet,
7033 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7034 _In_ UINT DestOffsetIn32BitValues);
7035
7036 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7037 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7038 ID3D12GraphicsCommandList * This,
7039 _In_ UINT RootParameterIndex,
7040 _In_ UINT Num32BitValuesToSet,
7041 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7042 _In_ UINT DestOffsetIn32BitValues);
7043
7044 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7045 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7046 ID3D12GraphicsCommandList * This,
7047 _In_ UINT RootParameterIndex,
7048 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7049
7050 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7051 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7052 ID3D12GraphicsCommandList * This,
7053 _In_ UINT RootParameterIndex,
7054 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7055
7056 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7057 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7058 ID3D12GraphicsCommandList * This,
7059 _In_ UINT RootParameterIndex,
7060 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7061
7062 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7063 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7064 ID3D12GraphicsCommandList * This,
7065 _In_ UINT RootParameterIndex,
7066 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7067
7068 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7069 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7070 ID3D12GraphicsCommandList * This,
7071 _In_ UINT RootParameterIndex,
7072 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7073
7074 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7075 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7076 ID3D12GraphicsCommandList * This,
7077 _In_ UINT RootParameterIndex,
7078 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7079
7080 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7081 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7082 ID3D12GraphicsCommandList * This,
7083 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7084
7085 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7086 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7087 ID3D12GraphicsCommandList * This,
7088 _In_ UINT StartSlot,
7089 _In_ UINT NumViews,
7090 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7091
7092 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7093 void ( STDMETHODCALLTYPE *SOSetTargets )(
7094 ID3D12GraphicsCommandList * This,
7095 _In_ UINT StartSlot,
7096 _In_ UINT NumViews,
7097 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7098
7099 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7100 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7101 ID3D12GraphicsCommandList * This,
7102 _In_ UINT NumRenderTargetDescriptors,
7103 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7104 _In_ BOOL RTsSingleHandleToDescriptorRange,
7105 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7106
7107 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7108 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7109 ID3D12GraphicsCommandList * This,
7110 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7111 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7112 _In_ FLOAT Depth,
7113 _In_ UINT8 Stencil,
7114 _In_ UINT NumRects,
7115 _In_reads_(NumRects) const D3D12_RECT *pRects);
7116
7117 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7118 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7119 ID3D12GraphicsCommandList * This,
7120 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7121 _In_ const FLOAT ColorRGBA[ 4 ],
7122 _In_ UINT NumRects,
7123 _In_reads_(NumRects) const D3D12_RECT *pRects);
7124
7125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7126 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7127 ID3D12GraphicsCommandList * This,
7128 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7129 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7130 _In_ ID3D12Resource *pResource,
7131 _In_ const UINT Values[ 4 ],
7132 _In_ UINT NumRects,
7133 _In_reads_(NumRects) const D3D12_RECT *pRects);
7134
7135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7136 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7137 ID3D12GraphicsCommandList * This,
7138 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7139 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7140 _In_ ID3D12Resource *pResource,
7141 _In_ const FLOAT Values[ 4 ],
7142 _In_ UINT NumRects,
7143 _In_reads_(NumRects) const D3D12_RECT *pRects);
7144
7145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7146 void ( STDMETHODCALLTYPE *DiscardResource )(
7147 ID3D12GraphicsCommandList * This,
7148 _In_ ID3D12Resource *pResource,
7149 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7150
7151 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7152 void ( STDMETHODCALLTYPE *BeginQuery )(
7153 ID3D12GraphicsCommandList * This,
7154 _In_ ID3D12QueryHeap *pQueryHeap,
7155 _In_ D3D12_QUERY_TYPE Type,
7156 _In_ UINT Index);
7157
7158 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7159 void ( STDMETHODCALLTYPE *EndQuery )(
7160 ID3D12GraphicsCommandList * This,
7161 _In_ ID3D12QueryHeap *pQueryHeap,
7162 _In_ D3D12_QUERY_TYPE Type,
7163 _In_ UINT Index);
7164
7165 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7166 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7167 ID3D12GraphicsCommandList * This,
7168 _In_ ID3D12QueryHeap *pQueryHeap,
7169 _In_ D3D12_QUERY_TYPE Type,
7170 _In_ UINT StartIndex,
7171 _In_ UINT NumQueries,
7172 _In_ ID3D12Resource *pDestinationBuffer,
7173 _In_ UINT64 AlignedDestinationBufferOffset);
7174
7175 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7176 void ( STDMETHODCALLTYPE *SetPredication )(
7177 ID3D12GraphicsCommandList * This,
7178 _In_opt_ ID3D12Resource *pBuffer,
7179 _In_ UINT64 AlignedBufferOffset,
7180 _In_ D3D12_PREDICATION_OP Operation);
7181
7182 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7183 void ( STDMETHODCALLTYPE *SetMarker )(
7184 ID3D12GraphicsCommandList * This,
7185 UINT Metadata,
7186 _In_reads_bytes_opt_(Size) const void *pData,
7187 UINT Size);
7188
7189 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7190 void ( STDMETHODCALLTYPE *BeginEvent )(
7191 ID3D12GraphicsCommandList * This,
7192 UINT Metadata,
7193 _In_reads_bytes_opt_(Size) const void *pData,
7194 UINT Size);
7195
7196 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7197 void ( STDMETHODCALLTYPE *EndEvent )(
7198 ID3D12GraphicsCommandList * This);
7199
7200 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7201 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7202 ID3D12GraphicsCommandList * This,
7203 _In_ ID3D12CommandSignature *pCommandSignature,
7204 _In_ UINT MaxCommandCount,
7205 _In_ ID3D12Resource *pArgumentBuffer,
7206 _In_ UINT64 ArgumentBufferOffset,
7207 _In_opt_ ID3D12Resource *pCountBuffer,
7208 _In_ UINT64 CountBufferOffset);
7209
7210 END_INTERFACE
7211 } ID3D12GraphicsCommandListVtbl;
7212
7213 interface ID3D12GraphicsCommandList
7214 {
7215 CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
7216 };
7217
7218
7219
7220#ifdef COBJMACROS
7221
7222
7223#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
7224 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7225
7226#define ID3D12GraphicsCommandList_AddRef(This) \
7227 ( (This)->lpVtbl -> AddRef(This) )
7228
7229#define ID3D12GraphicsCommandList_Release(This) \
7230 ( (This)->lpVtbl -> Release(This) )
7231
7232
7233#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
7234 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7235
7236#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
7237 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7238
7239#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
7240 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7241
7242#define ID3D12GraphicsCommandList_SetName(This,Name) \
7243 ( (This)->lpVtbl -> SetName(This,Name) )
7244
7245
7246#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
7247 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7248
7249
7250#define ID3D12GraphicsCommandList_GetType(This) \
7251 ( (This)->lpVtbl -> GetType(This) )
7252
7253
7254#define ID3D12GraphicsCommandList_Close(This) \
7255 ( (This)->lpVtbl -> Close(This) )
7256
7257#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
7258 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7259
7260#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
7261 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7262
7263#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7264 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7265
7266#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7267 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7268
7269#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7270 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7271
7272#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7273 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7274
7275#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7276 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7277
7278#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
7279 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7280
7281#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7282 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7283
7284#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7285 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7286
7287#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
7288 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7289
7290#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
7291 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7292
7293#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
7294 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7295
7296#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
7297 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7298
7299#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
7300 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7301
7302#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
7303 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7304
7305#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
7306 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7307
7308#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
7309 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7310
7311#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7312 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7313
7314#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
7315 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7316
7317#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
7318 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7319
7320#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7321 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7322
7323#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7324 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7325
7326#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7327 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7328
7329#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7330 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7331
7332#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7333 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7334
7335#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7336 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7337
7338#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7339 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7340
7341#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7342 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7343
7344#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7345 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7346
7347#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7348 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7349
7350#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7351 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7352
7353#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7354 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7355
7356#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
7357 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7358
7359#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7360 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7361
7362#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
7363 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7364
7365#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7366 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7367
7368#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7369 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7370
7371#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7372 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7373
7374#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7375 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7376
7377#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7378 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7379
7380#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
7381 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
7382
7383#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
7384 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
7385
7386#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
7387 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
7388
7389#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
7390 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
7391
7392#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
7393 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
7394
7395#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
7396 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
7397
7398#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
7399 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
7400
7401#define ID3D12GraphicsCommandList_EndEvent(This) \
7402 ( (This)->lpVtbl -> EndEvent(This) )
7403
7404#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
7405 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
7406
7407#endif /* COBJMACROS */
7408
7409
7410#endif /* C style interface */
7411
7412
7413
7414
7415#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
7416
7417
7418#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
7419#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
7420
7421/* interface ID3D12GraphicsCommandList1 */
7422/* [unique][local][object][uuid] */
7423
7424
7425EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
7426
7427#if defined(__cplusplus) && !defined(CINTERFACE)
7428
7429 MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
7430 ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
7431 {
7432 public:
7433 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
7434 _In_ ID3D12Resource *pDstBuffer,
7435 UINT64 DstOffset,
7436 _In_ ID3D12Resource *pSrcBuffer,
7437 UINT64 SrcOffset,
7438 UINT Dependencies,
7439 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7440 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
7441
7442 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
7443 _In_ ID3D12Resource *pDstBuffer,
7444 UINT64 DstOffset,
7445 _In_ ID3D12Resource *pSrcBuffer,
7446 UINT64 SrcOffset,
7447 UINT Dependencies,
7448 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7449 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
7450
7451 virtual void STDMETHODCALLTYPE OMSetDepthBounds(
7452 _In_ FLOAT Min,
7453 _In_ FLOAT Max) = 0;
7454
7455 virtual void STDMETHODCALLTYPE SetSamplePositions(
7456 _In_ UINT NumSamplesPerPixel,
7457 _In_ UINT NumPixels,
7458 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
7459
7460 virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
7461 _In_ ID3D12Resource *pDstResource,
7462 _In_ UINT DstSubresource,
7463 _In_ UINT DstX,
7464 _In_ UINT DstY,
7465 _In_ ID3D12Resource *pSrcResource,
7466 _In_ UINT SrcSubresource,
7467 _In_opt_ D3D12_RECT *pSrcRect,
7468 _In_ DXGI_FORMAT Format,
7469 _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
7470
7471 virtual void STDMETHODCALLTYPE SetViewInstanceMask(
7472 _In_ UINT Mask) = 0;
7473
7474 };
7475
7476
7477#else /* C style interface */
7478
7479 typedef struct ID3D12GraphicsCommandList1Vtbl
7480 {
7481 BEGIN_INTERFACE
7482
7483 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7484 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7485 ID3D12GraphicsCommandList1 * This,
7486 REFIID riid,
7487 _COM_Outptr_ void **ppvObject);
7488
7489 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7490 ULONG ( STDMETHODCALLTYPE *AddRef )(
7491 ID3D12GraphicsCommandList1 * This);
7492
7493 DECLSPEC_XFGVIRT(IUnknown, Release)
7494 ULONG ( STDMETHODCALLTYPE *Release )(
7495 ID3D12GraphicsCommandList1 * This);
7496
7497 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7498 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7499 ID3D12GraphicsCommandList1 * This,
7500 _In_ REFGUID guid,
7501 _Inout_ UINT *pDataSize,
7502 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7503
7504 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7505 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7506 ID3D12GraphicsCommandList1 * This,
7507 _In_ REFGUID guid,
7508 _In_ UINT DataSize,
7509 _In_reads_bytes_opt_( DataSize ) const void *pData);
7510
7511 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7512 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7513 ID3D12GraphicsCommandList1 * This,
7514 _In_ REFGUID guid,
7515 _In_opt_ const IUnknown *pData);
7516
7517 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7518 HRESULT ( STDMETHODCALLTYPE *SetName )(
7519 ID3D12GraphicsCommandList1 * This,
7520 _In_z_ LPCWSTR Name);
7521
7522 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7523 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7524 ID3D12GraphicsCommandList1 * This,
7525 REFIID riid,
7526 _COM_Outptr_opt_ void **ppvDevice);
7527
7528 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
7529 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
7530 ID3D12GraphicsCommandList1 * This);
7531
7532 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
7533 HRESULT ( STDMETHODCALLTYPE *Close )(
7534 ID3D12GraphicsCommandList1 * This);
7535
7536 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
7537 HRESULT ( STDMETHODCALLTYPE *Reset )(
7538 ID3D12GraphicsCommandList1 * This,
7539 _In_ ID3D12CommandAllocator *pAllocator,
7540 _In_opt_ ID3D12PipelineState *pInitialState);
7541
7542 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
7543 void ( STDMETHODCALLTYPE *ClearState )(
7544 ID3D12GraphicsCommandList1 * This,
7545 _In_opt_ ID3D12PipelineState *pPipelineState);
7546
7547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
7548 void ( STDMETHODCALLTYPE *DrawInstanced )(
7549 ID3D12GraphicsCommandList1 * This,
7550 _In_ UINT VertexCountPerInstance,
7551 _In_ UINT InstanceCount,
7552 _In_ UINT StartVertexLocation,
7553 _In_ UINT StartInstanceLocation);
7554
7555 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
7556 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
7557 ID3D12GraphicsCommandList1 * This,
7558 _In_ UINT IndexCountPerInstance,
7559 _In_ UINT InstanceCount,
7560 _In_ UINT StartIndexLocation,
7561 _In_ INT BaseVertexLocation,
7562 _In_ UINT StartInstanceLocation);
7563
7564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
7565 void ( STDMETHODCALLTYPE *Dispatch )(
7566 ID3D12GraphicsCommandList1 * This,
7567 _In_ UINT ThreadGroupCountX,
7568 _In_ UINT ThreadGroupCountY,
7569 _In_ UINT ThreadGroupCountZ);
7570
7571 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
7572 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
7573 ID3D12GraphicsCommandList1 * This,
7574 _In_ ID3D12Resource *pDstBuffer,
7575 UINT64 DstOffset,
7576 _In_ ID3D12Resource *pSrcBuffer,
7577 UINT64 SrcOffset,
7578 UINT64 NumBytes);
7579
7580 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
7581 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
7582 ID3D12GraphicsCommandList1 * This,
7583 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
7584 UINT DstX,
7585 UINT DstY,
7586 UINT DstZ,
7587 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
7588 _In_opt_ const D3D12_BOX *pSrcBox);
7589
7590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
7591 void ( STDMETHODCALLTYPE *CopyResource )(
7592 ID3D12GraphicsCommandList1 * This,
7593 _In_ ID3D12Resource *pDstResource,
7594 _In_ ID3D12Resource *pSrcResource);
7595
7596 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
7597 void ( STDMETHODCALLTYPE *CopyTiles )(
7598 ID3D12GraphicsCommandList1 * This,
7599 _In_ ID3D12Resource *pTiledResource,
7600 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
7601 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
7602 _In_ ID3D12Resource *pBuffer,
7603 UINT64 BufferStartOffsetInBytes,
7604 D3D12_TILE_COPY_FLAGS Flags);
7605
7606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
7607 void ( STDMETHODCALLTYPE *ResolveSubresource )(
7608 ID3D12GraphicsCommandList1 * This,
7609 _In_ ID3D12Resource *pDstResource,
7610 _In_ UINT DstSubresource,
7611 _In_ ID3D12Resource *pSrcResource,
7612 _In_ UINT SrcSubresource,
7613 _In_ DXGI_FORMAT Format);
7614
7615 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
7616 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
7617 ID3D12GraphicsCommandList1 * This,
7618 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
7619
7620 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
7621 void ( STDMETHODCALLTYPE *RSSetViewports )(
7622 ID3D12GraphicsCommandList1 * This,
7623 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
7624 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
7625
7626 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
7627 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
7628 ID3D12GraphicsCommandList1 * This,
7629 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
7630 _In_reads_( NumRects) const D3D12_RECT *pRects);
7631
7632 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
7633 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
7634 ID3D12GraphicsCommandList1 * This,
7635 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
7636
7637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
7638 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
7639 ID3D12GraphicsCommandList1 * This,
7640 _In_ UINT StencilRef);
7641
7642 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
7643 void ( STDMETHODCALLTYPE *SetPipelineState )(
7644 ID3D12GraphicsCommandList1 * This,
7645 _In_ ID3D12PipelineState *pPipelineState);
7646
7647 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
7648 void ( STDMETHODCALLTYPE *ResourceBarrier )(
7649 ID3D12GraphicsCommandList1 * This,
7650 _In_ UINT NumBarriers,
7651 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
7652
7653 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
7654 void ( STDMETHODCALLTYPE *ExecuteBundle )(
7655 ID3D12GraphicsCommandList1 * This,
7656 _In_ ID3D12GraphicsCommandList *pCommandList);
7657
7658 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
7659 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
7660 ID3D12GraphicsCommandList1 * This,
7661 _In_ UINT NumDescriptorHeaps,
7662 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
7663
7664 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
7665 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
7666 ID3D12GraphicsCommandList1 * This,
7667 _In_opt_ ID3D12RootSignature *pRootSignature);
7668
7669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7670 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7671 ID3D12GraphicsCommandList1 * This,
7672 _In_opt_ ID3D12RootSignature *pRootSignature);
7673
7674 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7675 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7676 ID3D12GraphicsCommandList1 * This,
7677 _In_ UINT RootParameterIndex,
7678 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7679
7680 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7681 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7682 ID3D12GraphicsCommandList1 * This,
7683 _In_ UINT RootParameterIndex,
7684 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7685
7686 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7687 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7688 ID3D12GraphicsCommandList1 * This,
7689 _In_ UINT RootParameterIndex,
7690 _In_ UINT SrcData,
7691 _In_ UINT DestOffsetIn32BitValues);
7692
7693 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7694 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7695 ID3D12GraphicsCommandList1 * This,
7696 _In_ UINT RootParameterIndex,
7697 _In_ UINT SrcData,
7698 _In_ UINT DestOffsetIn32BitValues);
7699
7700 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7701 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7702 ID3D12GraphicsCommandList1 * This,
7703 _In_ UINT RootParameterIndex,
7704 _In_ UINT Num32BitValuesToSet,
7705 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7706 _In_ UINT DestOffsetIn32BitValues);
7707
7708 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7709 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7710 ID3D12GraphicsCommandList1 * This,
7711 _In_ UINT RootParameterIndex,
7712 _In_ UINT Num32BitValuesToSet,
7713 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7714 _In_ UINT DestOffsetIn32BitValues);
7715
7716 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7717 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7718 ID3D12GraphicsCommandList1 * This,
7719 _In_ UINT RootParameterIndex,
7720 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7721
7722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7723 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7724 ID3D12GraphicsCommandList1 * This,
7725 _In_ UINT RootParameterIndex,
7726 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7727
7728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7729 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7730 ID3D12GraphicsCommandList1 * This,
7731 _In_ UINT RootParameterIndex,
7732 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7733
7734 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7735 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7736 ID3D12GraphicsCommandList1 * This,
7737 _In_ UINT RootParameterIndex,
7738 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7739
7740 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7741 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7742 ID3D12GraphicsCommandList1 * This,
7743 _In_ UINT RootParameterIndex,
7744 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7745
7746 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7747 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7748 ID3D12GraphicsCommandList1 * This,
7749 _In_ UINT RootParameterIndex,
7750 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7751
7752 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7753 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7754 ID3D12GraphicsCommandList1 * This,
7755 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7756
7757 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7758 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7759 ID3D12GraphicsCommandList1 * This,
7760 _In_ UINT StartSlot,
7761 _In_ UINT NumViews,
7762 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7763
7764 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7765 void ( STDMETHODCALLTYPE *SOSetTargets )(
7766 ID3D12GraphicsCommandList1 * This,
7767 _In_ UINT StartSlot,
7768 _In_ UINT NumViews,
7769 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7770
7771 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7772 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7773 ID3D12GraphicsCommandList1 * This,
7774 _In_ UINT NumRenderTargetDescriptors,
7775 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7776 _In_ BOOL RTsSingleHandleToDescriptorRange,
7777 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7778
7779 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7780 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7781 ID3D12GraphicsCommandList1 * This,
7782 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7783 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7784 _In_ FLOAT Depth,
7785 _In_ UINT8 Stencil,
7786 _In_ UINT NumRects,
7787 _In_reads_(NumRects) const D3D12_RECT *pRects);
7788
7789 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7790 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7791 ID3D12GraphicsCommandList1 * This,
7792 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7793 _In_ const FLOAT ColorRGBA[ 4 ],
7794 _In_ UINT NumRects,
7795 _In_reads_(NumRects) const D3D12_RECT *pRects);
7796
7797 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7798 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7799 ID3D12GraphicsCommandList1 * This,
7800 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7801 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7802 _In_ ID3D12Resource *pResource,
7803 _In_ const UINT Values[ 4 ],
7804 _In_ UINT NumRects,
7805 _In_reads_(NumRects) const D3D12_RECT *pRects);
7806
7807 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7808 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7809 ID3D12GraphicsCommandList1 * This,
7810 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7811 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7812 _In_ ID3D12Resource *pResource,
7813 _In_ const FLOAT Values[ 4 ],
7814 _In_ UINT NumRects,
7815 _In_reads_(NumRects) const D3D12_RECT *pRects);
7816
7817 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7818 void ( STDMETHODCALLTYPE *DiscardResource )(
7819 ID3D12GraphicsCommandList1 * This,
7820 _In_ ID3D12Resource *pResource,
7821 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7822
7823 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7824 void ( STDMETHODCALLTYPE *BeginQuery )(
7825 ID3D12GraphicsCommandList1 * This,
7826 _In_ ID3D12QueryHeap *pQueryHeap,
7827 _In_ D3D12_QUERY_TYPE Type,
7828 _In_ UINT Index);
7829
7830 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7831 void ( STDMETHODCALLTYPE *EndQuery )(
7832 ID3D12GraphicsCommandList1 * This,
7833 _In_ ID3D12QueryHeap *pQueryHeap,
7834 _In_ D3D12_QUERY_TYPE Type,
7835 _In_ UINT Index);
7836
7837 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7838 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7839 ID3D12GraphicsCommandList1 * This,
7840 _In_ ID3D12QueryHeap *pQueryHeap,
7841 _In_ D3D12_QUERY_TYPE Type,
7842 _In_ UINT StartIndex,
7843 _In_ UINT NumQueries,
7844 _In_ ID3D12Resource *pDestinationBuffer,
7845 _In_ UINT64 AlignedDestinationBufferOffset);
7846
7847 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7848 void ( STDMETHODCALLTYPE *SetPredication )(
7849 ID3D12GraphicsCommandList1 * This,
7850 _In_opt_ ID3D12Resource *pBuffer,
7851 _In_ UINT64 AlignedBufferOffset,
7852 _In_ D3D12_PREDICATION_OP Operation);
7853
7854 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7855 void ( STDMETHODCALLTYPE *SetMarker )(
7856 ID3D12GraphicsCommandList1 * This,
7857 UINT Metadata,
7858 _In_reads_bytes_opt_(Size) const void *pData,
7859 UINT Size);
7860
7861 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7862 void ( STDMETHODCALLTYPE *BeginEvent )(
7863 ID3D12GraphicsCommandList1 * This,
7864 UINT Metadata,
7865 _In_reads_bytes_opt_(Size) const void *pData,
7866 UINT Size);
7867
7868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7869 void ( STDMETHODCALLTYPE *EndEvent )(
7870 ID3D12GraphicsCommandList1 * This);
7871
7872 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7873 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7874 ID3D12GraphicsCommandList1 * This,
7875 _In_ ID3D12CommandSignature *pCommandSignature,
7876 _In_ UINT MaxCommandCount,
7877 _In_ ID3D12Resource *pArgumentBuffer,
7878 _In_ UINT64 ArgumentBufferOffset,
7879 _In_opt_ ID3D12Resource *pCountBuffer,
7880 _In_ UINT64 CountBufferOffset);
7881
7882 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7883 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7884 ID3D12GraphicsCommandList1 * This,
7885 _In_ ID3D12Resource *pDstBuffer,
7886 UINT64 DstOffset,
7887 _In_ ID3D12Resource *pSrcBuffer,
7888 UINT64 SrcOffset,
7889 UINT Dependencies,
7890 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7891 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7892
7893 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7894 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7895 ID3D12GraphicsCommandList1 * This,
7896 _In_ ID3D12Resource *pDstBuffer,
7897 UINT64 DstOffset,
7898 _In_ ID3D12Resource *pSrcBuffer,
7899 UINT64 SrcOffset,
7900 UINT Dependencies,
7901 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7902 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7903
7904 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7905 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7906 ID3D12GraphicsCommandList1 * This,
7907 _In_ FLOAT Min,
7908 _In_ FLOAT Max);
7909
7910 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7911 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7912 ID3D12GraphicsCommandList1 * This,
7913 _In_ UINT NumSamplesPerPixel,
7914 _In_ UINT NumPixels,
7915 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7916
7917 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7918 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7919 ID3D12GraphicsCommandList1 * This,
7920 _In_ ID3D12Resource *pDstResource,
7921 _In_ UINT DstSubresource,
7922 _In_ UINT DstX,
7923 _In_ UINT DstY,
7924 _In_ ID3D12Resource *pSrcResource,
7925 _In_ UINT SrcSubresource,
7926 _In_opt_ D3D12_RECT *pSrcRect,
7927 _In_ DXGI_FORMAT Format,
7928 _In_ D3D12_RESOLVE_MODE ResolveMode);
7929
7930 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7931 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7932 ID3D12GraphicsCommandList1 * This,
7933 _In_ UINT Mask);
7934
7935 END_INTERFACE
7936 } ID3D12GraphicsCommandList1Vtbl;
7937
7938 interface ID3D12GraphicsCommandList1
7939 {
7940 CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
7941 };
7942
7943
7944
7945#ifdef COBJMACROS
7946
7947
7948#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
7949 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7950
7951#define ID3D12GraphicsCommandList1_AddRef(This) \
7952 ( (This)->lpVtbl -> AddRef(This) )
7953
7954#define ID3D12GraphicsCommandList1_Release(This) \
7955 ( (This)->lpVtbl -> Release(This) )
7956
7957
7958#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
7959 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7960
7961#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
7962 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7963
7964#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
7965 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7966
7967#define ID3D12GraphicsCommandList1_SetName(This,Name) \
7968 ( (This)->lpVtbl -> SetName(This,Name) )
7969
7970
7971#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
7972 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7973
7974
7975#define ID3D12GraphicsCommandList1_GetType(This) \
7976 ( (This)->lpVtbl -> GetType(This) )
7977
7978
7979#define ID3D12GraphicsCommandList1_Close(This) \
7980 ( (This)->lpVtbl -> Close(This) )
7981
7982#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
7983 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7984
7985#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
7986 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7987
7988#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7989 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7990
7991#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7992 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7993
7994#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7995 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7996
7997#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7998 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7999
8000#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
8001 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
8002
8003#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
8004 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
8005
8006#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
8007 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
8008
8009#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
8010 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
8011
8012#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
8013 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
8014
8015#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
8016 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
8017
8018#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
8019 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
8020
8021#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
8022 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
8023
8024#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
8025 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
8026
8027#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
8028 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
8029
8030#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
8031 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8032
8033#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
8034 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
8035
8036#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
8037 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
8038
8039#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
8040 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
8041
8042#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
8043 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
8044
8045#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8046 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8047
8048#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8049 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8050
8051#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8052 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8053
8054#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8055 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8056
8057#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8058 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8059
8060#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8061 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8062
8063#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8064 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8065
8066#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8067 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8068
8069#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8070 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8071
8072#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8073 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8074
8075#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8076 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8077
8078#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8079 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8080
8081#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
8082 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
8083
8084#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
8085 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
8086
8087#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
8088 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
8089
8090#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
8091 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
8092
8093#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
8094 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
8095
8096#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
8097 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
8098
8099#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8100 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8101
8102#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8103 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8104
8105#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
8106 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8107
8108#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
8109 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8110
8111#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
8112 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8113
8114#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8115 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8116
8117#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8118 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8119
8120#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
8121 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8122
8123#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
8124 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8125
8126#define ID3D12GraphicsCommandList1_EndEvent(This) \
8127 ( (This)->lpVtbl -> EndEvent(This) )
8128
8129#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8130 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8131
8132
8133#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8134 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8135
8136#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8137 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8138
8139#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
8140 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8141
8142#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8143 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8144
8145#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8146 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8147
8148#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \
8149 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8150
8151#endif /* COBJMACROS */
8152
8153
8154#endif /* C style interface */
8155
8156
8157
8158
8159#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
8160
8161
8162/* interface __MIDL_itf_d3d12_0000_0019 */
8163/* [local] */
8164
8165typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
8166 {
8167 D3D12_GPU_VIRTUAL_ADDRESS Dest;
8168 UINT32 Value;
8169 } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
8170
8171typedef
8172enum D3D12_WRITEBUFFERIMMEDIATE_MODE
8173 {
8174 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0,
8175 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
8176 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
8177 } D3D12_WRITEBUFFERIMMEDIATE_MODE;
8178
8179
8180
8181extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_c_ifspec;
8182extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_s_ifspec;
8183
8184#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
8185#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
8186
8187/* interface ID3D12GraphicsCommandList2 */
8188/* [unique][local][object][uuid] */
8189
8190
8191EXTERN_C const IID IID_ID3D12GraphicsCommandList2;
8192
8193#if defined(__cplusplus) && !defined(CINTERFACE)
8194
8195 MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28")
8196 ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
8197 {
8198 public:
8199 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
8200 UINT Count,
8201 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8202 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
8203
8204 };
8205
8206
8207#else /* C style interface */
8208
8209 typedef struct ID3D12GraphicsCommandList2Vtbl
8210 {
8211 BEGIN_INTERFACE
8212
8213 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8214 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8215 ID3D12GraphicsCommandList2 * This,
8216 REFIID riid,
8217 _COM_Outptr_ void **ppvObject);
8218
8219 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8220 ULONG ( STDMETHODCALLTYPE *AddRef )(
8221 ID3D12GraphicsCommandList2 * This);
8222
8223 DECLSPEC_XFGVIRT(IUnknown, Release)
8224 ULONG ( STDMETHODCALLTYPE *Release )(
8225 ID3D12GraphicsCommandList2 * This);
8226
8227 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8228 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8229 ID3D12GraphicsCommandList2 * This,
8230 _In_ REFGUID guid,
8231 _Inout_ UINT *pDataSize,
8232 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8233
8234 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8235 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8236 ID3D12GraphicsCommandList2 * This,
8237 _In_ REFGUID guid,
8238 _In_ UINT DataSize,
8239 _In_reads_bytes_opt_( DataSize ) const void *pData);
8240
8241 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8242 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8243 ID3D12GraphicsCommandList2 * This,
8244 _In_ REFGUID guid,
8245 _In_opt_ const IUnknown *pData);
8246
8247 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8248 HRESULT ( STDMETHODCALLTYPE *SetName )(
8249 ID3D12GraphicsCommandList2 * This,
8250 _In_z_ LPCWSTR Name);
8251
8252 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8253 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8254 ID3D12GraphicsCommandList2 * This,
8255 REFIID riid,
8256 _COM_Outptr_opt_ void **ppvDevice);
8257
8258 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8259 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8260 ID3D12GraphicsCommandList2 * This);
8261
8262 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
8263 HRESULT ( STDMETHODCALLTYPE *Close )(
8264 ID3D12GraphicsCommandList2 * This);
8265
8266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
8267 HRESULT ( STDMETHODCALLTYPE *Reset )(
8268 ID3D12GraphicsCommandList2 * This,
8269 _In_ ID3D12CommandAllocator *pAllocator,
8270 _In_opt_ ID3D12PipelineState *pInitialState);
8271
8272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
8273 void ( STDMETHODCALLTYPE *ClearState )(
8274 ID3D12GraphicsCommandList2 * This,
8275 _In_opt_ ID3D12PipelineState *pPipelineState);
8276
8277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
8278 void ( STDMETHODCALLTYPE *DrawInstanced )(
8279 ID3D12GraphicsCommandList2 * This,
8280 _In_ UINT VertexCountPerInstance,
8281 _In_ UINT InstanceCount,
8282 _In_ UINT StartVertexLocation,
8283 _In_ UINT StartInstanceLocation);
8284
8285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
8286 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
8287 ID3D12GraphicsCommandList2 * This,
8288 _In_ UINT IndexCountPerInstance,
8289 _In_ UINT InstanceCount,
8290 _In_ UINT StartIndexLocation,
8291 _In_ INT BaseVertexLocation,
8292 _In_ UINT StartInstanceLocation);
8293
8294 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
8295 void ( STDMETHODCALLTYPE *Dispatch )(
8296 ID3D12GraphicsCommandList2 * This,
8297 _In_ UINT ThreadGroupCountX,
8298 _In_ UINT ThreadGroupCountY,
8299 _In_ UINT ThreadGroupCountZ);
8300
8301 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
8302 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
8303 ID3D12GraphicsCommandList2 * This,
8304 _In_ ID3D12Resource *pDstBuffer,
8305 UINT64 DstOffset,
8306 _In_ ID3D12Resource *pSrcBuffer,
8307 UINT64 SrcOffset,
8308 UINT64 NumBytes);
8309
8310 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
8311 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
8312 ID3D12GraphicsCommandList2 * This,
8313 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
8314 UINT DstX,
8315 UINT DstY,
8316 UINT DstZ,
8317 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
8318 _In_opt_ const D3D12_BOX *pSrcBox);
8319
8320 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
8321 void ( STDMETHODCALLTYPE *CopyResource )(
8322 ID3D12GraphicsCommandList2 * This,
8323 _In_ ID3D12Resource *pDstResource,
8324 _In_ ID3D12Resource *pSrcResource);
8325
8326 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
8327 void ( STDMETHODCALLTYPE *CopyTiles )(
8328 ID3D12GraphicsCommandList2 * This,
8329 _In_ ID3D12Resource *pTiledResource,
8330 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
8331 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
8332 _In_ ID3D12Resource *pBuffer,
8333 UINT64 BufferStartOffsetInBytes,
8334 D3D12_TILE_COPY_FLAGS Flags);
8335
8336 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
8337 void ( STDMETHODCALLTYPE *ResolveSubresource )(
8338 ID3D12GraphicsCommandList2 * This,
8339 _In_ ID3D12Resource *pDstResource,
8340 _In_ UINT DstSubresource,
8341 _In_ ID3D12Resource *pSrcResource,
8342 _In_ UINT SrcSubresource,
8343 _In_ DXGI_FORMAT Format);
8344
8345 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
8346 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
8347 ID3D12GraphicsCommandList2 * This,
8348 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
8349
8350 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
8351 void ( STDMETHODCALLTYPE *RSSetViewports )(
8352 ID3D12GraphicsCommandList2 * This,
8353 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
8354 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
8355
8356 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
8357 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
8358 ID3D12GraphicsCommandList2 * This,
8359 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
8360 _In_reads_( NumRects) const D3D12_RECT *pRects);
8361
8362 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
8363 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
8364 ID3D12GraphicsCommandList2 * This,
8365 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
8366
8367 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
8368 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
8369 ID3D12GraphicsCommandList2 * This,
8370 _In_ UINT StencilRef);
8371
8372 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
8373 void ( STDMETHODCALLTYPE *SetPipelineState )(
8374 ID3D12GraphicsCommandList2 * This,
8375 _In_ ID3D12PipelineState *pPipelineState);
8376
8377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
8378 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8379 ID3D12GraphicsCommandList2 * This,
8380 _In_ UINT NumBarriers,
8381 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8382
8383 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
8384 void ( STDMETHODCALLTYPE *ExecuteBundle )(
8385 ID3D12GraphicsCommandList2 * This,
8386 _In_ ID3D12GraphicsCommandList *pCommandList);
8387
8388 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
8389 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
8390 ID3D12GraphicsCommandList2 * This,
8391 _In_ UINT NumDescriptorHeaps,
8392 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
8393
8394 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
8395 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
8396 ID3D12GraphicsCommandList2 * This,
8397 _In_opt_ ID3D12RootSignature *pRootSignature);
8398
8399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
8400 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
8401 ID3D12GraphicsCommandList2 * This,
8402 _In_opt_ ID3D12RootSignature *pRootSignature);
8403
8404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
8405 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
8406 ID3D12GraphicsCommandList2 * This,
8407 _In_ UINT RootParameterIndex,
8408 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
8409
8410 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
8411 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
8412 ID3D12GraphicsCommandList2 * This,
8413 _In_ UINT RootParameterIndex,
8414 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
8415
8416 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
8417 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
8418 ID3D12GraphicsCommandList2 * This,
8419 _In_ UINT RootParameterIndex,
8420 _In_ UINT SrcData,
8421 _In_ UINT DestOffsetIn32BitValues);
8422
8423 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
8424 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
8425 ID3D12GraphicsCommandList2 * This,
8426 _In_ UINT RootParameterIndex,
8427 _In_ UINT SrcData,
8428 _In_ UINT DestOffsetIn32BitValues);
8429
8430 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
8431 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
8432 ID3D12GraphicsCommandList2 * This,
8433 _In_ UINT RootParameterIndex,
8434 _In_ UINT Num32BitValuesToSet,
8435 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
8436 _In_ UINT DestOffsetIn32BitValues);
8437
8438 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
8439 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
8440 ID3D12GraphicsCommandList2 * This,
8441 _In_ UINT RootParameterIndex,
8442 _In_ UINT Num32BitValuesToSet,
8443 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
8444 _In_ UINT DestOffsetIn32BitValues);
8445
8446 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
8447 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
8448 ID3D12GraphicsCommandList2 * This,
8449 _In_ UINT RootParameterIndex,
8450 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8451
8452 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
8453 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
8454 ID3D12GraphicsCommandList2 * This,
8455 _In_ UINT RootParameterIndex,
8456 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8457
8458 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
8459 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
8460 ID3D12GraphicsCommandList2 * This,
8461 _In_ UINT RootParameterIndex,
8462 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8463
8464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
8465 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
8466 ID3D12GraphicsCommandList2 * This,
8467 _In_ UINT RootParameterIndex,
8468 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8469
8470 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
8471 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
8472 ID3D12GraphicsCommandList2 * This,
8473 _In_ UINT RootParameterIndex,
8474 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8475
8476 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
8477 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
8478 ID3D12GraphicsCommandList2 * This,
8479 _In_ UINT RootParameterIndex,
8480 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8481
8482 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
8483 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
8484 ID3D12GraphicsCommandList2 * This,
8485 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
8486
8487 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
8488 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
8489 ID3D12GraphicsCommandList2 * This,
8490 _In_ UINT StartSlot,
8491 _In_ UINT NumViews,
8492 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
8493
8494 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
8495 void ( STDMETHODCALLTYPE *SOSetTargets )(
8496 ID3D12GraphicsCommandList2 * This,
8497 _In_ UINT StartSlot,
8498 _In_ UINT NumViews,
8499 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
8500
8501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
8502 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
8503 ID3D12GraphicsCommandList2 * This,
8504 _In_ UINT NumRenderTargetDescriptors,
8505 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
8506 _In_ BOOL RTsSingleHandleToDescriptorRange,
8507 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
8508
8509 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
8510 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
8511 ID3D12GraphicsCommandList2 * This,
8512 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
8513 _In_ D3D12_CLEAR_FLAGS ClearFlags,
8514 _In_ FLOAT Depth,
8515 _In_ UINT8 Stencil,
8516 _In_ UINT NumRects,
8517 _In_reads_(NumRects) const D3D12_RECT *pRects);
8518
8519 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
8520 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
8521 ID3D12GraphicsCommandList2 * This,
8522 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
8523 _In_ const FLOAT ColorRGBA[ 4 ],
8524 _In_ UINT NumRects,
8525 _In_reads_(NumRects) const D3D12_RECT *pRects);
8526
8527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
8528 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
8529 ID3D12GraphicsCommandList2 * This,
8530 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
8531 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
8532 _In_ ID3D12Resource *pResource,
8533 _In_ const UINT Values[ 4 ],
8534 _In_ UINT NumRects,
8535 _In_reads_(NumRects) const D3D12_RECT *pRects);
8536
8537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
8538 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
8539 ID3D12GraphicsCommandList2 * This,
8540 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
8541 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
8542 _In_ ID3D12Resource *pResource,
8543 _In_ const FLOAT Values[ 4 ],
8544 _In_ UINT NumRects,
8545 _In_reads_(NumRects) const D3D12_RECT *pRects);
8546
8547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
8548 void ( STDMETHODCALLTYPE *DiscardResource )(
8549 ID3D12GraphicsCommandList2 * This,
8550 _In_ ID3D12Resource *pResource,
8551 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8552
8553 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
8554 void ( STDMETHODCALLTYPE *BeginQuery )(
8555 ID3D12GraphicsCommandList2 * This,
8556 _In_ ID3D12QueryHeap *pQueryHeap,
8557 _In_ D3D12_QUERY_TYPE Type,
8558 _In_ UINT Index);
8559
8560 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
8561 void ( STDMETHODCALLTYPE *EndQuery )(
8562 ID3D12GraphicsCommandList2 * This,
8563 _In_ ID3D12QueryHeap *pQueryHeap,
8564 _In_ D3D12_QUERY_TYPE Type,
8565 _In_ UINT Index);
8566
8567 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
8568 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8569 ID3D12GraphicsCommandList2 * This,
8570 _In_ ID3D12QueryHeap *pQueryHeap,
8571 _In_ D3D12_QUERY_TYPE Type,
8572 _In_ UINT StartIndex,
8573 _In_ UINT NumQueries,
8574 _In_ ID3D12Resource *pDestinationBuffer,
8575 _In_ UINT64 AlignedDestinationBufferOffset);
8576
8577 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
8578 void ( STDMETHODCALLTYPE *SetPredication )(
8579 ID3D12GraphicsCommandList2 * This,
8580 _In_opt_ ID3D12Resource *pBuffer,
8581 _In_ UINT64 AlignedBufferOffset,
8582 _In_ D3D12_PREDICATION_OP Operation);
8583
8584 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
8585 void ( STDMETHODCALLTYPE *SetMarker )(
8586 ID3D12GraphicsCommandList2 * This,
8587 UINT Metadata,
8588 _In_reads_bytes_opt_(Size) const void *pData,
8589 UINT Size);
8590
8591 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
8592 void ( STDMETHODCALLTYPE *BeginEvent )(
8593 ID3D12GraphicsCommandList2 * This,
8594 UINT Metadata,
8595 _In_reads_bytes_opt_(Size) const void *pData,
8596 UINT Size);
8597
8598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
8599 void ( STDMETHODCALLTYPE *EndEvent )(
8600 ID3D12GraphicsCommandList2 * This);
8601
8602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
8603 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
8604 ID3D12GraphicsCommandList2 * This,
8605 _In_ ID3D12CommandSignature *pCommandSignature,
8606 _In_ UINT MaxCommandCount,
8607 _In_ ID3D12Resource *pArgumentBuffer,
8608 _In_ UINT64 ArgumentBufferOffset,
8609 _In_opt_ ID3D12Resource *pCountBuffer,
8610 _In_ UINT64 CountBufferOffset);
8611
8612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
8613 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
8614 ID3D12GraphicsCommandList2 * This,
8615 _In_ ID3D12Resource *pDstBuffer,
8616 UINT64 DstOffset,
8617 _In_ ID3D12Resource *pSrcBuffer,
8618 UINT64 SrcOffset,
8619 UINT Dependencies,
8620 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
8621 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
8622
8623 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
8624 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
8625 ID3D12GraphicsCommandList2 * This,
8626 _In_ ID3D12Resource *pDstBuffer,
8627 UINT64 DstOffset,
8628 _In_ ID3D12Resource *pSrcBuffer,
8629 UINT64 SrcOffset,
8630 UINT Dependencies,
8631 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
8632 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
8633
8634 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
8635 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
8636 ID3D12GraphicsCommandList2 * This,
8637 _In_ FLOAT Min,
8638 _In_ FLOAT Max);
8639
8640 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
8641 void ( STDMETHODCALLTYPE *SetSamplePositions )(
8642 ID3D12GraphicsCommandList2 * This,
8643 _In_ UINT NumSamplesPerPixel,
8644 _In_ UINT NumPixels,
8645 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
8646
8647 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
8648 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
8649 ID3D12GraphicsCommandList2 * This,
8650 _In_ ID3D12Resource *pDstResource,
8651 _In_ UINT DstSubresource,
8652 _In_ UINT DstX,
8653 _In_ UINT DstY,
8654 _In_ ID3D12Resource *pSrcResource,
8655 _In_ UINT SrcSubresource,
8656 _In_opt_ D3D12_RECT *pSrcRect,
8657 _In_ DXGI_FORMAT Format,
8658 _In_ D3D12_RESOLVE_MODE ResolveMode);
8659
8660 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
8661 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
8662 ID3D12GraphicsCommandList2 * This,
8663 _In_ UINT Mask);
8664
8665 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
8666 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8667 ID3D12GraphicsCommandList2 * This,
8668 UINT Count,
8669 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8670 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8671
8672 END_INTERFACE
8673 } ID3D12GraphicsCommandList2Vtbl;
8674
8675 interface ID3D12GraphicsCommandList2
8676 {
8677 CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl;
8678 };
8679
8680
8681
8682#ifdef COBJMACROS
8683
8684
8685#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \
8686 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8687
8688#define ID3D12GraphicsCommandList2_AddRef(This) \
8689 ( (This)->lpVtbl -> AddRef(This) )
8690
8691#define ID3D12GraphicsCommandList2_Release(This) \
8692 ( (This)->lpVtbl -> Release(This) )
8693
8694
8695#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8696 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8697
8698#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8699 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8700
8701#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \
8702 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8703
8704#define ID3D12GraphicsCommandList2_SetName(This,Name) \
8705 ( (This)->lpVtbl -> SetName(This,Name) )
8706
8707
8708#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \
8709 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8710
8711
8712#define ID3D12GraphicsCommandList2_GetType(This) \
8713 ( (This)->lpVtbl -> GetType(This) )
8714
8715
8716#define ID3D12GraphicsCommandList2_Close(This) \
8717 ( (This)->lpVtbl -> Close(This) )
8718
8719#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \
8720 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
8721
8722#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \
8723 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
8724
8725#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
8726 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
8727
8728#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
8729 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
8730
8731#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
8732 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
8733
8734#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
8735 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
8736
8737#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
8738 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
8739
8740#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \
8741 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
8742
8743#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
8744 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
8745
8746#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
8747 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
8748
8749#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \
8750 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
8751
8752#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \
8753 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
8754
8755#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \
8756 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
8757
8758#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \
8759 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
8760
8761#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \
8762 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
8763
8764#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \
8765 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
8766
8767#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8768 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8769
8770#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \
8771 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
8772
8773#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
8774 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
8775
8776#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \
8777 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
8778
8779#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \
8780 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
8781
8782#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8783 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8784
8785#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8786 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8787
8788#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8789 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8790
8791#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8792 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8793
8794#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8795 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8796
8797#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8798 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8799
8800#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8801 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8802
8803#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8804 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8805
8806#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8807 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8808
8809#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8810 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8811
8812#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8813 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8814
8815#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8816 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8817
8818#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \
8819 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
8820
8821#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
8822 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
8823
8824#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \
8825 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
8826
8827#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
8828 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
8829
8830#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
8831 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
8832
8833#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
8834 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
8835
8836#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8837 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8838
8839#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8840 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8841
8842#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \
8843 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8844
8845#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8846 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8847
8848#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8849 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8850
8851#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8852 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8853
8854#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8855 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8856
8857#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \
8858 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8859
8860#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \
8861 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8862
8863#define ID3D12GraphicsCommandList2_EndEvent(This) \
8864 ( (This)->lpVtbl -> EndEvent(This) )
8865
8866#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8867 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8868
8869
8870#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8871 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8872
8873#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8874 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8875
8876#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \
8877 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8878
8879#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8880 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8881
8882#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8883 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8884
8885#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \
8886 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8887
8888
8889#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8890 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8891
8892#endif /* COBJMACROS */
8893
8894
8895#endif /* C style interface */
8896
8897
8898
8899
8900#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
8901
8902
8903#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
8904#define __ID3D12CommandQueue_INTERFACE_DEFINED__
8905
8906/* interface ID3D12CommandQueue */
8907/* [unique][local][object][uuid] */
8908
8909
8910EXTERN_C const IID IID_ID3D12CommandQueue;
8911
8912#if defined(__cplusplus) && !defined(CINTERFACE)
8913
8914 MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
8915 ID3D12CommandQueue : public ID3D12Pageable
8916 {
8917 public:
8918 virtual void STDMETHODCALLTYPE UpdateTileMappings(
8919 _In_ ID3D12Resource *pResource,
8920 UINT NumResourceRegions,
8921 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8922 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8923 _In_opt_ ID3D12Heap *pHeap,
8924 UINT NumRanges,
8925 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8926 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8927 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8928 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8929
8930 virtual void STDMETHODCALLTYPE CopyTileMappings(
8931 _In_ ID3D12Resource *pDstResource,
8932 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8933 _In_ ID3D12Resource *pSrcResource,
8934 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8935 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8936 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8937
8938 virtual void STDMETHODCALLTYPE ExecuteCommandLists(
8939 _In_ UINT NumCommandLists,
8940 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
8941
8942 virtual void STDMETHODCALLTYPE SetMarker(
8943 UINT Metadata,
8944 _In_reads_bytes_opt_(Size) const void *pData,
8945 UINT Size) = 0;
8946
8947 virtual void STDMETHODCALLTYPE BeginEvent(
8948 UINT Metadata,
8949 _In_reads_bytes_opt_(Size) const void *pData,
8950 UINT Size) = 0;
8951
8952 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
8953
8954 virtual HRESULT STDMETHODCALLTYPE Signal(
8955 ID3D12Fence *pFence,
8956 UINT64 Value) = 0;
8957
8958 virtual HRESULT STDMETHODCALLTYPE Wait(
8959 ID3D12Fence *pFence,
8960 UINT64 Value) = 0;
8961
8962 virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
8963 _Out_ UINT64 *pFrequency) = 0;
8964
8965 virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
8966 _Out_ UINT64 *pGpuTimestamp,
8967 _Out_ UINT64 *pCpuTimestamp) = 0;
8968
8969#if defined(_MSC_VER) || !defined(_WIN32)
8970 virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
8971#else
8972 virtual D3D12_COMMAND_QUEUE_DESC *STDMETHODCALLTYPE GetDesc(
8973 D3D12_COMMAND_QUEUE_DESC * RetVal) = 0;
8974#endif
8975
8976 };
8977
8978
8979#else /* C style interface */
8980
8981 typedef struct ID3D12CommandQueueVtbl
8982 {
8983 BEGIN_INTERFACE
8984
8985 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8986 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8987 ID3D12CommandQueue * This,
8988 REFIID riid,
8989 _COM_Outptr_ void **ppvObject);
8990
8991 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8992 ULONG ( STDMETHODCALLTYPE *AddRef )(
8993 ID3D12CommandQueue * This);
8994
8995 DECLSPEC_XFGVIRT(IUnknown, Release)
8996 ULONG ( STDMETHODCALLTYPE *Release )(
8997 ID3D12CommandQueue * This);
8998
8999 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9000 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9001 ID3D12CommandQueue * This,
9002 _In_ REFGUID guid,
9003 _Inout_ UINT *pDataSize,
9004 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9005
9006 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9007 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9008 ID3D12CommandQueue * This,
9009 _In_ REFGUID guid,
9010 _In_ UINT DataSize,
9011 _In_reads_bytes_opt_( DataSize ) const void *pData);
9012
9013 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9014 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9015 ID3D12CommandQueue * This,
9016 _In_ REFGUID guid,
9017 _In_opt_ const IUnknown *pData);
9018
9019 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9020 HRESULT ( STDMETHODCALLTYPE *SetName )(
9021 ID3D12CommandQueue * This,
9022 _In_z_ LPCWSTR Name);
9023
9024 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9025 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9026 ID3D12CommandQueue * This,
9027 REFIID riid,
9028 _COM_Outptr_opt_ void **ppvDevice);
9029
9030 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
9031 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
9032 ID3D12CommandQueue * This,
9033 _In_ ID3D12Resource *pResource,
9034 UINT NumResourceRegions,
9035 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
9036 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
9037 _In_opt_ ID3D12Heap *pHeap,
9038 UINT NumRanges,
9039 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
9040 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
9041 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
9042 D3D12_TILE_MAPPING_FLAGS Flags);
9043
9044 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
9045 void ( STDMETHODCALLTYPE *CopyTileMappings )(
9046 ID3D12CommandQueue * This,
9047 _In_ ID3D12Resource *pDstResource,
9048 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
9049 _In_ ID3D12Resource *pSrcResource,
9050 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
9051 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
9052 D3D12_TILE_MAPPING_FLAGS Flags);
9053
9054 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
9055 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
9056 ID3D12CommandQueue * This,
9057 _In_ UINT NumCommandLists,
9058 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
9059
9060 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
9061 void ( STDMETHODCALLTYPE *SetMarker )(
9062 ID3D12CommandQueue * This,
9063 UINT Metadata,
9064 _In_reads_bytes_opt_(Size) const void *pData,
9065 UINT Size);
9066
9067 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
9068 void ( STDMETHODCALLTYPE *BeginEvent )(
9069 ID3D12CommandQueue * This,
9070 UINT Metadata,
9071 _In_reads_bytes_opt_(Size) const void *pData,
9072 UINT Size);
9073
9074 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
9075 void ( STDMETHODCALLTYPE *EndEvent )(
9076 ID3D12CommandQueue * This);
9077
9078 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
9079 HRESULT ( STDMETHODCALLTYPE *Signal )(
9080 ID3D12CommandQueue * This,
9081 ID3D12Fence *pFence,
9082 UINT64 Value);
9083
9084 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
9085 HRESULT ( STDMETHODCALLTYPE *Wait )(
9086 ID3D12CommandQueue * This,
9087 ID3D12Fence *pFence,
9088 UINT64 Value);
9089
9090 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
9091 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
9092 ID3D12CommandQueue * This,
9093 _Out_ UINT64 *pFrequency);
9094
9095 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
9096 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
9097 ID3D12CommandQueue * This,
9098 _Out_ UINT64 *pGpuTimestamp,
9099 _Out_ UINT64 *pCpuTimestamp);
9100
9101 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
9102#if !defined(_WIN32)
9103 D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
9104 ID3D12CommandQueue * This);
9105
9106#else
9107 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
9108 ID3D12CommandQueue * This,
9109 D3D12_COMMAND_QUEUE_DESC * RetVal);
9110
9111#endif
9112
9113 END_INTERFACE
9114 } ID3D12CommandQueueVtbl;
9115
9116 interface ID3D12CommandQueue
9117 {
9118 CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
9119 };
9120
9121
9122
9123#ifdef COBJMACROS
9124
9125
9126#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
9127 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9128
9129#define ID3D12CommandQueue_AddRef(This) \
9130 ( (This)->lpVtbl -> AddRef(This) )
9131
9132#define ID3D12CommandQueue_Release(This) \
9133 ( (This)->lpVtbl -> Release(This) )
9134
9135
9136#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
9137 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9138
9139#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
9140 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9141
9142#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
9143 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9144
9145#define ID3D12CommandQueue_SetName(This,Name) \
9146 ( (This)->lpVtbl -> SetName(This,Name) )
9147
9148
9149#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
9150 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9151
9152
9153
9154#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
9155 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
9156
9157#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
9158 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
9159
9160#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
9161 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
9162
9163#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
9164 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9165
9166#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
9167 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9168
9169#define ID3D12CommandQueue_EndEvent(This) \
9170 ( (This)->lpVtbl -> EndEvent(This) )
9171
9172#define ID3D12CommandQueue_Signal(This,pFence,Value) \
9173 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
9174
9175#define ID3D12CommandQueue_Wait(This,pFence,Value) \
9176 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
9177
9178#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
9179 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
9180
9181#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
9182 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
9183#if !defined(_WIN32)
9184
9185#define ID3D12CommandQueue_GetDesc(This) \
9186 ( (This)->lpVtbl -> GetDesc(This) )
9187#else
9188#define ID3D12CommandQueue_GetDesc(This,RetVal) \
9189 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
9190#endif
9191
9192#endif /* COBJMACROS */
9193
9194
9195#endif /* C style interface */
9196
9197
9198
9199
9200#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
9201
9202
9203/* interface __MIDL_itf_d3d12_0000_0021 */
9204/* [local] */
9205
9206typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
9207 {
9208 _Out_ UINT ComputeQueuesPer3DQueue;
9209 } D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
9210
9211typedef
9212enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
9213 {
9214 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
9215 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1
9216 } D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
9217
9218typedef
9219enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
9220 {
9221 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
9222 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
9223 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
9224 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
9225 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
9226 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
9227 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
9228 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
9229 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
9230 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
9231 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
9232 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
9233 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
9234 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
9235 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
9236 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
9237 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
9238 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32
9239 } D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
9240
9241
9242
9243extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_c_ifspec;
9244extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_s_ifspec;
9245
9246#ifndef __ID3D12CommandQueue1_INTERFACE_DEFINED__
9247#define __ID3D12CommandQueue1_INTERFACE_DEFINED__
9248
9249/* interface ID3D12CommandQueue1 */
9250/* [unique][local][object][uuid] */
9251
9252
9253EXTERN_C const IID IID_ID3D12CommandQueue1;
9254
9255#if defined(__cplusplus) && !defined(CINTERFACE)
9256
9257 MIDL_INTERFACE("3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9")
9258 ID3D12CommandQueue1 : public ID3D12CommandQueue
9259 {
9260 public:
9261 virtual HRESULT STDMETHODCALLTYPE SetProcessPriority(
9262 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority) = 0;
9263
9264 virtual HRESULT STDMETHODCALLTYPE GetProcessPriority(
9265 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue) = 0;
9266
9267 virtual HRESULT STDMETHODCALLTYPE SetGlobalPriority(
9268 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority) = 0;
9269
9270 virtual HRESULT STDMETHODCALLTYPE GetGlobalPriority(
9271 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue) = 0;
9272
9273 };
9274
9275
9276#else /* C style interface */
9277
9278 typedef struct ID3D12CommandQueue1Vtbl
9279 {
9280 BEGIN_INTERFACE
9281
9282 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9283 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9284 ID3D12CommandQueue1 * This,
9285 REFIID riid,
9286 _COM_Outptr_ void **ppvObject);
9287
9288 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9289 ULONG ( STDMETHODCALLTYPE *AddRef )(
9290 ID3D12CommandQueue1 * This);
9291
9292 DECLSPEC_XFGVIRT(IUnknown, Release)
9293 ULONG ( STDMETHODCALLTYPE *Release )(
9294 ID3D12CommandQueue1 * This);
9295
9296 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9297 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9298 ID3D12CommandQueue1 * This,
9299 _In_ REFGUID guid,
9300 _Inout_ UINT *pDataSize,
9301 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9302
9303 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9304 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9305 ID3D12CommandQueue1 * This,
9306 _In_ REFGUID guid,
9307 _In_ UINT DataSize,
9308 _In_reads_bytes_opt_( DataSize ) const void *pData);
9309
9310 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9311 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9312 ID3D12CommandQueue1 * This,
9313 _In_ REFGUID guid,
9314 _In_opt_ const IUnknown *pData);
9315
9316 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9317 HRESULT ( STDMETHODCALLTYPE *SetName )(
9318 ID3D12CommandQueue1 * This,
9319 _In_z_ LPCWSTR Name);
9320
9321 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9322 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9323 ID3D12CommandQueue1 * This,
9324 REFIID riid,
9325 _COM_Outptr_opt_ void **ppvDevice);
9326
9327 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
9328 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
9329 ID3D12CommandQueue1 * This,
9330 _In_ ID3D12Resource *pResource,
9331 UINT NumResourceRegions,
9332 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
9333 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
9334 _In_opt_ ID3D12Heap *pHeap,
9335 UINT NumRanges,
9336 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
9337 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
9338 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
9339 D3D12_TILE_MAPPING_FLAGS Flags);
9340
9341 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
9342 void ( STDMETHODCALLTYPE *CopyTileMappings )(
9343 ID3D12CommandQueue1 * This,
9344 _In_ ID3D12Resource *pDstResource,
9345 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
9346 _In_ ID3D12Resource *pSrcResource,
9347 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
9348 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
9349 D3D12_TILE_MAPPING_FLAGS Flags);
9350
9351 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
9352 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
9353 ID3D12CommandQueue1 * This,
9354 _In_ UINT NumCommandLists,
9355 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
9356
9357 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
9358 void ( STDMETHODCALLTYPE *SetMarker )(
9359 ID3D12CommandQueue1 * This,
9360 UINT Metadata,
9361 _In_reads_bytes_opt_(Size) const void *pData,
9362 UINT Size);
9363
9364 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
9365 void ( STDMETHODCALLTYPE *BeginEvent )(
9366 ID3D12CommandQueue1 * This,
9367 UINT Metadata,
9368 _In_reads_bytes_opt_(Size) const void *pData,
9369 UINT Size);
9370
9371 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
9372 void ( STDMETHODCALLTYPE *EndEvent )(
9373 ID3D12CommandQueue1 * This);
9374
9375 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
9376 HRESULT ( STDMETHODCALLTYPE *Signal )(
9377 ID3D12CommandQueue1 * This,
9378 ID3D12Fence *pFence,
9379 UINT64 Value);
9380
9381 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
9382 HRESULT ( STDMETHODCALLTYPE *Wait )(
9383 ID3D12CommandQueue1 * This,
9384 ID3D12Fence *pFence,
9385 UINT64 Value);
9386
9387 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
9388 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
9389 ID3D12CommandQueue1 * This,
9390 _Out_ UINT64 *pFrequency);
9391
9392 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
9393 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
9394 ID3D12CommandQueue1 * This,
9395 _Out_ UINT64 *pGpuTimestamp,
9396 _Out_ UINT64 *pCpuTimestamp);
9397
9398 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
9399#if !defined(_WIN32)
9400 D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
9401 ID3D12CommandQueue1 * This);
9402
9403#else
9404 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
9405 ID3D12CommandQueue1 * This,
9406 D3D12_COMMAND_QUEUE_DESC * RetVal);
9407
9408#endif
9409
9410 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetProcessPriority)
9411 HRESULT ( STDMETHODCALLTYPE *SetProcessPriority )(
9412 ID3D12CommandQueue1 * This,
9413 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
9414
9415 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetProcessPriority)
9416 HRESULT ( STDMETHODCALLTYPE *GetProcessPriority )(
9417 ID3D12CommandQueue1 * This,
9418 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue);
9419
9420 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetGlobalPriority)
9421 HRESULT ( STDMETHODCALLTYPE *SetGlobalPriority )(
9422 ID3D12CommandQueue1 * This,
9423 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
9424
9425 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetGlobalPriority)
9426 HRESULT ( STDMETHODCALLTYPE *GetGlobalPriority )(
9427 ID3D12CommandQueue1 * This,
9428 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue);
9429
9430 END_INTERFACE
9431 } ID3D12CommandQueue1Vtbl;
9432
9433 interface ID3D12CommandQueue1
9434 {
9435 CONST_VTBL struct ID3D12CommandQueue1Vtbl *lpVtbl;
9436 };
9437
9438
9439
9440#ifdef COBJMACROS
9441
9442
9443#define ID3D12CommandQueue1_QueryInterface(This,riid,ppvObject) \
9444 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9445
9446#define ID3D12CommandQueue1_AddRef(This) \
9447 ( (This)->lpVtbl -> AddRef(This) )
9448
9449#define ID3D12CommandQueue1_Release(This) \
9450 ( (This)->lpVtbl -> Release(This) )
9451
9452
9453#define ID3D12CommandQueue1_GetPrivateData(This,guid,pDataSize,pData) \
9454 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9455
9456#define ID3D12CommandQueue1_SetPrivateData(This,guid,DataSize,pData) \
9457 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9458
9459#define ID3D12CommandQueue1_SetPrivateDataInterface(This,guid,pData) \
9460 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9461
9462#define ID3D12CommandQueue1_SetName(This,Name) \
9463 ( (This)->lpVtbl -> SetName(This,Name) )
9464
9465
9466#define ID3D12CommandQueue1_GetDevice(This,riid,ppvDevice) \
9467 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9468
9469
9470
9471#define ID3D12CommandQueue1_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
9472 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
9473
9474#define ID3D12CommandQueue1_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
9475 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
9476
9477#define ID3D12CommandQueue1_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
9478 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
9479
9480#define ID3D12CommandQueue1_SetMarker(This,Metadata,pData,Size) \
9481 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9482
9483#define ID3D12CommandQueue1_BeginEvent(This,Metadata,pData,Size) \
9484 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9485
9486#define ID3D12CommandQueue1_EndEvent(This) \
9487 ( (This)->lpVtbl -> EndEvent(This) )
9488
9489#define ID3D12CommandQueue1_Signal(This,pFence,Value) \
9490 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
9491
9492#define ID3D12CommandQueue1_Wait(This,pFence,Value) \
9493 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
9494
9495#define ID3D12CommandQueue1_GetTimestampFrequency(This,pFrequency) \
9496 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
9497
9498#define ID3D12CommandQueue1_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
9499 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
9500#if !defined(_WIN32)
9501
9502#define ID3D12CommandQueue1_GetDesc(This) \
9503 ( (This)->lpVtbl -> GetDesc(This) )
9504#else
9505#define ID3D12CommandQueue1_GetDesc(This,RetVal) \
9506 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
9507#endif
9508
9509
9510#define ID3D12CommandQueue1_SetProcessPriority(This,Priority) \
9511 ( (This)->lpVtbl -> SetProcessPriority(This,Priority) )
9512
9513#define ID3D12CommandQueue1_GetProcessPriority(This,pOutValue) \
9514 ( (This)->lpVtbl -> GetProcessPriority(This,pOutValue) )
9515
9516#define ID3D12CommandQueue1_SetGlobalPriority(This,Priority) \
9517 ( (This)->lpVtbl -> SetGlobalPriority(This,Priority) )
9518
9519#define ID3D12CommandQueue1_GetGlobalPriority(This,pOutValue) \
9520 ( (This)->lpVtbl -> GetGlobalPriority(This,pOutValue) )
9521
9522#endif /* COBJMACROS */
9523
9524
9525#endif /* C style interface */
9526
9527
9528
9529
9530#endif /* __ID3D12CommandQueue1_INTERFACE_DEFINED__ */
9531
9532
9533#ifndef __ID3D12Device_INTERFACE_DEFINED__
9534#define __ID3D12Device_INTERFACE_DEFINED__
9535
9536/* interface ID3D12Device */
9537/* [unique][local][object][uuid] */
9538
9539
9540EXTERN_C const IID IID_ID3D12Device;
9541
9542#if defined(__cplusplus) && !defined(CINTERFACE)
9543
9544 MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
9545 ID3D12Device : public ID3D12Object
9546 {
9547 public:
9548 virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
9549
9550 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
9551 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9552 REFIID riid,
9553 _COM_Outptr_ void **ppCommandQueue) = 0;
9554
9555 virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
9556 _In_ D3D12_COMMAND_LIST_TYPE type,
9557 REFIID riid,
9558 _COM_Outptr_ void **ppCommandAllocator) = 0;
9559
9560 virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
9561 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9562 REFIID riid,
9563 _COM_Outptr_ void **ppPipelineState) = 0;
9564
9565 virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
9566 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9567 REFIID riid,
9568 _COM_Outptr_ void **ppPipelineState) = 0;
9569
9570 virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
9571 _In_ UINT nodeMask,
9572 _In_ D3D12_COMMAND_LIST_TYPE type,
9573 _In_ ID3D12CommandAllocator *pCommandAllocator,
9574 _In_opt_ ID3D12PipelineState *pInitialState,
9575 REFIID riid,
9576 _COM_Outptr_ void **ppCommandList) = 0;
9577
9578 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
9579 D3D12_FEATURE Feature,
9580 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9581 UINT FeatureSupportDataSize) = 0;
9582
9583 virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
9584 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9585 REFIID riid,
9586 _COM_Outptr_ void **ppvHeap) = 0;
9587
9588 virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
9589 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
9590
9591 virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
9592 _In_ UINT nodeMask,
9593 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9594 _In_ SIZE_T blobLengthInBytes,
9595 REFIID riid,
9596 _COM_Outptr_ void **ppvRootSignature) = 0;
9597
9598 virtual void STDMETHODCALLTYPE CreateConstantBufferView(
9599 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9600 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9601
9602 virtual void STDMETHODCALLTYPE CreateShaderResourceView(
9603 _In_opt_ ID3D12Resource *pResource,
9604 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9605 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9606
9607 virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
9608 _In_opt_ ID3D12Resource *pResource,
9609 _In_opt_ ID3D12Resource *pCounterResource,
9610 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9611 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9612
9613 virtual void STDMETHODCALLTYPE CreateRenderTargetView(
9614 _In_opt_ ID3D12Resource *pResource,
9615 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9616 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9617
9618 virtual void STDMETHODCALLTYPE CreateDepthStencilView(
9619 _In_opt_ ID3D12Resource *pResource,
9620 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9621 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9622
9623 virtual void STDMETHODCALLTYPE CreateSampler(
9624 _In_ const D3D12_SAMPLER_DESC *pDesc,
9625 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9626
9627 virtual void STDMETHODCALLTYPE CopyDescriptors(
9628 _In_ UINT NumDestDescriptorRanges,
9629 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9630 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9631 _In_ UINT NumSrcDescriptorRanges,
9632 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9633 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9634 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
9635
9636 virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
9637 _In_ UINT NumDescriptors,
9638 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9639 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9640 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
9641
9642#if defined(_MSC_VER) || !defined(_WIN32)
9643 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
9644 _In_ UINT visibleMask,
9645 _In_ UINT numResourceDescs,
9646 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
9647#else
9648 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo(
9649 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9650 _In_ UINT visibleMask,
9651 _In_ UINT numResourceDescs,
9652 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
9653#endif
9654
9655#if defined(_MSC_VER) || !defined(_WIN32)
9656 virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
9657 _In_ UINT nodeMask,
9658 D3D12_HEAP_TYPE heapType) = 0;
9659#else
9660 virtual D3D12_HEAP_PROPERTIES *STDMETHODCALLTYPE GetCustomHeapProperties(
9661 D3D12_HEAP_PROPERTIES * RetVal,
9662 _In_ UINT nodeMask,
9663 D3D12_HEAP_TYPE heapType) = 0;
9664#endif
9665
9666 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
9667 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9668 D3D12_HEAP_FLAGS HeapFlags,
9669 _In_ const D3D12_RESOURCE_DESC *pDesc,
9670 D3D12_RESOURCE_STATES InitialResourceState,
9671 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9672 REFIID riidResource,
9673 _COM_Outptr_opt_ void **ppvResource) = 0;
9674
9675 virtual HRESULT STDMETHODCALLTYPE CreateHeap(
9676 _In_ const D3D12_HEAP_DESC *pDesc,
9677 REFIID riid,
9678 _COM_Outptr_opt_ void **ppvHeap) = 0;
9679
9680 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
9681 _In_ ID3D12Heap *pHeap,
9682 UINT64 HeapOffset,
9683 _In_ const D3D12_RESOURCE_DESC *pDesc,
9684 D3D12_RESOURCE_STATES InitialState,
9685 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9686 REFIID riid,
9687 _COM_Outptr_opt_ void **ppvResource) = 0;
9688
9689 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
9690 _In_ const D3D12_RESOURCE_DESC *pDesc,
9691 D3D12_RESOURCE_STATES InitialState,
9692 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9693 REFIID riid,
9694 _COM_Outptr_opt_ void **ppvResource) = 0;
9695
9696 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
9697 _In_ ID3D12DeviceChild *pObject,
9698 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
9699 DWORD Access,
9700 _In_opt_ LPCWSTR Name,
9701 _Out_ HANDLE *pHandle) = 0;
9702
9703 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
9704 _In_ HANDLE NTHandle,
9705 REFIID riid,
9706 _COM_Outptr_opt_ void **ppvObj) = 0;
9707
9708 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
9709 _In_ LPCWSTR Name,
9710 DWORD Access,
9711 /* [annotation][out] */
9712 _Out_ HANDLE *pNTHandle) = 0;
9713
9714 virtual HRESULT STDMETHODCALLTYPE MakeResident(
9715 UINT NumObjects,
9716 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
9717
9718 virtual HRESULT STDMETHODCALLTYPE Evict(
9719 UINT NumObjects,
9720 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
9721
9722 virtual HRESULT STDMETHODCALLTYPE CreateFence(
9723 UINT64 InitialValue,
9724 D3D12_FENCE_FLAGS Flags,
9725 REFIID riid,
9726 _COM_Outptr_ void **ppFence) = 0;
9727
9728 virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
9729
9730 virtual void STDMETHODCALLTYPE GetCopyableFootprints(
9731 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
9732 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
9733 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
9734 UINT64 BaseOffset,
9735 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
9736 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
9737 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
9738 _Out_opt_ UINT64 *pTotalBytes) = 0;
9739
9740 virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
9741 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
9742 REFIID riid,
9743 _COM_Outptr_opt_ void **ppvHeap) = 0;
9744
9745 virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
9746 BOOL Enable) = 0;
9747
9748 virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
9749 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
9750 _In_opt_ ID3D12RootSignature *pRootSignature,
9751 REFIID riid,
9752 _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
9753
9754 virtual void STDMETHODCALLTYPE GetResourceTiling(
9755 _In_ ID3D12Resource *pTiledResource,
9756 _Out_opt_ UINT *pNumTilesForEntireResource,
9757 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
9758 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
9759 _Inout_opt_ UINT *pNumSubresourceTilings,
9760 _In_ UINT FirstSubresourceTilingToGet,
9761 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
9762
9763#if defined(_MSC_VER) || !defined(_WIN32)
9764 virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
9765#else
9766 virtual LUID *STDMETHODCALLTYPE GetAdapterLuid(
9767 LUID * RetVal) = 0;
9768#endif
9769
9770 };
9771
9772
9773#else /* C style interface */
9774
9775 typedef struct ID3D12DeviceVtbl
9776 {
9777 BEGIN_INTERFACE
9778
9779 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9780 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9781 ID3D12Device * This,
9782 REFIID riid,
9783 _COM_Outptr_ void **ppvObject);
9784
9785 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9786 ULONG ( STDMETHODCALLTYPE *AddRef )(
9787 ID3D12Device * This);
9788
9789 DECLSPEC_XFGVIRT(IUnknown, Release)
9790 ULONG ( STDMETHODCALLTYPE *Release )(
9791 ID3D12Device * This);
9792
9793 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9794 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9795 ID3D12Device * This,
9796 _In_ REFGUID guid,
9797 _Inout_ UINT *pDataSize,
9798 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9799
9800 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9801 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9802 ID3D12Device * This,
9803 _In_ REFGUID guid,
9804 _In_ UINT DataSize,
9805 _In_reads_bytes_opt_( DataSize ) const void *pData);
9806
9807 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9808 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9809 ID3D12Device * This,
9810 _In_ REFGUID guid,
9811 _In_opt_ const IUnknown *pData);
9812
9813 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9814 HRESULT ( STDMETHODCALLTYPE *SetName )(
9815 ID3D12Device * This,
9816 _In_z_ LPCWSTR Name);
9817
9818 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
9819 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
9820 ID3D12Device * This);
9821
9822 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
9823 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
9824 ID3D12Device * This,
9825 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9826 REFIID riid,
9827 _COM_Outptr_ void **ppCommandQueue);
9828
9829 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
9830 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
9831 ID3D12Device * This,
9832 _In_ D3D12_COMMAND_LIST_TYPE type,
9833 REFIID riid,
9834 _COM_Outptr_ void **ppCommandAllocator);
9835
9836 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
9837 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
9838 ID3D12Device * This,
9839 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9840 REFIID riid,
9841 _COM_Outptr_ void **ppPipelineState);
9842
9843 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
9844 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
9845 ID3D12Device * This,
9846 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9847 REFIID riid,
9848 _COM_Outptr_ void **ppPipelineState);
9849
9850 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
9851 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
9852 ID3D12Device * This,
9853 _In_ UINT nodeMask,
9854 _In_ D3D12_COMMAND_LIST_TYPE type,
9855 _In_ ID3D12CommandAllocator *pCommandAllocator,
9856 _In_opt_ ID3D12PipelineState *pInitialState,
9857 REFIID riid,
9858 _COM_Outptr_ void **ppCommandList);
9859
9860 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
9861 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9862 ID3D12Device * This,
9863 D3D12_FEATURE Feature,
9864 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9865 UINT FeatureSupportDataSize);
9866
9867 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
9868 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
9869 ID3D12Device * This,
9870 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9871 REFIID riid,
9872 _COM_Outptr_ void **ppvHeap);
9873
9874 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
9875 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
9876 ID3D12Device * This,
9877 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
9878
9879 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
9880 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
9881 ID3D12Device * This,
9882 _In_ UINT nodeMask,
9883 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9884 _In_ SIZE_T blobLengthInBytes,
9885 REFIID riid,
9886 _COM_Outptr_ void **ppvRootSignature);
9887
9888 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
9889 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
9890 ID3D12Device * This,
9891 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9892 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9893
9894 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
9895 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
9896 ID3D12Device * This,
9897 _In_opt_ ID3D12Resource *pResource,
9898 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9899 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9900
9901 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
9902 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
9903 ID3D12Device * This,
9904 _In_opt_ ID3D12Resource *pResource,
9905 _In_opt_ ID3D12Resource *pCounterResource,
9906 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9907 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9908
9909 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
9910 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
9911 ID3D12Device * This,
9912 _In_opt_ ID3D12Resource *pResource,
9913 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9914 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9915
9916 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
9917 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
9918 ID3D12Device * This,
9919 _In_opt_ ID3D12Resource *pResource,
9920 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9921 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9922
9923 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
9924 void ( STDMETHODCALLTYPE *CreateSampler )(
9925 ID3D12Device * This,
9926 _In_ const D3D12_SAMPLER_DESC *pDesc,
9927 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9928
9929 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
9930 void ( STDMETHODCALLTYPE *CopyDescriptors )(
9931 ID3D12Device * This,
9932 _In_ UINT NumDestDescriptorRanges,
9933 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9934 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9935 _In_ UINT NumSrcDescriptorRanges,
9936 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9937 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9938 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9939
9940 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
9941 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
9942 ID3D12Device * This,
9943 _In_ UINT NumDescriptors,
9944 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9945 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9946 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9947
9948 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
9949#if !defined(_WIN32)
9950 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9951 ID3D12Device * This,
9952 _In_ UINT visibleMask,
9953 _In_ UINT numResourceDescs,
9954 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9955
9956#else
9957 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9958 ID3D12Device * This,
9959 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9960 _In_ UINT visibleMask,
9961 _In_ UINT numResourceDescs,
9962 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9963
9964#endif
9965
9966 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
9967#if !defined(_WIN32)
9968 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9969 ID3D12Device * This,
9970 _In_ UINT nodeMask,
9971 D3D12_HEAP_TYPE heapType);
9972
9973#else
9974 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9975 ID3D12Device * This,
9976 D3D12_HEAP_PROPERTIES * RetVal,
9977 _In_ UINT nodeMask,
9978 D3D12_HEAP_TYPE heapType);
9979
9980#endif
9981
9982 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
9983 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
9984 ID3D12Device * This,
9985 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9986 D3D12_HEAP_FLAGS HeapFlags,
9987 _In_ const D3D12_RESOURCE_DESC *pDesc,
9988 D3D12_RESOURCE_STATES InitialResourceState,
9989 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9990 REFIID riidResource,
9991 _COM_Outptr_opt_ void **ppvResource);
9992
9993 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
9994 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
9995 ID3D12Device * This,
9996 _In_ const D3D12_HEAP_DESC *pDesc,
9997 REFIID riid,
9998 _COM_Outptr_opt_ void **ppvHeap);
9999
10000 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10001 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10002 ID3D12Device * This,
10003 _In_ ID3D12Heap *pHeap,
10004 UINT64 HeapOffset,
10005 _In_ const D3D12_RESOURCE_DESC *pDesc,
10006 D3D12_RESOURCE_STATES InitialState,
10007 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10008 REFIID riid,
10009 _COM_Outptr_opt_ void **ppvResource);
10010
10011 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10012 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10013 ID3D12Device * This,
10014 _In_ const D3D12_RESOURCE_DESC *pDesc,
10015 D3D12_RESOURCE_STATES InitialState,
10016 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10017 REFIID riid,
10018 _COM_Outptr_opt_ void **ppvResource);
10019
10020 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10021 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10022 ID3D12Device * This,
10023 _In_ ID3D12DeviceChild *pObject,
10024 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10025 DWORD Access,
10026 _In_opt_ LPCWSTR Name,
10027 _Out_ HANDLE *pHandle);
10028
10029 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10030 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10031 ID3D12Device * This,
10032 _In_ HANDLE NTHandle,
10033 REFIID riid,
10034 _COM_Outptr_opt_ void **ppvObj);
10035
10036 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10037 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10038 ID3D12Device * This,
10039 _In_ LPCWSTR Name,
10040 DWORD Access,
10041 /* [annotation][out] */
10042 _Out_ HANDLE *pNTHandle);
10043
10044 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10045 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10046 ID3D12Device * This,
10047 UINT NumObjects,
10048 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10049
10050 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10051 HRESULT ( STDMETHODCALLTYPE *Evict )(
10052 ID3D12Device * This,
10053 UINT NumObjects,
10054 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10055
10056 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10057 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10058 ID3D12Device * This,
10059 UINT64 InitialValue,
10060 D3D12_FENCE_FLAGS Flags,
10061 REFIID riid,
10062 _COM_Outptr_ void **ppFence);
10063
10064 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10065 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10066 ID3D12Device * This);
10067
10068 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10069 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10070 ID3D12Device * This,
10071 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10072 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10073 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10074 UINT64 BaseOffset,
10075 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10076 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10077 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10078 _Out_opt_ UINT64 *pTotalBytes);
10079
10080 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10081 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10082 ID3D12Device * This,
10083 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10084 REFIID riid,
10085 _COM_Outptr_opt_ void **ppvHeap);
10086
10087 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10088 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10089 ID3D12Device * This,
10090 BOOL Enable);
10091
10092 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10093 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10094 ID3D12Device * This,
10095 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10096 _In_opt_ ID3D12RootSignature *pRootSignature,
10097 REFIID riid,
10098 _COM_Outptr_opt_ void **ppvCommandSignature);
10099
10100 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10101 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10102 ID3D12Device * This,
10103 _In_ ID3D12Resource *pTiledResource,
10104 _Out_opt_ UINT *pNumTilesForEntireResource,
10105 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10106 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10107 _Inout_opt_ UINT *pNumSubresourceTilings,
10108 _In_ UINT FirstSubresourceTilingToGet,
10109 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10110
10111 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10112#if !defined(_WIN32)
10113 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
10114 ID3D12Device * This);
10115
10116#else
10117 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10118 ID3D12Device * This,
10119 LUID * RetVal);
10120
10121#endif
10122
10123 END_INTERFACE
10124 } ID3D12DeviceVtbl;
10125
10126 interface ID3D12Device
10127 {
10128 CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
10129 };
10130
10131
10132
10133#ifdef COBJMACROS
10134
10135
10136#define ID3D12Device_QueryInterface(This,riid,ppvObject) \
10137 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10138
10139#define ID3D12Device_AddRef(This) \
10140 ( (This)->lpVtbl -> AddRef(This) )
10141
10142#define ID3D12Device_Release(This) \
10143 ( (This)->lpVtbl -> Release(This) )
10144
10145
10146#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
10147 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10148
10149#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
10150 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10151
10152#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
10153 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10154
10155#define ID3D12Device_SetName(This,Name) \
10156 ( (This)->lpVtbl -> SetName(This,Name) )
10157
10158
10159#define ID3D12Device_GetNodeCount(This) \
10160 ( (This)->lpVtbl -> GetNodeCount(This) )
10161
10162#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
10163 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
10164
10165#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
10166 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
10167
10168#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
10169 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
10170
10171#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
10172 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
10173
10174#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
10175 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
10176
10177#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
10178 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
10179
10180#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
10181 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
10182
10183#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
10184 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
10185
10186#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
10187 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
10188
10189#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
10190 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
10191
10192#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
10193 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
10194
10195#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
10196 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
10197
10198#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
10199 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
10200
10201#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
10202 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
10203
10204#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
10205 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
10206
10207#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
10208 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
10209
10210#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
10211 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
10212#if !defined(_WIN32)
10213
10214#define ID3D12Device_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
10215 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
10216#else
10217#define ID3D12Device_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
10218 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
10219#endif
10220#if !defined(_WIN32)
10221
10222#define ID3D12Device_GetCustomHeapProperties(This,nodeMask,heapType) \
10223 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
10224#else
10225#define ID3D12Device_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
10226 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
10227#endif
10228
10229#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
10230 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
10231
10232#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
10233 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
10234
10235#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10236 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10237
10238#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10239 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10240
10241#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
10242 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
10243
10244#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
10245 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
10246
10247#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
10248 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
10249
10250#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
10251 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
10252
10253#define ID3D12Device_Evict(This,NumObjects,ppObjects) \
10254 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
10255
10256#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
10257 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
10258
10259#define ID3D12Device_GetDeviceRemovedReason(This) \
10260 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
10261
10262#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
10263 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
10264
10265#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
10266 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
10267
10268#define ID3D12Device_SetStablePowerState(This,Enable) \
10269 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
10270
10271#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
10272 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
10273
10274#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
10275 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
10276#if !defined(_WIN32)
10277
10278#define ID3D12Device_GetAdapterLuid(This) \
10279 ( (This)->lpVtbl -> GetAdapterLuid(This) )
10280#else
10281#define ID3D12Device_GetAdapterLuid(This,RetVal) \
10282 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10283#endif
10284
10285#endif /* COBJMACROS */
10286
10287
10288#endif /* C style interface */
10289
10290
10291
10292
10293#endif /* __ID3D12Device_INTERFACE_DEFINED__ */
10294
10295
10296#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
10297#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
10298
10299/* interface ID3D12PipelineLibrary */
10300/* [unique][local][object][uuid] */
10301
10302
10303EXTERN_C const IID IID_ID3D12PipelineLibrary;
10304
10305#if defined(__cplusplus) && !defined(CINTERFACE)
10306
10307 MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
10308 ID3D12PipelineLibrary : public ID3D12DeviceChild
10309 {
10310 public:
10311 virtual HRESULT STDMETHODCALLTYPE StorePipeline(
10312 _In_opt_ LPCWSTR pName,
10313 _In_ ID3D12PipelineState *pPipeline) = 0;
10314
10315 virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
10316 _In_ LPCWSTR pName,
10317 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10318 REFIID riid,
10319 _COM_Outptr_ void **ppPipelineState) = 0;
10320
10321 virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
10322 _In_ LPCWSTR pName,
10323 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10324 REFIID riid,
10325 _COM_Outptr_ void **ppPipelineState) = 0;
10326
10327 virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
10328
10329 virtual HRESULT STDMETHODCALLTYPE Serialize(
10330 _Out_writes_(DataSizeInBytes) void *pData,
10331 SIZE_T DataSizeInBytes) = 0;
10332
10333 };
10334
10335
10336#else /* C style interface */
10337
10338 typedef struct ID3D12PipelineLibraryVtbl
10339 {
10340 BEGIN_INTERFACE
10341
10342 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10343 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10344 ID3D12PipelineLibrary * This,
10345 REFIID riid,
10346 _COM_Outptr_ void **ppvObject);
10347
10348 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10349 ULONG ( STDMETHODCALLTYPE *AddRef )(
10350 ID3D12PipelineLibrary * This);
10351
10352 DECLSPEC_XFGVIRT(IUnknown, Release)
10353 ULONG ( STDMETHODCALLTYPE *Release )(
10354 ID3D12PipelineLibrary * This);
10355
10356 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10357 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10358 ID3D12PipelineLibrary * This,
10359 _In_ REFGUID guid,
10360 _Inout_ UINT *pDataSize,
10361 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10362
10363 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10364 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10365 ID3D12PipelineLibrary * This,
10366 _In_ REFGUID guid,
10367 _In_ UINT DataSize,
10368 _In_reads_bytes_opt_( DataSize ) const void *pData);
10369
10370 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10371 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10372 ID3D12PipelineLibrary * This,
10373 _In_ REFGUID guid,
10374 _In_opt_ const IUnknown *pData);
10375
10376 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10377 HRESULT ( STDMETHODCALLTYPE *SetName )(
10378 ID3D12PipelineLibrary * This,
10379 _In_z_ LPCWSTR Name);
10380
10381 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10382 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10383 ID3D12PipelineLibrary * This,
10384 REFIID riid,
10385 _COM_Outptr_opt_ void **ppvDevice);
10386
10387 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
10388 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
10389 ID3D12PipelineLibrary * This,
10390 _In_opt_ LPCWSTR pName,
10391 _In_ ID3D12PipelineState *pPipeline);
10392
10393 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
10394 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
10395 ID3D12PipelineLibrary * This,
10396 _In_ LPCWSTR pName,
10397 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10398 REFIID riid,
10399 _COM_Outptr_ void **ppPipelineState);
10400
10401 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
10402 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
10403 ID3D12PipelineLibrary * This,
10404 _In_ LPCWSTR pName,
10405 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10406 REFIID riid,
10407 _COM_Outptr_ void **ppPipelineState);
10408
10409 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
10410 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
10411 ID3D12PipelineLibrary * This);
10412
10413 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
10414 HRESULT ( STDMETHODCALLTYPE *Serialize )(
10415 ID3D12PipelineLibrary * This,
10416 _Out_writes_(DataSizeInBytes) void *pData,
10417 SIZE_T DataSizeInBytes);
10418
10419 END_INTERFACE
10420 } ID3D12PipelineLibraryVtbl;
10421
10422 interface ID3D12PipelineLibrary
10423 {
10424 CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
10425 };
10426
10427
10428
10429#ifdef COBJMACROS
10430
10431
10432#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
10433 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10434
10435#define ID3D12PipelineLibrary_AddRef(This) \
10436 ( (This)->lpVtbl -> AddRef(This) )
10437
10438#define ID3D12PipelineLibrary_Release(This) \
10439 ( (This)->lpVtbl -> Release(This) )
10440
10441
10442#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
10443 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10444
10445#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
10446 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10447
10448#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
10449 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10450
10451#define ID3D12PipelineLibrary_SetName(This,Name) \
10452 ( (This)->lpVtbl -> SetName(This,Name) )
10453
10454
10455#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
10456 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10457
10458
10459#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
10460 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
10461
10462#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
10463 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
10464
10465#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
10466 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
10467
10468#define ID3D12PipelineLibrary_GetSerializedSize(This) \
10469 ( (This)->lpVtbl -> GetSerializedSize(This) )
10470
10471#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
10472 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
10473
10474#endif /* COBJMACROS */
10475
10476
10477#endif /* C style interface */
10478
10479
10480
10481
10482#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
10483
10484
10485#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
10486#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
10487
10488/* interface ID3D12PipelineLibrary1 */
10489/* [unique][local][object][uuid] */
10490
10491
10492EXTERN_C const IID IID_ID3D12PipelineLibrary1;
10493
10494#if defined(__cplusplus) && !defined(CINTERFACE)
10495
10496 MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
10497 ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
10498 {
10499 public:
10500 virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
10501 _In_ LPCWSTR pName,
10502 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10503 REFIID riid,
10504 _COM_Outptr_ void **ppPipelineState) = 0;
10505
10506 };
10507
10508
10509#else /* C style interface */
10510
10511 typedef struct ID3D12PipelineLibrary1Vtbl
10512 {
10513 BEGIN_INTERFACE
10514
10515 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10516 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10517 ID3D12PipelineLibrary1 * This,
10518 REFIID riid,
10519 _COM_Outptr_ void **ppvObject);
10520
10521 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10522 ULONG ( STDMETHODCALLTYPE *AddRef )(
10523 ID3D12PipelineLibrary1 * This);
10524
10525 DECLSPEC_XFGVIRT(IUnknown, Release)
10526 ULONG ( STDMETHODCALLTYPE *Release )(
10527 ID3D12PipelineLibrary1 * This);
10528
10529 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10530 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10531 ID3D12PipelineLibrary1 * This,
10532 _In_ REFGUID guid,
10533 _Inout_ UINT *pDataSize,
10534 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10535
10536 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10537 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10538 ID3D12PipelineLibrary1 * This,
10539 _In_ REFGUID guid,
10540 _In_ UINT DataSize,
10541 _In_reads_bytes_opt_( DataSize ) const void *pData);
10542
10543 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10544 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10545 ID3D12PipelineLibrary1 * This,
10546 _In_ REFGUID guid,
10547 _In_opt_ const IUnknown *pData);
10548
10549 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10550 HRESULT ( STDMETHODCALLTYPE *SetName )(
10551 ID3D12PipelineLibrary1 * This,
10552 _In_z_ LPCWSTR Name);
10553
10554 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10555 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10556 ID3D12PipelineLibrary1 * This,
10557 REFIID riid,
10558 _COM_Outptr_opt_ void **ppvDevice);
10559
10560 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
10561 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
10562 ID3D12PipelineLibrary1 * This,
10563 _In_opt_ LPCWSTR pName,
10564 _In_ ID3D12PipelineState *pPipeline);
10565
10566 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
10567 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
10568 ID3D12PipelineLibrary1 * This,
10569 _In_ LPCWSTR pName,
10570 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10571 REFIID riid,
10572 _COM_Outptr_ void **ppPipelineState);
10573
10574 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
10575 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
10576 ID3D12PipelineLibrary1 * This,
10577 _In_ LPCWSTR pName,
10578 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10579 REFIID riid,
10580 _COM_Outptr_ void **ppPipelineState);
10581
10582 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
10583 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
10584 ID3D12PipelineLibrary1 * This);
10585
10586 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
10587 HRESULT ( STDMETHODCALLTYPE *Serialize )(
10588 ID3D12PipelineLibrary1 * This,
10589 _Out_writes_(DataSizeInBytes) void *pData,
10590 SIZE_T DataSizeInBytes);
10591
10592 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary1, LoadPipeline)
10593 HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
10594 ID3D12PipelineLibrary1 * This,
10595 _In_ LPCWSTR pName,
10596 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10597 REFIID riid,
10598 _COM_Outptr_ void **ppPipelineState);
10599
10600 END_INTERFACE
10601 } ID3D12PipelineLibrary1Vtbl;
10602
10603 interface ID3D12PipelineLibrary1
10604 {
10605 CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
10606 };
10607
10608
10609
10610#ifdef COBJMACROS
10611
10612
10613#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
10614 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10615
10616#define ID3D12PipelineLibrary1_AddRef(This) \
10617 ( (This)->lpVtbl -> AddRef(This) )
10618
10619#define ID3D12PipelineLibrary1_Release(This) \
10620 ( (This)->lpVtbl -> Release(This) )
10621
10622
10623#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
10624 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10625
10626#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
10627 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10628
10629#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
10630 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10631
10632#define ID3D12PipelineLibrary1_SetName(This,Name) \
10633 ( (This)->lpVtbl -> SetName(This,Name) )
10634
10635
10636#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
10637 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10638
10639
10640#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
10641 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
10642
10643#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
10644 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
10645
10646#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
10647 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
10648
10649#define ID3D12PipelineLibrary1_GetSerializedSize(This) \
10650 ( (This)->lpVtbl -> GetSerializedSize(This) )
10651
10652#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
10653 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
10654
10655
10656#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
10657 ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
10658
10659#endif /* COBJMACROS */
10660
10661
10662#endif /* C style interface */
10663
10664
10665
10666
10667#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
10668
10669
10670/* interface __MIDL_itf_d3d12_0000_0025 */
10671/* [local] */
10672
10673typedef
10674enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
10675 {
10676 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
10677 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
10678 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
10679 } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
10680
10681DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )
10682typedef
10683enum D3D12_RESIDENCY_PRIORITY
10684 {
10685 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
10686 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
10687 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
10688 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
10689 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
10690 } D3D12_RESIDENCY_PRIORITY;
10691
10692
10693
10694extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
10695extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
10696
10697#ifndef __ID3D12Device1_INTERFACE_DEFINED__
10698#define __ID3D12Device1_INTERFACE_DEFINED__
10699
10700/* interface ID3D12Device1 */
10701/* [unique][local][object][uuid] */
10702
10703
10704EXTERN_C const IID IID_ID3D12Device1;
10705
10706#if defined(__cplusplus) && !defined(CINTERFACE)
10707
10708 MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
10709 ID3D12Device1 : public ID3D12Device
10710 {
10711 public:
10712 virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
10713 _In_reads_(BlobLength) const void *pLibraryBlob,
10714 SIZE_T BlobLength,
10715 REFIID riid,
10716 _COM_Outptr_ void **ppPipelineLibrary) = 0;
10717
10718 virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
10719 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10720 _In_reads_(NumFences) const UINT64 *pFenceValues,
10721 UINT NumFences,
10722 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10723 HANDLE hEvent) = 0;
10724
10725 virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
10726 UINT NumObjects,
10727 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10728 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
10729
10730 };
10731
10732
10733#else /* C style interface */
10734
10735 typedef struct ID3D12Device1Vtbl
10736 {
10737 BEGIN_INTERFACE
10738
10739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10741 ID3D12Device1 * This,
10742 REFIID riid,
10743 _COM_Outptr_ void **ppvObject);
10744
10745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10746 ULONG ( STDMETHODCALLTYPE *AddRef )(
10747 ID3D12Device1 * This);
10748
10749 DECLSPEC_XFGVIRT(IUnknown, Release)
10750 ULONG ( STDMETHODCALLTYPE *Release )(
10751 ID3D12Device1 * This);
10752
10753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10755 ID3D12Device1 * This,
10756 _In_ REFGUID guid,
10757 _Inout_ UINT *pDataSize,
10758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10759
10760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10762 ID3D12Device1 * This,
10763 _In_ REFGUID guid,
10764 _In_ UINT DataSize,
10765 _In_reads_bytes_opt_( DataSize ) const void *pData);
10766
10767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10769 ID3D12Device1 * This,
10770 _In_ REFGUID guid,
10771 _In_opt_ const IUnknown *pData);
10772
10773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10774 HRESULT ( STDMETHODCALLTYPE *SetName )(
10775 ID3D12Device1 * This,
10776 _In_z_ LPCWSTR Name);
10777
10778 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10779 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10780 ID3D12Device1 * This);
10781
10782 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10783 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10784 ID3D12Device1 * This,
10785 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10786 REFIID riid,
10787 _COM_Outptr_ void **ppCommandQueue);
10788
10789 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10790 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10791 ID3D12Device1 * This,
10792 _In_ D3D12_COMMAND_LIST_TYPE type,
10793 REFIID riid,
10794 _COM_Outptr_ void **ppCommandAllocator);
10795
10796 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10797 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10798 ID3D12Device1 * This,
10799 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10800 REFIID riid,
10801 _COM_Outptr_ void **ppPipelineState);
10802
10803 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10804 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10805 ID3D12Device1 * This,
10806 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10807 REFIID riid,
10808 _COM_Outptr_ void **ppPipelineState);
10809
10810 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10811 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10812 ID3D12Device1 * This,
10813 _In_ UINT nodeMask,
10814 _In_ D3D12_COMMAND_LIST_TYPE type,
10815 _In_ ID3D12CommandAllocator *pCommandAllocator,
10816 _In_opt_ ID3D12PipelineState *pInitialState,
10817 REFIID riid,
10818 _COM_Outptr_ void **ppCommandList);
10819
10820 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10821 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10822 ID3D12Device1 * This,
10823 D3D12_FEATURE Feature,
10824 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10825 UINT FeatureSupportDataSize);
10826
10827 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10828 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10829 ID3D12Device1 * This,
10830 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10831 REFIID riid,
10832 _COM_Outptr_ void **ppvHeap);
10833
10834 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10835 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10836 ID3D12Device1 * This,
10837 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10838
10839 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10840 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10841 ID3D12Device1 * This,
10842 _In_ UINT nodeMask,
10843 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10844 _In_ SIZE_T blobLengthInBytes,
10845 REFIID riid,
10846 _COM_Outptr_ void **ppvRootSignature);
10847
10848 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10849 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10850 ID3D12Device1 * This,
10851 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10852 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10853
10854 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10855 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10856 ID3D12Device1 * This,
10857 _In_opt_ ID3D12Resource *pResource,
10858 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10859 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10860
10861 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10862 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10863 ID3D12Device1 * This,
10864 _In_opt_ ID3D12Resource *pResource,
10865 _In_opt_ ID3D12Resource *pCounterResource,
10866 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10867 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10868
10869 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10870 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10871 ID3D12Device1 * This,
10872 _In_opt_ ID3D12Resource *pResource,
10873 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10874 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10875
10876 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10877 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10878 ID3D12Device1 * This,
10879 _In_opt_ ID3D12Resource *pResource,
10880 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10881 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10882
10883 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10884 void ( STDMETHODCALLTYPE *CreateSampler )(
10885 ID3D12Device1 * This,
10886 _In_ const D3D12_SAMPLER_DESC *pDesc,
10887 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10888
10889 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10890 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10891 ID3D12Device1 * This,
10892 _In_ UINT NumDestDescriptorRanges,
10893 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10894 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10895 _In_ UINT NumSrcDescriptorRanges,
10896 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10897 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10898 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10899
10900 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10901 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10902 ID3D12Device1 * This,
10903 _In_ UINT NumDescriptors,
10904 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10905 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10906 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10907
10908 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10909#if !defined(_WIN32)
10910 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10911 ID3D12Device1 * This,
10912 _In_ UINT visibleMask,
10913 _In_ UINT numResourceDescs,
10914 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10915
10916#else
10917 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10918 ID3D12Device1 * This,
10919 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10920 _In_ UINT visibleMask,
10921 _In_ UINT numResourceDescs,
10922 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10923
10924#endif
10925
10926 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10927#if !defined(_WIN32)
10928 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10929 ID3D12Device1 * This,
10930 _In_ UINT nodeMask,
10931 D3D12_HEAP_TYPE heapType);
10932
10933#else
10934 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10935 ID3D12Device1 * This,
10936 D3D12_HEAP_PROPERTIES * RetVal,
10937 _In_ UINT nodeMask,
10938 D3D12_HEAP_TYPE heapType);
10939
10940#endif
10941
10942 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10943 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10944 ID3D12Device1 * This,
10945 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10946 D3D12_HEAP_FLAGS HeapFlags,
10947 _In_ const D3D12_RESOURCE_DESC *pDesc,
10948 D3D12_RESOURCE_STATES InitialResourceState,
10949 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10950 REFIID riidResource,
10951 _COM_Outptr_opt_ void **ppvResource);
10952
10953 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10954 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10955 ID3D12Device1 * This,
10956 _In_ const D3D12_HEAP_DESC *pDesc,
10957 REFIID riid,
10958 _COM_Outptr_opt_ void **ppvHeap);
10959
10960 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10961 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10962 ID3D12Device1 * This,
10963 _In_ ID3D12Heap *pHeap,
10964 UINT64 HeapOffset,
10965 _In_ const D3D12_RESOURCE_DESC *pDesc,
10966 D3D12_RESOURCE_STATES InitialState,
10967 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10968 REFIID riid,
10969 _COM_Outptr_opt_ void **ppvResource);
10970
10971 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10972 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10973 ID3D12Device1 * This,
10974 _In_ const D3D12_RESOURCE_DESC *pDesc,
10975 D3D12_RESOURCE_STATES InitialState,
10976 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10977 REFIID riid,
10978 _COM_Outptr_opt_ void **ppvResource);
10979
10980 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10981 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10982 ID3D12Device1 * This,
10983 _In_ ID3D12DeviceChild *pObject,
10984 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10985 DWORD Access,
10986 _In_opt_ LPCWSTR Name,
10987 _Out_ HANDLE *pHandle);
10988
10989 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10990 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10991 ID3D12Device1 * This,
10992 _In_ HANDLE NTHandle,
10993 REFIID riid,
10994 _COM_Outptr_opt_ void **ppvObj);
10995
10996 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10997 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10998 ID3D12Device1 * This,
10999 _In_ LPCWSTR Name,
11000 DWORD Access,
11001 /* [annotation][out] */
11002 _Out_ HANDLE *pNTHandle);
11003
11004 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11005 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11006 ID3D12Device1 * This,
11007 UINT NumObjects,
11008 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11009
11010 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11011 HRESULT ( STDMETHODCALLTYPE *Evict )(
11012 ID3D12Device1 * This,
11013 UINT NumObjects,
11014 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11015
11016 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11017 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11018 ID3D12Device1 * This,
11019 UINT64 InitialValue,
11020 D3D12_FENCE_FLAGS Flags,
11021 REFIID riid,
11022 _COM_Outptr_ void **ppFence);
11023
11024 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11025 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11026 ID3D12Device1 * This);
11027
11028 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11029 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11030 ID3D12Device1 * This,
11031 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11032 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11033 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11034 UINT64 BaseOffset,
11035 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11036 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11037 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11038 _Out_opt_ UINT64 *pTotalBytes);
11039
11040 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11041 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11042 ID3D12Device1 * This,
11043 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11044 REFIID riid,
11045 _COM_Outptr_opt_ void **ppvHeap);
11046
11047 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11048 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11049 ID3D12Device1 * This,
11050 BOOL Enable);
11051
11052 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11053 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11054 ID3D12Device1 * This,
11055 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11056 _In_opt_ ID3D12RootSignature *pRootSignature,
11057 REFIID riid,
11058 _COM_Outptr_opt_ void **ppvCommandSignature);
11059
11060 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11061 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11062 ID3D12Device1 * This,
11063 _In_ ID3D12Resource *pTiledResource,
11064 _Out_opt_ UINT *pNumTilesForEntireResource,
11065 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11066 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11067 _Inout_opt_ UINT *pNumSubresourceTilings,
11068 _In_ UINT FirstSubresourceTilingToGet,
11069 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11070
11071 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11072#if !defined(_WIN32)
11073 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
11074 ID3D12Device1 * This);
11075
11076#else
11077 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11078 ID3D12Device1 * This,
11079 LUID * RetVal);
11080
11081#endif
11082
11083 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11084 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11085 ID3D12Device1 * This,
11086 _In_reads_(BlobLength) const void *pLibraryBlob,
11087 SIZE_T BlobLength,
11088 REFIID riid,
11089 _COM_Outptr_ void **ppPipelineLibrary);
11090
11091 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11092 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11093 ID3D12Device1 * This,
11094 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11095 _In_reads_(NumFences) const UINT64 *pFenceValues,
11096 UINT NumFences,
11097 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11098 HANDLE hEvent);
11099
11100 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11101 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11102 ID3D12Device1 * This,
11103 UINT NumObjects,
11104 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11105 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11106
11107 END_INTERFACE
11108 } ID3D12Device1Vtbl;
11109
11110 interface ID3D12Device1
11111 {
11112 CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
11113 };
11114
11115
11116
11117#ifdef COBJMACROS
11118
11119
11120#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
11121 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11122
11123#define ID3D12Device1_AddRef(This) \
11124 ( (This)->lpVtbl -> AddRef(This) )
11125
11126#define ID3D12Device1_Release(This) \
11127 ( (This)->lpVtbl -> Release(This) )
11128
11129
11130#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
11131 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11132
11133#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
11134 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11135
11136#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
11137 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11138
11139#define ID3D12Device1_SetName(This,Name) \
11140 ( (This)->lpVtbl -> SetName(This,Name) )
11141
11142
11143#define ID3D12Device1_GetNodeCount(This) \
11144 ( (This)->lpVtbl -> GetNodeCount(This) )
11145
11146#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11147 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11148
11149#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11150 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11151
11152#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11153 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11154
11155#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11156 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11157
11158#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11159 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11160
11161#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11162 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11163
11164#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11165 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11166
11167#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11168 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11169
11170#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11171 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11172
11173#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11174 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11175
11176#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11177 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11178
11179#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11180 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11181
11182#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11183 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11184
11185#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11186 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11187
11188#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
11189 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11190
11191#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11192 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11193
11194#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11195 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11196#if !defined(_WIN32)
11197
11198#define ID3D12Device1_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
11199 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
11200#else
11201#define ID3D12Device1_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11202 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11203#endif
11204#if !defined(_WIN32)
11205
11206#define ID3D12Device1_GetCustomHeapProperties(This,nodeMask,heapType) \
11207 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
11208#else
11209#define ID3D12Device1_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11210 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11211#endif
11212
11213#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11214 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11215
11216#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
11217 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11218
11219#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11220 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11221
11222#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11223 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11224
11225#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11226 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11227
11228#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11229 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11230
11231#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11232 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11233
11234#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
11235 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11236
11237#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
11238 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11239
11240#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11241 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11242
11243#define ID3D12Device1_GetDeviceRemovedReason(This) \
11244 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11245
11246#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11247 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11248
11249#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11250 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11251
11252#define ID3D12Device1_SetStablePowerState(This,Enable) \
11253 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11254
11255#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11256 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11257
11258#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11259 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11260#if !defined(_WIN32)
11261
11262#define ID3D12Device1_GetAdapterLuid(This) \
11263 ( (This)->lpVtbl -> GetAdapterLuid(This) )
11264#else
11265#define ID3D12Device1_GetAdapterLuid(This,RetVal) \
11266 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11267#endif
11268
11269
11270#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11271 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11272
11273#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11274 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11275
11276#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11277 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11278
11279#endif /* COBJMACROS */
11280
11281
11282#endif /* C style interface */
11283
11284
11285
11286
11287#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
11288
11289
11290#ifndef __ID3D12Device2_INTERFACE_DEFINED__
11291#define __ID3D12Device2_INTERFACE_DEFINED__
11292
11293/* interface ID3D12Device2 */
11294/* [unique][local][object][uuid] */
11295
11296
11297EXTERN_C const IID IID_ID3D12Device2;
11298
11299#if defined(__cplusplus) && !defined(CINTERFACE)
11300
11301 MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
11302 ID3D12Device2 : public ID3D12Device1
11303 {
11304 public:
11305 virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
11306 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11307 REFIID riid,
11308 _COM_Outptr_ void **ppPipelineState) = 0;
11309
11310 };
11311
11312
11313#else /* C style interface */
11314
11315 typedef struct ID3D12Device2Vtbl
11316 {
11317 BEGIN_INTERFACE
11318
11319 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11320 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11321 ID3D12Device2 * This,
11322 REFIID riid,
11323 _COM_Outptr_ void **ppvObject);
11324
11325 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11326 ULONG ( STDMETHODCALLTYPE *AddRef )(
11327 ID3D12Device2 * This);
11328
11329 DECLSPEC_XFGVIRT(IUnknown, Release)
11330 ULONG ( STDMETHODCALLTYPE *Release )(
11331 ID3D12Device2 * This);
11332
11333 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11334 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11335 ID3D12Device2 * This,
11336 _In_ REFGUID guid,
11337 _Inout_ UINT *pDataSize,
11338 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11339
11340 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11341 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11342 ID3D12Device2 * This,
11343 _In_ REFGUID guid,
11344 _In_ UINT DataSize,
11345 _In_reads_bytes_opt_( DataSize ) const void *pData);
11346
11347 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11348 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11349 ID3D12Device2 * This,
11350 _In_ REFGUID guid,
11351 _In_opt_ const IUnknown *pData);
11352
11353 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11354 HRESULT ( STDMETHODCALLTYPE *SetName )(
11355 ID3D12Device2 * This,
11356 _In_z_ LPCWSTR Name);
11357
11358 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11359 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11360 ID3D12Device2 * This);
11361
11362 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11363 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11364 ID3D12Device2 * This,
11365 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11366 REFIID riid,
11367 _COM_Outptr_ void **ppCommandQueue);
11368
11369 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11370 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11371 ID3D12Device2 * This,
11372 _In_ D3D12_COMMAND_LIST_TYPE type,
11373 REFIID riid,
11374 _COM_Outptr_ void **ppCommandAllocator);
11375
11376 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11377 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11378 ID3D12Device2 * This,
11379 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11380 REFIID riid,
11381 _COM_Outptr_ void **ppPipelineState);
11382
11383 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
11384 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
11385 ID3D12Device2 * This,
11386 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
11387 REFIID riid,
11388 _COM_Outptr_ void **ppPipelineState);
11389
11390 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
11391 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
11392 ID3D12Device2 * This,
11393 _In_ UINT nodeMask,
11394 _In_ D3D12_COMMAND_LIST_TYPE type,
11395 _In_ ID3D12CommandAllocator *pCommandAllocator,
11396 _In_opt_ ID3D12PipelineState *pInitialState,
11397 REFIID riid,
11398 _COM_Outptr_ void **ppCommandList);
11399
11400 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
11401 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
11402 ID3D12Device2 * This,
11403 D3D12_FEATURE Feature,
11404 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
11405 UINT FeatureSupportDataSize);
11406
11407 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
11408 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
11409 ID3D12Device2 * This,
11410 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
11411 REFIID riid,
11412 _COM_Outptr_ void **ppvHeap);
11413
11414 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
11415 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
11416 ID3D12Device2 * This,
11417 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
11418
11419 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
11420 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
11421 ID3D12Device2 * This,
11422 _In_ UINT nodeMask,
11423 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
11424 _In_ SIZE_T blobLengthInBytes,
11425 REFIID riid,
11426 _COM_Outptr_ void **ppvRootSignature);
11427
11428 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
11429 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
11430 ID3D12Device2 * This,
11431 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
11432 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11433
11434 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
11435 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
11436 ID3D12Device2 * This,
11437 _In_opt_ ID3D12Resource *pResource,
11438 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
11439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11440
11441 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
11442 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
11443 ID3D12Device2 * This,
11444 _In_opt_ ID3D12Resource *pResource,
11445 _In_opt_ ID3D12Resource *pCounterResource,
11446 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
11447 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11448
11449 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
11450 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
11451 ID3D12Device2 * This,
11452 _In_opt_ ID3D12Resource *pResource,
11453 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
11454 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11455
11456 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
11457 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
11458 ID3D12Device2 * This,
11459 _In_opt_ ID3D12Resource *pResource,
11460 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
11461 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11462
11463 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
11464 void ( STDMETHODCALLTYPE *CreateSampler )(
11465 ID3D12Device2 * This,
11466 _In_ const D3D12_SAMPLER_DESC *pDesc,
11467 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11468
11469 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
11470 void ( STDMETHODCALLTYPE *CopyDescriptors )(
11471 ID3D12Device2 * This,
11472 _In_ UINT NumDestDescriptorRanges,
11473 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
11474 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
11475 _In_ UINT NumSrcDescriptorRanges,
11476 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
11477 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
11478 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11479
11480 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
11481 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
11482 ID3D12Device2 * This,
11483 _In_ UINT NumDescriptors,
11484 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
11485 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
11486 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11487
11488 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
11489#if !defined(_WIN32)
11490 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11491 ID3D12Device2 * This,
11492 _In_ UINT visibleMask,
11493 _In_ UINT numResourceDescs,
11494 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11495
11496#else
11497 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11498 ID3D12Device2 * This,
11499 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
11500 _In_ UINT visibleMask,
11501 _In_ UINT numResourceDescs,
11502 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11503
11504#endif
11505
11506 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
11507#if !defined(_WIN32)
11508 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11509 ID3D12Device2 * This,
11510 _In_ UINT nodeMask,
11511 D3D12_HEAP_TYPE heapType);
11512
11513#else
11514 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11515 ID3D12Device2 * This,
11516 D3D12_HEAP_PROPERTIES * RetVal,
11517 _In_ UINT nodeMask,
11518 D3D12_HEAP_TYPE heapType);
11519
11520#endif
11521
11522 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
11523 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
11524 ID3D12Device2 * This,
11525 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11526 D3D12_HEAP_FLAGS HeapFlags,
11527 _In_ const D3D12_RESOURCE_DESC *pDesc,
11528 D3D12_RESOURCE_STATES InitialResourceState,
11529 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11530 REFIID riidResource,
11531 _COM_Outptr_opt_ void **ppvResource);
11532
11533 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
11534 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
11535 ID3D12Device2 * This,
11536 _In_ const D3D12_HEAP_DESC *pDesc,
11537 REFIID riid,
11538 _COM_Outptr_opt_ void **ppvHeap);
11539
11540 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
11541 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
11542 ID3D12Device2 * This,
11543 _In_ ID3D12Heap *pHeap,
11544 UINT64 HeapOffset,
11545 _In_ const D3D12_RESOURCE_DESC *pDesc,
11546 D3D12_RESOURCE_STATES InitialState,
11547 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11548 REFIID riid,
11549 _COM_Outptr_opt_ void **ppvResource);
11550
11551 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
11552 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
11553 ID3D12Device2 * This,
11554 _In_ const D3D12_RESOURCE_DESC *pDesc,
11555 D3D12_RESOURCE_STATES InitialState,
11556 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11557 REFIID riid,
11558 _COM_Outptr_opt_ void **ppvResource);
11559
11560 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
11561 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
11562 ID3D12Device2 * This,
11563 _In_ ID3D12DeviceChild *pObject,
11564 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
11565 DWORD Access,
11566 _In_opt_ LPCWSTR Name,
11567 _Out_ HANDLE *pHandle);
11568
11569 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
11570 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
11571 ID3D12Device2 * This,
11572 _In_ HANDLE NTHandle,
11573 REFIID riid,
11574 _COM_Outptr_opt_ void **ppvObj);
11575
11576 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11577 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11578 ID3D12Device2 * This,
11579 _In_ LPCWSTR Name,
11580 DWORD Access,
11581 /* [annotation][out] */
11582 _Out_ HANDLE *pNTHandle);
11583
11584 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11585 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11586 ID3D12Device2 * This,
11587 UINT NumObjects,
11588 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11589
11590 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11591 HRESULT ( STDMETHODCALLTYPE *Evict )(
11592 ID3D12Device2 * This,
11593 UINT NumObjects,
11594 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11595
11596 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11597 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11598 ID3D12Device2 * This,
11599 UINT64 InitialValue,
11600 D3D12_FENCE_FLAGS Flags,
11601 REFIID riid,
11602 _COM_Outptr_ void **ppFence);
11603
11604 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11605 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11606 ID3D12Device2 * This);
11607
11608 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11609 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11610 ID3D12Device2 * This,
11611 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11612 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11613 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11614 UINT64 BaseOffset,
11615 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11616 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11617 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11618 _Out_opt_ UINT64 *pTotalBytes);
11619
11620 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11621 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11622 ID3D12Device2 * This,
11623 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11624 REFIID riid,
11625 _COM_Outptr_opt_ void **ppvHeap);
11626
11627 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11628 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11629 ID3D12Device2 * This,
11630 BOOL Enable);
11631
11632 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11633 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11634 ID3D12Device2 * This,
11635 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11636 _In_opt_ ID3D12RootSignature *pRootSignature,
11637 REFIID riid,
11638 _COM_Outptr_opt_ void **ppvCommandSignature);
11639
11640 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11641 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11642 ID3D12Device2 * This,
11643 _In_ ID3D12Resource *pTiledResource,
11644 _Out_opt_ UINT *pNumTilesForEntireResource,
11645 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11646 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11647 _Inout_opt_ UINT *pNumSubresourceTilings,
11648 _In_ UINT FirstSubresourceTilingToGet,
11649 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11650
11651 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11652#if !defined(_WIN32)
11653 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
11654 ID3D12Device2 * This);
11655
11656#else
11657 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11658 ID3D12Device2 * This,
11659 LUID * RetVal);
11660
11661#endif
11662
11663 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11664 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11665 ID3D12Device2 * This,
11666 _In_reads_(BlobLength) const void *pLibraryBlob,
11667 SIZE_T BlobLength,
11668 REFIID riid,
11669 _COM_Outptr_ void **ppPipelineLibrary);
11670
11671 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11672 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11673 ID3D12Device2 * This,
11674 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11675 _In_reads_(NumFences) const UINT64 *pFenceValues,
11676 UINT NumFences,
11677 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11678 HANDLE hEvent);
11679
11680 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11681 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11682 ID3D12Device2 * This,
11683 UINT NumObjects,
11684 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11685 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11686
11687 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
11688 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
11689 ID3D12Device2 * This,
11690 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11691 REFIID riid,
11692 _COM_Outptr_ void **ppPipelineState);
11693
11694 END_INTERFACE
11695 } ID3D12Device2Vtbl;
11696
11697 interface ID3D12Device2
11698 {
11699 CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
11700 };
11701
11702
11703
11704#ifdef COBJMACROS
11705
11706
11707#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
11708 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11709
11710#define ID3D12Device2_AddRef(This) \
11711 ( (This)->lpVtbl -> AddRef(This) )
11712
11713#define ID3D12Device2_Release(This) \
11714 ( (This)->lpVtbl -> Release(This) )
11715
11716
11717#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
11718 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11719
11720#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
11721 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11722
11723#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
11724 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11725
11726#define ID3D12Device2_SetName(This,Name) \
11727 ( (This)->lpVtbl -> SetName(This,Name) )
11728
11729
11730#define ID3D12Device2_GetNodeCount(This) \
11731 ( (This)->lpVtbl -> GetNodeCount(This) )
11732
11733#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11734 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11735
11736#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11737 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11738
11739#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11740 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11741
11742#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11743 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11744
11745#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11746 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11747
11748#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11749 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11750
11751#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11752 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11753
11754#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11755 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11756
11757#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11758 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11759
11760#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11761 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11762
11763#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11764 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11765
11766#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11767 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11768
11769#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11770 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11771
11772#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11773 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11774
11775#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
11776 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11777
11778#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11779 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11780
11781#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11782 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11783#if !defined(_WIN32)
11784
11785#define ID3D12Device2_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
11786 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
11787#else
11788#define ID3D12Device2_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11789 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11790#endif
11791#if !defined(_WIN32)
11792
11793#define ID3D12Device2_GetCustomHeapProperties(This,nodeMask,heapType) \
11794 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
11795#else
11796#define ID3D12Device2_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11797 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11798#endif
11799
11800#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11801 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11802
11803#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
11804 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11805
11806#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11807 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11808
11809#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11810 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11811
11812#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11813 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11814
11815#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11816 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11817
11818#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11819 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11820
11821#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
11822 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11823
11824#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
11825 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11826
11827#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11828 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11829
11830#define ID3D12Device2_GetDeviceRemovedReason(This) \
11831 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11832
11833#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11834 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11835
11836#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11837 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11838
11839#define ID3D12Device2_SetStablePowerState(This,Enable) \
11840 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11841
11842#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11843 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11844
11845#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11846 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11847#if !defined(_WIN32)
11848
11849#define ID3D12Device2_GetAdapterLuid(This) \
11850 ( (This)->lpVtbl -> GetAdapterLuid(This) )
11851#else
11852#define ID3D12Device2_GetAdapterLuid(This,RetVal) \
11853 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11854#endif
11855
11856
11857#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11858 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11859
11860#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11861 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11862
11863#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11864 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11865
11866
11867#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
11868 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
11869
11870#endif /* COBJMACROS */
11871
11872
11873#endif /* C style interface */
11874
11875
11876
11877
11878#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
11879
11880
11881/* interface __MIDL_itf_d3d12_0000_0027 */
11882/* [local] */
11883
11884typedef
11885enum D3D12_RESIDENCY_FLAGS
11886 {
11887 D3D12_RESIDENCY_FLAG_NONE = 0,
11888 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
11889 } D3D12_RESIDENCY_FLAGS;
11890
11891DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )
11892
11893
11894extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
11895extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
11896
11897#ifndef __ID3D12Device3_INTERFACE_DEFINED__
11898#define __ID3D12Device3_INTERFACE_DEFINED__
11899
11900/* interface ID3D12Device3 */
11901/* [unique][local][object][uuid] */
11902
11903
11904EXTERN_C const IID IID_ID3D12Device3;
11905
11906#if defined(__cplusplus) && !defined(CINTERFACE)
11907
11908 MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
11909 ID3D12Device3 : public ID3D12Device2
11910 {
11911 public:
11912 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
11913 _In_ const void *pAddress,
11914 REFIID riid,
11915 _COM_Outptr_ void **ppvHeap) = 0;
11916
11917 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
11918 _In_ HANDLE hFileMapping,
11919 REFIID riid,
11920 _COM_Outptr_ void **ppvHeap) = 0;
11921
11922 virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
11923 D3D12_RESIDENCY_FLAGS Flags,
11924 UINT NumObjects,
11925 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11926 _In_ ID3D12Fence *pFenceToSignal,
11927 UINT64 FenceValueToSignal) = 0;
11928
11929 };
11930
11931
11932#else /* C style interface */
11933
11934 typedef struct ID3D12Device3Vtbl
11935 {
11936 BEGIN_INTERFACE
11937
11938 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11939 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11940 ID3D12Device3 * This,
11941 REFIID riid,
11942 _COM_Outptr_ void **ppvObject);
11943
11944 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11945 ULONG ( STDMETHODCALLTYPE *AddRef )(
11946 ID3D12Device3 * This);
11947
11948 DECLSPEC_XFGVIRT(IUnknown, Release)
11949 ULONG ( STDMETHODCALLTYPE *Release )(
11950 ID3D12Device3 * This);
11951
11952 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11953 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11954 ID3D12Device3 * This,
11955 _In_ REFGUID guid,
11956 _Inout_ UINT *pDataSize,
11957 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11958
11959 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11960 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11961 ID3D12Device3 * This,
11962 _In_ REFGUID guid,
11963 _In_ UINT DataSize,
11964 _In_reads_bytes_opt_( DataSize ) const void *pData);
11965
11966 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11967 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11968 ID3D12Device3 * This,
11969 _In_ REFGUID guid,
11970 _In_opt_ const IUnknown *pData);
11971
11972 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11973 HRESULT ( STDMETHODCALLTYPE *SetName )(
11974 ID3D12Device3 * This,
11975 _In_z_ LPCWSTR Name);
11976
11977 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11978 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11979 ID3D12Device3 * This);
11980
11981 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11982 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11983 ID3D12Device3 * This,
11984 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11985 REFIID riid,
11986 _COM_Outptr_ void **ppCommandQueue);
11987
11988 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11989 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11990 ID3D12Device3 * This,
11991 _In_ D3D12_COMMAND_LIST_TYPE type,
11992 REFIID riid,
11993 _COM_Outptr_ void **ppCommandAllocator);
11994
11995 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11996 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11997 ID3D12Device3 * This,
11998 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11999 REFIID riid,
12000 _COM_Outptr_ void **ppPipelineState);
12001
12002 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
12003 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
12004 ID3D12Device3 * This,
12005 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
12006 REFIID riid,
12007 _COM_Outptr_ void **ppPipelineState);
12008
12009 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
12010 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
12011 ID3D12Device3 * This,
12012 _In_ UINT nodeMask,
12013 _In_ D3D12_COMMAND_LIST_TYPE type,
12014 _In_ ID3D12CommandAllocator *pCommandAllocator,
12015 _In_opt_ ID3D12PipelineState *pInitialState,
12016 REFIID riid,
12017 _COM_Outptr_ void **ppCommandList);
12018
12019 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
12020 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
12021 ID3D12Device3 * This,
12022 D3D12_FEATURE Feature,
12023 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
12024 UINT FeatureSupportDataSize);
12025
12026 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
12027 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
12028 ID3D12Device3 * This,
12029 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
12030 REFIID riid,
12031 _COM_Outptr_ void **ppvHeap);
12032
12033 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
12034 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
12035 ID3D12Device3 * This,
12036 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
12037
12038 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
12039 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
12040 ID3D12Device3 * This,
12041 _In_ UINT nodeMask,
12042 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
12043 _In_ SIZE_T blobLengthInBytes,
12044 REFIID riid,
12045 _COM_Outptr_ void **ppvRootSignature);
12046
12047 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
12048 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
12049 ID3D12Device3 * This,
12050 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
12051 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12052
12053 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
12054 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
12055 ID3D12Device3 * This,
12056 _In_opt_ ID3D12Resource *pResource,
12057 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
12058 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12059
12060 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
12061 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
12062 ID3D12Device3 * This,
12063 _In_opt_ ID3D12Resource *pResource,
12064 _In_opt_ ID3D12Resource *pCounterResource,
12065 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
12066 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12067
12068 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
12069 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
12070 ID3D12Device3 * This,
12071 _In_opt_ ID3D12Resource *pResource,
12072 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
12073 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12074
12075 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
12076 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
12077 ID3D12Device3 * This,
12078 _In_opt_ ID3D12Resource *pResource,
12079 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
12080 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12081
12082 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
12083 void ( STDMETHODCALLTYPE *CreateSampler )(
12084 ID3D12Device3 * This,
12085 _In_ const D3D12_SAMPLER_DESC *pDesc,
12086 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12087
12088 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
12089 void ( STDMETHODCALLTYPE *CopyDescriptors )(
12090 ID3D12Device3 * This,
12091 _In_ UINT NumDestDescriptorRanges,
12092 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
12093 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
12094 _In_ UINT NumSrcDescriptorRanges,
12095 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
12096 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
12097 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
12098
12099 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
12100 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
12101 ID3D12Device3 * This,
12102 _In_ UINT NumDescriptors,
12103 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
12104 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
12105 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
12106
12107 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
12108#if !defined(_WIN32)
12109 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
12110 ID3D12Device3 * This,
12111 _In_ UINT visibleMask,
12112 _In_ UINT numResourceDescs,
12113 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
12114
12115#else
12116 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
12117 ID3D12Device3 * This,
12118 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12119 _In_ UINT visibleMask,
12120 _In_ UINT numResourceDescs,
12121 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
12122
12123#endif
12124
12125 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
12126#if !defined(_WIN32)
12127 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
12128 ID3D12Device3 * This,
12129 _In_ UINT nodeMask,
12130 D3D12_HEAP_TYPE heapType);
12131
12132#else
12133 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
12134 ID3D12Device3 * This,
12135 D3D12_HEAP_PROPERTIES * RetVal,
12136 _In_ UINT nodeMask,
12137 D3D12_HEAP_TYPE heapType);
12138
12139#endif
12140
12141 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
12142 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
12143 ID3D12Device3 * This,
12144 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12145 D3D12_HEAP_FLAGS HeapFlags,
12146 _In_ const D3D12_RESOURCE_DESC *pDesc,
12147 D3D12_RESOURCE_STATES InitialResourceState,
12148 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12149 REFIID riidResource,
12150 _COM_Outptr_opt_ void **ppvResource);
12151
12152 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
12153 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
12154 ID3D12Device3 * This,
12155 _In_ const D3D12_HEAP_DESC *pDesc,
12156 REFIID riid,
12157 _COM_Outptr_opt_ void **ppvHeap);
12158
12159 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
12160 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
12161 ID3D12Device3 * This,
12162 _In_ ID3D12Heap *pHeap,
12163 UINT64 HeapOffset,
12164 _In_ const D3D12_RESOURCE_DESC *pDesc,
12165 D3D12_RESOURCE_STATES InitialState,
12166 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12167 REFIID riid,
12168 _COM_Outptr_opt_ void **ppvResource);
12169
12170 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
12171 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
12172 ID3D12Device3 * This,
12173 _In_ const D3D12_RESOURCE_DESC *pDesc,
12174 D3D12_RESOURCE_STATES InitialState,
12175 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12176 REFIID riid,
12177 _COM_Outptr_opt_ void **ppvResource);
12178
12179 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
12180 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
12181 ID3D12Device3 * This,
12182 _In_ ID3D12DeviceChild *pObject,
12183 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
12184 DWORD Access,
12185 _In_opt_ LPCWSTR Name,
12186 _Out_ HANDLE *pHandle);
12187
12188 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
12189 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
12190 ID3D12Device3 * This,
12191 _In_ HANDLE NTHandle,
12192 REFIID riid,
12193 _COM_Outptr_opt_ void **ppvObj);
12194
12195 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
12196 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
12197 ID3D12Device3 * This,
12198 _In_ LPCWSTR Name,
12199 DWORD Access,
12200 /* [annotation][out] */
12201 _Out_ HANDLE *pNTHandle);
12202
12203 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
12204 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
12205 ID3D12Device3 * This,
12206 UINT NumObjects,
12207 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
12208
12209 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
12210 HRESULT ( STDMETHODCALLTYPE *Evict )(
12211 ID3D12Device3 * This,
12212 UINT NumObjects,
12213 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
12214
12215 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
12216 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
12217 ID3D12Device3 * This,
12218 UINT64 InitialValue,
12219 D3D12_FENCE_FLAGS Flags,
12220 REFIID riid,
12221 _COM_Outptr_ void **ppFence);
12222
12223 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
12224 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
12225 ID3D12Device3 * This);
12226
12227 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
12228 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
12229 ID3D12Device3 * This,
12230 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
12231 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
12232 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
12233 UINT64 BaseOffset,
12234 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
12235 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
12236 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
12237 _Out_opt_ UINT64 *pTotalBytes);
12238
12239 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
12240 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
12241 ID3D12Device3 * This,
12242 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
12243 REFIID riid,
12244 _COM_Outptr_opt_ void **ppvHeap);
12245
12246 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
12247 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
12248 ID3D12Device3 * This,
12249 BOOL Enable);
12250
12251 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
12252 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
12253 ID3D12Device3 * This,
12254 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
12255 _In_opt_ ID3D12RootSignature *pRootSignature,
12256 REFIID riid,
12257 _COM_Outptr_opt_ void **ppvCommandSignature);
12258
12259 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
12260 void ( STDMETHODCALLTYPE *GetResourceTiling )(
12261 ID3D12Device3 * This,
12262 _In_ ID3D12Resource *pTiledResource,
12263 _Out_opt_ UINT *pNumTilesForEntireResource,
12264 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
12265 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
12266 _Inout_opt_ UINT *pNumSubresourceTilings,
12267 _In_ UINT FirstSubresourceTilingToGet,
12268 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
12269
12270 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
12271#if !defined(_WIN32)
12272 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
12273 ID3D12Device3 * This);
12274
12275#else
12276 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
12277 ID3D12Device3 * This,
12278 LUID * RetVal);
12279
12280#endif
12281
12282 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
12283 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
12284 ID3D12Device3 * This,
12285 _In_reads_(BlobLength) const void *pLibraryBlob,
12286 SIZE_T BlobLength,
12287 REFIID riid,
12288 _COM_Outptr_ void **ppPipelineLibrary);
12289
12290 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
12291 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
12292 ID3D12Device3 * This,
12293 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
12294 _In_reads_(NumFences) const UINT64 *pFenceValues,
12295 UINT NumFences,
12296 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
12297 HANDLE hEvent);
12298
12299 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
12300 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
12301 ID3D12Device3 * This,
12302 UINT NumObjects,
12303 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
12304 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
12305
12306 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
12307 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
12308 ID3D12Device3 * This,
12309 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
12310 REFIID riid,
12311 _COM_Outptr_ void **ppPipelineState);
12312
12313 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
12314 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
12315 ID3D12Device3 * This,
12316 _In_ const void *pAddress,
12317 REFIID riid,
12318 _COM_Outptr_ void **ppvHeap);
12319
12320 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
12321 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
12322 ID3D12Device3 * This,
12323 _In_ HANDLE hFileMapping,
12324 REFIID riid,
12325 _COM_Outptr_ void **ppvHeap);
12326
12327 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
12328 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
12329 ID3D12Device3 * This,
12330 D3D12_RESIDENCY_FLAGS Flags,
12331 UINT NumObjects,
12332 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
12333 _In_ ID3D12Fence *pFenceToSignal,
12334 UINT64 FenceValueToSignal);
12335
12336 END_INTERFACE
12337 } ID3D12Device3Vtbl;
12338
12339 interface ID3D12Device3
12340 {
12341 CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl;
12342 };
12343
12344
12345
12346#ifdef COBJMACROS
12347
12348
12349#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \
12350 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12351
12352#define ID3D12Device3_AddRef(This) \
12353 ( (This)->lpVtbl -> AddRef(This) )
12354
12355#define ID3D12Device3_Release(This) \
12356 ( (This)->lpVtbl -> Release(This) )
12357
12358
12359#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \
12360 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12361
12362#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \
12363 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12364
12365#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \
12366 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12367
12368#define ID3D12Device3_SetName(This,Name) \
12369 ( (This)->lpVtbl -> SetName(This,Name) )
12370
12371
12372#define ID3D12Device3_GetNodeCount(This) \
12373 ( (This)->lpVtbl -> GetNodeCount(This) )
12374
12375#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
12376 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
12377
12378#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
12379 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
12380
12381#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
12382 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
12383
12384#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
12385 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
12386
12387#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
12388 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
12389
12390#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
12391 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
12392
12393#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
12394 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
12395
12396#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
12397 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
12398
12399#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
12400 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
12401
12402#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \
12403 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
12404
12405#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
12406 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
12407
12408#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
12409 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
12410
12411#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
12412 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
12413
12414#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
12415 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
12416
12417#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \
12418 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
12419
12420#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
12421 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
12422
12423#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
12424 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
12425#if !defined(_WIN32)
12426
12427#define ID3D12Device3_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
12428 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
12429#else
12430#define ID3D12Device3_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
12431 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
12432#endif
12433#if !defined(_WIN32)
12434
12435#define ID3D12Device3_GetCustomHeapProperties(This,nodeMask,heapType) \
12436 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
12437#else
12438#define ID3D12Device3_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
12439 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
12440#endif
12441
12442#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
12443 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
12444
12445#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \
12446 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
12447
12448#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12449 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12450
12451#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12452 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12453
12454#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
12455 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
12456
12457#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
12458 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
12459
12460#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
12461 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
12462
12463#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \
12464 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
12465
12466#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \
12467 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
12468
12469#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \
12470 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
12471
12472#define ID3D12Device3_GetDeviceRemovedReason(This) \
12473 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
12474
12475#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
12476 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
12477
12478#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
12479 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
12480
12481#define ID3D12Device3_SetStablePowerState(This,Enable) \
12482 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
12483
12484#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
12485 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
12486
12487#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
12488 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
12489#if !defined(_WIN32)
12490
12491#define ID3D12Device3_GetAdapterLuid(This) \
12492 ( (This)->lpVtbl -> GetAdapterLuid(This) )
12493#else
12494#define ID3D12Device3_GetAdapterLuid(This,RetVal) \
12495 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
12496#endif
12497
12498
12499#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
12500 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
12501
12502#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
12503 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
12504
12505#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
12506 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
12507
12508
12509#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
12510 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
12511
12512
12513#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
12514 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
12515
12516#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
12517 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
12518
12519#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
12520 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
12521
12522#endif /* COBJMACROS */
12523
12524
12525#endif /* C style interface */
12526
12527
12528
12529
12530#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
12531
12532
12533/* interface __MIDL_itf_d3d12_0000_0028 */
12534/* [local] */
12535
12536typedef
12537enum D3D12_COMMAND_LIST_FLAGS
12538 {
12539 D3D12_COMMAND_LIST_FLAG_NONE = 0
12540 } D3D12_COMMAND_LIST_FLAGS;
12541
12542DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )
12543typedef
12544enum D3D12_COMMAND_POOL_FLAGS
12545 {
12546 D3D12_COMMAND_POOL_FLAG_NONE = 0
12547 } D3D12_COMMAND_POOL_FLAGS;
12548
12549DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )
12550typedef
12551enum D3D12_COMMAND_RECORDER_FLAGS
12552 {
12553 D3D12_COMMAND_RECORDER_FLAG_NONE = 0
12554 } D3D12_COMMAND_RECORDER_FLAGS;
12555
12556DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )
12557typedef
12558enum D3D12_PROTECTED_SESSION_STATUS
12559 {
12560 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
12561 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
12562 } D3D12_PROTECTED_SESSION_STATUS;
12563
12564
12565
12566extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_c_ifspec;
12567extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_s_ifspec;
12568
12569#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
12570#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
12571
12572/* interface ID3D12ProtectedSession */
12573/* [unique][local][object][uuid] */
12574
12575
12576EXTERN_C const IID IID_ID3D12ProtectedSession;
12577
12578#if defined(__cplusplus) && !defined(CINTERFACE)
12579
12580 MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B")
12581 ID3D12ProtectedSession : public ID3D12DeviceChild
12582 {
12583 public:
12584 virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
12585 REFIID riid,
12586 _COM_Outptr_opt_ void **ppFence) = 0;
12587
12588 virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0;
12589
12590 };
12591
12592
12593#else /* C style interface */
12594
12595 typedef struct ID3D12ProtectedSessionVtbl
12596 {
12597 BEGIN_INTERFACE
12598
12599 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12600 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12601 ID3D12ProtectedSession * This,
12602 REFIID riid,
12603 _COM_Outptr_ void **ppvObject);
12604
12605 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12606 ULONG ( STDMETHODCALLTYPE *AddRef )(
12607 ID3D12ProtectedSession * This);
12608
12609 DECLSPEC_XFGVIRT(IUnknown, Release)
12610 ULONG ( STDMETHODCALLTYPE *Release )(
12611 ID3D12ProtectedSession * This);
12612
12613 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12614 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12615 ID3D12ProtectedSession * This,
12616 _In_ REFGUID guid,
12617 _Inout_ UINT *pDataSize,
12618 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12619
12620 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12621 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12622 ID3D12ProtectedSession * This,
12623 _In_ REFGUID guid,
12624 _In_ UINT DataSize,
12625 _In_reads_bytes_opt_( DataSize ) const void *pData);
12626
12627 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12628 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12629 ID3D12ProtectedSession * This,
12630 _In_ REFGUID guid,
12631 _In_opt_ const IUnknown *pData);
12632
12633 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12634 HRESULT ( STDMETHODCALLTYPE *SetName )(
12635 ID3D12ProtectedSession * This,
12636 _In_z_ LPCWSTR Name);
12637
12638 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12639 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12640 ID3D12ProtectedSession * This,
12641 REFIID riid,
12642 _COM_Outptr_opt_ void **ppvDevice);
12643
12644 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
12645 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
12646 ID3D12ProtectedSession * This,
12647 REFIID riid,
12648 _COM_Outptr_opt_ void **ppFence);
12649
12650 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
12651 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
12652 ID3D12ProtectedSession * This);
12653
12654 END_INTERFACE
12655 } ID3D12ProtectedSessionVtbl;
12656
12657 interface ID3D12ProtectedSession
12658 {
12659 CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl;
12660 };
12661
12662
12663
12664#ifdef COBJMACROS
12665
12666
12667#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \
12668 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12669
12670#define ID3D12ProtectedSession_AddRef(This) \
12671 ( (This)->lpVtbl -> AddRef(This) )
12672
12673#define ID3D12ProtectedSession_Release(This) \
12674 ( (This)->lpVtbl -> Release(This) )
12675
12676
12677#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \
12678 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12679
12680#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \
12681 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12682
12683#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \
12684 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12685
12686#define ID3D12ProtectedSession_SetName(This,Name) \
12687 ( (This)->lpVtbl -> SetName(This,Name) )
12688
12689
12690#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \
12691 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12692
12693
12694#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \
12695 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
12696
12697#define ID3D12ProtectedSession_GetSessionStatus(This) \
12698 ( (This)->lpVtbl -> GetSessionStatus(This) )
12699
12700#endif /* COBJMACROS */
12701
12702
12703#endif /* C style interface */
12704
12705
12706
12707
12708#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
12709
12710
12711/* interface __MIDL_itf_d3d12_0000_0029 */
12712/* [local] */
12713
12714typedef
12715enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
12716 {
12717 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0,
12718 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
12719 } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
12720
12721DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )
12722typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
12723 {
12724 UINT NodeIndex;
12725 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
12726 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
12727
12728typedef
12729enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
12730 {
12731 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
12732 } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
12733
12734DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )
12735typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
12736 {
12737 UINT NodeMask;
12738 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
12739 } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
12740
12741
12742
12743extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
12744extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
12745
12746#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
12747#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
12748
12749/* interface ID3D12ProtectedResourceSession */
12750/* [unique][local][object][uuid] */
12751
12752
12753EXTERN_C const IID IID_ID3D12ProtectedResourceSession;
12754
12755#if defined(__cplusplus) && !defined(CINTERFACE)
12756
12757 MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D")
12758 ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
12759 {
12760 public:
12761#if defined(_MSC_VER) || !defined(_WIN32)
12762 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
12763#else
12764 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
12765 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal) = 0;
12766#endif
12767
12768 };
12769
12770
12771#else /* C style interface */
12772
12773 typedef struct ID3D12ProtectedResourceSessionVtbl
12774 {
12775 BEGIN_INTERFACE
12776
12777 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12778 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12779 ID3D12ProtectedResourceSession * This,
12780 REFIID riid,
12781 _COM_Outptr_ void **ppvObject);
12782
12783 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12784 ULONG ( STDMETHODCALLTYPE *AddRef )(
12785 ID3D12ProtectedResourceSession * This);
12786
12787 DECLSPEC_XFGVIRT(IUnknown, Release)
12788 ULONG ( STDMETHODCALLTYPE *Release )(
12789 ID3D12ProtectedResourceSession * This);
12790
12791 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12792 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12793 ID3D12ProtectedResourceSession * This,
12794 _In_ REFGUID guid,
12795 _Inout_ UINT *pDataSize,
12796 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12797
12798 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12799 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12800 ID3D12ProtectedResourceSession * This,
12801 _In_ REFGUID guid,
12802 _In_ UINT DataSize,
12803 _In_reads_bytes_opt_( DataSize ) const void *pData);
12804
12805 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12806 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12807 ID3D12ProtectedResourceSession * This,
12808 _In_ REFGUID guid,
12809 _In_opt_ const IUnknown *pData);
12810
12811 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12812 HRESULT ( STDMETHODCALLTYPE *SetName )(
12813 ID3D12ProtectedResourceSession * This,
12814 _In_z_ LPCWSTR Name);
12815
12816 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12817 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12818 ID3D12ProtectedResourceSession * This,
12819 REFIID riid,
12820 _COM_Outptr_opt_ void **ppvDevice);
12821
12822 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
12823 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
12824 ID3D12ProtectedResourceSession * This,
12825 REFIID riid,
12826 _COM_Outptr_opt_ void **ppFence);
12827
12828 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
12829 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
12830 ID3D12ProtectedResourceSession * This);
12831
12832 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
12833#if !defined(_WIN32)
12834 D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
12835 ID3D12ProtectedResourceSession * This);
12836
12837#else
12838 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
12839 ID3D12ProtectedResourceSession * This,
12840 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
12841
12842#endif
12843
12844 END_INTERFACE
12845 } ID3D12ProtectedResourceSessionVtbl;
12846
12847 interface ID3D12ProtectedResourceSession
12848 {
12849 CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl;
12850 };
12851
12852
12853
12854#ifdef COBJMACROS
12855
12856
12857#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \
12858 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12859
12860#define ID3D12ProtectedResourceSession_AddRef(This) \
12861 ( (This)->lpVtbl -> AddRef(This) )
12862
12863#define ID3D12ProtectedResourceSession_Release(This) \
12864 ( (This)->lpVtbl -> Release(This) )
12865
12866
12867#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \
12868 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12869
12870#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \
12871 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12872
12873#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \
12874 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12875
12876#define ID3D12ProtectedResourceSession_SetName(This,Name) \
12877 ( (This)->lpVtbl -> SetName(This,Name) )
12878
12879
12880#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \
12881 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12882
12883
12884#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \
12885 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
12886
12887#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \
12888 ( (This)->lpVtbl -> GetSessionStatus(This) )
12889
12890#if !defined(_WIN32)
12891
12892#define ID3D12ProtectedResourceSession_GetDesc(This) \
12893 ( (This)->lpVtbl -> GetDesc(This) )
12894#else
12895#define ID3D12ProtectedResourceSession_GetDesc(This,RetVal) \
12896 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
12897#endif
12898
12899#endif /* COBJMACROS */
12900
12901
12902#endif /* C style interface */
12903
12904
12905
12906
12907#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
12908
12909
12910#ifndef __ID3D12Device4_INTERFACE_DEFINED__
12911#define __ID3D12Device4_INTERFACE_DEFINED__
12912
12913/* interface ID3D12Device4 */
12914/* [unique][local][object][uuid] */
12915
12916
12917EXTERN_C const IID IID_ID3D12Device4;
12918
12919#if defined(__cplusplus) && !defined(CINTERFACE)
12920
12921 MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
12922 ID3D12Device4 : public ID3D12Device3
12923 {
12924 public:
12925 virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
12926 _In_ UINT nodeMask,
12927 _In_ D3D12_COMMAND_LIST_TYPE type,
12928 _In_ D3D12_COMMAND_LIST_FLAGS flags,
12929 REFIID riid,
12930 _COM_Outptr_ void **ppCommandList) = 0;
12931
12932 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
12933 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
12934 _In_ REFIID riid,
12935 _COM_Outptr_ void **ppSession) = 0;
12936
12937 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
12938 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12939 D3D12_HEAP_FLAGS HeapFlags,
12940 _In_ const D3D12_RESOURCE_DESC *pDesc,
12941 D3D12_RESOURCE_STATES InitialResourceState,
12942 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12943 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12944 REFIID riidResource,
12945 _COM_Outptr_opt_ void **ppvResource) = 0;
12946
12947 virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
12948 _In_ const D3D12_HEAP_DESC *pDesc,
12949 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12950 REFIID riid,
12951 _COM_Outptr_opt_ void **ppvHeap) = 0;
12952
12953 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
12954 _In_ const D3D12_RESOURCE_DESC *pDesc,
12955 D3D12_RESOURCE_STATES InitialState,
12956 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12957 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12958 REFIID riid,
12959 _COM_Outptr_opt_ void **ppvResource) = 0;
12960
12961#if defined(_MSC_VER) || !defined(_WIN32)
12962 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
12963 UINT visibleMask,
12964 UINT numResourceDescs,
12965 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12966 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
12967#else
12968 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo1(
12969 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12970 UINT visibleMask,
12971 UINT numResourceDescs,
12972 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12973 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
12974#endif
12975
12976 };
12977
12978
12979#else /* C style interface */
12980
12981 typedef struct ID3D12Device4Vtbl
12982 {
12983 BEGIN_INTERFACE
12984
12985 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12986 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12987 ID3D12Device4 * This,
12988 REFIID riid,
12989 _COM_Outptr_ void **ppvObject);
12990
12991 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12992 ULONG ( STDMETHODCALLTYPE *AddRef )(
12993 ID3D12Device4 * This);
12994
12995 DECLSPEC_XFGVIRT(IUnknown, Release)
12996 ULONG ( STDMETHODCALLTYPE *Release )(
12997 ID3D12Device4 * This);
12998
12999 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13000 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13001 ID3D12Device4 * This,
13002 _In_ REFGUID guid,
13003 _Inout_ UINT *pDataSize,
13004 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13005
13006 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13007 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13008 ID3D12Device4 * This,
13009 _In_ REFGUID guid,
13010 _In_ UINT DataSize,
13011 _In_reads_bytes_opt_( DataSize ) const void *pData);
13012
13013 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13014 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13015 ID3D12Device4 * This,
13016 _In_ REFGUID guid,
13017 _In_opt_ const IUnknown *pData);
13018
13019 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13020 HRESULT ( STDMETHODCALLTYPE *SetName )(
13021 ID3D12Device4 * This,
13022 _In_z_ LPCWSTR Name);
13023
13024 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
13025 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
13026 ID3D12Device4 * This);
13027
13028 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
13029 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
13030 ID3D12Device4 * This,
13031 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
13032 REFIID riid,
13033 _COM_Outptr_ void **ppCommandQueue);
13034
13035 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
13036 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
13037 ID3D12Device4 * This,
13038 _In_ D3D12_COMMAND_LIST_TYPE type,
13039 REFIID riid,
13040 _COM_Outptr_ void **ppCommandAllocator);
13041
13042 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
13043 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
13044 ID3D12Device4 * This,
13045 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
13046 REFIID riid,
13047 _COM_Outptr_ void **ppPipelineState);
13048
13049 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
13050 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
13051 ID3D12Device4 * This,
13052 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
13053 REFIID riid,
13054 _COM_Outptr_ void **ppPipelineState);
13055
13056 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
13057 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
13058 ID3D12Device4 * This,
13059 _In_ UINT nodeMask,
13060 _In_ D3D12_COMMAND_LIST_TYPE type,
13061 _In_ ID3D12CommandAllocator *pCommandAllocator,
13062 _In_opt_ ID3D12PipelineState *pInitialState,
13063 REFIID riid,
13064 _COM_Outptr_ void **ppCommandList);
13065
13066 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
13067 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
13068 ID3D12Device4 * This,
13069 D3D12_FEATURE Feature,
13070 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
13071 UINT FeatureSupportDataSize);
13072
13073 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
13074 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
13075 ID3D12Device4 * This,
13076 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
13077 REFIID riid,
13078 _COM_Outptr_ void **ppvHeap);
13079
13080 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
13081 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
13082 ID3D12Device4 * This,
13083 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
13084
13085 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
13086 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
13087 ID3D12Device4 * This,
13088 _In_ UINT nodeMask,
13089 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
13090 _In_ SIZE_T blobLengthInBytes,
13091 REFIID riid,
13092 _COM_Outptr_ void **ppvRootSignature);
13093
13094 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
13095 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
13096 ID3D12Device4 * This,
13097 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
13098 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13099
13100 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
13101 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
13102 ID3D12Device4 * This,
13103 _In_opt_ ID3D12Resource *pResource,
13104 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
13105 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13106
13107 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
13108 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
13109 ID3D12Device4 * This,
13110 _In_opt_ ID3D12Resource *pResource,
13111 _In_opt_ ID3D12Resource *pCounterResource,
13112 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
13113 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13114
13115 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
13116 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
13117 ID3D12Device4 * This,
13118 _In_opt_ ID3D12Resource *pResource,
13119 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
13120 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13121
13122 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
13123 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
13124 ID3D12Device4 * This,
13125 _In_opt_ ID3D12Resource *pResource,
13126 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
13127 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13128
13129 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
13130 void ( STDMETHODCALLTYPE *CreateSampler )(
13131 ID3D12Device4 * This,
13132 _In_ const D3D12_SAMPLER_DESC *pDesc,
13133 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13134
13135 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
13136 void ( STDMETHODCALLTYPE *CopyDescriptors )(
13137 ID3D12Device4 * This,
13138 _In_ UINT NumDestDescriptorRanges,
13139 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
13140 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
13141 _In_ UINT NumSrcDescriptorRanges,
13142 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
13143 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
13144 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13145
13146 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
13147 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
13148 ID3D12Device4 * This,
13149 _In_ UINT NumDescriptors,
13150 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
13151 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
13152 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13153
13154 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
13155#if !defined(_WIN32)
13156 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13157 ID3D12Device4 * This,
13158 _In_ UINT visibleMask,
13159 _In_ UINT numResourceDescs,
13160 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13161
13162#else
13163 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13164 ID3D12Device4 * This,
13165 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13166 _In_ UINT visibleMask,
13167 _In_ UINT numResourceDescs,
13168 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13169
13170#endif
13171
13172 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
13173#if !defined(_WIN32)
13174 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13175 ID3D12Device4 * This,
13176 _In_ UINT nodeMask,
13177 D3D12_HEAP_TYPE heapType);
13178
13179#else
13180 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13181 ID3D12Device4 * This,
13182 D3D12_HEAP_PROPERTIES * RetVal,
13183 _In_ UINT nodeMask,
13184 D3D12_HEAP_TYPE heapType);
13185
13186#endif
13187
13188 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
13189 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
13190 ID3D12Device4 * This,
13191 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13192 D3D12_HEAP_FLAGS HeapFlags,
13193 _In_ const D3D12_RESOURCE_DESC *pDesc,
13194 D3D12_RESOURCE_STATES InitialResourceState,
13195 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13196 REFIID riidResource,
13197 _COM_Outptr_opt_ void **ppvResource);
13198
13199 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
13200 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
13201 ID3D12Device4 * This,
13202 _In_ const D3D12_HEAP_DESC *pDesc,
13203 REFIID riid,
13204 _COM_Outptr_opt_ void **ppvHeap);
13205
13206 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
13207 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
13208 ID3D12Device4 * This,
13209 _In_ ID3D12Heap *pHeap,
13210 UINT64 HeapOffset,
13211 _In_ const D3D12_RESOURCE_DESC *pDesc,
13212 D3D12_RESOURCE_STATES InitialState,
13213 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13214 REFIID riid,
13215 _COM_Outptr_opt_ void **ppvResource);
13216
13217 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
13218 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
13219 ID3D12Device4 * This,
13220 _In_ const D3D12_RESOURCE_DESC *pDesc,
13221 D3D12_RESOURCE_STATES InitialState,
13222 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13223 REFIID riid,
13224 _COM_Outptr_opt_ void **ppvResource);
13225
13226 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
13227 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
13228 ID3D12Device4 * This,
13229 _In_ ID3D12DeviceChild *pObject,
13230 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
13231 DWORD Access,
13232 _In_opt_ LPCWSTR Name,
13233 _Out_ HANDLE *pHandle);
13234
13235 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
13236 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
13237 ID3D12Device4 * This,
13238 _In_ HANDLE NTHandle,
13239 REFIID riid,
13240 _COM_Outptr_opt_ void **ppvObj);
13241
13242 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
13243 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
13244 ID3D12Device4 * This,
13245 _In_ LPCWSTR Name,
13246 DWORD Access,
13247 /* [annotation][out] */
13248 _Out_ HANDLE *pNTHandle);
13249
13250 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
13251 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
13252 ID3D12Device4 * This,
13253 UINT NumObjects,
13254 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13255
13256 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
13257 HRESULT ( STDMETHODCALLTYPE *Evict )(
13258 ID3D12Device4 * This,
13259 UINT NumObjects,
13260 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13261
13262 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
13263 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
13264 ID3D12Device4 * This,
13265 UINT64 InitialValue,
13266 D3D12_FENCE_FLAGS Flags,
13267 REFIID riid,
13268 _COM_Outptr_ void **ppFence);
13269
13270 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
13271 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
13272 ID3D12Device4 * This);
13273
13274 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
13275 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
13276 ID3D12Device4 * This,
13277 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
13278 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
13279 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
13280 UINT64 BaseOffset,
13281 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
13282 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
13283 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
13284 _Out_opt_ UINT64 *pTotalBytes);
13285
13286 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
13287 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
13288 ID3D12Device4 * This,
13289 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
13290 REFIID riid,
13291 _COM_Outptr_opt_ void **ppvHeap);
13292
13293 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
13294 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
13295 ID3D12Device4 * This,
13296 BOOL Enable);
13297
13298 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
13299 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
13300 ID3D12Device4 * This,
13301 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
13302 _In_opt_ ID3D12RootSignature *pRootSignature,
13303 REFIID riid,
13304 _COM_Outptr_opt_ void **ppvCommandSignature);
13305
13306 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
13307 void ( STDMETHODCALLTYPE *GetResourceTiling )(
13308 ID3D12Device4 * This,
13309 _In_ ID3D12Resource *pTiledResource,
13310 _Out_opt_ UINT *pNumTilesForEntireResource,
13311 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
13312 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
13313 _Inout_opt_ UINT *pNumSubresourceTilings,
13314 _In_ UINT FirstSubresourceTilingToGet,
13315 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
13316
13317 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
13318#if !defined(_WIN32)
13319 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
13320 ID3D12Device4 * This);
13321
13322#else
13323 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
13324 ID3D12Device4 * This,
13325 LUID * RetVal);
13326
13327#endif
13328
13329 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
13330 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
13331 ID3D12Device4 * This,
13332 _In_reads_(BlobLength) const void *pLibraryBlob,
13333 SIZE_T BlobLength,
13334 REFIID riid,
13335 _COM_Outptr_ void **ppPipelineLibrary);
13336
13337 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
13338 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
13339 ID3D12Device4 * This,
13340 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
13341 _In_reads_(NumFences) const UINT64 *pFenceValues,
13342 UINT NumFences,
13343 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
13344 HANDLE hEvent);
13345
13346 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
13347 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
13348 ID3D12Device4 * This,
13349 UINT NumObjects,
13350 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13351 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
13352
13353 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
13354 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
13355 ID3D12Device4 * This,
13356 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
13357 REFIID riid,
13358 _COM_Outptr_ void **ppPipelineState);
13359
13360 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
13361 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
13362 ID3D12Device4 * This,
13363 _In_ const void *pAddress,
13364 REFIID riid,
13365 _COM_Outptr_ void **ppvHeap);
13366
13367 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
13368 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
13369 ID3D12Device4 * This,
13370 _In_ HANDLE hFileMapping,
13371 REFIID riid,
13372 _COM_Outptr_ void **ppvHeap);
13373
13374 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
13375 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
13376 ID3D12Device4 * This,
13377 D3D12_RESIDENCY_FLAGS Flags,
13378 UINT NumObjects,
13379 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13380 _In_ ID3D12Fence *pFenceToSignal,
13381 UINT64 FenceValueToSignal);
13382
13383 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
13384 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
13385 ID3D12Device4 * This,
13386 _In_ UINT nodeMask,
13387 _In_ D3D12_COMMAND_LIST_TYPE type,
13388 _In_ D3D12_COMMAND_LIST_FLAGS flags,
13389 REFIID riid,
13390 _COM_Outptr_ void **ppCommandList);
13391
13392 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
13393 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
13394 ID3D12Device4 * This,
13395 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
13396 _In_ REFIID riid,
13397 _COM_Outptr_ void **ppSession);
13398
13399 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
13400 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
13401 ID3D12Device4 * This,
13402 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13403 D3D12_HEAP_FLAGS HeapFlags,
13404 _In_ const D3D12_RESOURCE_DESC *pDesc,
13405 D3D12_RESOURCE_STATES InitialResourceState,
13406 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13407 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13408 REFIID riidResource,
13409 _COM_Outptr_opt_ void **ppvResource);
13410
13411 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
13412 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
13413 ID3D12Device4 * This,
13414 _In_ const D3D12_HEAP_DESC *pDesc,
13415 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13416 REFIID riid,
13417 _COM_Outptr_opt_ void **ppvHeap);
13418
13419 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
13420 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
13421 ID3D12Device4 * This,
13422 _In_ const D3D12_RESOURCE_DESC *pDesc,
13423 D3D12_RESOURCE_STATES InitialState,
13424 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13425 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13426 REFIID riid,
13427 _COM_Outptr_opt_ void **ppvResource);
13428
13429 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
13430#if !defined(_WIN32)
13431 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13432 ID3D12Device4 * This,
13433 UINT visibleMask,
13434 UINT numResourceDescs,
13435 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13436 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13437
13438#else
13439 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13440 ID3D12Device4 * This,
13441 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13442 UINT visibleMask,
13443 UINT numResourceDescs,
13444 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13445 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13446
13447#endif
13448
13449 END_INTERFACE
13450 } ID3D12Device4Vtbl;
13451
13452 interface ID3D12Device4
13453 {
13454 CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl;
13455 };
13456
13457
13458
13459#ifdef COBJMACROS
13460
13461
13462#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \
13463 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13464
13465#define ID3D12Device4_AddRef(This) \
13466 ( (This)->lpVtbl -> AddRef(This) )
13467
13468#define ID3D12Device4_Release(This) \
13469 ( (This)->lpVtbl -> Release(This) )
13470
13471
13472#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \
13473 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
13474
13475#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \
13476 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
13477
13478#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \
13479 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
13480
13481#define ID3D12Device4_SetName(This,Name) \
13482 ( (This)->lpVtbl -> SetName(This,Name) )
13483
13484
13485#define ID3D12Device4_GetNodeCount(This) \
13486 ( (This)->lpVtbl -> GetNodeCount(This) )
13487
13488#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
13489 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
13490
13491#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
13492 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
13493
13494#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
13495 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
13496
13497#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
13498 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
13499
13500#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
13501 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
13502
13503#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
13504 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
13505
13506#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
13507 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
13508
13509#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
13510 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
13511
13512#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
13513 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
13514
13515#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \
13516 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
13517
13518#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
13519 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
13520
13521#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
13522 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
13523
13524#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
13525 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
13526
13527#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
13528 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
13529
13530#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \
13531 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
13532
13533#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
13534 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
13535
13536#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
13537 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
13538#if !defined(_WIN32)
13539
13540#define ID3D12Device4_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
13541 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
13542#else
13543#define ID3D12Device4_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
13544 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
13545#endif
13546#if !defined(_WIN32)
13547
13548#define ID3D12Device4_GetCustomHeapProperties(This,nodeMask,heapType) \
13549 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
13550#else
13551#define ID3D12Device4_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
13552 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
13553#endif
13554
13555#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
13556 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
13557
13558#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \
13559 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
13560
13561#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13562 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13563
13564#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13565 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13566
13567#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
13568 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
13569
13570#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
13571 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
13572
13573#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
13574 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
13575
13576#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \
13577 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
13578
13579#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \
13580 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
13581
13582#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \
13583 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
13584
13585#define ID3D12Device4_GetDeviceRemovedReason(This) \
13586 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
13587
13588#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
13589 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
13590
13591#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
13592 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
13593
13594#define ID3D12Device4_SetStablePowerState(This,Enable) \
13595 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
13596
13597#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
13598 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
13599
13600#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
13601 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
13602#if !defined(_WIN32)
13603
13604#define ID3D12Device4_GetAdapterLuid(This) \
13605 ( (This)->lpVtbl -> GetAdapterLuid(This) )
13606#else
13607#define ID3D12Device4_GetAdapterLuid(This,RetVal) \
13608 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
13609#endif
13610
13611
13612#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
13613 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
13614
13615#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
13616 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
13617
13618#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
13619 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
13620
13621
13622#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
13623 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
13624
13625
13626#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
13627 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
13628
13629#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
13630 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
13631
13632#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
13633 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
13634
13635
13636#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
13637 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
13638
13639#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
13640 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
13641
13642#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
13643 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
13644
13645#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
13646 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
13647
13648#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
13649 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
13650#if !defined(_WIN32)
13651
13652#define ID3D12Device4_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
13653 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
13654#else
13655#define ID3D12Device4_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
13656 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
13657#endif
13658
13659#endif /* COBJMACROS */
13660
13661
13662#endif /* C style interface */
13663
13664
13665
13666
13667#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
13668
13669
13670/* interface __MIDL_itf_d3d12_0000_0031 */
13671/* [local] */
13672
13673typedef
13674enum D3D12_LIFETIME_STATE
13675 {
13676 D3D12_LIFETIME_STATE_IN_USE = 0,
13677 D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 )
13678 } D3D12_LIFETIME_STATE;
13679
13680
13681
13682
13683extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_c_ifspec;
13684extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_s_ifspec;
13685
13686#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
13687#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
13688
13689/* interface ID3D12LifetimeOwner */
13690/* [unique][local][object][uuid] */
13691
13692
13693EXTERN_C const IID IID_ID3D12LifetimeOwner;
13694
13695#if defined(__cplusplus) && !defined(CINTERFACE)
13696
13697 MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
13698 ID3D12LifetimeOwner : public IUnknown
13699 {
13700 public:
13701 virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
13702 D3D12_LIFETIME_STATE NewState) = 0;
13703
13704 };
13705
13706
13707#else /* C style interface */
13708
13709 typedef struct ID3D12LifetimeOwnerVtbl
13710 {
13711 BEGIN_INTERFACE
13712
13713 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13714 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13715 ID3D12LifetimeOwner * This,
13716 REFIID riid,
13717 _COM_Outptr_ void **ppvObject);
13718
13719 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13720 ULONG ( STDMETHODCALLTYPE *AddRef )(
13721 ID3D12LifetimeOwner * This);
13722
13723 DECLSPEC_XFGVIRT(IUnknown, Release)
13724 ULONG ( STDMETHODCALLTYPE *Release )(
13725 ID3D12LifetimeOwner * This);
13726
13727 DECLSPEC_XFGVIRT(ID3D12LifetimeOwner, LifetimeStateUpdated)
13728 void ( STDMETHODCALLTYPE *LifetimeStateUpdated )(
13729 ID3D12LifetimeOwner * This,
13730 D3D12_LIFETIME_STATE NewState);
13731
13732 END_INTERFACE
13733 } ID3D12LifetimeOwnerVtbl;
13734
13735 interface ID3D12LifetimeOwner
13736 {
13737 CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl;
13738 };
13739
13740
13741
13742#ifdef COBJMACROS
13743
13744
13745#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \
13746 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13747
13748#define ID3D12LifetimeOwner_AddRef(This) \
13749 ( (This)->lpVtbl -> AddRef(This) )
13750
13751#define ID3D12LifetimeOwner_Release(This) \
13752 ( (This)->lpVtbl -> Release(This) )
13753
13754
13755#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \
13756 ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) )
13757
13758#endif /* COBJMACROS */
13759
13760
13761#endif /* C style interface */
13762
13763
13764
13765
13766#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
13767
13768
13769#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
13770#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
13771
13772/* interface ID3D12SwapChainAssistant */
13773/* [unique][local][object][uuid] */
13774
13775
13776EXTERN_C const IID IID_ID3D12SwapChainAssistant;
13777
13778#if defined(__cplusplus) && !defined(CINTERFACE)
13779
13780 MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
13781 ID3D12SwapChainAssistant : public IUnknown
13782 {
13783 public:
13784#if defined(_MSC_VER) || !defined(_WIN32)
13785 virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0;
13786#else
13787 virtual LUID *STDMETHODCALLTYPE GetLUID(
13788 LUID * RetVal) = 0;
13789#endif
13790
13791 virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
13792 REFIID riid,
13793 _COM_Outptr_ void **ppv) = 0;
13794
13795 virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
13796 REFIID riidResource,
13797 _COM_Outptr_ void **ppvResource,
13798 REFIID riidQueue,
13799 _COM_Outptr_ void **ppvQueue) = 0;
13800
13801 virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0;
13802
13803 };
13804
13805
13806#else /* C style interface */
13807
13808 typedef struct ID3D12SwapChainAssistantVtbl
13809 {
13810 BEGIN_INTERFACE
13811
13812 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13813 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13814 ID3D12SwapChainAssistant * This,
13815 REFIID riid,
13816 _COM_Outptr_ void **ppvObject);
13817
13818 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13819 ULONG ( STDMETHODCALLTYPE *AddRef )(
13820 ID3D12SwapChainAssistant * This);
13821
13822 DECLSPEC_XFGVIRT(IUnknown, Release)
13823 ULONG ( STDMETHODCALLTYPE *Release )(
13824 ID3D12SwapChainAssistant * This);
13825
13826 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetLUID)
13827#if !defined(_WIN32)
13828 LUID ( STDMETHODCALLTYPE *GetLUID )(
13829 ID3D12SwapChainAssistant * This);
13830
13831#else
13832 LUID *( STDMETHODCALLTYPE *GetLUID )(
13833 ID3D12SwapChainAssistant * This,
13834 LUID * RetVal);
13835
13836#endif
13837
13838 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetSwapChainObject)
13839 HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )(
13840 ID3D12SwapChainAssistant * This,
13841 REFIID riid,
13842 _COM_Outptr_ void **ppv);
13843
13844 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetCurrentResourceAndCommandQueue)
13845 HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )(
13846 ID3D12SwapChainAssistant * This,
13847 REFIID riidResource,
13848 _COM_Outptr_ void **ppvResource,
13849 REFIID riidQueue,
13850 _COM_Outptr_ void **ppvQueue);
13851
13852 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, InsertImplicitSync)
13853 HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )(
13854 ID3D12SwapChainAssistant * This);
13855
13856 END_INTERFACE
13857 } ID3D12SwapChainAssistantVtbl;
13858
13859 interface ID3D12SwapChainAssistant
13860 {
13861 CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl;
13862 };
13863
13864
13865
13866#ifdef COBJMACROS
13867
13868
13869#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \
13870 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13871
13872#define ID3D12SwapChainAssistant_AddRef(This) \
13873 ( (This)->lpVtbl -> AddRef(This) )
13874
13875#define ID3D12SwapChainAssistant_Release(This) \
13876 ( (This)->lpVtbl -> Release(This) )
13877
13878#if !defined(_WIN32)
13879
13880#define ID3D12SwapChainAssistant_GetLUID(This) \
13881 ( (This)->lpVtbl -> GetLUID(This) )
13882#else
13883#define ID3D12SwapChainAssistant_GetLUID(This,RetVal) \
13884 ( (This)->lpVtbl -> GetLUID(This,RetVal) )
13885#endif
13886
13887#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \
13888 ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) )
13889
13890#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \
13891 ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) )
13892
13893#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \
13894 ( (This)->lpVtbl -> InsertImplicitSync(This) )
13895
13896#endif /* COBJMACROS */
13897
13898
13899#endif /* C style interface */
13900
13901
13902
13903
13904#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
13905
13906
13907#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
13908#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
13909
13910/* interface ID3D12LifetimeTracker */
13911/* [unique][local][object][uuid] */
13912
13913
13914EXTERN_C const IID IID_ID3D12LifetimeTracker;
13915
13916#if defined(__cplusplus) && !defined(CINTERFACE)
13917
13918 MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
13919 ID3D12LifetimeTracker : public ID3D12DeviceChild
13920 {
13921 public:
13922 virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
13923 _In_ ID3D12DeviceChild *pObject) = 0;
13924
13925 };
13926
13927
13928#else /* C style interface */
13929
13930 typedef struct ID3D12LifetimeTrackerVtbl
13931 {
13932 BEGIN_INTERFACE
13933
13934 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13935 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13936 ID3D12LifetimeTracker * This,
13937 REFIID riid,
13938 _COM_Outptr_ void **ppvObject);
13939
13940 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13941 ULONG ( STDMETHODCALLTYPE *AddRef )(
13942 ID3D12LifetimeTracker * This);
13943
13944 DECLSPEC_XFGVIRT(IUnknown, Release)
13945 ULONG ( STDMETHODCALLTYPE *Release )(
13946 ID3D12LifetimeTracker * This);
13947
13948 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13949 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13950 ID3D12LifetimeTracker * This,
13951 _In_ REFGUID guid,
13952 _Inout_ UINT *pDataSize,
13953 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13954
13955 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13956 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13957 ID3D12LifetimeTracker * This,
13958 _In_ REFGUID guid,
13959 _In_ UINT DataSize,
13960 _In_reads_bytes_opt_( DataSize ) const void *pData);
13961
13962 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13963 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13964 ID3D12LifetimeTracker * This,
13965 _In_ REFGUID guid,
13966 _In_opt_ const IUnknown *pData);
13967
13968 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13969 HRESULT ( STDMETHODCALLTYPE *SetName )(
13970 ID3D12LifetimeTracker * This,
13971 _In_z_ LPCWSTR Name);
13972
13973 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
13974 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
13975 ID3D12LifetimeTracker * This,
13976 REFIID riid,
13977 _COM_Outptr_opt_ void **ppvDevice);
13978
13979 DECLSPEC_XFGVIRT(ID3D12LifetimeTracker, DestroyOwnedObject)
13980 HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )(
13981 ID3D12LifetimeTracker * This,
13982 _In_ ID3D12DeviceChild *pObject);
13983
13984 END_INTERFACE
13985 } ID3D12LifetimeTrackerVtbl;
13986
13987 interface ID3D12LifetimeTracker
13988 {
13989 CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl;
13990 };
13991
13992
13993
13994#ifdef COBJMACROS
13995
13996
13997#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \
13998 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13999
14000#define ID3D12LifetimeTracker_AddRef(This) \
14001 ( (This)->lpVtbl -> AddRef(This) )
14002
14003#define ID3D12LifetimeTracker_Release(This) \
14004 ( (This)->lpVtbl -> Release(This) )
14005
14006
14007#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \
14008 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
14009
14010#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \
14011 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
14012
14013#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \
14014 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
14015
14016#define ID3D12LifetimeTracker_SetName(This,Name) \
14017 ( (This)->lpVtbl -> SetName(This,Name) )
14018
14019
14020#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \
14021 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
14022
14023
14024#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \
14025 ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) )
14026
14027#endif /* COBJMACROS */
14028
14029
14030#endif /* C style interface */
14031
14032
14033
14034
14035#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
14036
14037
14038/* interface __MIDL_itf_d3d12_0000_0034 */
14039/* [local] */
14040
14041typedef
14042enum D3D12_META_COMMAND_PARAMETER_TYPE
14043 {
14044 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
14045 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
14046 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
14047 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
14048 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4
14049 } D3D12_META_COMMAND_PARAMETER_TYPE;
14050
14051typedef
14052enum D3D12_META_COMMAND_PARAMETER_FLAGS
14053 {
14054 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
14055 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
14056 } D3D12_META_COMMAND_PARAMETER_FLAGS;
14057
14058DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )
14059typedef
14060enum D3D12_META_COMMAND_PARAMETER_STAGE
14061 {
14062 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
14063 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
14064 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2
14065 } D3D12_META_COMMAND_PARAMETER_STAGE;
14066
14067typedef struct D3D12_META_COMMAND_PARAMETER_DESC
14068 {
14069 LPCWSTR Name;
14070 D3D12_META_COMMAND_PARAMETER_TYPE Type;
14071 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
14072 D3D12_RESOURCE_STATES RequiredResourceState;
14073 UINT StructureOffset;
14074 } D3D12_META_COMMAND_PARAMETER_DESC;
14075
14076typedef
14077enum D3D12_GRAPHICS_STATES
14078 {
14079 D3D12_GRAPHICS_STATE_NONE = 0,
14080 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) ,
14081 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) ,
14082 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) ,
14083 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) ,
14084 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) ,
14085 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) ,
14086 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) ,
14087 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) ,
14088 D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) ,
14089 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) ,
14090 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) ,
14091 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) ,
14092 D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) ,
14093 D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) ,
14094 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) ,
14095 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) ,
14096 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
14097 } D3D12_GRAPHICS_STATES;
14098
14099DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )
14100typedef struct D3D12_META_COMMAND_DESC
14101 {
14102 GUID Id;
14103 LPCWSTR Name;
14104 D3D12_GRAPHICS_STATES InitializationDirtyState;
14105 D3D12_GRAPHICS_STATES ExecutionDirtyState;
14106 } D3D12_META_COMMAND_DESC;
14107
14108
14109
14110extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
14111extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
14112
14113#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
14114#define __ID3D12StateObject_INTERFACE_DEFINED__
14115
14116/* interface ID3D12StateObject */
14117/* [unique][local][object][uuid] */
14118
14119
14120EXTERN_C const IID IID_ID3D12StateObject;
14121
14122#if defined(__cplusplus) && !defined(CINTERFACE)
14123
14124 MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
14125 ID3D12StateObject : public ID3D12Pageable
14126 {
14127 public:
14128 };
14129
14130
14131#else /* C style interface */
14132
14133 typedef struct ID3D12StateObjectVtbl
14134 {
14135 BEGIN_INTERFACE
14136
14137 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14138 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14139 ID3D12StateObject * This,
14140 REFIID riid,
14141 _COM_Outptr_ void **ppvObject);
14142
14143 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14144 ULONG ( STDMETHODCALLTYPE *AddRef )(
14145 ID3D12StateObject * This);
14146
14147 DECLSPEC_XFGVIRT(IUnknown, Release)
14148 ULONG ( STDMETHODCALLTYPE *Release )(
14149 ID3D12StateObject * This);
14150
14151 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
14152 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
14153 ID3D12StateObject * This,
14154 _In_ REFGUID guid,
14155 _Inout_ UINT *pDataSize,
14156 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
14157
14158 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
14159 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
14160 ID3D12StateObject * This,
14161 _In_ REFGUID guid,
14162 _In_ UINT DataSize,
14163 _In_reads_bytes_opt_( DataSize ) const void *pData);
14164
14165 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
14166 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
14167 ID3D12StateObject * This,
14168 _In_ REFGUID guid,
14169 _In_opt_ const IUnknown *pData);
14170
14171 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
14172 HRESULT ( STDMETHODCALLTYPE *SetName )(
14173 ID3D12StateObject * This,
14174 _In_z_ LPCWSTR Name);
14175
14176 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
14177 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
14178 ID3D12StateObject * This,
14179 REFIID riid,
14180 _COM_Outptr_opt_ void **ppvDevice);
14181
14182 END_INTERFACE
14183 } ID3D12StateObjectVtbl;
14184
14185 interface ID3D12StateObject
14186 {
14187 CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl;
14188 };
14189
14190
14191
14192#ifdef COBJMACROS
14193
14194
14195#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \
14196 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14197
14198#define ID3D12StateObject_AddRef(This) \
14199 ( (This)->lpVtbl -> AddRef(This) )
14200
14201#define ID3D12StateObject_Release(This) \
14202 ( (This)->lpVtbl -> Release(This) )
14203
14204
14205#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \
14206 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
14207
14208#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \
14209 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
14210
14211#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \
14212 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
14213
14214#define ID3D12StateObject_SetName(This,Name) \
14215 ( (This)->lpVtbl -> SetName(This,Name) )
14216
14217
14218#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \
14219 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
14220
14221
14222
14223#endif /* COBJMACROS */
14224
14225
14226#endif /* C style interface */
14227
14228
14229
14230
14231#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */
14232
14233
14234#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
14235#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
14236
14237/* interface ID3D12StateObjectProperties */
14238/* [unique][local][object][uuid] */
14239
14240
14241EXTERN_C const IID IID_ID3D12StateObjectProperties;
14242
14243#if defined(__cplusplus) && !defined(CINTERFACE)
14244
14245 MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
14246 ID3D12StateObjectProperties : public IUnknown
14247 {
14248 public:
14249 virtual void *STDMETHODCALLTYPE GetShaderIdentifier(
14250 _In_ LPCWSTR pExportName) = 0;
14251
14252 virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
14253 _In_ LPCWSTR pExportName) = 0;
14254
14255 virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0;
14256
14257 virtual void STDMETHODCALLTYPE SetPipelineStackSize(
14258 UINT64 PipelineStackSizeInBytes) = 0;
14259
14260 };
14261
14262
14263#else /* C style interface */
14264
14265 typedef struct ID3D12StateObjectPropertiesVtbl
14266 {
14267 BEGIN_INTERFACE
14268
14269 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14270 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14271 ID3D12StateObjectProperties * This,
14272 REFIID riid,
14273 _COM_Outptr_ void **ppvObject);
14274
14275 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14276 ULONG ( STDMETHODCALLTYPE *AddRef )(
14277 ID3D12StateObjectProperties * This);
14278
14279 DECLSPEC_XFGVIRT(IUnknown, Release)
14280 ULONG ( STDMETHODCALLTYPE *Release )(
14281 ID3D12StateObjectProperties * This);
14282
14283 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14284 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14285 ID3D12StateObjectProperties * This,
14286 _In_ LPCWSTR pExportName);
14287
14288 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14289 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14290 ID3D12StateObjectProperties * This,
14291 _In_ LPCWSTR pExportName);
14292
14293 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14294 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14295 ID3D12StateObjectProperties * This);
14296
14297 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14298 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14299 ID3D12StateObjectProperties * This,
14300 UINT64 PipelineStackSizeInBytes);
14301
14302 END_INTERFACE
14303 } ID3D12StateObjectPropertiesVtbl;
14304
14305 interface ID3D12StateObjectProperties
14306 {
14307 CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl;
14308 };
14309
14310
14311
14312#ifdef COBJMACROS
14313
14314
14315#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \
14316 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14317
14318#define ID3D12StateObjectProperties_AddRef(This) \
14319 ( (This)->lpVtbl -> AddRef(This) )
14320
14321#define ID3D12StateObjectProperties_Release(This) \
14322 ( (This)->lpVtbl -> Release(This) )
14323
14324
14325#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \
14326 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14327
14328#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \
14329 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14330
14331#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \
14332 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14333
14334#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14335 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14336
14337#endif /* COBJMACROS */
14338
14339
14340#endif /* C style interface */
14341
14342
14343
14344
14345#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
14346
14347
14348/* interface __MIDL_itf_d3d12_0000_0036 */
14349/* [local] */
14350
14351typedef struct D3D12_PROGRAM_IDENTIFIER
14352 {
14353 UINT64 OpaqueData[ 4 ];
14354 } D3D12_PROGRAM_IDENTIFIER;
14355
14356
14357
14358extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_c_ifspec;
14359extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_s_ifspec;
14360
14361#ifndef __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
14362#define __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
14363
14364/* interface ID3D12StateObjectProperties1 */
14365/* [unique][local][object][uuid] */
14366
14367
14368EXTERN_C const IID IID_ID3D12StateObjectProperties1;
14369
14370#if defined(__cplusplus) && !defined(CINTERFACE)
14371
14372 MIDL_INTERFACE("460caac7-1d24-446a-a184-ca67db494138")
14373 ID3D12StateObjectProperties1 : public ID3D12StateObjectProperties
14374 {
14375 public:
14376#if defined(_MSC_VER) || !defined(_WIN32)
14377 virtual D3D12_PROGRAM_IDENTIFIER STDMETHODCALLTYPE GetProgramIdentifier(
14378 LPCWSTR pProgramName) = 0;
14379#else
14380 virtual D3D12_PROGRAM_IDENTIFIER *STDMETHODCALLTYPE GetProgramIdentifier(
14381 D3D12_PROGRAM_IDENTIFIER * RetVal,
14382 LPCWSTR pProgramName) = 0;
14383#endif
14384
14385 };
14386
14387
14388#else /* C style interface */
14389
14390 typedef struct ID3D12StateObjectProperties1Vtbl
14391 {
14392 BEGIN_INTERFACE
14393
14394 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14395 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14396 ID3D12StateObjectProperties1 * This,
14397 REFIID riid,
14398 _COM_Outptr_ void **ppvObject);
14399
14400 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14401 ULONG ( STDMETHODCALLTYPE *AddRef )(
14402 ID3D12StateObjectProperties1 * This);
14403
14404 DECLSPEC_XFGVIRT(IUnknown, Release)
14405 ULONG ( STDMETHODCALLTYPE *Release )(
14406 ID3D12StateObjectProperties1 * This);
14407
14408 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14409 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14410 ID3D12StateObjectProperties1 * This,
14411 _In_ LPCWSTR pExportName);
14412
14413 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14414 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14415 ID3D12StateObjectProperties1 * This,
14416 _In_ LPCWSTR pExportName);
14417
14418 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14419 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14420 ID3D12StateObjectProperties1 * This);
14421
14422 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14423 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14424 ID3D12StateObjectProperties1 * This,
14425 UINT64 PipelineStackSizeInBytes);
14426
14427 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
14428#if !defined(_WIN32)
14429 D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
14430 ID3D12StateObjectProperties1 * This,
14431 LPCWSTR pProgramName);
14432
14433#else
14434 D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
14435 ID3D12StateObjectProperties1 * This,
14436 D3D12_PROGRAM_IDENTIFIER * RetVal,
14437 LPCWSTR pProgramName);
14438
14439#endif
14440
14441 END_INTERFACE
14442 } ID3D12StateObjectProperties1Vtbl;
14443
14444 interface ID3D12StateObjectProperties1
14445 {
14446 CONST_VTBL struct ID3D12StateObjectProperties1Vtbl *lpVtbl;
14447 };
14448
14449
14450
14451#ifdef COBJMACROS
14452
14453
14454#define ID3D12StateObjectProperties1_QueryInterface(This,riid,ppvObject) \
14455 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14456
14457#define ID3D12StateObjectProperties1_AddRef(This) \
14458 ( (This)->lpVtbl -> AddRef(This) )
14459
14460#define ID3D12StateObjectProperties1_Release(This) \
14461 ( (This)->lpVtbl -> Release(This) )
14462
14463
14464#define ID3D12StateObjectProperties1_GetShaderIdentifier(This,pExportName) \
14465 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14466
14467#define ID3D12StateObjectProperties1_GetShaderStackSize(This,pExportName) \
14468 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14469
14470#define ID3D12StateObjectProperties1_GetPipelineStackSize(This) \
14471 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14472
14473#define ID3D12StateObjectProperties1_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14474 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14475
14476#if !defined(_WIN32)
14477
14478#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,pProgramName) \
14479 ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
14480#else
14481#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,RetVal,pProgramName) \
14482 ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
14483#endif
14484
14485#endif /* COBJMACROS */
14486
14487
14488#endif /* C style interface */
14489
14490
14491
14492
14493#endif /* __ID3D12StateObjectProperties1_INTERFACE_DEFINED__ */
14494
14495
14496#ifndef __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
14497#define __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
14498
14499/* interface ID3D12StateObjectProperties2 */
14500/* [unique][local][object][uuid] */
14501
14502
14503EXTERN_C const IID IID_ID3D12StateObjectProperties2;
14504
14505#if defined(__cplusplus) && !defined(CINTERFACE)
14506
14507 MIDL_INTERFACE("d5e82917-f0f1-44cf-ae5e-ce222dd0b884")
14508 ID3D12StateObjectProperties2 : public ID3D12StateObjectProperties1
14509 {
14510 public:
14511 virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForProgram(
14512 LPCWSTR pProgramName,
14513 REFIID riid,
14514 _COM_Outptr_ void **ppvRootSignature) = 0;
14515
14516 virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForShader(
14517 LPCWSTR pExportName,
14518 REFIID riid,
14519 _COM_Outptr_ void **ppvRootSignature) = 0;
14520
14521 };
14522
14523
14524#else /* C style interface */
14525
14526 typedef struct ID3D12StateObjectProperties2Vtbl
14527 {
14528 BEGIN_INTERFACE
14529
14530 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14531 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14532 ID3D12StateObjectProperties2 * This,
14533 REFIID riid,
14534 _COM_Outptr_ void **ppvObject);
14535
14536 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14537 ULONG ( STDMETHODCALLTYPE *AddRef )(
14538 ID3D12StateObjectProperties2 * This);
14539
14540 DECLSPEC_XFGVIRT(IUnknown, Release)
14541 ULONG ( STDMETHODCALLTYPE *Release )(
14542 ID3D12StateObjectProperties2 * This);
14543
14544 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14545 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14546 ID3D12StateObjectProperties2 * This,
14547 _In_ LPCWSTR pExportName);
14548
14549 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14550 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14551 ID3D12StateObjectProperties2 * This,
14552 _In_ LPCWSTR pExportName);
14553
14554 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14555 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14556 ID3D12StateObjectProperties2 * This);
14557
14558 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14559 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14560 ID3D12StateObjectProperties2 * This,
14561 UINT64 PipelineStackSizeInBytes);
14562
14563 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
14564#if !defined(_WIN32)
14565 D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
14566 ID3D12StateObjectProperties2 * This,
14567 LPCWSTR pProgramName);
14568
14569#else
14570 D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
14571 ID3D12StateObjectProperties2 * This,
14572 D3D12_PROGRAM_IDENTIFIER * RetVal,
14573 LPCWSTR pProgramName);
14574
14575#endif
14576
14577 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForProgram)
14578 HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForProgram )(
14579 ID3D12StateObjectProperties2 * This,
14580 LPCWSTR pProgramName,
14581 REFIID riid,
14582 _COM_Outptr_ void **ppvRootSignature);
14583
14584 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForShader)
14585 HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForShader )(
14586 ID3D12StateObjectProperties2 * This,
14587 LPCWSTR pExportName,
14588 REFIID riid,
14589 _COM_Outptr_ void **ppvRootSignature);
14590
14591 END_INTERFACE
14592 } ID3D12StateObjectProperties2Vtbl;
14593
14594 interface ID3D12StateObjectProperties2
14595 {
14596 CONST_VTBL struct ID3D12StateObjectProperties2Vtbl *lpVtbl;
14597 };
14598
14599
14600
14601#ifdef COBJMACROS
14602
14603
14604#define ID3D12StateObjectProperties2_QueryInterface(This,riid,ppvObject) \
14605 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14606
14607#define ID3D12StateObjectProperties2_AddRef(This) \
14608 ( (This)->lpVtbl -> AddRef(This) )
14609
14610#define ID3D12StateObjectProperties2_Release(This) \
14611 ( (This)->lpVtbl -> Release(This) )
14612
14613
14614#define ID3D12StateObjectProperties2_GetShaderIdentifier(This,pExportName) \
14615 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14616
14617#define ID3D12StateObjectProperties2_GetShaderStackSize(This,pExportName) \
14618 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14619
14620#define ID3D12StateObjectProperties2_GetPipelineStackSize(This) \
14621 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14622
14623#define ID3D12StateObjectProperties2_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14624 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14625
14626#if !defined(_WIN32)
14627
14628#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,pProgramName) \
14629 ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
14630#else
14631#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,RetVal,pProgramName) \
14632 ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
14633#endif
14634
14635
14636#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) \
14637 ( (This)->lpVtbl -> GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) )
14638
14639#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) \
14640 ( (This)->lpVtbl -> GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) )
14641
14642#endif /* COBJMACROS */
14643
14644
14645#endif /* C style interface */
14646
14647
14648
14649
14650#endif /* __ID3D12StateObjectProperties2_INTERFACE_DEFINED__ */
14651
14652
14653/* interface __MIDL_itf_d3d12_0000_0038 */
14654/* [local] */
14655
14656typedef struct D3D12_NODE_ID
14657 {
14658 LPCWSTR Name;
14659 UINT ArrayIndex;
14660 } D3D12_NODE_ID;
14661
14662typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
14663 {
14664 UINT64 MinSizeInBytes;
14665 UINT64 MaxSizeInBytes;
14666 UINT SizeGranularityInBytes;
14667 } D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
14668
14669
14670
14671extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_c_ifspec;
14672extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_s_ifspec;
14673
14674#ifndef __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
14675#define __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
14676
14677/* interface ID3D12WorkGraphProperties */
14678/* [unique][local][object][uuid] */
14679
14680
14681EXTERN_C const IID IID_ID3D12WorkGraphProperties;
14682
14683#if defined(__cplusplus) && !defined(CINTERFACE)
14684
14685 MIDL_INTERFACE("065acf71-f863-4b89-82f4-02e4d5886757")
14686 ID3D12WorkGraphProperties : public IUnknown
14687 {
14688 public:
14689 virtual UINT STDMETHODCALLTYPE GetNumWorkGraphs( void) = 0;
14690
14691 virtual LPCWSTR STDMETHODCALLTYPE GetProgramName(
14692 UINT WorkGraphIndex) = 0;
14693
14694 virtual UINT STDMETHODCALLTYPE GetWorkGraphIndex(
14695 LPCWSTR pProgramName) = 0;
14696
14697 virtual UINT STDMETHODCALLTYPE GetNumNodes(
14698 UINT WorkGraphIndex) = 0;
14699
14700#if defined(_MSC_VER) || !defined(_WIN32)
14701 virtual D3D12_NODE_ID STDMETHODCALLTYPE GetNodeID(
14702 UINT WorkGraphIndex,
14703 UINT NodeIndex) = 0;
14704#else
14705 virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetNodeID(
14706 D3D12_NODE_ID * RetVal,
14707 UINT WorkGraphIndex,
14708 UINT NodeIndex) = 0;
14709#endif
14710
14711 virtual UINT STDMETHODCALLTYPE GetNodeIndex(
14712 UINT WorkGraphIndex,
14713 D3D12_NODE_ID NodeID) = 0;
14714
14715 virtual UINT STDMETHODCALLTYPE GetNodeLocalRootArgumentsTableIndex(
14716 UINT WorkGraphIndex,
14717 UINT NodeIndex) = 0;
14718
14719 virtual UINT STDMETHODCALLTYPE GetNumEntrypoints(
14720 UINT WorkGraphIndex) = 0;
14721
14722#if defined(_MSC_VER) || !defined(_WIN32)
14723 virtual D3D12_NODE_ID STDMETHODCALLTYPE GetEntrypointID(
14724 UINT WorkGraphIndex,
14725 UINT EntrypointIndex) = 0;
14726#else
14727 virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetEntrypointID(
14728 D3D12_NODE_ID * RetVal,
14729 UINT WorkGraphIndex,
14730 UINT EntrypointIndex) = 0;
14731#endif
14732
14733 virtual UINT STDMETHODCALLTYPE GetEntrypointIndex(
14734 UINT WorkGraphIndex,
14735 D3D12_NODE_ID NodeID) = 0;
14736
14737 virtual UINT STDMETHODCALLTYPE GetEntrypointRecordSizeInBytes(
14738 UINT WorkGraphIndex,
14739 UINT EntrypointIndex) = 0;
14740
14741 virtual void STDMETHODCALLTYPE GetWorkGraphMemoryRequirements(
14742 UINT WorkGraphIndex,
14743 _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements) = 0;
14744
14745 virtual UINT STDMETHODCALLTYPE GetEntrypointRecordAlignmentInBytes(
14746 UINT WorkGraphIndex,
14747 UINT EntrypointIndex) = 0;
14748
14749 };
14750
14751
14752#else /* C style interface */
14753
14754 typedef struct ID3D12WorkGraphPropertiesVtbl
14755 {
14756 BEGIN_INTERFACE
14757
14758 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14759 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14760 ID3D12WorkGraphProperties * This,
14761 REFIID riid,
14762 _COM_Outptr_ void **ppvObject);
14763
14764 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14765 ULONG ( STDMETHODCALLTYPE *AddRef )(
14766 ID3D12WorkGraphProperties * This);
14767
14768 DECLSPEC_XFGVIRT(IUnknown, Release)
14769 ULONG ( STDMETHODCALLTYPE *Release )(
14770 ID3D12WorkGraphProperties * This);
14771
14772 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumWorkGraphs)
14773 UINT ( STDMETHODCALLTYPE *GetNumWorkGraphs )(
14774 ID3D12WorkGraphProperties * This);
14775
14776 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetProgramName)
14777 LPCWSTR ( STDMETHODCALLTYPE *GetProgramName )(
14778 ID3D12WorkGraphProperties * This,
14779 UINT WorkGraphIndex);
14780
14781 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphIndex)
14782 UINT ( STDMETHODCALLTYPE *GetWorkGraphIndex )(
14783 ID3D12WorkGraphProperties * This,
14784 LPCWSTR pProgramName);
14785
14786 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumNodes)
14787 UINT ( STDMETHODCALLTYPE *GetNumNodes )(
14788 ID3D12WorkGraphProperties * This,
14789 UINT WorkGraphIndex);
14790
14791 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeID)
14792#if !defined(_WIN32)
14793 D3D12_NODE_ID ( STDMETHODCALLTYPE *GetNodeID )(
14794 ID3D12WorkGraphProperties * This,
14795 UINT WorkGraphIndex,
14796 UINT NodeIndex);
14797
14798#else
14799 D3D12_NODE_ID *( STDMETHODCALLTYPE *GetNodeID )(
14800 ID3D12WorkGraphProperties * This,
14801 D3D12_NODE_ID * RetVal,
14802 UINT WorkGraphIndex,
14803 UINT NodeIndex);
14804
14805#endif
14806
14807 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeIndex)
14808 UINT ( STDMETHODCALLTYPE *GetNodeIndex )(
14809 ID3D12WorkGraphProperties * This,
14810 UINT WorkGraphIndex,
14811 D3D12_NODE_ID NodeID);
14812
14813 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeLocalRootArgumentsTableIndex)
14814 UINT ( STDMETHODCALLTYPE *GetNodeLocalRootArgumentsTableIndex )(
14815 ID3D12WorkGraphProperties * This,
14816 UINT WorkGraphIndex,
14817 UINT NodeIndex);
14818
14819 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumEntrypoints)
14820 UINT ( STDMETHODCALLTYPE *GetNumEntrypoints )(
14821 ID3D12WorkGraphProperties * This,
14822 UINT WorkGraphIndex);
14823
14824 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointID)
14825#if !defined(_WIN32)
14826 D3D12_NODE_ID ( STDMETHODCALLTYPE *GetEntrypointID )(
14827 ID3D12WorkGraphProperties * This,
14828 UINT WorkGraphIndex,
14829 UINT EntrypointIndex);
14830
14831#else
14832 D3D12_NODE_ID *( STDMETHODCALLTYPE *GetEntrypointID )(
14833 ID3D12WorkGraphProperties * This,
14834 D3D12_NODE_ID * RetVal,
14835 UINT WorkGraphIndex,
14836 UINT EntrypointIndex);
14837
14838#endif
14839
14840 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointIndex)
14841 UINT ( STDMETHODCALLTYPE *GetEntrypointIndex )(
14842 ID3D12WorkGraphProperties * This,
14843 UINT WorkGraphIndex,
14844 D3D12_NODE_ID NodeID);
14845
14846 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordSizeInBytes)
14847 UINT ( STDMETHODCALLTYPE *GetEntrypointRecordSizeInBytes )(
14848 ID3D12WorkGraphProperties * This,
14849 UINT WorkGraphIndex,
14850 UINT EntrypointIndex);
14851
14852 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphMemoryRequirements)
14853 void ( STDMETHODCALLTYPE *GetWorkGraphMemoryRequirements )(
14854 ID3D12WorkGraphProperties * This,
14855 UINT WorkGraphIndex,
14856 _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements);
14857
14858 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordAlignmentInBytes)
14859 UINT ( STDMETHODCALLTYPE *GetEntrypointRecordAlignmentInBytes )(
14860 ID3D12WorkGraphProperties * This,
14861 UINT WorkGraphIndex,
14862 UINT EntrypointIndex);
14863
14864 END_INTERFACE
14865 } ID3D12WorkGraphPropertiesVtbl;
14866
14867 interface ID3D12WorkGraphProperties
14868 {
14869 CONST_VTBL struct ID3D12WorkGraphPropertiesVtbl *lpVtbl;
14870 };
14871
14872
14873
14874#ifdef COBJMACROS
14875
14876
14877#define ID3D12WorkGraphProperties_QueryInterface(This,riid,ppvObject) \
14878 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14879
14880#define ID3D12WorkGraphProperties_AddRef(This) \
14881 ( (This)->lpVtbl -> AddRef(This) )
14882
14883#define ID3D12WorkGraphProperties_Release(This) \
14884 ( (This)->lpVtbl -> Release(This) )
14885
14886
14887#define ID3D12WorkGraphProperties_GetNumWorkGraphs(This) \
14888 ( (This)->lpVtbl -> GetNumWorkGraphs(This) )
14889
14890#define ID3D12WorkGraphProperties_GetProgramName(This,WorkGraphIndex) \
14891 ( (This)->lpVtbl -> GetProgramName(This,WorkGraphIndex) )
14892
14893#define ID3D12WorkGraphProperties_GetWorkGraphIndex(This,pProgramName) \
14894 ( (This)->lpVtbl -> GetWorkGraphIndex(This,pProgramName) )
14895
14896#define ID3D12WorkGraphProperties_GetNumNodes(This,WorkGraphIndex) \
14897 ( (This)->lpVtbl -> GetNumNodes(This,WorkGraphIndex) )
14898#if !defined(_WIN32)
14899
14900#define ID3D12WorkGraphProperties_GetNodeID(This,WorkGraphIndex,NodeIndex) \
14901 ( (This)->lpVtbl -> GetNodeID(This,WorkGraphIndex,NodeIndex) )
14902#else
14903#define ID3D12WorkGraphProperties_GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) \
14904 ( (This)->lpVtbl -> GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) )
14905#endif
14906
14907#define ID3D12WorkGraphProperties_GetNodeIndex(This,WorkGraphIndex,NodeID) \
14908 ( (This)->lpVtbl -> GetNodeIndex(This,WorkGraphIndex,NodeID) )
14909
14910#define ID3D12WorkGraphProperties_GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) \
14911 ( (This)->lpVtbl -> GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) )
14912
14913#define ID3D12WorkGraphProperties_GetNumEntrypoints(This,WorkGraphIndex) \
14914 ( (This)->lpVtbl -> GetNumEntrypoints(This,WorkGraphIndex) )
14915#if !defined(_WIN32)
14916
14917#define ID3D12WorkGraphProperties_GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) \
14918 ( (This)->lpVtbl -> GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) )
14919#else
14920#define ID3D12WorkGraphProperties_GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) \
14921 ( (This)->lpVtbl -> GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) )
14922#endif
14923
14924#define ID3D12WorkGraphProperties_GetEntrypointIndex(This,WorkGraphIndex,NodeID) \
14925 ( (This)->lpVtbl -> GetEntrypointIndex(This,WorkGraphIndex,NodeID) )
14926
14927#define ID3D12WorkGraphProperties_GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) \
14928 ( (This)->lpVtbl -> GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) )
14929
14930#define ID3D12WorkGraphProperties_GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) \
14931 ( (This)->lpVtbl -> GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) )
14932
14933#define ID3D12WorkGraphProperties_GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) \
14934 ( (This)->lpVtbl -> GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) )
14935
14936#endif /* COBJMACROS */
14937
14938
14939#endif /* C style interface */
14940
14941
14942
14943
14944#endif /* __ID3D12WorkGraphProperties_INTERFACE_DEFINED__ */
14945
14946
14947/* interface __MIDL_itf_d3d12_0000_0039 */
14948/* [local] */
14949
14950typedef
14951enum D3D12_STATE_SUBOBJECT_TYPE
14952 {
14953 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0,
14954 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1,
14955 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2,
14956 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3,
14957 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5,
14958 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6,
14959 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
14960 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
14961 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
14962 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
14963 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
14964 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
14965 D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13,
14966 D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14,
14967 D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15,
14968 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16,
14969 D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17,
14970 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18,
14971 D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19,
14972 D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20,
14973 D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21,
14974 D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22,
14975 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23,
14976 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24,
14977 D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26,
14978 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27,
14979 D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28,
14980 D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29,
14981 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30,
14982 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31,
14983 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32,
14984 D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33,
14985 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36,
14986 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY + 1 )
14987 } D3D12_STATE_SUBOBJECT_TYPE;
14988
14989typedef struct D3D12_STATE_SUBOBJECT
14990 {
14991 D3D12_STATE_SUBOBJECT_TYPE Type;
14992 const void *pDesc;
14993 } D3D12_STATE_SUBOBJECT;
14994
14995typedef
14996enum D3D12_STATE_OBJECT_FLAGS
14997 {
14998 D3D12_STATE_OBJECT_FLAG_NONE = 0,
14999 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
15000 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
15001 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
15002 } D3D12_STATE_OBJECT_FLAGS;
15003
15004DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )
15005typedef struct D3D12_STATE_OBJECT_CONFIG
15006 {
15007 D3D12_STATE_OBJECT_FLAGS Flags;
15008 } D3D12_STATE_OBJECT_CONFIG;
15009
15010typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
15011 {
15012 ID3D12RootSignature *pGlobalRootSignature;
15013 } D3D12_GLOBAL_ROOT_SIGNATURE;
15014
15015typedef struct D3D12_LOCAL_ROOT_SIGNATURE
15016 {
15017 ID3D12RootSignature *pLocalRootSignature;
15018 } D3D12_LOCAL_ROOT_SIGNATURE;
15019
15020typedef struct D3D12_NODE_MASK
15021 {
15022 UINT NodeMask;
15023 } D3D12_NODE_MASK;
15024
15025typedef struct D3D12_SAMPLE_MASK
15026 {
15027 UINT SampleMask;
15028 } D3D12_SAMPLE_MASK;
15029
15030typedef struct D3D12_IB_STRIP_CUT_VALUE
15031 {
15032 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
15033 } D3D12_IB_STRIP_CUT_VALUE;
15034
15035typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
15036 {
15037 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
15038 } D3D12_PRIMITIVE_TOPOLOGY_DESC;
15039
15040typedef struct D3D12_DEPTH_STENCIL_FORMAT
15041 {
15042 DXGI_FORMAT DepthStencilFormat;
15043 } D3D12_DEPTH_STENCIL_FORMAT;
15044
15045typedef
15046enum D3D12_EXPORT_FLAGS
15047 {
15048 D3D12_EXPORT_FLAG_NONE = 0
15049 } D3D12_EXPORT_FLAGS;
15050
15051DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )
15052typedef struct D3D12_EXPORT_DESC
15053 {
15054 LPCWSTR Name;
15055 _In_opt_ LPCWSTR ExportToRename;
15056 D3D12_EXPORT_FLAGS Flags;
15057 } D3D12_EXPORT_DESC;
15058
15059typedef struct D3D12_DXIL_LIBRARY_DESC
15060 {
15061 D3D12_SHADER_BYTECODE DXILLibrary;
15062 UINT NumExports;
15063 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
15064 } D3D12_DXIL_LIBRARY_DESC;
15065
15066typedef struct D3D12_EXISTING_COLLECTION_DESC
15067 {
15068 ID3D12StateObject *pExistingCollection;
15069 UINT NumExports;
15070 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
15071 } D3D12_EXISTING_COLLECTION_DESC;
15072
15073typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
15074 {
15075 const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
15076 UINT NumExports;
15077 _In_reads_(NumExports) LPCWSTR *pExports;
15078 } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
15079
15080typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
15081 {
15082 LPCWSTR SubobjectToAssociate;
15083 UINT NumExports;
15084 _In_reads_(NumExports) LPCWSTR *pExports;
15085 } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
15086
15087typedef
15088enum D3D12_HIT_GROUP_TYPE
15089 {
15090 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0,
15091 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
15092 } D3D12_HIT_GROUP_TYPE;
15093
15094typedef struct D3D12_HIT_GROUP_DESC
15095 {
15096 LPCWSTR HitGroupExport;
15097 D3D12_HIT_GROUP_TYPE Type;
15098 _In_opt_ LPCWSTR AnyHitShaderImport;
15099 _In_opt_ LPCWSTR ClosestHitShaderImport;
15100 _In_opt_ LPCWSTR IntersectionShaderImport;
15101 } D3D12_HIT_GROUP_DESC;
15102
15103typedef struct D3D12_RAYTRACING_SHADER_CONFIG
15104 {
15105 UINT MaxPayloadSizeInBytes;
15106 UINT MaxAttributeSizeInBytes;
15107 } D3D12_RAYTRACING_SHADER_CONFIG;
15108
15109typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
15110 {
15111 UINT MaxTraceRecursionDepth;
15112 } D3D12_RAYTRACING_PIPELINE_CONFIG;
15113
15114typedef
15115enum D3D12_RAYTRACING_PIPELINE_FLAGS
15116 {
15117 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
15118 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
15119 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
15120 D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400
15121 } D3D12_RAYTRACING_PIPELINE_FLAGS;
15122
15123DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )
15124typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
15125 {
15126 UINT MaxTraceRecursionDepth;
15127 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
15128 } D3D12_RAYTRACING_PIPELINE_CONFIG1;
15129
15130typedef struct D3D12_NODE_OUTPUT_OVERRIDES
15131 {
15132 UINT OutputIndex;
15133 _In_opt_ const D3D12_NODE_ID *pNewName;
15134 _In_opt_ const BOOL *pAllowSparseNodes;
15135 _In_opt_ const UINT *pMaxRecords;
15136 _In_opt_ const UINT *pMaxRecordsSharedWithOutputIndex;
15137 } D3D12_NODE_OUTPUT_OVERRIDES;
15138
15139typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
15140 {
15141 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15142 _In_opt_ const BOOL *pProgramEntry;
15143 _In_opt_ const D3D12_NODE_ID *pNewName;
15144 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15145 _In_reads_opt_(3) const UINT *pDispatchGrid;
15146 _In_reads_opt_(3) const UINT *pMaxDispatchGrid;
15147 UINT NumOutputOverrides;
15148 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15149 } D3D12_BROADCASTING_LAUNCH_OVERRIDES;
15150
15151typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
15152 {
15153 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15154 _In_opt_ const BOOL *pProgramEntry;
15155 _In_opt_ const D3D12_NODE_ID *pNewName;
15156 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15157 UINT NumOutputOverrides;
15158 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15159 } D3D12_COALESCING_LAUNCH_OVERRIDES;
15160
15161typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
15162 {
15163 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15164 _In_opt_ const BOOL *pProgramEntry;
15165 _In_opt_ const D3D12_NODE_ID *pNewName;
15166 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15167 UINT NumOutputOverrides;
15168 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15169 } D3D12_THREAD_LAUNCH_OVERRIDES;
15170
15171typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
15172 {
15173 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15174 _In_opt_ const BOOL *pProgramEntry;
15175 _In_opt_ const D3D12_NODE_ID *pNewName;
15176 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15177 UINT NumOutputOverrides;
15178 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15179 } D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
15180
15181typedef
15182enum D3D12_NODE_OVERRIDES_TYPE
15183 {
15184 D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
15185 D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
15186 D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
15187 D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
15188 D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4
15189 } D3D12_NODE_OVERRIDES_TYPE;
15190
15191typedef struct D3D12_SHADER_NODE
15192 {
15193 LPCWSTR Shader;
15194 D3D12_NODE_OVERRIDES_TYPE OverridesType;
15195 union
15196 {
15197 const D3D12_BROADCASTING_LAUNCH_OVERRIDES *pBroadcastingLaunchOverrides;
15198 const D3D12_COALESCING_LAUNCH_OVERRIDES *pCoalescingLaunchOverrides;
15199 const D3D12_THREAD_LAUNCH_OVERRIDES *pThreadLaunchOverrides;
15200 const D3D12_COMMON_COMPUTE_NODE_OVERRIDES *pCommonComputeNodeOverrides;
15201 } ;
15202 } D3D12_SHADER_NODE;
15203
15204typedef
15205enum D3D12_NODE_TYPE
15206 {
15207 D3D12_NODE_TYPE_SHADER = 0
15208 } D3D12_NODE_TYPE;
15209
15210typedef struct D3D12_NODE
15211 {
15212 D3D12_NODE_TYPE NodeType;
15213 union
15214 {
15215 D3D12_SHADER_NODE Shader;
15216 } ;
15217 } D3D12_NODE;
15218
15219typedef
15220enum D3D12_WORK_GRAPH_FLAGS
15221 {
15222 D3D12_WORK_GRAPH_FLAG_NONE = 0,
15223 D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1
15224 } D3D12_WORK_GRAPH_FLAGS;
15225
15226DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )
15227typedef struct D3D12_WORK_GRAPH_DESC
15228 {
15229 LPCWSTR ProgramName;
15230 D3D12_WORK_GRAPH_FLAGS Flags;
15231 UINT NumEntrypoints;
15232 _In_reads_opt_(NumEntrypoints) const D3D12_NODE_ID *pEntrypoints;
15233 UINT NumExplicitlyDefinedNodes;
15234 _In_reads_opt_(NumExplicitlyDefinedNodes) const D3D12_NODE *pExplicitlyDefinedNodes;
15235 } D3D12_WORK_GRAPH_DESC;
15236
15237typedef struct D3D12_GENERIC_PROGRAM_DESC
15238 {
15239 LPCWSTR ProgramName;
15240 UINT NumExports;
15241 _In_reads_(NumExports) LPCWSTR *pExports;
15242 UINT NumSubobjects;
15243 _In_reads_opt_(NumSubobjects) const D3D12_STATE_SUBOBJECT *const *ppSubobjects;
15244 } D3D12_GENERIC_PROGRAM_DESC;
15245
15246typedef
15247enum D3D12_STATE_OBJECT_TYPE
15248 {
15249 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
15250 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
15251 D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
15252 } D3D12_STATE_OBJECT_TYPE;
15253
15254typedef struct D3D12_STATE_OBJECT_DESC
15255 {
15256 D3D12_STATE_OBJECT_TYPE Type;
15257 UINT NumSubobjects;
15258 _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects;
15259 } D3D12_STATE_OBJECT_DESC;
15260
15261typedef
15262enum D3D12_RAYTRACING_GEOMETRY_FLAGS
15263 {
15264 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
15265 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
15266 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
15267 } D3D12_RAYTRACING_GEOMETRY_FLAGS;
15268
15269DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )
15270typedef
15271enum D3D12_RAYTRACING_GEOMETRY_TYPE
15272 {
15273 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
15274 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 ) ,
15275 D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES = ( D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS + 1 )
15276 } D3D12_RAYTRACING_GEOMETRY_TYPE;
15277
15278typedef
15279enum D3D12_RAYTRACING_INSTANCE_FLAGS
15280 {
15281 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
15282 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
15283 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
15284 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
15285 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
15286 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
15287 D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
15288 } D3D12_RAYTRACING_INSTANCE_FLAGS;
15289
15290DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )
15291typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
15292 {
15293 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15294 UINT64 StrideInBytes;
15295 } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
15296
15297typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
15298 {
15299 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15300 UINT64 SizeInBytes;
15301 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
15302
15303typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
15304 {
15305 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15306 UINT64 SizeInBytes;
15307 UINT64 StrideInBytes;
15308 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
15309
15310typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
15311 {
15312 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
15313 DXGI_FORMAT IndexFormat;
15314 DXGI_FORMAT VertexFormat;
15315 UINT IndexCount;
15316 UINT VertexCount;
15317 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
15318 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
15319 } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
15320
15321typedef struct D3D12_RAYTRACING_AABB
15322 {
15323 FLOAT MinX;
15324 FLOAT MinY;
15325 FLOAT MinZ;
15326 FLOAT MaxX;
15327 FLOAT MaxY;
15328 FLOAT MaxZ;
15329 } D3D12_RAYTRACING_AABB;
15330
15331typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
15332 {
15333 UINT64 AABBCount;
15334 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
15335 } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
15336
15337typedef
15338enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
15339 {
15340 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
15341 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
15342 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
15343 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4
15344 } D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
15345
15346typedef
15347enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
15348 {
15349 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
15350 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
15351 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
15352 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3
15353 } D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
15354
15355typedef
15356enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
15357 {
15358 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
15359 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2
15360 } D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
15361
15362typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC
15363{
15364 UINT ByteOffset;
15365 UINT SubdivisionLevel : 16;
15366 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;
15367} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;
15368typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
15369 {
15370 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
15371 DXGI_FORMAT OpacityMicromapIndexFormat;
15372 UINT OpacityMicromapBaseLocation;
15373 D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
15374 } D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
15375
15376typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
15377 {
15378 const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC *pTriangles;
15379 const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC *pOmmLinkage;
15380 } D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
15381
15382typedef
15383enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
15384 {
15385 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
15386 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
15387 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
15388 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
15389 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
15390 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
15391 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
15392 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
15393 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80
15394 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
15395
15396DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )
15397typedef
15398enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
15399 {
15400 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
15401 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
15402 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
15403 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
15404 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
15405 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
15406
15407typedef
15408enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
15409 {
15410 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
15411 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
15412 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2
15413 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
15414
15415typedef
15416enum D3D12_ELEMENTS_LAYOUT
15417 {
15418 D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
15419 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
15420 } D3D12_ELEMENTS_LAYOUT;
15421
15422typedef
15423enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
15424 {
15425 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0,
15426 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
15427 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
15428 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
15429 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
15430
15431typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
15432 {
15433 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
15434 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
15435 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
15436
15437typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
15438 {
15439 UINT64 CompactedSizeInBytes;
15440 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
15441
15442typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
15443 {
15444 UINT64 DecodedSizeInBytes;
15445 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
15446
15447typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
15448 {
15449 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
15450 UINT NumDescs;
15451 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
15452
15453// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,
15454// depending on Type field, NumDescs above is followed by either:
15455// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
15456// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
15457// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).
15458//
15459// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer
15460//
15461// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
15462
15463typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
15464 {
15465 UINT64 SerializedSizeInBytes;
15466 union
15467 {
15468 UINT64 NumBottomLevelAccelerationStructurePointers;
15469 UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
15470 } ;
15471 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
15472
15473typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
15474 {
15475 GUID DriverOpaqueGUID;
15476 BYTE DriverOpaqueVersioningData[ 16 ];
15477 } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
15478
15479typedef
15480enum D3D12_SERIALIZED_DATA_TYPE
15481 {
15482 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0,
15483 D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1
15484 } D3D12_SERIALIZED_DATA_TYPE;
15485
15486typedef
15487enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
15488 {
15489 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0,
15490 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
15491 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
15492 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
15493 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
15494 } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
15495
15496typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
15497 {
15498 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
15499 UINT64 SerializedSizeInBytesIncludingHeader;
15500 UINT64 DeserializedSizeInBytes;
15501 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
15502 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
15503
15504typedef
15505enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
15506 {
15507 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
15508 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
15509 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
15510 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
15511
15512typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
15513 {
15514 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
15515 UINT64 SerializedSizeInBytesIncludingHeader;
15516 UINT64 DeserializedSizeInBytes;
15517 union
15518 {
15519 UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
15520 UINT NumBlocks;
15521 } ;
15522 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
15523 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
15524
15525typedef
15526enum D3D12_SERIALIZED_BLOCK_TYPE
15527 {
15528 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0
15529 } D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
15530
15531typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
15532 {
15533 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
15534 UINT64 NumBlockPointersAfterHeader;
15535 } D3D12_RAYTRACING_SERIALIZED_BLOCK;
15536
15537typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
15538 {
15539 UINT64 CurrentSizeInBytes;
15540 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
15541
15542typedef struct D3D12_RAYTRACING_INSTANCE_DESC
15543 {
15544 FLOAT Transform[ 3 ][ 4 ];
15545 UINT InstanceID : 24;
15546 UINT InstanceMask : 8;
15547 UINT InstanceContributionToHitGroupIndex : 24;
15548 UINT Flags : 8;
15549 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
15550 } D3D12_RAYTRACING_INSTANCE_DESC;
15551
15552typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
15553 {
15554 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
15555 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
15556 union
15557 {
15558 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
15559 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
15560 D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
15561 } ;
15562 } D3D12_RAYTRACING_GEOMETRY_DESC;
15563
15564typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
15565 {
15566 UINT Count;
15567 UINT SubdivisionLevel;
15568 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
15569 } D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
15570
15571typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
15572 {
15573 UINT NumOmmHistogramEntries;
15574 const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY *pOmmHistogram;
15575 D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
15576 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
15577 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
15578
15579typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
15580 {
15581 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
15582 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
15583 UINT NumDescs;
15584 D3D12_ELEMENTS_LAYOUT DescsLayout;
15585 union
15586 {
15587 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
15588 const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
15589 const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
15590 const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC *pOpacityMicromapArrayDesc;
15591 } ;
15592 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
15593
15594typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
15595 {
15596 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
15597 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
15598 _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
15599 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
15600 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
15601
15602typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
15603 {
15604 UINT64 ResultDataMaxSizeInBytes;
15605 UINT64 ScratchDataSizeInBytes;
15606 UINT64 UpdateScratchDataSizeInBytes;
15607 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
15608
15609typedef
15610enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
15611 {
15612 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0,
15613 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1
15614 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
15615
15616typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
15617 {
15618 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
15619 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
15620 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
15621
15622typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
15623 {
15624 UINT64 CurrentSizeInBytes;
15625 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
15626
15627typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
15628 {
15629 UINT64 DecodedSizeInBytes;
15630 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
15631
15632typedef
15633enum D3D12_RAY_FLAGS
15634 {
15635 D3D12_RAY_FLAG_NONE = 0,
15636 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
15637 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
15638 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
15639 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
15640 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
15641 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
15642 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
15643 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
15644 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
15645 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
15646 D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400
15647 } D3D12_RAY_FLAGS;
15648
15649DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )
15650typedef
15651enum D3D12_HIT_KIND
15652 {
15653 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
15654 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
15655 } D3D12_HIT_KIND;
15656
15657
15658
15659extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_c_ifspec;
15660extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_s_ifspec;
15661
15662#ifndef __ID3D12Device5_INTERFACE_DEFINED__
15663#define __ID3D12Device5_INTERFACE_DEFINED__
15664
15665/* interface ID3D12Device5 */
15666/* [unique][local][object][uuid] */
15667
15668
15669EXTERN_C const IID IID_ID3D12Device5;
15670
15671#if defined(__cplusplus) && !defined(CINTERFACE)
15672
15673 MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
15674 ID3D12Device5 : public ID3D12Device4
15675 {
15676 public:
15677 virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
15678 _In_ ID3D12LifetimeOwner *pOwner,
15679 REFIID riid,
15680 _COM_Outptr_ void **ppvTracker) = 0;
15681
15682 virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0;
15683
15684 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
15685 _Inout_ UINT *pNumMetaCommands,
15686 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0;
15687
15688 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
15689 _In_ REFGUID CommandId,
15690 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
15691 _Out_opt_ UINT *pTotalStructureSizeInBytes,
15692 _Inout_ UINT *pParameterCount,
15693 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0;
15694
15695 virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
15696 _In_ REFGUID CommandId,
15697 _In_ UINT NodeMask,
15698 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
15699 _In_ SIZE_T CreationParametersDataSizeInBytes,
15700 REFIID riid,
15701 _COM_Outptr_ void **ppMetaCommand) = 0;
15702
15703 virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
15704 const D3D12_STATE_OBJECT_DESC *pDesc,
15705 REFIID riid,
15706 _COM_Outptr_ void **ppStateObject) = 0;
15707
15708 virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
15709 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
15710 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0;
15711
15712 virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
15713 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
15714 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0;
15715
15716 };
15717
15718
15719#else /* C style interface */
15720
15721 typedef struct ID3D12Device5Vtbl
15722 {
15723 BEGIN_INTERFACE
15724
15725 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15726 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15727 ID3D12Device5 * This,
15728 REFIID riid,
15729 _COM_Outptr_ void **ppvObject);
15730
15731 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15732 ULONG ( STDMETHODCALLTYPE *AddRef )(
15733 ID3D12Device5 * This);
15734
15735 DECLSPEC_XFGVIRT(IUnknown, Release)
15736 ULONG ( STDMETHODCALLTYPE *Release )(
15737 ID3D12Device5 * This);
15738
15739 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15740 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15741 ID3D12Device5 * 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 ID3D12Device5 * 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 ID3D12Device5 * This,
15756 _In_ REFGUID guid,
15757 _In_opt_ const IUnknown *pData);
15758
15759 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15760 HRESULT ( STDMETHODCALLTYPE *SetName )(
15761 ID3D12Device5 * This,
15762 _In_z_ LPCWSTR Name);
15763
15764 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
15765 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
15766 ID3D12Device5 * This);
15767
15768 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
15769 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
15770 ID3D12Device5 * This,
15771 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
15772 REFIID riid,
15773 _COM_Outptr_ void **ppCommandQueue);
15774
15775 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15776 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15777 ID3D12Device5 * This,
15778 _In_ D3D12_COMMAND_LIST_TYPE type,
15779 REFIID riid,
15780 _COM_Outptr_ void **ppCommandAllocator);
15781
15782 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15783 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15784 ID3D12Device5 * This,
15785 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15786 REFIID riid,
15787 _COM_Outptr_ void **ppPipelineState);
15788
15789 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15790 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15791 ID3D12Device5 * This,
15792 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15793 REFIID riid,
15794 _COM_Outptr_ void **ppPipelineState);
15795
15796 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15797 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15798 ID3D12Device5 * This,
15799 _In_ UINT nodeMask,
15800 _In_ D3D12_COMMAND_LIST_TYPE type,
15801 _In_ ID3D12CommandAllocator *pCommandAllocator,
15802 _In_opt_ ID3D12PipelineState *pInitialState,
15803 REFIID riid,
15804 _COM_Outptr_ void **ppCommandList);
15805
15806 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15807 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15808 ID3D12Device5 * This,
15809 D3D12_FEATURE Feature,
15810 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15811 UINT FeatureSupportDataSize);
15812
15813 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15814 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15815 ID3D12Device5 * This,
15816 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15817 REFIID riid,
15818 _COM_Outptr_ void **ppvHeap);
15819
15820 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15821 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15822 ID3D12Device5 * This,
15823 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15824
15825 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15826 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15827 ID3D12Device5 * This,
15828 _In_ UINT nodeMask,
15829 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15830 _In_ SIZE_T blobLengthInBytes,
15831 REFIID riid,
15832 _COM_Outptr_ void **ppvRootSignature);
15833
15834 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
15835 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
15836 ID3D12Device5 * This,
15837 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
15838 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15839
15840 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
15841 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
15842 ID3D12Device5 * This,
15843 _In_opt_ ID3D12Resource *pResource,
15844 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
15845 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15846
15847 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
15848 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
15849 ID3D12Device5 * This,
15850 _In_opt_ ID3D12Resource *pResource,
15851 _In_opt_ ID3D12Resource *pCounterResource,
15852 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
15853 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15854
15855 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
15856 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
15857 ID3D12Device5 * This,
15858 _In_opt_ ID3D12Resource *pResource,
15859 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
15860 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15861
15862 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
15863 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
15864 ID3D12Device5 * This,
15865 _In_opt_ ID3D12Resource *pResource,
15866 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
15867 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15868
15869 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
15870 void ( STDMETHODCALLTYPE *CreateSampler )(
15871 ID3D12Device5 * This,
15872 _In_ const D3D12_SAMPLER_DESC *pDesc,
15873 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15874
15875 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
15876 void ( STDMETHODCALLTYPE *CopyDescriptors )(
15877 ID3D12Device5 * This,
15878 _In_ UINT NumDestDescriptorRanges,
15879 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
15880 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
15881 _In_ UINT NumSrcDescriptorRanges,
15882 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
15883 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
15884 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15885
15886 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
15887 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
15888 ID3D12Device5 * This,
15889 _In_ UINT NumDescriptors,
15890 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
15891 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
15892 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15893
15894 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
15895#if !defined(_WIN32)
15896 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15897 ID3D12Device5 * This,
15898 _In_ UINT visibleMask,
15899 _In_ UINT numResourceDescs,
15900 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15901
15902#else
15903 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15904 ID3D12Device5 * This,
15905 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15906 _In_ UINT visibleMask,
15907 _In_ UINT numResourceDescs,
15908 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15909
15910#endif
15911
15912 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
15913#if !defined(_WIN32)
15914 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15915 ID3D12Device5 * This,
15916 _In_ UINT nodeMask,
15917 D3D12_HEAP_TYPE heapType);
15918
15919#else
15920 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15921 ID3D12Device5 * This,
15922 D3D12_HEAP_PROPERTIES * RetVal,
15923 _In_ UINT nodeMask,
15924 D3D12_HEAP_TYPE heapType);
15925
15926#endif
15927
15928 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
15929 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
15930 ID3D12Device5 * This,
15931 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15932 D3D12_HEAP_FLAGS HeapFlags,
15933 _In_ const D3D12_RESOURCE_DESC *pDesc,
15934 D3D12_RESOURCE_STATES InitialResourceState,
15935 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15936 REFIID riidResource,
15937 _COM_Outptr_opt_ void **ppvResource);
15938
15939 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
15940 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
15941 ID3D12Device5 * This,
15942 _In_ const D3D12_HEAP_DESC *pDesc,
15943 REFIID riid,
15944 _COM_Outptr_opt_ void **ppvHeap);
15945
15946 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
15947 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
15948 ID3D12Device5 * This,
15949 _In_ ID3D12Heap *pHeap,
15950 UINT64 HeapOffset,
15951 _In_ const D3D12_RESOURCE_DESC *pDesc,
15952 D3D12_RESOURCE_STATES InitialState,
15953 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15954 REFIID riid,
15955 _COM_Outptr_opt_ void **ppvResource);
15956
15957 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
15958 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
15959 ID3D12Device5 * This,
15960 _In_ const D3D12_RESOURCE_DESC *pDesc,
15961 D3D12_RESOURCE_STATES InitialState,
15962 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15963 REFIID riid,
15964 _COM_Outptr_opt_ void **ppvResource);
15965
15966 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
15967 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
15968 ID3D12Device5 * This,
15969 _In_ ID3D12DeviceChild *pObject,
15970 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
15971 DWORD Access,
15972 _In_opt_ LPCWSTR Name,
15973 _Out_ HANDLE *pHandle);
15974
15975 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
15976 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
15977 ID3D12Device5 * This,
15978 _In_ HANDLE NTHandle,
15979 REFIID riid,
15980 _COM_Outptr_opt_ void **ppvObj);
15981
15982 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
15983 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
15984 ID3D12Device5 * This,
15985 _In_ LPCWSTR Name,
15986 DWORD Access,
15987 /* [annotation][out] */
15988 _Out_ HANDLE *pNTHandle);
15989
15990 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
15991 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
15992 ID3D12Device5 * This,
15993 UINT NumObjects,
15994 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15995
15996 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
15997 HRESULT ( STDMETHODCALLTYPE *Evict )(
15998 ID3D12Device5 * This,
15999 UINT NumObjects,
16000 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16001
16002 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16003 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16004 ID3D12Device5 * This,
16005 UINT64 InitialValue,
16006 D3D12_FENCE_FLAGS Flags,
16007 REFIID riid,
16008 _COM_Outptr_ void **ppFence);
16009
16010 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16011 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16012 ID3D12Device5 * This);
16013
16014 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16015 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16016 ID3D12Device5 * This,
16017 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16018 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16019 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16020 UINT64 BaseOffset,
16021 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16022 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16023 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16024 _Out_opt_ UINT64 *pTotalBytes);
16025
16026 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16027 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16028 ID3D12Device5 * This,
16029 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16030 REFIID riid,
16031 _COM_Outptr_opt_ void **ppvHeap);
16032
16033 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16034 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16035 ID3D12Device5 * This,
16036 BOOL Enable);
16037
16038 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16039 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16040 ID3D12Device5 * This,
16041 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16042 _In_opt_ ID3D12RootSignature *pRootSignature,
16043 REFIID riid,
16044 _COM_Outptr_opt_ void **ppvCommandSignature);
16045
16046 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16047 void ( STDMETHODCALLTYPE *GetResourceTiling )(
16048 ID3D12Device5 * This,
16049 _In_ ID3D12Resource *pTiledResource,
16050 _Out_opt_ UINT *pNumTilesForEntireResource,
16051 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
16052 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
16053 _Inout_opt_ UINT *pNumSubresourceTilings,
16054 _In_ UINT FirstSubresourceTilingToGet,
16055 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
16056
16057 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
16058#if !defined(_WIN32)
16059 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
16060 ID3D12Device5 * This);
16061
16062#else
16063 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
16064 ID3D12Device5 * This,
16065 LUID * RetVal);
16066
16067#endif
16068
16069 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
16070 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
16071 ID3D12Device5 * This,
16072 _In_reads_(BlobLength) const void *pLibraryBlob,
16073 SIZE_T BlobLength,
16074 REFIID riid,
16075 _COM_Outptr_ void **ppPipelineLibrary);
16076
16077 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
16078 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
16079 ID3D12Device5 * This,
16080 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
16081 _In_reads_(NumFences) const UINT64 *pFenceValues,
16082 UINT NumFences,
16083 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
16084 HANDLE hEvent);
16085
16086 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
16087 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
16088 ID3D12Device5 * This,
16089 UINT NumObjects,
16090 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16091 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
16092
16093 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
16094 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
16095 ID3D12Device5 * This,
16096 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
16097 REFIID riid,
16098 _COM_Outptr_ void **ppPipelineState);
16099
16100 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
16101 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
16102 ID3D12Device5 * This,
16103 _In_ const void *pAddress,
16104 REFIID riid,
16105 _COM_Outptr_ void **ppvHeap);
16106
16107 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
16108 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
16109 ID3D12Device5 * This,
16110 _In_ HANDLE hFileMapping,
16111 REFIID riid,
16112 _COM_Outptr_ void **ppvHeap);
16113
16114 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
16115 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
16116 ID3D12Device5 * This,
16117 D3D12_RESIDENCY_FLAGS Flags,
16118 UINT NumObjects,
16119 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16120 _In_ ID3D12Fence *pFenceToSignal,
16121 UINT64 FenceValueToSignal);
16122
16123 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
16124 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
16125 ID3D12Device5 * This,
16126 _In_ UINT nodeMask,
16127 _In_ D3D12_COMMAND_LIST_TYPE type,
16128 _In_ D3D12_COMMAND_LIST_FLAGS flags,
16129 REFIID riid,
16130 _COM_Outptr_ void **ppCommandList);
16131
16132 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
16133 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
16134 ID3D12Device5 * This,
16135 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
16136 _In_ REFIID riid,
16137 _COM_Outptr_ void **ppSession);
16138
16139 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
16140 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
16141 ID3D12Device5 * This,
16142 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16143 D3D12_HEAP_FLAGS HeapFlags,
16144 _In_ const D3D12_RESOURCE_DESC *pDesc,
16145 D3D12_RESOURCE_STATES InitialResourceState,
16146 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16147 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16148 REFIID riidResource,
16149 _COM_Outptr_opt_ void **ppvResource);
16150
16151 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
16152 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
16153 ID3D12Device5 * This,
16154 _In_ const D3D12_HEAP_DESC *pDesc,
16155 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16156 REFIID riid,
16157 _COM_Outptr_opt_ void **ppvHeap);
16158
16159 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
16160 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
16161 ID3D12Device5 * This,
16162 _In_ const D3D12_RESOURCE_DESC *pDesc,
16163 D3D12_RESOURCE_STATES InitialState,
16164 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16165 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16166 REFIID riid,
16167 _COM_Outptr_opt_ void **ppvResource);
16168
16169 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
16170#if !defined(_WIN32)
16171 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16172 ID3D12Device5 * This,
16173 UINT visibleMask,
16174 UINT numResourceDescs,
16175 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16176 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16177
16178#else
16179 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16180 ID3D12Device5 * This,
16181 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16182 UINT visibleMask,
16183 UINT numResourceDescs,
16184 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16185 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16186
16187#endif
16188
16189 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
16190 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
16191 ID3D12Device5 * This,
16192 _In_ ID3D12LifetimeOwner *pOwner,
16193 REFIID riid,
16194 _COM_Outptr_ void **ppvTracker);
16195
16196 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
16197 void ( STDMETHODCALLTYPE *RemoveDevice )(
16198 ID3D12Device5 * This);
16199
16200 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
16201 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
16202 ID3D12Device5 * This,
16203 _Inout_ UINT *pNumMetaCommands,
16204 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
16205
16206 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
16207 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
16208 ID3D12Device5 * This,
16209 _In_ REFGUID CommandId,
16210 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
16211 _Out_opt_ UINT *pTotalStructureSizeInBytes,
16212 _Inout_ UINT *pParameterCount,
16213 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
16214
16215 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
16216 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
16217 ID3D12Device5 * This,
16218 _In_ REFGUID CommandId,
16219 _In_ UINT NodeMask,
16220 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
16221 _In_ SIZE_T CreationParametersDataSizeInBytes,
16222 REFIID riid,
16223 _COM_Outptr_ void **ppMetaCommand);
16224
16225 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
16226 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
16227 ID3D12Device5 * This,
16228 const D3D12_STATE_OBJECT_DESC *pDesc,
16229 REFIID riid,
16230 _COM_Outptr_ void **ppStateObject);
16231
16232 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
16233 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
16234 ID3D12Device5 * This,
16235 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
16236 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
16237
16238 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
16239 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
16240 ID3D12Device5 * This,
16241 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
16242 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
16243
16244 END_INTERFACE
16245 } ID3D12Device5Vtbl;
16246
16247 interface ID3D12Device5
16248 {
16249 CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl;
16250 };
16251
16252
16253
16254#ifdef COBJMACROS
16255
16256
16257#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \
16258 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16259
16260#define ID3D12Device5_AddRef(This) \
16261 ( (This)->lpVtbl -> AddRef(This) )
16262
16263#define ID3D12Device5_Release(This) \
16264 ( (This)->lpVtbl -> Release(This) )
16265
16266
16267#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \
16268 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
16269
16270#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \
16271 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
16272
16273#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \
16274 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
16275
16276#define ID3D12Device5_SetName(This,Name) \
16277 ( (This)->lpVtbl -> SetName(This,Name) )
16278
16279
16280#define ID3D12Device5_GetNodeCount(This) \
16281 ( (This)->lpVtbl -> GetNodeCount(This) )
16282
16283#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
16284 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
16285
16286#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
16287 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
16288
16289#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
16290 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
16291
16292#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
16293 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
16294
16295#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
16296 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
16297
16298#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
16299 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
16300
16301#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
16302 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
16303
16304#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
16305 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
16306
16307#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
16308 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
16309
16310#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \
16311 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
16312
16313#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
16314 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
16315
16316#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
16317 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
16318
16319#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
16320 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
16321
16322#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
16323 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
16324
16325#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \
16326 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
16327
16328#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
16329 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
16330
16331#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
16332 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
16333#if !defined(_WIN32)
16334
16335#define ID3D12Device5_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
16336 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
16337#else
16338#define ID3D12Device5_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
16339 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
16340#endif
16341#if !defined(_WIN32)
16342
16343#define ID3D12Device5_GetCustomHeapProperties(This,nodeMask,heapType) \
16344 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
16345#else
16346#define ID3D12Device5_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
16347 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
16348#endif
16349
16350#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
16351 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
16352
16353#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \
16354 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
16355
16356#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16357 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16358
16359#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16360 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16361
16362#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
16363 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
16364
16365#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
16366 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
16367
16368#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
16369 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
16370
16371#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \
16372 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
16373
16374#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \
16375 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
16376
16377#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \
16378 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
16379
16380#define ID3D12Device5_GetDeviceRemovedReason(This) \
16381 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
16382
16383#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
16384 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
16385
16386#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
16387 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
16388
16389#define ID3D12Device5_SetStablePowerState(This,Enable) \
16390 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
16391
16392#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
16393 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
16394
16395#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
16396 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
16397#if !defined(_WIN32)
16398
16399#define ID3D12Device5_GetAdapterLuid(This) \
16400 ( (This)->lpVtbl -> GetAdapterLuid(This) )
16401#else
16402#define ID3D12Device5_GetAdapterLuid(This,RetVal) \
16403 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
16404#endif
16405
16406
16407#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
16408 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
16409
16410#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
16411 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
16412
16413#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
16414 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
16415
16416
16417#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
16418 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
16419
16420
16421#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
16422 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
16423
16424#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
16425 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
16426
16427#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
16428 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
16429
16430
16431#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
16432 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
16433
16434#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
16435 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
16436
16437#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
16438 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
16439
16440#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
16441 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
16442
16443#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
16444 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
16445#if !defined(_WIN32)
16446
16447#define ID3D12Device5_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16448 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16449#else
16450#define ID3D12Device5_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16451 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16452#endif
16453
16454
16455#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
16456 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
16457
16458#define ID3D12Device5_RemoveDevice(This) \
16459 ( (This)->lpVtbl -> RemoveDevice(This) )
16460
16461#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
16462 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
16463
16464#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
16465 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
16466
16467#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
16468 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
16469
16470#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \
16471 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
16472
16473#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
16474 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
16475
16476#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
16477 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
16478
16479#endif /* COBJMACROS */
16480
16481
16482#endif /* C style interface */
16483
16484
16485
16486
16487#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
16488
16489
16490/* interface __MIDL_itf_d3d12_0000_0040 */
16491/* [local] */
16492
16493typedef
16494enum D3D12_MARKER_API
16495 {
16496 D3D12_MARKER_API_SETMARKER = 0,
16497 D3D12_MARKER_API_BEGINEVENT = 1,
16498 D3D12_MARKER_API_ENDEVENT = 2,
16499 D3D12_MARKER_API_DRAWINSTANCED = 3,
16500 D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
16501 D3D12_MARKER_API_EXECUTEINDIRECT = 5,
16502 D3D12_MARKER_API_DISPATCH = 6,
16503 D3D12_MARKER_API_COPYBUFFERREGION = 7,
16504 D3D12_MARKER_API_COPYTEXTUREREGION = 8,
16505 D3D12_MARKER_API_COPYRESOURCE = 9,
16506 D3D12_MARKER_API_COPYTILES = 10,
16507 D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
16508 D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
16509 D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
16510 D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
16511 D3D12_MARKER_API_RESOURCEBARRIER = 15,
16512 D3D12_MARKER_API_EXECUTEBUNDLE = 16,
16513 D3D12_MARKER_API_PRESENT = 17,
16514 D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
16515 D3D12_MARKER_API_BEGINSUBMISSION = 19,
16516 D3D12_MARKER_API_ENDSUBMISSION = 20,
16517 D3D12_MARKER_API_DECODEFRAME = 21,
16518 D3D12_MARKER_API_PROCESSFRAMES = 22,
16519 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
16520 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
16521 D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
16522 D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
16523 D3D12_MARKER_API_DECODEFRAME1 = 27,
16524 D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
16525 D3D12_MARKER_API_DECODEFRAME2 = 29,
16526 D3D12_MARKER_API_PROCESSFRAMES1 = 30,
16527 D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
16528 D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
16529 D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
16530 D3D12_MARKER_API_DISPATCHRAYS = 34,
16531 D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
16532 D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
16533 D3D12_MARKER_API_ESTIMATEMOTION = 37,
16534 D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
16535 D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
16536 D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
16537 D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
16538 D3D12_MARKER_API_DISPATCHMESH = 42,
16539 D3D12_MARKER_API_ENCODEFRAME = 43,
16540 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
16541 D3D12_MARKER_API_BARRIER = 45,
16542 D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
16543 D3D12_MARKER_API_DISPATCHGRAPH = 47,
16544 D3D12_MARKER_API_SETPROGRAM = 48,
16545 D3D12_MARKER_API_ENCODEFRAME1 = 49,
16546 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
16547 D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
16548 D3D12_MARKER_API_PROCESSFRAMES2 = 52,
16549 D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53
16550 } D3D12_MARKER_API;
16551
16552typedef
16553enum D3D12_AUTO_BREADCRUMB_OP
16554 {
16555 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
16556 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
16557 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
16558 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
16559 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
16560 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
16561 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
16562 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
16563 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
16564 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
16565 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
16566 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
16567 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
16568 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
16569 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
16570 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
16571 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
16572 D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
16573 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
16574 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
16575 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
16576 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
16577 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
16578 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
16579 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
16580 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
16581 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
16582 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
16583 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
16584 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
16585 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
16586 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
16587 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
16588 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
16589 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
16590 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
16591 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
16592 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
16593 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
16594 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
16595 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
16596 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
16597 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
16598 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
16599 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
16600 D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
16601 D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
16602 D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
16603 D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
16604 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
16605 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
16606 D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
16607 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
16608 D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS
16609 } D3D12_AUTO_BREADCRUMB_OP;
16610
16611typedef struct D3D12_AUTO_BREADCRUMB_NODE
16612 {
16613 const char *pCommandListDebugNameA;
16614 const wchar_t *pCommandListDebugNameW;
16615 const char *pCommandQueueDebugNameA;
16616 const wchar_t *pCommandQueueDebugNameW;
16617 ID3D12GraphicsCommandList *pCommandList;
16618 ID3D12CommandQueue *pCommandQueue;
16619 UINT32 BreadcrumbCount;
16620 const UINT32 *pLastBreadcrumbValue;
16621 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
16622 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
16623 } D3D12_AUTO_BREADCRUMB_NODE;
16624
16625typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
16626 {
16627 UINT BreadcrumbIndex;
16628 const wchar_t *pContextString;
16629 } D3D12_DRED_BREADCRUMB_CONTEXT;
16630
16631typedef struct D3D12_AUTO_BREADCRUMB_NODE1
16632 {
16633 const char *pCommandListDebugNameA;
16634 const wchar_t *pCommandListDebugNameW;
16635 const char *pCommandQueueDebugNameA;
16636 const wchar_t *pCommandQueueDebugNameW;
16637 ID3D12GraphicsCommandList *pCommandList;
16638 ID3D12CommandQueue *pCommandQueue;
16639 UINT BreadcrumbCount;
16640 const UINT *pLastBreadcrumbValue;
16641 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
16642 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
16643 UINT BreadcrumbContextsCount;
16644 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
16645 } D3D12_AUTO_BREADCRUMB_NODE1;
16646
16647typedef
16648enum D3D12_DRED_VERSION
16649 {
16650 D3D12_DRED_VERSION_1_0 = 0x1,
16651 D3D12_DRED_VERSION_1_1 = 0x2,
16652 D3D12_DRED_VERSION_1_2 = 0x3,
16653 D3D12_DRED_VERSION_1_3 = 0x4
16654 } D3D12_DRED_VERSION;
16655
16656typedef
16657enum D3D12_DRED_FLAGS
16658 {
16659 D3D12_DRED_FLAG_NONE = 0,
16660 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
16661 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
16662 } D3D12_DRED_FLAGS;
16663
16664DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )
16665typedef
16666enum D3D12_DRED_ENABLEMENT
16667 {
16668 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
16669 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
16670 D3D12_DRED_ENABLEMENT_FORCED_ON = 2
16671 } D3D12_DRED_ENABLEMENT;
16672
16673typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
16674 {
16675 _In_ D3D12_DRED_FLAGS Flags;
16676 _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
16677 } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
16678
16679typedef
16680enum D3D12_DRED_ALLOCATION_TYPE
16681 {
16682 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
16683 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
16684 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
16685 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
16686 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
16687 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
16688 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
16689 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
16690 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
16691 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
16692 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
16693 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
16694 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
16695 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
16696 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
16697 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
16698 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
16699 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
16700 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
16701 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
16702 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
16703 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
16704 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
16705 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
16706 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
16707 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
16708 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
16709 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
16710 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
16711 } D3D12_DRED_ALLOCATION_TYPE;
16712
16713typedef struct D3D12_DRED_ALLOCATION_NODE
16714 {
16715 const char *ObjectNameA;
16716 const wchar_t *ObjectNameW;
16717 D3D12_DRED_ALLOCATION_TYPE AllocationType;
16718 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
16719 } D3D12_DRED_ALLOCATION_NODE;
16720
16721typedef struct D3D12_DRED_ALLOCATION_NODE1
16722 {
16723 const char *ObjectNameA;
16724 const wchar_t *ObjectNameW;
16725 D3D12_DRED_ALLOCATION_TYPE AllocationType;
16726 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
16727 const IUnknown *pObject;
16728 } D3D12_DRED_ALLOCATION_NODE1;
16729
16730typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
16731 {
16732 _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
16733 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
16734
16735typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
16736 {
16737 _Out_ const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
16738 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
16739
16740typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
16741 {
16742 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16743 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
16744 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
16745 } D3D12_DRED_PAGE_FAULT_OUTPUT;
16746
16747typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
16748 {
16749 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16750 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
16751 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
16752 } D3D12_DRED_PAGE_FAULT_OUTPUT1;
16753
16754typedef
16755enum D3D12_DRED_PAGE_FAULT_FLAGS
16756 {
16757 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
16758 } D3D12_DRED_PAGE_FAULT_FLAGS;
16759
16760DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )
16761typedef
16762enum D3D12_DRED_DEVICE_STATE
16763 {
16764 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0,
16765 D3D12_DRED_DEVICE_STATE_HUNG = 3,
16766 D3D12_DRED_DEVICE_STATE_FAULT = 6,
16767 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7
16768 } D3D12_DRED_DEVICE_STATE;
16769
16770typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
16771 {
16772 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16773 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
16774 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
16775 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
16776 } D3D12_DRED_PAGE_FAULT_OUTPUT2;
16777
16778typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
16779 {
16780 HRESULT DeviceRemovedReason;
16781 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
16782 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
16783 } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
16784
16785typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
16786 {
16787 HRESULT DeviceRemovedReason;
16788 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
16789 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
16790 } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
16791
16792typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
16793 {
16794 HRESULT DeviceRemovedReason;
16795 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
16796 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
16797 D3D12_DRED_DEVICE_STATE DeviceState;
16798 } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
16799
16800typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
16801 {
16802 D3D12_DRED_VERSION Version;
16803 union
16804 {
16805 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
16806 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
16807 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
16808 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
16809 } ;
16810 } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
16811
16812
16813
16814extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
16815extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
16816
16817#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
16818#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
16819
16820/* interface ID3D12DeviceRemovedExtendedDataSettings */
16821/* [unique][local][object][uuid] */
16822
16823
16824EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings;
16825
16826#if defined(__cplusplus) && !defined(CINTERFACE)
16827
16828 MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")
16829 ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
16830 {
16831 public:
16832 virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
16833 D3D12_DRED_ENABLEMENT Enablement) = 0;
16834
16835 virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
16836 D3D12_DRED_ENABLEMENT Enablement) = 0;
16837
16838 virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
16839 D3D12_DRED_ENABLEMENT Enablement) = 0;
16840
16841 };
16842
16843
16844#else /* C style interface */
16845
16846 typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl
16847 {
16848 BEGIN_INTERFACE
16849
16850 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16851 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16852 ID3D12DeviceRemovedExtendedDataSettings * This,
16853 REFIID riid,
16854 _COM_Outptr_ void **ppvObject);
16855
16856 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16857 ULONG ( STDMETHODCALLTYPE *AddRef )(
16858 ID3D12DeviceRemovedExtendedDataSettings * This);
16859
16860 DECLSPEC_XFGVIRT(IUnknown, Release)
16861 ULONG ( STDMETHODCALLTYPE *Release )(
16862 ID3D12DeviceRemovedExtendedDataSettings * This);
16863
16864 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
16865 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
16866 ID3D12DeviceRemovedExtendedDataSettings * This,
16867 D3D12_DRED_ENABLEMENT Enablement);
16868
16869 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
16870 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
16871 ID3D12DeviceRemovedExtendedDataSettings * This,
16872 D3D12_DRED_ENABLEMENT Enablement);
16873
16874 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
16875 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
16876 ID3D12DeviceRemovedExtendedDataSettings * This,
16877 D3D12_DRED_ENABLEMENT Enablement);
16878
16879 END_INTERFACE
16880 } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
16881
16882 interface ID3D12DeviceRemovedExtendedDataSettings
16883 {
16884 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl;
16885 };
16886
16887
16888
16889#ifdef COBJMACROS
16890
16891
16892#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \
16893 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16894
16895#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \
16896 ( (This)->lpVtbl -> AddRef(This) )
16897
16898#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \
16899 ( (This)->lpVtbl -> Release(This) )
16900
16901
16902#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement) \
16903 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
16904
16905#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement) \
16906 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
16907
16908#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement) \
16909 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
16910
16911#endif /* COBJMACROS */
16912
16913
16914#endif /* C style interface */
16915
16916
16917
16918
16919#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
16920
16921
16922#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
16923#define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
16924
16925/* interface ID3D12DeviceRemovedExtendedDataSettings1 */
16926/* [unique][local][object][uuid] */
16927
16928
16929EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings1;
16930
16931#if defined(__cplusplus) && !defined(CINTERFACE)
16932
16933 MIDL_INTERFACE("DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B")
16934 ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
16935 {
16936 public:
16937 virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
16938 D3D12_DRED_ENABLEMENT Enablement) = 0;
16939
16940 };
16941
16942
16943#else /* C style interface */
16944
16945 typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl
16946 {
16947 BEGIN_INTERFACE
16948
16949 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16950 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16951 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16952 REFIID riid,
16953 _COM_Outptr_ void **ppvObject);
16954
16955 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16956 ULONG ( STDMETHODCALLTYPE *AddRef )(
16957 ID3D12DeviceRemovedExtendedDataSettings1 * This);
16958
16959 DECLSPEC_XFGVIRT(IUnknown, Release)
16960 ULONG ( STDMETHODCALLTYPE *Release )(
16961 ID3D12DeviceRemovedExtendedDataSettings1 * This);
16962
16963 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
16964 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
16965 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16966 D3D12_DRED_ENABLEMENT Enablement);
16967
16968 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
16969 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
16970 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16971 D3D12_DRED_ENABLEMENT Enablement);
16972
16973 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
16974 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
16975 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16976 D3D12_DRED_ENABLEMENT Enablement);
16977
16978 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
16979 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
16980 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16981 D3D12_DRED_ENABLEMENT Enablement);
16982
16983 END_INTERFACE
16984 } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
16985
16986 interface ID3D12DeviceRemovedExtendedDataSettings1
16987 {
16988 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl *lpVtbl;
16989 };
16990
16991
16992
16993#ifdef COBJMACROS
16994
16995
16996#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) \
16997 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16998
16999#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) \
17000 ( (This)->lpVtbl -> AddRef(This) )
17001
17002#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) \
17003 ( (This)->lpVtbl -> Release(This) )
17004
17005
17006#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement) \
17007 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
17008
17009#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement) \
17010 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
17011
17012#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement) \
17013 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
17014
17015
17016#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement) \
17017 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
17018
17019#endif /* COBJMACROS */
17020
17021
17022#endif /* C style interface */
17023
17024
17025
17026
17027#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
17028
17029
17030#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
17031#define __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
17032
17033/* interface ID3D12DeviceRemovedExtendedDataSettings2 */
17034/* [unique][local][object][uuid] */
17035
17036
17037EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings2;
17038
17039#if defined(__cplusplus) && !defined(CINTERFACE)
17040
17041 MIDL_INTERFACE("61552388-01ab-4008-a436-83db189566ea")
17042 ID3D12DeviceRemovedExtendedDataSettings2 : public ID3D12DeviceRemovedExtendedDataSettings1
17043 {
17044 public:
17045 virtual void STDMETHODCALLTYPE UseMarkersOnlyAutoBreadcrumbs(
17046 BOOL MarkersOnly) = 0;
17047
17048 };
17049
17050
17051#else /* C style interface */
17052
17053 typedef struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl
17054 {
17055 BEGIN_INTERFACE
17056
17057 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17058 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17059 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17060 REFIID riid,
17061 _COM_Outptr_ void **ppvObject);
17062
17063 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17064 ULONG ( STDMETHODCALLTYPE *AddRef )(
17065 ID3D12DeviceRemovedExtendedDataSettings2 * This);
17066
17067 DECLSPEC_XFGVIRT(IUnknown, Release)
17068 ULONG ( STDMETHODCALLTYPE *Release )(
17069 ID3D12DeviceRemovedExtendedDataSettings2 * This);
17070
17071 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
17072 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
17073 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17074 D3D12_DRED_ENABLEMENT Enablement);
17075
17076 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
17077 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
17078 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17079 D3D12_DRED_ENABLEMENT Enablement);
17080
17081 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
17082 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
17083 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17084 D3D12_DRED_ENABLEMENT Enablement);
17085
17086 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
17087 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
17088 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17089 D3D12_DRED_ENABLEMENT Enablement);
17090
17091 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings2, UseMarkersOnlyAutoBreadcrumbs)
17092 void ( STDMETHODCALLTYPE *UseMarkersOnlyAutoBreadcrumbs )(
17093 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17094 BOOL MarkersOnly);
17095
17096 END_INTERFACE
17097 } ID3D12DeviceRemovedExtendedDataSettings2Vtbl;
17098
17099 interface ID3D12DeviceRemovedExtendedDataSettings2
17100 {
17101 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl *lpVtbl;
17102 };
17103
17104
17105
17106#ifdef COBJMACROS
17107
17108
17109#define ID3D12DeviceRemovedExtendedDataSettings2_QueryInterface(This,riid,ppvObject) \
17110 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17111
17112#define ID3D12DeviceRemovedExtendedDataSettings2_AddRef(This) \
17113 ( (This)->lpVtbl -> AddRef(This) )
17114
17115#define ID3D12DeviceRemovedExtendedDataSettings2_Release(This) \
17116 ( (This)->lpVtbl -> Release(This) )
17117
17118
17119#define ID3D12DeviceRemovedExtendedDataSettings2_SetAutoBreadcrumbsEnablement(This,Enablement) \
17120 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
17121
17122#define ID3D12DeviceRemovedExtendedDataSettings2_SetPageFaultEnablement(This,Enablement) \
17123 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
17124
17125#define ID3D12DeviceRemovedExtendedDataSettings2_SetWatsonDumpEnablement(This,Enablement) \
17126 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
17127
17128
17129#define ID3D12DeviceRemovedExtendedDataSettings2_SetBreadcrumbContextEnablement(This,Enablement) \
17130 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
17131
17132
17133#define ID3D12DeviceRemovedExtendedDataSettings2_UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) \
17134 ( (This)->lpVtbl -> UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) )
17135
17136#endif /* COBJMACROS */
17137
17138
17139#endif /* C style interface */
17140
17141
17142
17143
17144#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__ */
17145
17146
17147#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
17148#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
17149
17150/* interface ID3D12DeviceRemovedExtendedData */
17151/* [unique][local][object][uuid] */
17152
17153
17154EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData;
17155
17156#if defined(__cplusplus) && !defined(CINTERFACE)
17157
17158 MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71")
17159 ID3D12DeviceRemovedExtendedData : public IUnknown
17160 {
17161 public:
17162 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
17163 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0;
17164
17165 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
17166 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0;
17167
17168 };
17169
17170
17171#else /* C style interface */
17172
17173 typedef struct ID3D12DeviceRemovedExtendedDataVtbl
17174 {
17175 BEGIN_INTERFACE
17176
17177 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17178 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17179 ID3D12DeviceRemovedExtendedData * This,
17180 REFIID riid,
17181 _COM_Outptr_ void **ppvObject);
17182
17183 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17184 ULONG ( STDMETHODCALLTYPE *AddRef )(
17185 ID3D12DeviceRemovedExtendedData * This);
17186
17187 DECLSPEC_XFGVIRT(IUnknown, Release)
17188 ULONG ( STDMETHODCALLTYPE *Release )(
17189 ID3D12DeviceRemovedExtendedData * This);
17190
17191 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17192 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17193 ID3D12DeviceRemovedExtendedData * This,
17194 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17195
17196 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17197 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17198 ID3D12DeviceRemovedExtendedData * This,
17199 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17200
17201 END_INTERFACE
17202 } ID3D12DeviceRemovedExtendedDataVtbl;
17203
17204 interface ID3D12DeviceRemovedExtendedData
17205 {
17206 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl;
17207 };
17208
17209
17210
17211#ifdef COBJMACROS
17212
17213
17214#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \
17215 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17216
17217#define ID3D12DeviceRemovedExtendedData_AddRef(This) \
17218 ( (This)->lpVtbl -> AddRef(This) )
17219
17220#define ID3D12DeviceRemovedExtendedData_Release(This) \
17221 ( (This)->lpVtbl -> Release(This) )
17222
17223
17224#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \
17225 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17226
17227#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \
17228 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17229
17230#endif /* COBJMACROS */
17231
17232
17233#endif /* C style interface */
17234
17235
17236
17237
17238#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
17239
17240
17241#ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
17242#define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
17243
17244/* interface ID3D12DeviceRemovedExtendedData1 */
17245/* [unique][local][object][uuid] */
17246
17247
17248EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData1;
17249
17250#if defined(__cplusplus) && !defined(CINTERFACE)
17251
17252 MIDL_INTERFACE("9727A022-CF1D-4DDA-9EBA-EFFA653FC506")
17253 ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
17254 {
17255 public:
17256 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
17257 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput) = 0;
17258
17259 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
17260 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput) = 0;
17261
17262 };
17263
17264
17265#else /* C style interface */
17266
17267 typedef struct ID3D12DeviceRemovedExtendedData1Vtbl
17268 {
17269 BEGIN_INTERFACE
17270
17271 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17272 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17273 ID3D12DeviceRemovedExtendedData1 * This,
17274 REFIID riid,
17275 _COM_Outptr_ void **ppvObject);
17276
17277 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17278 ULONG ( STDMETHODCALLTYPE *AddRef )(
17279 ID3D12DeviceRemovedExtendedData1 * This);
17280
17281 DECLSPEC_XFGVIRT(IUnknown, Release)
17282 ULONG ( STDMETHODCALLTYPE *Release )(
17283 ID3D12DeviceRemovedExtendedData1 * This);
17284
17285 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17286 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17287 ID3D12DeviceRemovedExtendedData1 * This,
17288 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17289
17290 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17291 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17292 ID3D12DeviceRemovedExtendedData1 * This,
17293 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17294
17295 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
17296 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
17297 ID3D12DeviceRemovedExtendedData1 * This,
17298 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
17299
17300 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
17301 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
17302 ID3D12DeviceRemovedExtendedData1 * This,
17303 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
17304
17305 END_INTERFACE
17306 } ID3D12DeviceRemovedExtendedData1Vtbl;
17307
17308 interface ID3D12DeviceRemovedExtendedData1
17309 {
17310 CONST_VTBL struct ID3D12DeviceRemovedExtendedData1Vtbl *lpVtbl;
17311 };
17312
17313
17314
17315#ifdef COBJMACROS
17316
17317
17318#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) \
17319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17320
17321#define ID3D12DeviceRemovedExtendedData1_AddRef(This) \
17322 ( (This)->lpVtbl -> AddRef(This) )
17323
17324#define ID3D12DeviceRemovedExtendedData1_Release(This) \
17325 ( (This)->lpVtbl -> Release(This) )
17326
17327
17328#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput) \
17329 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17330
17331#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput) \
17332 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17333
17334
17335#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput) \
17336 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
17337
17338#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput) \
17339 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
17340
17341#endif /* COBJMACROS */
17342
17343
17344#endif /* C style interface */
17345
17346
17347
17348
17349#endif /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
17350
17351
17352#ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
17353#define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
17354
17355/* interface ID3D12DeviceRemovedExtendedData2 */
17356/* [unique][local][object][uuid] */
17357
17358
17359EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
17360
17361#if defined(__cplusplus) && !defined(CINTERFACE)
17362
17363 MIDL_INTERFACE("67FC5816-E4CA-4915-BF18-42541272DA54")
17364 ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
17365 {
17366 public:
17367 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
17368 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput) = 0;
17369
17370 virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState( void) = 0;
17371
17372 };
17373
17374
17375#else /* C style interface */
17376
17377 typedef struct ID3D12DeviceRemovedExtendedData2Vtbl
17378 {
17379 BEGIN_INTERFACE
17380
17381 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17382 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17383 ID3D12DeviceRemovedExtendedData2 * This,
17384 REFIID riid,
17385 _COM_Outptr_ void **ppvObject);
17386
17387 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17388 ULONG ( STDMETHODCALLTYPE *AddRef )(
17389 ID3D12DeviceRemovedExtendedData2 * This);
17390
17391 DECLSPEC_XFGVIRT(IUnknown, Release)
17392 ULONG ( STDMETHODCALLTYPE *Release )(
17393 ID3D12DeviceRemovedExtendedData2 * This);
17394
17395 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17396 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17397 ID3D12DeviceRemovedExtendedData2 * This,
17398 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17399
17400 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17401 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17402 ID3D12DeviceRemovedExtendedData2 * This,
17403 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17404
17405 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
17406 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
17407 ID3D12DeviceRemovedExtendedData2 * This,
17408 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
17409
17410 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
17411 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
17412 ID3D12DeviceRemovedExtendedData2 * This,
17413 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
17414
17415 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetPageFaultAllocationOutput2)
17416 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput2 )(
17417 ID3D12DeviceRemovedExtendedData2 * This,
17418 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
17419
17420 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetDeviceState)
17421 D3D12_DRED_DEVICE_STATE ( STDMETHODCALLTYPE *GetDeviceState )(
17422 ID3D12DeviceRemovedExtendedData2 * This);
17423
17424 END_INTERFACE
17425 } ID3D12DeviceRemovedExtendedData2Vtbl;
17426
17427 interface ID3D12DeviceRemovedExtendedData2
17428 {
17429 CONST_VTBL struct ID3D12DeviceRemovedExtendedData2Vtbl *lpVtbl;
17430 };
17431
17432
17433
17434#ifdef COBJMACROS
17435
17436
17437#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) \
17438 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17439
17440#define ID3D12DeviceRemovedExtendedData2_AddRef(This) \
17441 ( (This)->lpVtbl -> AddRef(This) )
17442
17443#define ID3D12DeviceRemovedExtendedData2_Release(This) \
17444 ( (This)->lpVtbl -> Release(This) )
17445
17446
17447#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput) \
17448 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17449
17450#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput) \
17451 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17452
17453
17454#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput) \
17455 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
17456
17457#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput) \
17458 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
17459
17460
17461#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput) \
17462 ( (This)->lpVtbl -> GetPageFaultAllocationOutput2(This,pOutput) )
17463
17464#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) \
17465 ( (This)->lpVtbl -> GetDeviceState(This) )
17466
17467#endif /* COBJMACROS */
17468
17469
17470#endif /* C style interface */
17471
17472
17473
17474
17475#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
17476
17477
17478/* interface __MIDL_itf_d3d12_0000_0046 */
17479/* [local] */
17480
17481typedef
17482enum D3D12_BACKGROUND_PROCESSING_MODE
17483 {
17484 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0,
17485 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
17486 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
17487 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
17488 } D3D12_BACKGROUND_PROCESSING_MODE;
17489
17490typedef
17491enum D3D12_MEASUREMENTS_ACTION
17492 {
17493 D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0,
17494 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
17495 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
17496 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
17497 } D3D12_MEASUREMENTS_ACTION;
17498
17499
17500
17501extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_c_ifspec;
17502extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_s_ifspec;
17503
17504#ifndef __ID3D12Device6_INTERFACE_DEFINED__
17505#define __ID3D12Device6_INTERFACE_DEFINED__
17506
17507/* interface ID3D12Device6 */
17508/* [unique][local][object][uuid] */
17509
17510
17511EXTERN_C const IID IID_ID3D12Device6;
17512
17513#if defined(__cplusplus) && !defined(CINTERFACE)
17514
17515 MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
17516 ID3D12Device6 : public ID3D12Device5
17517 {
17518 public:
17519 virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
17520 D3D12_BACKGROUND_PROCESSING_MODE Mode,
17521 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
17522 _In_opt_ HANDLE hEventToSignalUponCompletion,
17523 _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0;
17524
17525 };
17526
17527
17528#else /* C style interface */
17529
17530 typedef struct ID3D12Device6Vtbl
17531 {
17532 BEGIN_INTERFACE
17533
17534 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17535 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17536 ID3D12Device6 * This,
17537 REFIID riid,
17538 _COM_Outptr_ void **ppvObject);
17539
17540 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17541 ULONG ( STDMETHODCALLTYPE *AddRef )(
17542 ID3D12Device6 * This);
17543
17544 DECLSPEC_XFGVIRT(IUnknown, Release)
17545 ULONG ( STDMETHODCALLTYPE *Release )(
17546 ID3D12Device6 * This);
17547
17548 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17549 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17550 ID3D12Device6 * This,
17551 _In_ REFGUID guid,
17552 _Inout_ UINT *pDataSize,
17553 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17554
17555 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17556 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17557 ID3D12Device6 * This,
17558 _In_ REFGUID guid,
17559 _In_ UINT DataSize,
17560 _In_reads_bytes_opt_( DataSize ) const void *pData);
17561
17562 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17563 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17564 ID3D12Device6 * This,
17565 _In_ REFGUID guid,
17566 _In_opt_ const IUnknown *pData);
17567
17568 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17569 HRESULT ( STDMETHODCALLTYPE *SetName )(
17570 ID3D12Device6 * This,
17571 _In_z_ LPCWSTR Name);
17572
17573 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
17574 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
17575 ID3D12Device6 * This);
17576
17577 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
17578 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
17579 ID3D12Device6 * This,
17580 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
17581 REFIID riid,
17582 _COM_Outptr_ void **ppCommandQueue);
17583
17584 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
17585 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
17586 ID3D12Device6 * This,
17587 _In_ D3D12_COMMAND_LIST_TYPE type,
17588 REFIID riid,
17589 _COM_Outptr_ void **ppCommandAllocator);
17590
17591 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
17592 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
17593 ID3D12Device6 * This,
17594 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
17595 REFIID riid,
17596 _COM_Outptr_ void **ppPipelineState);
17597
17598 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
17599 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
17600 ID3D12Device6 * This,
17601 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
17602 REFIID riid,
17603 _COM_Outptr_ void **ppPipelineState);
17604
17605 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
17606 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
17607 ID3D12Device6 * This,
17608 _In_ UINT nodeMask,
17609 _In_ D3D12_COMMAND_LIST_TYPE type,
17610 _In_ ID3D12CommandAllocator *pCommandAllocator,
17611 _In_opt_ ID3D12PipelineState *pInitialState,
17612 REFIID riid,
17613 _COM_Outptr_ void **ppCommandList);
17614
17615 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
17616 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
17617 ID3D12Device6 * This,
17618 D3D12_FEATURE Feature,
17619 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
17620 UINT FeatureSupportDataSize);
17621
17622 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
17623 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
17624 ID3D12Device6 * This,
17625 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
17626 REFIID riid,
17627 _COM_Outptr_ void **ppvHeap);
17628
17629 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
17630 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
17631 ID3D12Device6 * This,
17632 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
17633
17634 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
17635 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
17636 ID3D12Device6 * This,
17637 _In_ UINT nodeMask,
17638 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
17639 _In_ SIZE_T blobLengthInBytes,
17640 REFIID riid,
17641 _COM_Outptr_ void **ppvRootSignature);
17642
17643 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
17644 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
17645 ID3D12Device6 * This,
17646 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
17647 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17648
17649 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
17650 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
17651 ID3D12Device6 * This,
17652 _In_opt_ ID3D12Resource *pResource,
17653 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
17654 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17655
17656 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
17657 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
17658 ID3D12Device6 * This,
17659 _In_opt_ ID3D12Resource *pResource,
17660 _In_opt_ ID3D12Resource *pCounterResource,
17661 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
17662 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17663
17664 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
17665 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
17666 ID3D12Device6 * This,
17667 _In_opt_ ID3D12Resource *pResource,
17668 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
17669 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17670
17671 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
17672 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
17673 ID3D12Device6 * This,
17674 _In_opt_ ID3D12Resource *pResource,
17675 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
17676 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17677
17678 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
17679 void ( STDMETHODCALLTYPE *CreateSampler )(
17680 ID3D12Device6 * This,
17681 _In_ const D3D12_SAMPLER_DESC *pDesc,
17682 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17683
17684 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
17685 void ( STDMETHODCALLTYPE *CopyDescriptors )(
17686 ID3D12Device6 * This,
17687 _In_ UINT NumDestDescriptorRanges,
17688 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
17689 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
17690 _In_ UINT NumSrcDescriptorRanges,
17691 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
17692 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
17693 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
17694
17695 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
17696 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
17697 ID3D12Device6 * This,
17698 _In_ UINT NumDescriptors,
17699 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
17700 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
17701 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
17702
17703 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
17704#if !defined(_WIN32)
17705 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
17706 ID3D12Device6 * This,
17707 _In_ UINT visibleMask,
17708 _In_ UINT numResourceDescs,
17709 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
17710
17711#else
17712 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
17713 ID3D12Device6 * This,
17714 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17715 _In_ UINT visibleMask,
17716 _In_ UINT numResourceDescs,
17717 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
17718
17719#endif
17720
17721 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
17722#if !defined(_WIN32)
17723 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
17724 ID3D12Device6 * This,
17725 _In_ UINT nodeMask,
17726 D3D12_HEAP_TYPE heapType);
17727
17728#else
17729 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
17730 ID3D12Device6 * This,
17731 D3D12_HEAP_PROPERTIES * RetVal,
17732 _In_ UINT nodeMask,
17733 D3D12_HEAP_TYPE heapType);
17734
17735#endif
17736
17737 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
17738 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
17739 ID3D12Device6 * This,
17740 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17741 D3D12_HEAP_FLAGS HeapFlags,
17742 _In_ const D3D12_RESOURCE_DESC *pDesc,
17743 D3D12_RESOURCE_STATES InitialResourceState,
17744 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17745 REFIID riidResource,
17746 _COM_Outptr_opt_ void **ppvResource);
17747
17748 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
17749 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
17750 ID3D12Device6 * This,
17751 _In_ const D3D12_HEAP_DESC *pDesc,
17752 REFIID riid,
17753 _COM_Outptr_opt_ void **ppvHeap);
17754
17755 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
17756 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
17757 ID3D12Device6 * This,
17758 _In_ ID3D12Heap *pHeap,
17759 UINT64 HeapOffset,
17760 _In_ const D3D12_RESOURCE_DESC *pDesc,
17761 D3D12_RESOURCE_STATES InitialState,
17762 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17763 REFIID riid,
17764 _COM_Outptr_opt_ void **ppvResource);
17765
17766 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
17767 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
17768 ID3D12Device6 * This,
17769 _In_ const D3D12_RESOURCE_DESC *pDesc,
17770 D3D12_RESOURCE_STATES InitialState,
17771 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17772 REFIID riid,
17773 _COM_Outptr_opt_ void **ppvResource);
17774
17775 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
17776 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
17777 ID3D12Device6 * This,
17778 _In_ ID3D12DeviceChild *pObject,
17779 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
17780 DWORD Access,
17781 _In_opt_ LPCWSTR Name,
17782 _Out_ HANDLE *pHandle);
17783
17784 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
17785 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
17786 ID3D12Device6 * This,
17787 _In_ HANDLE NTHandle,
17788 REFIID riid,
17789 _COM_Outptr_opt_ void **ppvObj);
17790
17791 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
17792 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
17793 ID3D12Device6 * This,
17794 _In_ LPCWSTR Name,
17795 DWORD Access,
17796 /* [annotation][out] */
17797 _Out_ HANDLE *pNTHandle);
17798
17799 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
17800 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
17801 ID3D12Device6 * This,
17802 UINT NumObjects,
17803 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
17804
17805 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
17806 HRESULT ( STDMETHODCALLTYPE *Evict )(
17807 ID3D12Device6 * This,
17808 UINT NumObjects,
17809 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
17810
17811 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
17812 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
17813 ID3D12Device6 * This,
17814 UINT64 InitialValue,
17815 D3D12_FENCE_FLAGS Flags,
17816 REFIID riid,
17817 _COM_Outptr_ void **ppFence);
17818
17819 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
17820 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
17821 ID3D12Device6 * This);
17822
17823 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
17824 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
17825 ID3D12Device6 * This,
17826 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
17827 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
17828 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
17829 UINT64 BaseOffset,
17830 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
17831 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
17832 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
17833 _Out_opt_ UINT64 *pTotalBytes);
17834
17835 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
17836 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
17837 ID3D12Device6 * This,
17838 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
17839 REFIID riid,
17840 _COM_Outptr_opt_ void **ppvHeap);
17841
17842 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
17843 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
17844 ID3D12Device6 * This,
17845 BOOL Enable);
17846
17847 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
17848 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
17849 ID3D12Device6 * This,
17850 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
17851 _In_opt_ ID3D12RootSignature *pRootSignature,
17852 REFIID riid,
17853 _COM_Outptr_opt_ void **ppvCommandSignature);
17854
17855 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
17856 void ( STDMETHODCALLTYPE *GetResourceTiling )(
17857 ID3D12Device6 * This,
17858 _In_ ID3D12Resource *pTiledResource,
17859 _Out_opt_ UINT *pNumTilesForEntireResource,
17860 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
17861 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
17862 _Inout_opt_ UINT *pNumSubresourceTilings,
17863 _In_ UINT FirstSubresourceTilingToGet,
17864 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
17865
17866 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
17867#if !defined(_WIN32)
17868 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
17869 ID3D12Device6 * This);
17870
17871#else
17872 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
17873 ID3D12Device6 * This,
17874 LUID * RetVal);
17875
17876#endif
17877
17878 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
17879 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
17880 ID3D12Device6 * This,
17881 _In_reads_(BlobLength) const void *pLibraryBlob,
17882 SIZE_T BlobLength,
17883 REFIID riid,
17884 _COM_Outptr_ void **ppPipelineLibrary);
17885
17886 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
17887 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
17888 ID3D12Device6 * This,
17889 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
17890 _In_reads_(NumFences) const UINT64 *pFenceValues,
17891 UINT NumFences,
17892 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
17893 HANDLE hEvent);
17894
17895 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
17896 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
17897 ID3D12Device6 * This,
17898 UINT NumObjects,
17899 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17900 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
17901
17902 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
17903 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
17904 ID3D12Device6 * This,
17905 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
17906 REFIID riid,
17907 _COM_Outptr_ void **ppPipelineState);
17908
17909 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
17910 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
17911 ID3D12Device6 * This,
17912 _In_ const void *pAddress,
17913 REFIID riid,
17914 _COM_Outptr_ void **ppvHeap);
17915
17916 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
17917 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
17918 ID3D12Device6 * This,
17919 _In_ HANDLE hFileMapping,
17920 REFIID riid,
17921 _COM_Outptr_ void **ppvHeap);
17922
17923 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
17924 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
17925 ID3D12Device6 * This,
17926 D3D12_RESIDENCY_FLAGS Flags,
17927 UINT NumObjects,
17928 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17929 _In_ ID3D12Fence *pFenceToSignal,
17930 UINT64 FenceValueToSignal);
17931
17932 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
17933 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
17934 ID3D12Device6 * This,
17935 _In_ UINT nodeMask,
17936 _In_ D3D12_COMMAND_LIST_TYPE type,
17937 _In_ D3D12_COMMAND_LIST_FLAGS flags,
17938 REFIID riid,
17939 _COM_Outptr_ void **ppCommandList);
17940
17941 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
17942 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
17943 ID3D12Device6 * This,
17944 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
17945 _In_ REFIID riid,
17946 _COM_Outptr_ void **ppSession);
17947
17948 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
17949 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
17950 ID3D12Device6 * This,
17951 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17952 D3D12_HEAP_FLAGS HeapFlags,
17953 _In_ const D3D12_RESOURCE_DESC *pDesc,
17954 D3D12_RESOURCE_STATES InitialResourceState,
17955 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17956 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17957 REFIID riidResource,
17958 _COM_Outptr_opt_ void **ppvResource);
17959
17960 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
17961 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
17962 ID3D12Device6 * This,
17963 _In_ const D3D12_HEAP_DESC *pDesc,
17964 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17965 REFIID riid,
17966 _COM_Outptr_opt_ void **ppvHeap);
17967
17968 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
17969 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
17970 ID3D12Device6 * This,
17971 _In_ const D3D12_RESOURCE_DESC *pDesc,
17972 D3D12_RESOURCE_STATES InitialState,
17973 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17974 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17975 REFIID riid,
17976 _COM_Outptr_opt_ void **ppvResource);
17977
17978 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
17979#if !defined(_WIN32)
17980 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17981 ID3D12Device6 * This,
17982 UINT visibleMask,
17983 UINT numResourceDescs,
17984 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17985 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17986
17987#else
17988 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17989 ID3D12Device6 * This,
17990 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17991 UINT visibleMask,
17992 UINT numResourceDescs,
17993 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17994 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17995
17996#endif
17997
17998 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
17999 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
18000 ID3D12Device6 * This,
18001 _In_ ID3D12LifetimeOwner *pOwner,
18002 REFIID riid,
18003 _COM_Outptr_ void **ppvTracker);
18004
18005 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
18006 void ( STDMETHODCALLTYPE *RemoveDevice )(
18007 ID3D12Device6 * This);
18008
18009 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
18010 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
18011 ID3D12Device6 * This,
18012 _Inout_ UINT *pNumMetaCommands,
18013 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
18014
18015 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
18016 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
18017 ID3D12Device6 * This,
18018 _In_ REFGUID CommandId,
18019 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18020 _Out_opt_ UINT *pTotalStructureSizeInBytes,
18021 _Inout_ UINT *pParameterCount,
18022 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
18023
18024 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
18025 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
18026 ID3D12Device6 * This,
18027 _In_ REFGUID CommandId,
18028 _In_ UINT NodeMask,
18029 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
18030 _In_ SIZE_T CreationParametersDataSizeInBytes,
18031 REFIID riid,
18032 _COM_Outptr_ void **ppMetaCommand);
18033
18034 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
18035 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
18036 ID3D12Device6 * This,
18037 const D3D12_STATE_OBJECT_DESC *pDesc,
18038 REFIID riid,
18039 _COM_Outptr_ void **ppStateObject);
18040
18041 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
18042 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
18043 ID3D12Device6 * This,
18044 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
18045 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
18046
18047 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
18048 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
18049 ID3D12Device6 * This,
18050 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
18051 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
18052
18053 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
18054 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
18055 ID3D12Device6 * This,
18056 D3D12_BACKGROUND_PROCESSING_MODE Mode,
18057 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
18058 _In_opt_ HANDLE hEventToSignalUponCompletion,
18059 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
18060
18061 END_INTERFACE
18062 } ID3D12Device6Vtbl;
18063
18064 interface ID3D12Device6
18065 {
18066 CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl;
18067 };
18068
18069
18070
18071#ifdef COBJMACROS
18072
18073
18074#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \
18075 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18076
18077#define ID3D12Device6_AddRef(This) \
18078 ( (This)->lpVtbl -> AddRef(This) )
18079
18080#define ID3D12Device6_Release(This) \
18081 ( (This)->lpVtbl -> Release(This) )
18082
18083
18084#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \
18085 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18086
18087#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \
18088 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18089
18090#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \
18091 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18092
18093#define ID3D12Device6_SetName(This,Name) \
18094 ( (This)->lpVtbl -> SetName(This,Name) )
18095
18096
18097#define ID3D12Device6_GetNodeCount(This) \
18098 ( (This)->lpVtbl -> GetNodeCount(This) )
18099
18100#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
18101 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
18102
18103#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
18104 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
18105
18106#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
18107 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
18108
18109#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
18110 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
18111
18112#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
18113 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
18114
18115#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
18116 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
18117
18118#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
18119 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
18120
18121#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
18122 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
18123
18124#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
18125 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
18126
18127#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \
18128 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
18129
18130#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
18131 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
18132
18133#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
18134 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
18135
18136#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
18137 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
18138
18139#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
18140 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
18141
18142#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \
18143 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
18144
18145#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
18146 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
18147
18148#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
18149 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
18150#if !defined(_WIN32)
18151
18152#define ID3D12Device6_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
18153 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
18154#else
18155#define ID3D12Device6_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
18156 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
18157#endif
18158#if !defined(_WIN32)
18159
18160#define ID3D12Device6_GetCustomHeapProperties(This,nodeMask,heapType) \
18161 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
18162#else
18163#define ID3D12Device6_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
18164 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
18165#endif
18166
18167#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
18168 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
18169
18170#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \
18171 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
18172
18173#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
18174 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
18175
18176#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
18177 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
18178
18179#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
18180 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
18181
18182#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
18183 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
18184
18185#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
18186 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
18187
18188#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \
18189 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
18190
18191#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \
18192 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
18193
18194#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \
18195 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
18196
18197#define ID3D12Device6_GetDeviceRemovedReason(This) \
18198 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
18199
18200#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
18201 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
18202
18203#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
18204 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
18205
18206#define ID3D12Device6_SetStablePowerState(This,Enable) \
18207 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
18208
18209#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
18210 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
18211
18212#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
18213 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
18214#if !defined(_WIN32)
18215
18216#define ID3D12Device6_GetAdapterLuid(This) \
18217 ( (This)->lpVtbl -> GetAdapterLuid(This) )
18218#else
18219#define ID3D12Device6_GetAdapterLuid(This,RetVal) \
18220 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
18221#endif
18222
18223
18224#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
18225 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
18226
18227#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
18228 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
18229
18230#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
18231 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
18232
18233
18234#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
18235 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
18236
18237
18238#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
18239 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
18240
18241#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
18242 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
18243
18244#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
18245 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
18246
18247
18248#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
18249 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
18250
18251#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
18252 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
18253
18254#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
18255 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
18256
18257#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
18258 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
18259
18260#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
18261 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
18262#if !defined(_WIN32)
18263
18264#define ID3D12Device6_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
18265 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
18266#else
18267#define ID3D12Device6_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
18268 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
18269#endif
18270
18271
18272#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
18273 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
18274
18275#define ID3D12Device6_RemoveDevice(This) \
18276 ( (This)->lpVtbl -> RemoveDevice(This) )
18277
18278#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
18279 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
18280
18281#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
18282 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
18283
18284#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
18285 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
18286
18287#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \
18288 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
18289
18290#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
18291 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
18292
18293#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
18294 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
18295
18296
18297#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
18298 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
18299
18300#endif /* COBJMACROS */
18301
18302
18303#endif /* C style interface */
18304
18305
18306
18307
18308#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
18309
18310
18311/* interface __MIDL_itf_d3d12_0000_0047 */
18312/* [local] */
18313
18314DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
18315typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
18316 {
18317 UINT NodeIndex;
18318 UINT Count;
18319 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
18320
18321typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
18322 {
18323 UINT NodeIndex;
18324 UINT Count;
18325 GUID *pTypes;
18326 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
18327
18328typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
18329 {
18330 UINT NodeMask;
18331 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
18332 GUID ProtectionType;
18333 } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
18334
18335
18336
18337extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_c_ifspec;
18338extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_s_ifspec;
18339
18340#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
18341#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
18342
18343/* interface ID3D12ProtectedResourceSession1 */
18344/* [unique][local][object][uuid] */
18345
18346
18347EXTERN_C const IID IID_ID3D12ProtectedResourceSession1;
18348
18349#if defined(__cplusplus) && !defined(CINTERFACE)
18350
18351 MIDL_INTERFACE("D6F12DD6-76FB-406E-8961-4296EEFC0409")
18352 ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
18353 {
18354 public:
18355#if defined(_MSC_VER) || !defined(_WIN32)
18356 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
18357#else
18358 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *STDMETHODCALLTYPE GetDesc1(
18359 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal) = 0;
18360#endif
18361
18362 };
18363
18364
18365#else /* C style interface */
18366
18367 typedef struct ID3D12ProtectedResourceSession1Vtbl
18368 {
18369 BEGIN_INTERFACE
18370
18371 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18372 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18373 ID3D12ProtectedResourceSession1 * This,
18374 REFIID riid,
18375 _COM_Outptr_ void **ppvObject);
18376
18377 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18378 ULONG ( STDMETHODCALLTYPE *AddRef )(
18379 ID3D12ProtectedResourceSession1 * This);
18380
18381 DECLSPEC_XFGVIRT(IUnknown, Release)
18382 ULONG ( STDMETHODCALLTYPE *Release )(
18383 ID3D12ProtectedResourceSession1 * This);
18384
18385 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18386 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18387 ID3D12ProtectedResourceSession1 * This,
18388 _In_ REFGUID guid,
18389 _Inout_ UINT *pDataSize,
18390 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18391
18392 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18393 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18394 ID3D12ProtectedResourceSession1 * This,
18395 _In_ REFGUID guid,
18396 _In_ UINT DataSize,
18397 _In_reads_bytes_opt_( DataSize ) const void *pData);
18398
18399 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18400 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18401 ID3D12ProtectedResourceSession1 * This,
18402 _In_ REFGUID guid,
18403 _In_opt_ const IUnknown *pData);
18404
18405 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18406 HRESULT ( STDMETHODCALLTYPE *SetName )(
18407 ID3D12ProtectedResourceSession1 * This,
18408 _In_z_ LPCWSTR Name);
18409
18410 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18411 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18412 ID3D12ProtectedResourceSession1 * This,
18413 REFIID riid,
18414 _COM_Outptr_opt_ void **ppvDevice);
18415
18416 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
18417 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
18418 ID3D12ProtectedResourceSession1 * This,
18419 REFIID riid,
18420 _COM_Outptr_opt_ void **ppFence);
18421
18422 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
18423 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
18424 ID3D12ProtectedResourceSession1 * This);
18425
18426 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
18427#if !defined(_WIN32)
18428 D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
18429 ID3D12ProtectedResourceSession1 * This);
18430
18431#else
18432 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
18433 ID3D12ProtectedResourceSession1 * This,
18434 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
18435
18436#endif
18437
18438 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession1, GetDesc1)
18439#if !defined(_WIN32)
18440 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
18441 ID3D12ProtectedResourceSession1 * This);
18442
18443#else
18444 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
18445 ID3D12ProtectedResourceSession1 * This,
18446 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal);
18447
18448#endif
18449
18450 END_INTERFACE
18451 } ID3D12ProtectedResourceSession1Vtbl;
18452
18453 interface ID3D12ProtectedResourceSession1
18454 {
18455 CONST_VTBL struct ID3D12ProtectedResourceSession1Vtbl *lpVtbl;
18456 };
18457
18458
18459
18460#ifdef COBJMACROS
18461
18462
18463#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) \
18464 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18465
18466#define ID3D12ProtectedResourceSession1_AddRef(This) \
18467 ( (This)->lpVtbl -> AddRef(This) )
18468
18469#define ID3D12ProtectedResourceSession1_Release(This) \
18470 ( (This)->lpVtbl -> Release(This) )
18471
18472
18473#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData) \
18474 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18475
18476#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData) \
18477 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18478
18479#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData) \
18480 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18481
18482#define ID3D12ProtectedResourceSession1_SetName(This,Name) \
18483 ( (This)->lpVtbl -> SetName(This,Name) )
18484
18485
18486#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice) \
18487 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18488
18489
18490#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence) \
18491 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
18492
18493#define ID3D12ProtectedResourceSession1_GetSessionStatus(This) \
18494 ( (This)->lpVtbl -> GetSessionStatus(This) )
18495
18496#if !defined(_WIN32)
18497
18498#define ID3D12ProtectedResourceSession1_GetDesc(This) \
18499 ( (This)->lpVtbl -> GetDesc(This) )
18500#else
18501#define ID3D12ProtectedResourceSession1_GetDesc(This,RetVal) \
18502 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
18503#endif
18504
18505#if !defined(_WIN32)
18506
18507#define ID3D12ProtectedResourceSession1_GetDesc1(This) \
18508 ( (This)->lpVtbl -> GetDesc1(This) )
18509#else
18510#define ID3D12ProtectedResourceSession1_GetDesc1(This,RetVal) \
18511 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
18512#endif
18513
18514#endif /* COBJMACROS */
18515
18516
18517#endif /* C style interface */
18518
18519
18520
18521
18522#endif /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
18523
18524
18525#ifndef __ID3D12Device7_INTERFACE_DEFINED__
18526#define __ID3D12Device7_INTERFACE_DEFINED__
18527
18528/* interface ID3D12Device7 */
18529/* [unique][local][object][uuid] */
18530
18531
18532EXTERN_C const IID IID_ID3D12Device7;
18533
18534#if defined(__cplusplus) && !defined(CINTERFACE)
18535
18536 MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
18537 ID3D12Device7 : public ID3D12Device6
18538 {
18539 public:
18540 virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
18541 const D3D12_STATE_OBJECT_DESC *pAddition,
18542 ID3D12StateObject *pStateObjectToGrowFrom,
18543 REFIID riid,
18544 _COM_Outptr_ void **ppNewStateObject) = 0;
18545
18546 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
18547 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
18548 _In_ REFIID riid,
18549 _COM_Outptr_ void **ppSession) = 0;
18550
18551 };
18552
18553
18554#else /* C style interface */
18555
18556 typedef struct ID3D12Device7Vtbl
18557 {
18558 BEGIN_INTERFACE
18559
18560 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18561 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18562 ID3D12Device7 * This,
18563 REFIID riid,
18564 _COM_Outptr_ void **ppvObject);
18565
18566 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18567 ULONG ( STDMETHODCALLTYPE *AddRef )(
18568 ID3D12Device7 * This);
18569
18570 DECLSPEC_XFGVIRT(IUnknown, Release)
18571 ULONG ( STDMETHODCALLTYPE *Release )(
18572 ID3D12Device7 * This);
18573
18574 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18575 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18576 ID3D12Device7 * This,
18577 _In_ REFGUID guid,
18578 _Inout_ UINT *pDataSize,
18579 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18580
18581 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18582 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18583 ID3D12Device7 * This,
18584 _In_ REFGUID guid,
18585 _In_ UINT DataSize,
18586 _In_reads_bytes_opt_( DataSize ) const void *pData);
18587
18588 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18589 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18590 ID3D12Device7 * This,
18591 _In_ REFGUID guid,
18592 _In_opt_ const IUnknown *pData);
18593
18594 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18595 HRESULT ( STDMETHODCALLTYPE *SetName )(
18596 ID3D12Device7 * This,
18597 _In_z_ LPCWSTR Name);
18598
18599 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
18600 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
18601 ID3D12Device7 * This);
18602
18603 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
18604 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
18605 ID3D12Device7 * This,
18606 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
18607 REFIID riid,
18608 _COM_Outptr_ void **ppCommandQueue);
18609
18610 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
18611 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
18612 ID3D12Device7 * This,
18613 _In_ D3D12_COMMAND_LIST_TYPE type,
18614 REFIID riid,
18615 _COM_Outptr_ void **ppCommandAllocator);
18616
18617 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
18618 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
18619 ID3D12Device7 * This,
18620 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
18621 REFIID riid,
18622 _COM_Outptr_ void **ppPipelineState);
18623
18624 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
18625 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
18626 ID3D12Device7 * This,
18627 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
18628 REFIID riid,
18629 _COM_Outptr_ void **ppPipelineState);
18630
18631 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
18632 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
18633 ID3D12Device7 * This,
18634 _In_ UINT nodeMask,
18635 _In_ D3D12_COMMAND_LIST_TYPE type,
18636 _In_ ID3D12CommandAllocator *pCommandAllocator,
18637 _In_opt_ ID3D12PipelineState *pInitialState,
18638 REFIID riid,
18639 _COM_Outptr_ void **ppCommandList);
18640
18641 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
18642 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
18643 ID3D12Device7 * This,
18644 D3D12_FEATURE Feature,
18645 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
18646 UINT FeatureSupportDataSize);
18647
18648 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
18649 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
18650 ID3D12Device7 * This,
18651 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
18652 REFIID riid,
18653 _COM_Outptr_ void **ppvHeap);
18654
18655 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
18656 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
18657 ID3D12Device7 * This,
18658 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
18659
18660 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
18661 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
18662 ID3D12Device7 * This,
18663 _In_ UINT nodeMask,
18664 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
18665 _In_ SIZE_T blobLengthInBytes,
18666 REFIID riid,
18667 _COM_Outptr_ void **ppvRootSignature);
18668
18669 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
18670 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
18671 ID3D12Device7 * This,
18672 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
18673 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18674
18675 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
18676 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
18677 ID3D12Device7 * This,
18678 _In_opt_ ID3D12Resource *pResource,
18679 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
18680 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18681
18682 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
18683 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
18684 ID3D12Device7 * This,
18685 _In_opt_ ID3D12Resource *pResource,
18686 _In_opt_ ID3D12Resource *pCounterResource,
18687 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
18688 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18689
18690 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
18691 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
18692 ID3D12Device7 * This,
18693 _In_opt_ ID3D12Resource *pResource,
18694 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
18695 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18696
18697 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
18698 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
18699 ID3D12Device7 * This,
18700 _In_opt_ ID3D12Resource *pResource,
18701 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
18702 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18703
18704 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
18705 void ( STDMETHODCALLTYPE *CreateSampler )(
18706 ID3D12Device7 * This,
18707 _In_ const D3D12_SAMPLER_DESC *pDesc,
18708 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18709
18710 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
18711 void ( STDMETHODCALLTYPE *CopyDescriptors )(
18712 ID3D12Device7 * This,
18713 _In_ UINT NumDestDescriptorRanges,
18714 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
18715 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
18716 _In_ UINT NumSrcDescriptorRanges,
18717 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
18718 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
18719 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
18720
18721 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
18722 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
18723 ID3D12Device7 * This,
18724 _In_ UINT NumDescriptors,
18725 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
18726 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
18727 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
18728
18729 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
18730#if !defined(_WIN32)
18731 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
18732 ID3D12Device7 * This,
18733 _In_ UINT visibleMask,
18734 _In_ UINT numResourceDescs,
18735 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
18736
18737#else
18738 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
18739 ID3D12Device7 * This,
18740 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
18741 _In_ UINT visibleMask,
18742 _In_ UINT numResourceDescs,
18743 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
18744
18745#endif
18746
18747 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
18748#if !defined(_WIN32)
18749 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
18750 ID3D12Device7 * This,
18751 _In_ UINT nodeMask,
18752 D3D12_HEAP_TYPE heapType);
18753
18754#else
18755 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
18756 ID3D12Device7 * This,
18757 D3D12_HEAP_PROPERTIES * RetVal,
18758 _In_ UINT nodeMask,
18759 D3D12_HEAP_TYPE heapType);
18760
18761#endif
18762
18763 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
18764 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
18765 ID3D12Device7 * This,
18766 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
18767 D3D12_HEAP_FLAGS HeapFlags,
18768 _In_ const D3D12_RESOURCE_DESC *pDesc,
18769 D3D12_RESOURCE_STATES InitialResourceState,
18770 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18771 REFIID riidResource,
18772 _COM_Outptr_opt_ void **ppvResource);
18773
18774 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
18775 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
18776 ID3D12Device7 * This,
18777 _In_ const D3D12_HEAP_DESC *pDesc,
18778 REFIID riid,
18779 _COM_Outptr_opt_ void **ppvHeap);
18780
18781 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
18782 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
18783 ID3D12Device7 * This,
18784 _In_ ID3D12Heap *pHeap,
18785 UINT64 HeapOffset,
18786 _In_ const D3D12_RESOURCE_DESC *pDesc,
18787 D3D12_RESOURCE_STATES InitialState,
18788 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18789 REFIID riid,
18790 _COM_Outptr_opt_ void **ppvResource);
18791
18792 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
18793 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
18794 ID3D12Device7 * This,
18795 _In_ const D3D12_RESOURCE_DESC *pDesc,
18796 D3D12_RESOURCE_STATES InitialState,
18797 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18798 REFIID riid,
18799 _COM_Outptr_opt_ void **ppvResource);
18800
18801 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
18802 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
18803 ID3D12Device7 * This,
18804 _In_ ID3D12DeviceChild *pObject,
18805 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
18806 DWORD Access,
18807 _In_opt_ LPCWSTR Name,
18808 _Out_ HANDLE *pHandle);
18809
18810 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
18811 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
18812 ID3D12Device7 * This,
18813 _In_ HANDLE NTHandle,
18814 REFIID riid,
18815 _COM_Outptr_opt_ void **ppvObj);
18816
18817 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
18818 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
18819 ID3D12Device7 * This,
18820 _In_ LPCWSTR Name,
18821 DWORD Access,
18822 /* [annotation][out] */
18823 _Out_ HANDLE *pNTHandle);
18824
18825 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
18826 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
18827 ID3D12Device7 * This,
18828 UINT NumObjects,
18829 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
18830
18831 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
18832 HRESULT ( STDMETHODCALLTYPE *Evict )(
18833 ID3D12Device7 * This,
18834 UINT NumObjects,
18835 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
18836
18837 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
18838 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
18839 ID3D12Device7 * This,
18840 UINT64 InitialValue,
18841 D3D12_FENCE_FLAGS Flags,
18842 REFIID riid,
18843 _COM_Outptr_ void **ppFence);
18844
18845 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
18846 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
18847 ID3D12Device7 * This);
18848
18849 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
18850 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
18851 ID3D12Device7 * This,
18852 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
18853 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
18854 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
18855 UINT64 BaseOffset,
18856 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
18857 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
18858 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
18859 _Out_opt_ UINT64 *pTotalBytes);
18860
18861 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
18862 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
18863 ID3D12Device7 * This,
18864 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
18865 REFIID riid,
18866 _COM_Outptr_opt_ void **ppvHeap);
18867
18868 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
18869 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
18870 ID3D12Device7 * This,
18871 BOOL Enable);
18872
18873 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
18874 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
18875 ID3D12Device7 * This,
18876 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
18877 _In_opt_ ID3D12RootSignature *pRootSignature,
18878 REFIID riid,
18879 _COM_Outptr_opt_ void **ppvCommandSignature);
18880
18881 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
18882 void ( STDMETHODCALLTYPE *GetResourceTiling )(
18883 ID3D12Device7 * This,
18884 _In_ ID3D12Resource *pTiledResource,
18885 _Out_opt_ UINT *pNumTilesForEntireResource,
18886 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
18887 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
18888 _Inout_opt_ UINT *pNumSubresourceTilings,
18889 _In_ UINT FirstSubresourceTilingToGet,
18890 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
18891
18892 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
18893#if !defined(_WIN32)
18894 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
18895 ID3D12Device7 * This);
18896
18897#else
18898 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
18899 ID3D12Device7 * This,
18900 LUID * RetVal);
18901
18902#endif
18903
18904 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
18905 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
18906 ID3D12Device7 * This,
18907 _In_reads_(BlobLength) const void *pLibraryBlob,
18908 SIZE_T BlobLength,
18909 REFIID riid,
18910 _COM_Outptr_ void **ppPipelineLibrary);
18911
18912 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
18913 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
18914 ID3D12Device7 * This,
18915 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
18916 _In_reads_(NumFences) const UINT64 *pFenceValues,
18917 UINT NumFences,
18918 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
18919 HANDLE hEvent);
18920
18921 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
18922 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
18923 ID3D12Device7 * This,
18924 UINT NumObjects,
18925 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
18926 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
18927
18928 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
18929 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
18930 ID3D12Device7 * This,
18931 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
18932 REFIID riid,
18933 _COM_Outptr_ void **ppPipelineState);
18934
18935 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
18936 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
18937 ID3D12Device7 * This,
18938 _In_ const void *pAddress,
18939 REFIID riid,
18940 _COM_Outptr_ void **ppvHeap);
18941
18942 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
18943 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
18944 ID3D12Device7 * This,
18945 _In_ HANDLE hFileMapping,
18946 REFIID riid,
18947 _COM_Outptr_ void **ppvHeap);
18948
18949 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
18950 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
18951 ID3D12Device7 * This,
18952 D3D12_RESIDENCY_FLAGS Flags,
18953 UINT NumObjects,
18954 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
18955 _In_ ID3D12Fence *pFenceToSignal,
18956 UINT64 FenceValueToSignal);
18957
18958 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
18959 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
18960 ID3D12Device7 * This,
18961 _In_ UINT nodeMask,
18962 _In_ D3D12_COMMAND_LIST_TYPE type,
18963 _In_ D3D12_COMMAND_LIST_FLAGS flags,
18964 REFIID riid,
18965 _COM_Outptr_ void **ppCommandList);
18966
18967 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
18968 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
18969 ID3D12Device7 * This,
18970 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
18971 _In_ REFIID riid,
18972 _COM_Outptr_ void **ppSession);
18973
18974 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
18975 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
18976 ID3D12Device7 * This,
18977 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
18978 D3D12_HEAP_FLAGS HeapFlags,
18979 _In_ const D3D12_RESOURCE_DESC *pDesc,
18980 D3D12_RESOURCE_STATES InitialResourceState,
18981 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18982 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
18983 REFIID riidResource,
18984 _COM_Outptr_opt_ void **ppvResource);
18985
18986 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
18987 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
18988 ID3D12Device7 * This,
18989 _In_ const D3D12_HEAP_DESC *pDesc,
18990 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
18991 REFIID riid,
18992 _COM_Outptr_opt_ void **ppvHeap);
18993
18994 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
18995 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
18996 ID3D12Device7 * This,
18997 _In_ const D3D12_RESOURCE_DESC *pDesc,
18998 D3D12_RESOURCE_STATES InitialState,
18999 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19000 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19001 REFIID riid,
19002 _COM_Outptr_opt_ void **ppvResource);
19003
19004 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
19005#if !defined(_WIN32)
19006 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19007 ID3D12Device7 * This,
19008 UINT visibleMask,
19009 UINT numResourceDescs,
19010 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19011 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19012
19013#else
19014 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19015 ID3D12Device7 * This,
19016 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19017 UINT visibleMask,
19018 UINT numResourceDescs,
19019 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19020 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19021
19022#endif
19023
19024 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
19025 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
19026 ID3D12Device7 * This,
19027 _In_ ID3D12LifetimeOwner *pOwner,
19028 REFIID riid,
19029 _COM_Outptr_ void **ppvTracker);
19030
19031 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
19032 void ( STDMETHODCALLTYPE *RemoveDevice )(
19033 ID3D12Device7 * This);
19034
19035 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
19036 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
19037 ID3D12Device7 * This,
19038 _Inout_ UINT *pNumMetaCommands,
19039 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
19040
19041 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
19042 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
19043 ID3D12Device7 * This,
19044 _In_ REFGUID CommandId,
19045 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
19046 _Out_opt_ UINT *pTotalStructureSizeInBytes,
19047 _Inout_ UINT *pParameterCount,
19048 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
19049
19050 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
19051 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
19052 ID3D12Device7 * This,
19053 _In_ REFGUID CommandId,
19054 _In_ UINT NodeMask,
19055 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
19056 _In_ SIZE_T CreationParametersDataSizeInBytes,
19057 REFIID riid,
19058 _COM_Outptr_ void **ppMetaCommand);
19059
19060 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
19061 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
19062 ID3D12Device7 * This,
19063 const D3D12_STATE_OBJECT_DESC *pDesc,
19064 REFIID riid,
19065 _COM_Outptr_ void **ppStateObject);
19066
19067 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
19068 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
19069 ID3D12Device7 * This,
19070 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
19071 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
19072
19073 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
19074 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
19075 ID3D12Device7 * This,
19076 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
19077 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
19078
19079 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
19080 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
19081 ID3D12Device7 * This,
19082 D3D12_BACKGROUND_PROCESSING_MODE Mode,
19083 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
19084 _In_opt_ HANDLE hEventToSignalUponCompletion,
19085 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
19086
19087 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
19088 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
19089 ID3D12Device7 * This,
19090 const D3D12_STATE_OBJECT_DESC *pAddition,
19091 ID3D12StateObject *pStateObjectToGrowFrom,
19092 REFIID riid,
19093 _COM_Outptr_ void **ppNewStateObject);
19094
19095 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
19096 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
19097 ID3D12Device7 * This,
19098 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
19099 _In_ REFIID riid,
19100 _COM_Outptr_ void **ppSession);
19101
19102 END_INTERFACE
19103 } ID3D12Device7Vtbl;
19104
19105 interface ID3D12Device7
19106 {
19107 CONST_VTBL struct ID3D12Device7Vtbl *lpVtbl;
19108 };
19109
19110
19111
19112#ifdef COBJMACROS
19113
19114
19115#define ID3D12Device7_QueryInterface(This,riid,ppvObject) \
19116 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
19117
19118#define ID3D12Device7_AddRef(This) \
19119 ( (This)->lpVtbl -> AddRef(This) )
19120
19121#define ID3D12Device7_Release(This) \
19122 ( (This)->lpVtbl -> Release(This) )
19123
19124
19125#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData) \
19126 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
19127
19128#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData) \
19129 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
19130
19131#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData) \
19132 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
19133
19134#define ID3D12Device7_SetName(This,Name) \
19135 ( (This)->lpVtbl -> SetName(This,Name) )
19136
19137
19138#define ID3D12Device7_GetNodeCount(This) \
19139 ( (This)->lpVtbl -> GetNodeCount(This) )
19140
19141#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
19142 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
19143
19144#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
19145 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
19146
19147#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
19148 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
19149
19150#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
19151 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
19152
19153#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
19154 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
19155
19156#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
19157 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
19158
19159#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
19160 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
19161
19162#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
19163 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
19164
19165#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
19166 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
19167
19168#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor) \
19169 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
19170
19171#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
19172 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
19173
19174#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
19175 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
19176
19177#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
19178 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
19179
19180#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
19181 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
19182
19183#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor) \
19184 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
19185
19186#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
19187 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
19188
19189#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
19190 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
19191#if !defined(_WIN32)
19192
19193#define ID3D12Device7_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
19194 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
19195#else
19196#define ID3D12Device7_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
19197 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
19198#endif
19199#if !defined(_WIN32)
19200
19201#define ID3D12Device7_GetCustomHeapProperties(This,nodeMask,heapType) \
19202 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
19203#else
19204#define ID3D12Device7_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
19205 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
19206#endif
19207
19208#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
19209 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
19210
19211#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap) \
19212 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
19213
19214#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
19215 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
19216
19217#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
19218 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
19219
19220#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
19221 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
19222
19223#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
19224 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
19225
19226#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
19227 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
19228
19229#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects) \
19230 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
19231
19232#define ID3D12Device7_Evict(This,NumObjects,ppObjects) \
19233 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
19234
19235#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence) \
19236 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
19237
19238#define ID3D12Device7_GetDeviceRemovedReason(This) \
19239 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
19240
19241#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
19242 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
19243
19244#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
19245 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
19246
19247#define ID3D12Device7_SetStablePowerState(This,Enable) \
19248 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
19249
19250#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
19251 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
19252
19253#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
19254 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
19255#if !defined(_WIN32)
19256
19257#define ID3D12Device7_GetAdapterLuid(This) \
19258 ( (This)->lpVtbl -> GetAdapterLuid(This) )
19259#else
19260#define ID3D12Device7_GetAdapterLuid(This,RetVal) \
19261 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
19262#endif
19263
19264
19265#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
19266 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
19267
19268#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
19269 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
19270
19271#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
19272 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
19273
19274
19275#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
19276 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
19277
19278
19279#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
19280 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
19281
19282#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
19283 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
19284
19285#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
19286 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
19287
19288
19289#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
19290 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
19291
19292#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
19293 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
19294
19295#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
19296 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
19297
19298#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
19299 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
19300
19301#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
19302 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
19303#if !defined(_WIN32)
19304
19305#define ID3D12Device7_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
19306 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
19307#else
19308#define ID3D12Device7_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
19309 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
19310#endif
19311
19312
19313#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
19314 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
19315
19316#define ID3D12Device7_RemoveDevice(This) \
19317 ( (This)->lpVtbl -> RemoveDevice(This) )
19318
19319#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
19320 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
19321
19322#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
19323 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
19324
19325#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
19326 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
19327
19328#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject) \
19329 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
19330
19331#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
19332 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
19333
19334#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
19335 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
19336
19337
19338#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
19339 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
19340
19341
19342#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
19343 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
19344
19345#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
19346 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
19347
19348#endif /* COBJMACROS */
19349
19350
19351#endif /* C style interface */
19352
19353
19354
19355
19356#endif /* __ID3D12Device7_INTERFACE_DEFINED__ */
19357
19358
19359#ifndef __ID3D12Device8_INTERFACE_DEFINED__
19360#define __ID3D12Device8_INTERFACE_DEFINED__
19361
19362/* interface ID3D12Device8 */
19363/* [unique][local][object][uuid] */
19364
19365
19366EXTERN_C const IID IID_ID3D12Device8;
19367
19368#if defined(__cplusplus) && !defined(CINTERFACE)
19369
19370 MIDL_INTERFACE("9218E6BB-F944-4F7E-A75C-B1B2C7B701F3")
19371 ID3D12Device8 : public ID3D12Device7
19372 {
19373 public:
19374#if defined(_MSC_VER) || !defined(_WIN32)
19375 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
19376 UINT visibleMask,
19377 UINT numResourceDescs,
19378 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19379 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
19380#else
19381 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo2(
19382 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19383 UINT visibleMask,
19384 UINT numResourceDescs,
19385 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19386 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
19387#endif
19388
19389 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
19390 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19391 D3D12_HEAP_FLAGS HeapFlags,
19392 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
19393 D3D12_RESOURCE_STATES InitialResourceState,
19394 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19395 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19396 REFIID riidResource,
19397 _COM_Outptr_opt_ void **ppvResource) = 0;
19398
19399 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
19400 _In_ ID3D12Heap *pHeap,
19401 UINT64 HeapOffset,
19402 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
19403 D3D12_RESOURCE_STATES InitialState,
19404 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19405 REFIID riid,
19406 _COM_Outptr_opt_ void **ppvResource) = 0;
19407
19408 virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
19409 _In_opt_ ID3D12Resource *pTargetedResource,
19410 _In_opt_ ID3D12Resource *pFeedbackResource,
19411 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
19412
19413 virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
19414 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
19415 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
19416 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
19417 UINT64 BaseOffset,
19418 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
19419 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
19420 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
19421 _Out_opt_ UINT64 *pTotalBytes) = 0;
19422
19423 };
19424
19425
19426#else /* C style interface */
19427
19428 typedef struct ID3D12Device8Vtbl
19429 {
19430 BEGIN_INTERFACE
19431
19432 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19433 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19434 ID3D12Device8 * This,
19435 REFIID riid,
19436 _COM_Outptr_ void **ppvObject);
19437
19438 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19439 ULONG ( STDMETHODCALLTYPE *AddRef )(
19440 ID3D12Device8 * This);
19441
19442 DECLSPEC_XFGVIRT(IUnknown, Release)
19443 ULONG ( STDMETHODCALLTYPE *Release )(
19444 ID3D12Device8 * This);
19445
19446 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19447 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19448 ID3D12Device8 * This,
19449 _In_ REFGUID guid,
19450 _Inout_ UINT *pDataSize,
19451 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19452
19453 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19454 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19455 ID3D12Device8 * This,
19456 _In_ REFGUID guid,
19457 _In_ UINT DataSize,
19458 _In_reads_bytes_opt_( DataSize ) const void *pData);
19459
19460 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19461 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19462 ID3D12Device8 * This,
19463 _In_ REFGUID guid,
19464 _In_opt_ const IUnknown *pData);
19465
19466 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19467 HRESULT ( STDMETHODCALLTYPE *SetName )(
19468 ID3D12Device8 * This,
19469 _In_z_ LPCWSTR Name);
19470
19471 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
19472 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
19473 ID3D12Device8 * This);
19474
19475 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
19476 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
19477 ID3D12Device8 * This,
19478 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
19479 REFIID riid,
19480 _COM_Outptr_ void **ppCommandQueue);
19481
19482 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
19483 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
19484 ID3D12Device8 * This,
19485 _In_ D3D12_COMMAND_LIST_TYPE type,
19486 REFIID riid,
19487 _COM_Outptr_ void **ppCommandAllocator);
19488
19489 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
19490 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
19491 ID3D12Device8 * This,
19492 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
19493 REFIID riid,
19494 _COM_Outptr_ void **ppPipelineState);
19495
19496 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
19497 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
19498 ID3D12Device8 * This,
19499 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
19500 REFIID riid,
19501 _COM_Outptr_ void **ppPipelineState);
19502
19503 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
19504 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
19505 ID3D12Device8 * This,
19506 _In_ UINT nodeMask,
19507 _In_ D3D12_COMMAND_LIST_TYPE type,
19508 _In_ ID3D12CommandAllocator *pCommandAllocator,
19509 _In_opt_ ID3D12PipelineState *pInitialState,
19510 REFIID riid,
19511 _COM_Outptr_ void **ppCommandList);
19512
19513 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
19514 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
19515 ID3D12Device8 * This,
19516 D3D12_FEATURE Feature,
19517 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
19518 UINT FeatureSupportDataSize);
19519
19520 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
19521 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
19522 ID3D12Device8 * This,
19523 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
19524 REFIID riid,
19525 _COM_Outptr_ void **ppvHeap);
19526
19527 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
19528 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
19529 ID3D12Device8 * This,
19530 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
19531
19532 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
19533 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
19534 ID3D12Device8 * This,
19535 _In_ UINT nodeMask,
19536 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
19537 _In_ SIZE_T blobLengthInBytes,
19538 REFIID riid,
19539 _COM_Outptr_ void **ppvRootSignature);
19540
19541 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
19542 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
19543 ID3D12Device8 * This,
19544 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
19545 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19546
19547 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
19548 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
19549 ID3D12Device8 * This,
19550 _In_opt_ ID3D12Resource *pResource,
19551 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
19552 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19553
19554 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
19555 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
19556 ID3D12Device8 * This,
19557 _In_opt_ ID3D12Resource *pResource,
19558 _In_opt_ ID3D12Resource *pCounterResource,
19559 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
19560 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19561
19562 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
19563 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
19564 ID3D12Device8 * This,
19565 _In_opt_ ID3D12Resource *pResource,
19566 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
19567 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19568
19569 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
19570 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
19571 ID3D12Device8 * This,
19572 _In_opt_ ID3D12Resource *pResource,
19573 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
19574 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19575
19576 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
19577 void ( STDMETHODCALLTYPE *CreateSampler )(
19578 ID3D12Device8 * This,
19579 _In_ const D3D12_SAMPLER_DESC *pDesc,
19580 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19581
19582 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
19583 void ( STDMETHODCALLTYPE *CopyDescriptors )(
19584 ID3D12Device8 * This,
19585 _In_ UINT NumDestDescriptorRanges,
19586 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
19587 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
19588 _In_ UINT NumSrcDescriptorRanges,
19589 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
19590 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
19591 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
19592
19593 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
19594 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
19595 ID3D12Device8 * This,
19596 _In_ UINT NumDescriptors,
19597 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
19598 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
19599 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
19600
19601 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
19602#if !defined(_WIN32)
19603 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
19604 ID3D12Device8 * This,
19605 _In_ UINT visibleMask,
19606 _In_ UINT numResourceDescs,
19607 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
19608
19609#else
19610 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
19611 ID3D12Device8 * This,
19612 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19613 _In_ UINT visibleMask,
19614 _In_ UINT numResourceDescs,
19615 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
19616
19617#endif
19618
19619 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
19620#if !defined(_WIN32)
19621 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
19622 ID3D12Device8 * This,
19623 _In_ UINT nodeMask,
19624 D3D12_HEAP_TYPE heapType);
19625
19626#else
19627 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
19628 ID3D12Device8 * This,
19629 D3D12_HEAP_PROPERTIES * RetVal,
19630 _In_ UINT nodeMask,
19631 D3D12_HEAP_TYPE heapType);
19632
19633#endif
19634
19635 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
19636 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
19637 ID3D12Device8 * This,
19638 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19639 D3D12_HEAP_FLAGS HeapFlags,
19640 _In_ const D3D12_RESOURCE_DESC *pDesc,
19641 D3D12_RESOURCE_STATES InitialResourceState,
19642 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19643 REFIID riidResource,
19644 _COM_Outptr_opt_ void **ppvResource);
19645
19646 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
19647 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
19648 ID3D12Device8 * This,
19649 _In_ const D3D12_HEAP_DESC *pDesc,
19650 REFIID riid,
19651 _COM_Outptr_opt_ void **ppvHeap);
19652
19653 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
19654 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
19655 ID3D12Device8 * This,
19656 _In_ ID3D12Heap *pHeap,
19657 UINT64 HeapOffset,
19658 _In_ const D3D12_RESOURCE_DESC *pDesc,
19659 D3D12_RESOURCE_STATES InitialState,
19660 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19661 REFIID riid,
19662 _COM_Outptr_opt_ void **ppvResource);
19663
19664 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
19665 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
19666 ID3D12Device8 * This,
19667 _In_ const D3D12_RESOURCE_DESC *pDesc,
19668 D3D12_RESOURCE_STATES InitialState,
19669 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19670 REFIID riid,
19671 _COM_Outptr_opt_ void **ppvResource);
19672
19673 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
19674 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
19675 ID3D12Device8 * This,
19676 _In_ ID3D12DeviceChild *pObject,
19677 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
19678 DWORD Access,
19679 _In_opt_ LPCWSTR Name,
19680 _Out_ HANDLE *pHandle);
19681
19682 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
19683 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
19684 ID3D12Device8 * This,
19685 _In_ HANDLE NTHandle,
19686 REFIID riid,
19687 _COM_Outptr_opt_ void **ppvObj);
19688
19689 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
19690 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
19691 ID3D12Device8 * This,
19692 _In_ LPCWSTR Name,
19693 DWORD Access,
19694 /* [annotation][out] */
19695 _Out_ HANDLE *pNTHandle);
19696
19697 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
19698 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
19699 ID3D12Device8 * This,
19700 UINT NumObjects,
19701 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
19702
19703 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
19704 HRESULT ( STDMETHODCALLTYPE *Evict )(
19705 ID3D12Device8 * This,
19706 UINT NumObjects,
19707 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
19708
19709 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
19710 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
19711 ID3D12Device8 * This,
19712 UINT64 InitialValue,
19713 D3D12_FENCE_FLAGS Flags,
19714 REFIID riid,
19715 _COM_Outptr_ void **ppFence);
19716
19717 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
19718 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
19719 ID3D12Device8 * This);
19720
19721 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
19722 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
19723 ID3D12Device8 * This,
19724 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
19725 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
19726 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
19727 UINT64 BaseOffset,
19728 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
19729 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
19730 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
19731 _Out_opt_ UINT64 *pTotalBytes);
19732
19733 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
19734 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
19735 ID3D12Device8 * This,
19736 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
19737 REFIID riid,
19738 _COM_Outptr_opt_ void **ppvHeap);
19739
19740 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
19741 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
19742 ID3D12Device8 * This,
19743 BOOL Enable);
19744
19745 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
19746 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
19747 ID3D12Device8 * This,
19748 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
19749 _In_opt_ ID3D12RootSignature *pRootSignature,
19750 REFIID riid,
19751 _COM_Outptr_opt_ void **ppvCommandSignature);
19752
19753 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
19754 void ( STDMETHODCALLTYPE *GetResourceTiling )(
19755 ID3D12Device8 * This,
19756 _In_ ID3D12Resource *pTiledResource,
19757 _Out_opt_ UINT *pNumTilesForEntireResource,
19758 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
19759 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
19760 _Inout_opt_ UINT *pNumSubresourceTilings,
19761 _In_ UINT FirstSubresourceTilingToGet,
19762 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
19763
19764 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
19765#if !defined(_WIN32)
19766 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
19767 ID3D12Device8 * This);
19768
19769#else
19770 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
19771 ID3D12Device8 * This,
19772 LUID * RetVal);
19773
19774#endif
19775
19776 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
19777 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
19778 ID3D12Device8 * This,
19779 _In_reads_(BlobLength) const void *pLibraryBlob,
19780 SIZE_T BlobLength,
19781 REFIID riid,
19782 _COM_Outptr_ void **ppPipelineLibrary);
19783
19784 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
19785 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
19786 ID3D12Device8 * This,
19787 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
19788 _In_reads_(NumFences) const UINT64 *pFenceValues,
19789 UINT NumFences,
19790 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
19791 HANDLE hEvent);
19792
19793 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
19794 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
19795 ID3D12Device8 * This,
19796 UINT NumObjects,
19797 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
19798 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
19799
19800 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
19801 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
19802 ID3D12Device8 * This,
19803 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
19804 REFIID riid,
19805 _COM_Outptr_ void **ppPipelineState);
19806
19807 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
19808 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
19809 ID3D12Device8 * This,
19810 _In_ const void *pAddress,
19811 REFIID riid,
19812 _COM_Outptr_ void **ppvHeap);
19813
19814 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
19815 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
19816 ID3D12Device8 * This,
19817 _In_ HANDLE hFileMapping,
19818 REFIID riid,
19819 _COM_Outptr_ void **ppvHeap);
19820
19821 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
19822 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
19823 ID3D12Device8 * This,
19824 D3D12_RESIDENCY_FLAGS Flags,
19825 UINT NumObjects,
19826 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
19827 _In_ ID3D12Fence *pFenceToSignal,
19828 UINT64 FenceValueToSignal);
19829
19830 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
19831 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
19832 ID3D12Device8 * This,
19833 _In_ UINT nodeMask,
19834 _In_ D3D12_COMMAND_LIST_TYPE type,
19835 _In_ D3D12_COMMAND_LIST_FLAGS flags,
19836 REFIID riid,
19837 _COM_Outptr_ void **ppCommandList);
19838
19839 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
19840 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
19841 ID3D12Device8 * This,
19842 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
19843 _In_ REFIID riid,
19844 _COM_Outptr_ void **ppSession);
19845
19846 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
19847 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
19848 ID3D12Device8 * This,
19849 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19850 D3D12_HEAP_FLAGS HeapFlags,
19851 _In_ const D3D12_RESOURCE_DESC *pDesc,
19852 D3D12_RESOURCE_STATES InitialResourceState,
19853 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19854 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19855 REFIID riidResource,
19856 _COM_Outptr_opt_ void **ppvResource);
19857
19858 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
19859 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
19860 ID3D12Device8 * This,
19861 _In_ const D3D12_HEAP_DESC *pDesc,
19862 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19863 REFIID riid,
19864 _COM_Outptr_opt_ void **ppvHeap);
19865
19866 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
19867 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
19868 ID3D12Device8 * This,
19869 _In_ const D3D12_RESOURCE_DESC *pDesc,
19870 D3D12_RESOURCE_STATES InitialState,
19871 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19872 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19873 REFIID riid,
19874 _COM_Outptr_opt_ void **ppvResource);
19875
19876 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
19877#if !defined(_WIN32)
19878 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19879 ID3D12Device8 * This,
19880 UINT visibleMask,
19881 UINT numResourceDescs,
19882 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19883 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19884
19885#else
19886 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19887 ID3D12Device8 * This,
19888 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19889 UINT visibleMask,
19890 UINT numResourceDescs,
19891 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19892 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19893
19894#endif
19895
19896 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
19897 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
19898 ID3D12Device8 * This,
19899 _In_ ID3D12LifetimeOwner *pOwner,
19900 REFIID riid,
19901 _COM_Outptr_ void **ppvTracker);
19902
19903 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
19904 void ( STDMETHODCALLTYPE *RemoveDevice )(
19905 ID3D12Device8 * This);
19906
19907 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
19908 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
19909 ID3D12Device8 * This,
19910 _Inout_ UINT *pNumMetaCommands,
19911 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
19912
19913 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
19914 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
19915 ID3D12Device8 * This,
19916 _In_ REFGUID CommandId,
19917 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
19918 _Out_opt_ UINT *pTotalStructureSizeInBytes,
19919 _Inout_ UINT *pParameterCount,
19920 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
19921
19922 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
19923 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
19924 ID3D12Device8 * This,
19925 _In_ REFGUID CommandId,
19926 _In_ UINT NodeMask,
19927 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
19928 _In_ SIZE_T CreationParametersDataSizeInBytes,
19929 REFIID riid,
19930 _COM_Outptr_ void **ppMetaCommand);
19931
19932 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
19933 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
19934 ID3D12Device8 * This,
19935 const D3D12_STATE_OBJECT_DESC *pDesc,
19936 REFIID riid,
19937 _COM_Outptr_ void **ppStateObject);
19938
19939 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
19940 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
19941 ID3D12Device8 * This,
19942 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
19943 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
19944
19945 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
19946 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
19947 ID3D12Device8 * This,
19948 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
19949 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
19950
19951 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
19952 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
19953 ID3D12Device8 * This,
19954 D3D12_BACKGROUND_PROCESSING_MODE Mode,
19955 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
19956 _In_opt_ HANDLE hEventToSignalUponCompletion,
19957 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
19958
19959 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
19960 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
19961 ID3D12Device8 * This,
19962 const D3D12_STATE_OBJECT_DESC *pAddition,
19963 ID3D12StateObject *pStateObjectToGrowFrom,
19964 REFIID riid,
19965 _COM_Outptr_ void **ppNewStateObject);
19966
19967 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
19968 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
19969 ID3D12Device8 * This,
19970 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
19971 _In_ REFIID riid,
19972 _COM_Outptr_ void **ppSession);
19973
19974 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
19975#if !defined(_WIN32)
19976 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
19977 ID3D12Device8 * This,
19978 UINT visibleMask,
19979 UINT numResourceDescs,
19980 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19981 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19982
19983#else
19984 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
19985 ID3D12Device8 * This,
19986 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19987 UINT visibleMask,
19988 UINT numResourceDescs,
19989 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19990 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19991
19992#endif
19993
19994 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
19995 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
19996 ID3D12Device8 * This,
19997 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19998 D3D12_HEAP_FLAGS HeapFlags,
19999 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20000 D3D12_RESOURCE_STATES InitialResourceState,
20001 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20002 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20003 REFIID riidResource,
20004 _COM_Outptr_opt_ void **ppvResource);
20005
20006 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
20007 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
20008 ID3D12Device8 * This,
20009 _In_ ID3D12Heap *pHeap,
20010 UINT64 HeapOffset,
20011 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20012 D3D12_RESOURCE_STATES InitialState,
20013 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20014 REFIID riid,
20015 _COM_Outptr_opt_ void **ppvResource);
20016
20017 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
20018 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
20019 ID3D12Device8 * This,
20020 _In_opt_ ID3D12Resource *pTargetedResource,
20021 _In_opt_ ID3D12Resource *pFeedbackResource,
20022 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20023
20024 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
20025 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
20026 ID3D12Device8 * This,
20027 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
20028 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20029 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20030 UINT64 BaseOffset,
20031 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20032 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20033 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20034 _Out_opt_ UINT64 *pTotalBytes);
20035
20036 END_INTERFACE
20037 } ID3D12Device8Vtbl;
20038
20039 interface ID3D12Device8
20040 {
20041 CONST_VTBL struct ID3D12Device8Vtbl *lpVtbl;
20042 };
20043
20044
20045
20046#ifdef COBJMACROS
20047
20048
20049#define ID3D12Device8_QueryInterface(This,riid,ppvObject) \
20050 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20051
20052#define ID3D12Device8_AddRef(This) \
20053 ( (This)->lpVtbl -> AddRef(This) )
20054
20055#define ID3D12Device8_Release(This) \
20056 ( (This)->lpVtbl -> Release(This) )
20057
20058
20059#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData) \
20060 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20061
20062#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData) \
20063 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20064
20065#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData) \
20066 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20067
20068#define ID3D12Device8_SetName(This,Name) \
20069 ( (This)->lpVtbl -> SetName(This,Name) )
20070
20071
20072#define ID3D12Device8_GetNodeCount(This) \
20073 ( (This)->lpVtbl -> GetNodeCount(This) )
20074
20075#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
20076 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
20077
20078#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
20079 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
20080
20081#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
20082 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
20083
20084#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
20085 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
20086
20087#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
20088 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
20089
20090#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
20091 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
20092
20093#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
20094 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
20095
20096#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
20097 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
20098
20099#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
20100 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
20101
20102#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor) \
20103 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
20104
20105#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
20106 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
20107
20108#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
20109 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
20110
20111#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
20112 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
20113
20114#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
20115 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
20116
20117#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor) \
20118 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
20119
20120#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
20121 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
20122
20123#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
20124 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
20125#if !defined(_WIN32)
20126
20127#define ID3D12Device8_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
20128 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
20129#else
20130#define ID3D12Device8_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
20131 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
20132#endif
20133#if !defined(_WIN32)
20134
20135#define ID3D12Device8_GetCustomHeapProperties(This,nodeMask,heapType) \
20136 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
20137#else
20138#define ID3D12Device8_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
20139 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
20140#endif
20141
20142#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
20143 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
20144
20145#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap) \
20146 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
20147
20148#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20149 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20150
20151#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20152 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20153
20154#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
20155 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
20156
20157#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
20158 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
20159
20160#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
20161 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
20162
20163#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects) \
20164 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
20165
20166#define ID3D12Device8_Evict(This,NumObjects,ppObjects) \
20167 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
20168
20169#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence) \
20170 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
20171
20172#define ID3D12Device8_GetDeviceRemovedReason(This) \
20173 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
20174
20175#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20176 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20177
20178#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
20179 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
20180
20181#define ID3D12Device8_SetStablePowerState(This,Enable) \
20182 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
20183
20184#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
20185 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
20186
20187#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
20188 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
20189#if !defined(_WIN32)
20190
20191#define ID3D12Device8_GetAdapterLuid(This) \
20192 ( (This)->lpVtbl -> GetAdapterLuid(This) )
20193#else
20194#define ID3D12Device8_GetAdapterLuid(This,RetVal) \
20195 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
20196#endif
20197
20198
20199#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
20200 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
20201
20202#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
20203 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
20204
20205#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
20206 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
20207
20208
20209#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
20210 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
20211
20212
20213#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
20214 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
20215
20216#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
20217 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
20218
20219#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
20220 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
20221
20222
20223#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
20224 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
20225
20226#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
20227 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
20228
20229#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20230 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20231
20232#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
20233 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
20234
20235#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
20236 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
20237#if !defined(_WIN32)
20238
20239#define ID3D12Device8_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20240 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20241#else
20242#define ID3D12Device8_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20243 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20244#endif
20245
20246
20247#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
20248 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
20249
20250#define ID3D12Device8_RemoveDevice(This) \
20251 ( (This)->lpVtbl -> RemoveDevice(This) )
20252
20253#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
20254 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
20255
20256#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
20257 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
20258
20259#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
20260 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
20261
20262#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject) \
20263 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
20264
20265#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
20266 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
20267
20268#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
20269 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
20270
20271
20272#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
20273 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
20274
20275
20276#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
20277 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
20278
20279#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
20280 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
20281
20282#if !defined(_WIN32)
20283
20284#define ID3D12Device8_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20285 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20286#else
20287#define ID3D12Device8_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20288 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20289#endif
20290
20291#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20292 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20293
20294#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20295 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20296
20297#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
20298 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
20299
20300#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20301 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20302
20303#endif /* COBJMACROS */
20304
20305
20306#endif /* C style interface */
20307
20308
20309
20310
20311#endif /* __ID3D12Device8_INTERFACE_DEFINED__ */
20312
20313
20314#ifndef __ID3D12Resource1_INTERFACE_DEFINED__
20315#define __ID3D12Resource1_INTERFACE_DEFINED__
20316
20317/* interface ID3D12Resource1 */
20318/* [unique][local][object][uuid] */
20319
20320
20321EXTERN_C const IID IID_ID3D12Resource1;
20322
20323#if defined(__cplusplus) && !defined(CINTERFACE)
20324
20325 MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19")
20326 ID3D12Resource1 : public ID3D12Resource
20327 {
20328 public:
20329 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
20330 REFIID riid,
20331 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
20332
20333 };
20334
20335
20336#else /* C style interface */
20337
20338 typedef struct ID3D12Resource1Vtbl
20339 {
20340 BEGIN_INTERFACE
20341
20342 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20343 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20344 ID3D12Resource1 * This,
20345 REFIID riid,
20346 _COM_Outptr_ void **ppvObject);
20347
20348 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20349 ULONG ( STDMETHODCALLTYPE *AddRef )(
20350 ID3D12Resource1 * This);
20351
20352 DECLSPEC_XFGVIRT(IUnknown, Release)
20353 ULONG ( STDMETHODCALLTYPE *Release )(
20354 ID3D12Resource1 * This);
20355
20356 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20357 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20358 ID3D12Resource1 * This,
20359 _In_ REFGUID guid,
20360 _Inout_ UINT *pDataSize,
20361 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20362
20363 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20364 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20365 ID3D12Resource1 * This,
20366 _In_ REFGUID guid,
20367 _In_ UINT DataSize,
20368 _In_reads_bytes_opt_( DataSize ) const void *pData);
20369
20370 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20371 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20372 ID3D12Resource1 * This,
20373 _In_ REFGUID guid,
20374 _In_opt_ const IUnknown *pData);
20375
20376 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20377 HRESULT ( STDMETHODCALLTYPE *SetName )(
20378 ID3D12Resource1 * This,
20379 _In_z_ LPCWSTR Name);
20380
20381 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20382 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20383 ID3D12Resource1 * This,
20384 REFIID riid,
20385 _COM_Outptr_opt_ void **ppvDevice);
20386
20387 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
20388 HRESULT ( STDMETHODCALLTYPE *Map )(
20389 ID3D12Resource1 * This,
20390 UINT Subresource,
20391 _In_opt_ const D3D12_RANGE *pReadRange,
20392 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
20393
20394 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
20395 void ( STDMETHODCALLTYPE *Unmap )(
20396 ID3D12Resource1 * This,
20397 UINT Subresource,
20398 _In_opt_ const D3D12_RANGE *pWrittenRange);
20399
20400 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
20401#if !defined(_WIN32)
20402 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
20403 ID3D12Resource1 * This);
20404
20405#else
20406 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
20407 ID3D12Resource1 * This,
20408 D3D12_RESOURCE_DESC * RetVal);
20409
20410#endif
20411
20412 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
20413 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
20414 ID3D12Resource1 * This);
20415
20416 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
20417 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
20418 ID3D12Resource1 * This,
20419 UINT DstSubresource,
20420 _In_opt_ const D3D12_BOX *pDstBox,
20421 _In_ const void *pSrcData,
20422 UINT SrcRowPitch,
20423 UINT SrcDepthPitch);
20424
20425 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
20426 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
20427 ID3D12Resource1 * This,
20428 _Out_ void *pDstData,
20429 UINT DstRowPitch,
20430 UINT DstDepthPitch,
20431 UINT SrcSubresource,
20432 _In_opt_ const D3D12_BOX *pSrcBox);
20433
20434 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
20435 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
20436 ID3D12Resource1 * This,
20437 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
20438 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
20439
20440 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
20441 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20442 ID3D12Resource1 * This,
20443 REFIID riid,
20444 _COM_Outptr_opt_ void **ppProtectedSession);
20445
20446 END_INTERFACE
20447 } ID3D12Resource1Vtbl;
20448
20449 interface ID3D12Resource1
20450 {
20451 CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl;
20452 };
20453
20454
20455
20456#ifdef COBJMACROS
20457
20458
20459#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \
20460 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20461
20462#define ID3D12Resource1_AddRef(This) \
20463 ( (This)->lpVtbl -> AddRef(This) )
20464
20465#define ID3D12Resource1_Release(This) \
20466 ( (This)->lpVtbl -> Release(This) )
20467
20468
20469#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \
20470 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20471
20472#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \
20473 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20474
20475#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \
20476 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20477
20478#define ID3D12Resource1_SetName(This,Name) \
20479 ( (This)->lpVtbl -> SetName(This,Name) )
20480
20481
20482#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \
20483 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20484
20485
20486
20487#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \
20488 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
20489
20490#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \
20491 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
20492#if !defined(_WIN32)
20493
20494#define ID3D12Resource1_GetDesc(This) \
20495 ( (This)->lpVtbl -> GetDesc(This) )
20496#else
20497#define ID3D12Resource1_GetDesc(This,RetVal) \
20498 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20499#endif
20500
20501#define ID3D12Resource1_GetGPUVirtualAddress(This) \
20502 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
20503
20504#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
20505 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
20506
20507#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
20508 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
20509
20510#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
20511 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
20512
20513
20514#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20515 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20516
20517#endif /* COBJMACROS */
20518
20519
20520#endif /* C style interface */
20521
20522
20523
20524
20525#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */
20526
20527
20528#ifndef __ID3D12Resource2_INTERFACE_DEFINED__
20529#define __ID3D12Resource2_INTERFACE_DEFINED__
20530
20531/* interface ID3D12Resource2 */
20532/* [unique][local][object][uuid] */
20533
20534
20535EXTERN_C const IID IID_ID3D12Resource2;
20536
20537#if defined(__cplusplus) && !defined(CINTERFACE)
20538
20539 MIDL_INTERFACE("BE36EC3B-EA85-4AEB-A45A-E9D76404A495")
20540 ID3D12Resource2 : public ID3D12Resource1
20541 {
20542 public:
20543#if defined(_MSC_VER) || !defined(_WIN32)
20544 virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
20545#else
20546 virtual D3D12_RESOURCE_DESC1 *STDMETHODCALLTYPE GetDesc1(
20547 D3D12_RESOURCE_DESC1 * RetVal) = 0;
20548#endif
20549
20550 };
20551
20552
20553#else /* C style interface */
20554
20555 typedef struct ID3D12Resource2Vtbl
20556 {
20557 BEGIN_INTERFACE
20558
20559 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20560 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20561 ID3D12Resource2 * This,
20562 REFIID riid,
20563 _COM_Outptr_ void **ppvObject);
20564
20565 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20566 ULONG ( STDMETHODCALLTYPE *AddRef )(
20567 ID3D12Resource2 * This);
20568
20569 DECLSPEC_XFGVIRT(IUnknown, Release)
20570 ULONG ( STDMETHODCALLTYPE *Release )(
20571 ID3D12Resource2 * This);
20572
20573 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20574 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20575 ID3D12Resource2 * This,
20576 _In_ REFGUID guid,
20577 _Inout_ UINT *pDataSize,
20578 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20579
20580 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20581 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20582 ID3D12Resource2 * This,
20583 _In_ REFGUID guid,
20584 _In_ UINT DataSize,
20585 _In_reads_bytes_opt_( DataSize ) const void *pData);
20586
20587 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20588 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20589 ID3D12Resource2 * This,
20590 _In_ REFGUID guid,
20591 _In_opt_ const IUnknown *pData);
20592
20593 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20594 HRESULT ( STDMETHODCALLTYPE *SetName )(
20595 ID3D12Resource2 * This,
20596 _In_z_ LPCWSTR Name);
20597
20598 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20599 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20600 ID3D12Resource2 * This,
20601 REFIID riid,
20602 _COM_Outptr_opt_ void **ppvDevice);
20603
20604 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
20605 HRESULT ( STDMETHODCALLTYPE *Map )(
20606 ID3D12Resource2 * This,
20607 UINT Subresource,
20608 _In_opt_ const D3D12_RANGE *pReadRange,
20609 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
20610
20611 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
20612 void ( STDMETHODCALLTYPE *Unmap )(
20613 ID3D12Resource2 * This,
20614 UINT Subresource,
20615 _In_opt_ const D3D12_RANGE *pWrittenRange);
20616
20617 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
20618#if !defined(_WIN32)
20619 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
20620 ID3D12Resource2 * This);
20621
20622#else
20623 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
20624 ID3D12Resource2 * This,
20625 D3D12_RESOURCE_DESC * RetVal);
20626
20627#endif
20628
20629 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
20630 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
20631 ID3D12Resource2 * This);
20632
20633 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
20634 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
20635 ID3D12Resource2 * This,
20636 UINT DstSubresource,
20637 _In_opt_ const D3D12_BOX *pDstBox,
20638 _In_ const void *pSrcData,
20639 UINT SrcRowPitch,
20640 UINT SrcDepthPitch);
20641
20642 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
20643 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
20644 ID3D12Resource2 * This,
20645 _Out_ void *pDstData,
20646 UINT DstRowPitch,
20647 UINT DstDepthPitch,
20648 UINT SrcSubresource,
20649 _In_opt_ const D3D12_BOX *pSrcBox);
20650
20651 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
20652 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
20653 ID3D12Resource2 * This,
20654 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
20655 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
20656
20657 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
20658 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20659 ID3D12Resource2 * This,
20660 REFIID riid,
20661 _COM_Outptr_opt_ void **ppProtectedSession);
20662
20663 DECLSPEC_XFGVIRT(ID3D12Resource2, GetDesc1)
20664#if !defined(_WIN32)
20665 D3D12_RESOURCE_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
20666 ID3D12Resource2 * This);
20667
20668#else
20669 D3D12_RESOURCE_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
20670 ID3D12Resource2 * This,
20671 D3D12_RESOURCE_DESC1 * RetVal);
20672
20673#endif
20674
20675 END_INTERFACE
20676 } ID3D12Resource2Vtbl;
20677
20678 interface ID3D12Resource2
20679 {
20680 CONST_VTBL struct ID3D12Resource2Vtbl *lpVtbl;
20681 };
20682
20683
20684
20685#ifdef COBJMACROS
20686
20687
20688#define ID3D12Resource2_QueryInterface(This,riid,ppvObject) \
20689 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20690
20691#define ID3D12Resource2_AddRef(This) \
20692 ( (This)->lpVtbl -> AddRef(This) )
20693
20694#define ID3D12Resource2_Release(This) \
20695 ( (This)->lpVtbl -> Release(This) )
20696
20697
20698#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData) \
20699 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20700
20701#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData) \
20702 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20703
20704#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData) \
20705 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20706
20707#define ID3D12Resource2_SetName(This,Name) \
20708 ( (This)->lpVtbl -> SetName(This,Name) )
20709
20710
20711#define ID3D12Resource2_GetDevice(This,riid,ppvDevice) \
20712 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20713
20714
20715
20716#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData) \
20717 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
20718
20719#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange) \
20720 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
20721#if !defined(_WIN32)
20722
20723#define ID3D12Resource2_GetDesc(This) \
20724 ( (This)->lpVtbl -> GetDesc(This) )
20725#else
20726#define ID3D12Resource2_GetDesc(This,RetVal) \
20727 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20728#endif
20729
20730#define ID3D12Resource2_GetGPUVirtualAddress(This) \
20731 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
20732
20733#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
20734 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
20735
20736#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
20737 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
20738
20739#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
20740 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
20741
20742
20743#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20744 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20745
20746#if !defined(_WIN32)
20747
20748#define ID3D12Resource2_GetDesc1(This) \
20749 ( (This)->lpVtbl -> GetDesc1(This) )
20750#else
20751#define ID3D12Resource2_GetDesc1(This,RetVal) \
20752 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
20753#endif
20754
20755#endif /* COBJMACROS */
20756
20757
20758#endif /* C style interface */
20759
20760
20761
20762
20763#endif /* __ID3D12Resource2_INTERFACE_DEFINED__ */
20764
20765
20766#ifndef __ID3D12Heap1_INTERFACE_DEFINED__
20767#define __ID3D12Heap1_INTERFACE_DEFINED__
20768
20769/* interface ID3D12Heap1 */
20770/* [unique][local][object][uuid] */
20771
20772
20773EXTERN_C const IID IID_ID3D12Heap1;
20774
20775#if defined(__cplusplus) && !defined(CINTERFACE)
20776
20777 MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D")
20778 ID3D12Heap1 : public ID3D12Heap
20779 {
20780 public:
20781 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
20782 REFIID riid,
20783 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
20784
20785 };
20786
20787
20788#else /* C style interface */
20789
20790 typedef struct ID3D12Heap1Vtbl
20791 {
20792 BEGIN_INTERFACE
20793
20794 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20795 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20796 ID3D12Heap1 * This,
20797 REFIID riid,
20798 _COM_Outptr_ void **ppvObject);
20799
20800 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20801 ULONG ( STDMETHODCALLTYPE *AddRef )(
20802 ID3D12Heap1 * This);
20803
20804 DECLSPEC_XFGVIRT(IUnknown, Release)
20805 ULONG ( STDMETHODCALLTYPE *Release )(
20806 ID3D12Heap1 * This);
20807
20808 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20809 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20810 ID3D12Heap1 * This,
20811 _In_ REFGUID guid,
20812 _Inout_ UINT *pDataSize,
20813 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20814
20815 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20816 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20817 ID3D12Heap1 * This,
20818 _In_ REFGUID guid,
20819 _In_ UINT DataSize,
20820 _In_reads_bytes_opt_( DataSize ) const void *pData);
20821
20822 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20823 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20824 ID3D12Heap1 * This,
20825 _In_ REFGUID guid,
20826 _In_opt_ const IUnknown *pData);
20827
20828 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20829 HRESULT ( STDMETHODCALLTYPE *SetName )(
20830 ID3D12Heap1 * This,
20831 _In_z_ LPCWSTR Name);
20832
20833 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20834 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20835 ID3D12Heap1 * This,
20836 REFIID riid,
20837 _COM_Outptr_opt_ void **ppvDevice);
20838
20839 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
20840#if !defined(_WIN32)
20841 D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
20842 ID3D12Heap1 * This);
20843
20844#else
20845 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
20846 ID3D12Heap1 * This,
20847 D3D12_HEAP_DESC * RetVal);
20848
20849#endif
20850
20851 DECLSPEC_XFGVIRT(ID3D12Heap1, GetProtectedResourceSession)
20852 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20853 ID3D12Heap1 * This,
20854 REFIID riid,
20855 _COM_Outptr_opt_ void **ppProtectedSession);
20856
20857 END_INTERFACE
20858 } ID3D12Heap1Vtbl;
20859
20860 interface ID3D12Heap1
20861 {
20862 CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl;
20863 };
20864
20865
20866
20867#ifdef COBJMACROS
20868
20869
20870#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \
20871 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20872
20873#define ID3D12Heap1_AddRef(This) \
20874 ( (This)->lpVtbl -> AddRef(This) )
20875
20876#define ID3D12Heap1_Release(This) \
20877 ( (This)->lpVtbl -> Release(This) )
20878
20879
20880#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \
20881 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20882
20883#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \
20884 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20885
20886#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \
20887 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20888
20889#define ID3D12Heap1_SetName(This,Name) \
20890 ( (This)->lpVtbl -> SetName(This,Name) )
20891
20892
20893#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \
20894 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20895
20896
20897#if !defined(_WIN32)
20898
20899#define ID3D12Heap1_GetDesc(This) \
20900 ( (This)->lpVtbl -> GetDesc(This) )
20901#else
20902#define ID3D12Heap1_GetDesc(This,RetVal) \
20903 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20904#endif
20905
20906
20907#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20908 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20909
20910#endif /* COBJMACROS */
20911
20912
20913#endif /* C style interface */
20914
20915
20916
20917
20918#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */
20919
20920
20921#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
20922#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
20923
20924/* interface ID3D12GraphicsCommandList3 */
20925/* [unique][local][object][uuid] */
20926
20927
20928EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
20929
20930#if defined(__cplusplus) && !defined(CINTERFACE)
20931
20932 MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")
20933 ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
20934 {
20935 public:
20936 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
20937 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
20938
20939 };
20940
20941
20942#else /* C style interface */
20943
20944 typedef struct ID3D12GraphicsCommandList3Vtbl
20945 {
20946 BEGIN_INTERFACE
20947
20948 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20949 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20950 ID3D12GraphicsCommandList3 * This,
20951 REFIID riid,
20952 _COM_Outptr_ void **ppvObject);
20953
20954 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20955 ULONG ( STDMETHODCALLTYPE *AddRef )(
20956 ID3D12GraphicsCommandList3 * This);
20957
20958 DECLSPEC_XFGVIRT(IUnknown, Release)
20959 ULONG ( STDMETHODCALLTYPE *Release )(
20960 ID3D12GraphicsCommandList3 * This);
20961
20962 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20963 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20964 ID3D12GraphicsCommandList3 * This,
20965 _In_ REFGUID guid,
20966 _Inout_ UINT *pDataSize,
20967 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20968
20969 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20970 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20971 ID3D12GraphicsCommandList3 * This,
20972 _In_ REFGUID guid,
20973 _In_ UINT DataSize,
20974 _In_reads_bytes_opt_( DataSize ) const void *pData);
20975
20976 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20977 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20978 ID3D12GraphicsCommandList3 * This,
20979 _In_ REFGUID guid,
20980 _In_opt_ const IUnknown *pData);
20981
20982 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20983 HRESULT ( STDMETHODCALLTYPE *SetName )(
20984 ID3D12GraphicsCommandList3 * This,
20985 _In_z_ LPCWSTR Name);
20986
20987 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20988 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20989 ID3D12GraphicsCommandList3 * This,
20990 REFIID riid,
20991 _COM_Outptr_opt_ void **ppvDevice);
20992
20993 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
20994 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
20995 ID3D12GraphicsCommandList3 * This);
20996
20997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
20998 HRESULT ( STDMETHODCALLTYPE *Close )(
20999 ID3D12GraphicsCommandList3 * This);
21000
21001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
21002 HRESULT ( STDMETHODCALLTYPE *Reset )(
21003 ID3D12GraphicsCommandList3 * This,
21004 _In_ ID3D12CommandAllocator *pAllocator,
21005 _In_opt_ ID3D12PipelineState *pInitialState);
21006
21007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
21008 void ( STDMETHODCALLTYPE *ClearState )(
21009 ID3D12GraphicsCommandList3 * This,
21010 _In_opt_ ID3D12PipelineState *pPipelineState);
21011
21012 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
21013 void ( STDMETHODCALLTYPE *DrawInstanced )(
21014 ID3D12GraphicsCommandList3 * This,
21015 _In_ UINT VertexCountPerInstance,
21016 _In_ UINT InstanceCount,
21017 _In_ UINT StartVertexLocation,
21018 _In_ UINT StartInstanceLocation);
21019
21020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
21021 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
21022 ID3D12GraphicsCommandList3 * This,
21023 _In_ UINT IndexCountPerInstance,
21024 _In_ UINT InstanceCount,
21025 _In_ UINT StartIndexLocation,
21026 _In_ INT BaseVertexLocation,
21027 _In_ UINT StartInstanceLocation);
21028
21029 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
21030 void ( STDMETHODCALLTYPE *Dispatch )(
21031 ID3D12GraphicsCommandList3 * This,
21032 _In_ UINT ThreadGroupCountX,
21033 _In_ UINT ThreadGroupCountY,
21034 _In_ UINT ThreadGroupCountZ);
21035
21036 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
21037 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
21038 ID3D12GraphicsCommandList3 * This,
21039 _In_ ID3D12Resource *pDstBuffer,
21040 UINT64 DstOffset,
21041 _In_ ID3D12Resource *pSrcBuffer,
21042 UINT64 SrcOffset,
21043 UINT64 NumBytes);
21044
21045 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
21046 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
21047 ID3D12GraphicsCommandList3 * This,
21048 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
21049 UINT DstX,
21050 UINT DstY,
21051 UINT DstZ,
21052 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
21053 _In_opt_ const D3D12_BOX *pSrcBox);
21054
21055 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
21056 void ( STDMETHODCALLTYPE *CopyResource )(
21057 ID3D12GraphicsCommandList3 * This,
21058 _In_ ID3D12Resource *pDstResource,
21059 _In_ ID3D12Resource *pSrcResource);
21060
21061 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
21062 void ( STDMETHODCALLTYPE *CopyTiles )(
21063 ID3D12GraphicsCommandList3 * This,
21064 _In_ ID3D12Resource *pTiledResource,
21065 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
21066 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
21067 _In_ ID3D12Resource *pBuffer,
21068 UINT64 BufferStartOffsetInBytes,
21069 D3D12_TILE_COPY_FLAGS Flags);
21070
21071 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
21072 void ( STDMETHODCALLTYPE *ResolveSubresource )(
21073 ID3D12GraphicsCommandList3 * This,
21074 _In_ ID3D12Resource *pDstResource,
21075 _In_ UINT DstSubresource,
21076 _In_ ID3D12Resource *pSrcResource,
21077 _In_ UINT SrcSubresource,
21078 _In_ DXGI_FORMAT Format);
21079
21080 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
21081 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
21082 ID3D12GraphicsCommandList3 * This,
21083 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
21084
21085 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
21086 void ( STDMETHODCALLTYPE *RSSetViewports )(
21087 ID3D12GraphicsCommandList3 * This,
21088 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
21089 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
21090
21091 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
21092 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
21093 ID3D12GraphicsCommandList3 * This,
21094 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
21095 _In_reads_( NumRects) const D3D12_RECT *pRects);
21096
21097 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
21098 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
21099 ID3D12GraphicsCommandList3 * This,
21100 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
21101
21102 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
21103 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
21104 ID3D12GraphicsCommandList3 * This,
21105 _In_ UINT StencilRef);
21106
21107 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
21108 void ( STDMETHODCALLTYPE *SetPipelineState )(
21109 ID3D12GraphicsCommandList3 * This,
21110 _In_ ID3D12PipelineState *pPipelineState);
21111
21112 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
21113 void ( STDMETHODCALLTYPE *ResourceBarrier )(
21114 ID3D12GraphicsCommandList3 * This,
21115 _In_ UINT NumBarriers,
21116 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
21117
21118 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
21119 void ( STDMETHODCALLTYPE *ExecuteBundle )(
21120 ID3D12GraphicsCommandList3 * This,
21121 _In_ ID3D12GraphicsCommandList *pCommandList);
21122
21123 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
21124 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
21125 ID3D12GraphicsCommandList3 * This,
21126 _In_ UINT NumDescriptorHeaps,
21127 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
21128
21129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
21130 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
21131 ID3D12GraphicsCommandList3 * This,
21132 _In_opt_ ID3D12RootSignature *pRootSignature);
21133
21134 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
21135 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
21136 ID3D12GraphicsCommandList3 * This,
21137 _In_opt_ ID3D12RootSignature *pRootSignature);
21138
21139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
21140 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
21141 ID3D12GraphicsCommandList3 * This,
21142 _In_ UINT RootParameterIndex,
21143 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21144
21145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
21146 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
21147 ID3D12GraphicsCommandList3 * This,
21148 _In_ UINT RootParameterIndex,
21149 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21150
21151 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
21152 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
21153 ID3D12GraphicsCommandList3 * This,
21154 _In_ UINT RootParameterIndex,
21155 _In_ UINT SrcData,
21156 _In_ UINT DestOffsetIn32BitValues);
21157
21158 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
21159 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
21160 ID3D12GraphicsCommandList3 * This,
21161 _In_ UINT RootParameterIndex,
21162 _In_ UINT SrcData,
21163 _In_ UINT DestOffsetIn32BitValues);
21164
21165 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
21166 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
21167 ID3D12GraphicsCommandList3 * This,
21168 _In_ UINT RootParameterIndex,
21169 _In_ UINT Num32BitValuesToSet,
21170 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21171 _In_ UINT DestOffsetIn32BitValues);
21172
21173 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
21174 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
21175 ID3D12GraphicsCommandList3 * This,
21176 _In_ UINT RootParameterIndex,
21177 _In_ UINT Num32BitValuesToSet,
21178 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21179 _In_ UINT DestOffsetIn32BitValues);
21180
21181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
21182 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
21183 ID3D12GraphicsCommandList3 * This,
21184 _In_ UINT RootParameterIndex,
21185 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21186
21187 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
21188 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
21189 ID3D12GraphicsCommandList3 * This,
21190 _In_ UINT RootParameterIndex,
21191 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21192
21193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
21194 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
21195 ID3D12GraphicsCommandList3 * This,
21196 _In_ UINT RootParameterIndex,
21197 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21198
21199 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
21200 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
21201 ID3D12GraphicsCommandList3 * This,
21202 _In_ UINT RootParameterIndex,
21203 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21204
21205 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
21206 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
21207 ID3D12GraphicsCommandList3 * This,
21208 _In_ UINT RootParameterIndex,
21209 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21210
21211 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
21212 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
21213 ID3D12GraphicsCommandList3 * This,
21214 _In_ UINT RootParameterIndex,
21215 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21216
21217 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
21218 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
21219 ID3D12GraphicsCommandList3 * This,
21220 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
21221
21222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
21223 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
21224 ID3D12GraphicsCommandList3 * This,
21225 _In_ UINT StartSlot,
21226 _In_ UINT NumViews,
21227 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
21228
21229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
21230 void ( STDMETHODCALLTYPE *SOSetTargets )(
21231 ID3D12GraphicsCommandList3 * This,
21232 _In_ UINT StartSlot,
21233 _In_ UINT NumViews,
21234 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
21235
21236 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
21237 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
21238 ID3D12GraphicsCommandList3 * This,
21239 _In_ UINT NumRenderTargetDescriptors,
21240 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
21241 _In_ BOOL RTsSingleHandleToDescriptorRange,
21242 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
21243
21244 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
21245 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
21246 ID3D12GraphicsCommandList3 * This,
21247 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
21248 _In_ D3D12_CLEAR_FLAGS ClearFlags,
21249 _In_ FLOAT Depth,
21250 _In_ UINT8 Stencil,
21251 _In_ UINT NumRects,
21252 _In_reads_(NumRects) const D3D12_RECT *pRects);
21253
21254 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
21255 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
21256 ID3D12GraphicsCommandList3 * This,
21257 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
21258 _In_ const FLOAT ColorRGBA[ 4 ],
21259 _In_ UINT NumRects,
21260 _In_reads_(NumRects) const D3D12_RECT *pRects);
21261
21262 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
21263 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
21264 ID3D12GraphicsCommandList3 * This,
21265 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21266 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21267 _In_ ID3D12Resource *pResource,
21268 _In_ const UINT Values[ 4 ],
21269 _In_ UINT NumRects,
21270 _In_reads_(NumRects) const D3D12_RECT *pRects);
21271
21272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
21273 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
21274 ID3D12GraphicsCommandList3 * This,
21275 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21276 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21277 _In_ ID3D12Resource *pResource,
21278 _In_ const FLOAT Values[ 4 ],
21279 _In_ UINT NumRects,
21280 _In_reads_(NumRects) const D3D12_RECT *pRects);
21281
21282 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
21283 void ( STDMETHODCALLTYPE *DiscardResource )(
21284 ID3D12GraphicsCommandList3 * This,
21285 _In_ ID3D12Resource *pResource,
21286 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
21287
21288 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
21289 void ( STDMETHODCALLTYPE *BeginQuery )(
21290 ID3D12GraphicsCommandList3 * This,
21291 _In_ ID3D12QueryHeap *pQueryHeap,
21292 _In_ D3D12_QUERY_TYPE Type,
21293 _In_ UINT Index);
21294
21295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
21296 void ( STDMETHODCALLTYPE *EndQuery )(
21297 ID3D12GraphicsCommandList3 * This,
21298 _In_ ID3D12QueryHeap *pQueryHeap,
21299 _In_ D3D12_QUERY_TYPE Type,
21300 _In_ UINT Index);
21301
21302 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
21303 void ( STDMETHODCALLTYPE *ResolveQueryData )(
21304 ID3D12GraphicsCommandList3 * This,
21305 _In_ ID3D12QueryHeap *pQueryHeap,
21306 _In_ D3D12_QUERY_TYPE Type,
21307 _In_ UINT StartIndex,
21308 _In_ UINT NumQueries,
21309 _In_ ID3D12Resource *pDestinationBuffer,
21310 _In_ UINT64 AlignedDestinationBufferOffset);
21311
21312 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
21313 void ( STDMETHODCALLTYPE *SetPredication )(
21314 ID3D12GraphicsCommandList3 * This,
21315 _In_opt_ ID3D12Resource *pBuffer,
21316 _In_ UINT64 AlignedBufferOffset,
21317 _In_ D3D12_PREDICATION_OP Operation);
21318
21319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
21320 void ( STDMETHODCALLTYPE *SetMarker )(
21321 ID3D12GraphicsCommandList3 * This,
21322 UINT Metadata,
21323 _In_reads_bytes_opt_(Size) const void *pData,
21324 UINT Size);
21325
21326 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
21327 void ( STDMETHODCALLTYPE *BeginEvent )(
21328 ID3D12GraphicsCommandList3 * This,
21329 UINT Metadata,
21330 _In_reads_bytes_opt_(Size) const void *pData,
21331 UINT Size);
21332
21333 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
21334 void ( STDMETHODCALLTYPE *EndEvent )(
21335 ID3D12GraphicsCommandList3 * This);
21336
21337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
21338 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
21339 ID3D12GraphicsCommandList3 * This,
21340 _In_ ID3D12CommandSignature *pCommandSignature,
21341 _In_ UINT MaxCommandCount,
21342 _In_ ID3D12Resource *pArgumentBuffer,
21343 _In_ UINT64 ArgumentBufferOffset,
21344 _In_opt_ ID3D12Resource *pCountBuffer,
21345 _In_ UINT64 CountBufferOffset);
21346
21347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
21348 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
21349 ID3D12GraphicsCommandList3 * This,
21350 _In_ ID3D12Resource *pDstBuffer,
21351 UINT64 DstOffset,
21352 _In_ ID3D12Resource *pSrcBuffer,
21353 UINT64 SrcOffset,
21354 UINT Dependencies,
21355 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21356 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21357
21358 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
21359 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
21360 ID3D12GraphicsCommandList3 * This,
21361 _In_ ID3D12Resource *pDstBuffer,
21362 UINT64 DstOffset,
21363 _In_ ID3D12Resource *pSrcBuffer,
21364 UINT64 SrcOffset,
21365 UINT Dependencies,
21366 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21367 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21368
21369 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
21370 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
21371 ID3D12GraphicsCommandList3 * This,
21372 _In_ FLOAT Min,
21373 _In_ FLOAT Max);
21374
21375 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
21376 void ( STDMETHODCALLTYPE *SetSamplePositions )(
21377 ID3D12GraphicsCommandList3 * This,
21378 _In_ UINT NumSamplesPerPixel,
21379 _In_ UINT NumPixels,
21380 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
21381
21382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
21383 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
21384 ID3D12GraphicsCommandList3 * This,
21385 _In_ ID3D12Resource *pDstResource,
21386 _In_ UINT DstSubresource,
21387 _In_ UINT DstX,
21388 _In_ UINT DstY,
21389 _In_ ID3D12Resource *pSrcResource,
21390 _In_ UINT SrcSubresource,
21391 _In_opt_ D3D12_RECT *pSrcRect,
21392 _In_ DXGI_FORMAT Format,
21393 _In_ D3D12_RESOLVE_MODE ResolveMode);
21394
21395 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
21396 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
21397 ID3D12GraphicsCommandList3 * This,
21398 _In_ UINT Mask);
21399
21400 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
21401 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
21402 ID3D12GraphicsCommandList3 * This,
21403 UINT Count,
21404 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
21405 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
21406
21407 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
21408 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
21409 ID3D12GraphicsCommandList3 * This,
21410 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
21411
21412 END_INTERFACE
21413 } ID3D12GraphicsCommandList3Vtbl;
21414
21415 interface ID3D12GraphicsCommandList3
21416 {
21417 CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl;
21418 };
21419
21420
21421
21422#ifdef COBJMACROS
21423
21424
21425#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \
21426 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21427
21428#define ID3D12GraphicsCommandList3_AddRef(This) \
21429 ( (This)->lpVtbl -> AddRef(This) )
21430
21431#define ID3D12GraphicsCommandList3_Release(This) \
21432 ( (This)->lpVtbl -> Release(This) )
21433
21434
21435#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
21436 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21437
21438#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \
21439 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21440
21441#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \
21442 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21443
21444#define ID3D12GraphicsCommandList3_SetName(This,Name) \
21445 ( (This)->lpVtbl -> SetName(This,Name) )
21446
21447
21448#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \
21449 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21450
21451
21452#define ID3D12GraphicsCommandList3_GetType(This) \
21453 ( (This)->lpVtbl -> GetType(This) )
21454
21455
21456#define ID3D12GraphicsCommandList3_Close(This) \
21457 ( (This)->lpVtbl -> Close(This) )
21458
21459#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \
21460 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
21461
21462#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \
21463 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
21464
21465#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
21466 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
21467
21468#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
21469 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
21470
21471#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
21472 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
21473
21474#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
21475 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
21476
21477#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
21478 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
21479
21480#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \
21481 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
21482
21483#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
21484 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
21485
21486#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
21487 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
21488
21489#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \
21490 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
21491
21492#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \
21493 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
21494
21495#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \
21496 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
21497
21498#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \
21499 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
21500
21501#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \
21502 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
21503
21504#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \
21505 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
21506
21507#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
21508 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
21509
21510#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \
21511 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
21512
21513#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
21514 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
21515
21516#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \
21517 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
21518
21519#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \
21520 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
21521
21522#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
21523 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
21524
21525#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
21526 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
21527
21528#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
21529 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
21530
21531#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
21532 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
21533
21534#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
21535 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
21536
21537#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
21538 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
21539
21540#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
21541 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
21542
21543#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
21544 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
21545
21546#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
21547 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
21548
21549#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
21550 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
21551
21552#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
21553 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
21554
21555#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
21556 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
21557
21558#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \
21559 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
21560
21561#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
21562 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
21563
21564#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \
21565 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
21566
21567#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
21568 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
21569
21570#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
21571 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
21572
21573#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
21574 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
21575
21576#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
21577 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
21578
21579#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
21580 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
21581
21582#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \
21583 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
21584
21585#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
21586 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
21587
21588#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
21589 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
21590
21591#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
21592 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
21593
21594#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
21595 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
21596
21597#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \
21598 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
21599
21600#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \
21601 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
21602
21603#define ID3D12GraphicsCommandList3_EndEvent(This) \
21604 ( (This)->lpVtbl -> EndEvent(This) )
21605
21606#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
21607 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
21608
21609
21610#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
21611 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
21612
21613#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
21614 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
21615
21616#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \
21617 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
21618
21619#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
21620 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
21621
21622#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
21623 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
21624
21625#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \
21626 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
21627
21628
21629#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
21630 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
21631
21632
21633#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
21634 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
21635
21636#endif /* COBJMACROS */
21637
21638
21639#endif /* C style interface */
21640
21641
21642
21643
21644#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
21645
21646
21647/* interface __MIDL_itf_d3d12_0000_0054 */
21648/* [local] */
21649
21650typedef
21651enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
21652 {
21653 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0,
21654 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
21655 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
21656 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 ) ,
21657 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
21658 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
21659 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
21660 } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
21661
21662typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
21663 {
21664 D3D12_CLEAR_VALUE ClearValue;
21665 } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
21666
21667typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
21668 {
21669 UINT AdditionalWidth;
21670 UINT AdditionalHeight;
21671 } D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
21672
21673typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
21674 {
21675 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
21676 union
21677 {
21678 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
21679 D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
21680 } ;
21681 } D3D12_RENDER_PASS_BEGINNING_ACCESS;
21682
21683typedef
21684enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
21685 {
21686 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0,
21687 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
21688 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
21689 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 ) ,
21690 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
21691 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
21692 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
21693 } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
21694
21695typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
21696 {
21697 UINT SrcSubresource;
21698 UINT DstSubresource;
21699 UINT DstX;
21700 UINT DstY;
21701 D3D12_RECT SrcRect;
21702 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
21703
21704typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
21705 {
21706 ID3D12Resource *pSrcResource;
21707 ID3D12Resource *pDstResource;
21708 UINT SubresourceCount;
21709 _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
21710 DXGI_FORMAT Format;
21711 D3D12_RESOLVE_MODE ResolveMode;
21712 BOOL PreserveResolveSource;
21713 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
21714
21715typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
21716 {
21717 UINT AdditionalWidth;
21718 UINT AdditionalHeight;
21719 } D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
21720
21721typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
21722 {
21723 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
21724 union
21725 {
21726 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
21727 D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
21728 } ;
21729 } D3D12_RENDER_PASS_ENDING_ACCESS;
21730
21731typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
21732 {
21733 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
21734 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
21735 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
21736 } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
21737
21738typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
21739 {
21740 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
21741 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
21742 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
21743 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
21744 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
21745 } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
21746
21747typedef
21748enum D3D12_RENDER_PASS_FLAGS
21749 {
21750 D3D12_RENDER_PASS_FLAG_NONE = 0,
21751 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
21752 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
21753 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
21754 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
21755 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
21756 } D3D12_RENDER_PASS_FLAGS;
21757
21758DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )
21759
21760
21761extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
21762extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
21763
21764#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
21765#define __ID3D12MetaCommand_INTERFACE_DEFINED__
21766
21767/* interface ID3D12MetaCommand */
21768/* [unique][local][object][uuid] */
21769
21770
21771EXTERN_C const IID IID_ID3D12MetaCommand;
21772
21773#if defined(__cplusplus) && !defined(CINTERFACE)
21774
21775 MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570")
21776 ID3D12MetaCommand : public ID3D12Pageable
21777 {
21778 public:
21779 virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
21780 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
21781 _In_ UINT ParameterIndex) = 0;
21782
21783 };
21784
21785
21786#else /* C style interface */
21787
21788 typedef struct ID3D12MetaCommandVtbl
21789 {
21790 BEGIN_INTERFACE
21791
21792 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21793 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21794 ID3D12MetaCommand * This,
21795 REFIID riid,
21796 _COM_Outptr_ void **ppvObject);
21797
21798 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21799 ULONG ( STDMETHODCALLTYPE *AddRef )(
21800 ID3D12MetaCommand * This);
21801
21802 DECLSPEC_XFGVIRT(IUnknown, Release)
21803 ULONG ( STDMETHODCALLTYPE *Release )(
21804 ID3D12MetaCommand * This);
21805
21806 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
21807 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
21808 ID3D12MetaCommand * This,
21809 _In_ REFGUID guid,
21810 _Inout_ UINT *pDataSize,
21811 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
21812
21813 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
21814 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
21815 ID3D12MetaCommand * This,
21816 _In_ REFGUID guid,
21817 _In_ UINT DataSize,
21818 _In_reads_bytes_opt_( DataSize ) const void *pData);
21819
21820 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
21821 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
21822 ID3D12MetaCommand * This,
21823 _In_ REFGUID guid,
21824 _In_opt_ const IUnknown *pData);
21825
21826 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
21827 HRESULT ( STDMETHODCALLTYPE *SetName )(
21828 ID3D12MetaCommand * This,
21829 _In_z_ LPCWSTR Name);
21830
21831 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
21832 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
21833 ID3D12MetaCommand * This,
21834 REFIID riid,
21835 _COM_Outptr_opt_ void **ppvDevice);
21836
21837 DECLSPEC_XFGVIRT(ID3D12MetaCommand, GetRequiredParameterResourceSize)
21838 UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )(
21839 ID3D12MetaCommand * This,
21840 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
21841 _In_ UINT ParameterIndex);
21842
21843 END_INTERFACE
21844 } ID3D12MetaCommandVtbl;
21845
21846 interface ID3D12MetaCommand
21847 {
21848 CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl;
21849 };
21850
21851
21852
21853#ifdef COBJMACROS
21854
21855
21856#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \
21857 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21858
21859#define ID3D12MetaCommand_AddRef(This) \
21860 ( (This)->lpVtbl -> AddRef(This) )
21861
21862#define ID3D12MetaCommand_Release(This) \
21863 ( (This)->lpVtbl -> Release(This) )
21864
21865
21866#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \
21867 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21868
21869#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \
21870 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21871
21872#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \
21873 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21874
21875#define ID3D12MetaCommand_SetName(This,Name) \
21876 ( (This)->lpVtbl -> SetName(This,Name) )
21877
21878
21879#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \
21880 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21881
21882
21883
21884#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \
21885 ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) )
21886
21887#endif /* COBJMACROS */
21888
21889
21890#endif /* C style interface */
21891
21892
21893
21894
21895#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
21896
21897
21898/* interface __MIDL_itf_d3d12_0000_0055 */
21899/* [local] */
21900
21901typedef struct D3D12_DISPATCH_RAYS_DESC
21902 {
21903 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
21904 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
21905 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
21906 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
21907 UINT Width;
21908 UINT Height;
21909 UINT Depth;
21910 } D3D12_DISPATCH_RAYS_DESC;
21911
21912typedef
21913enum D3D12_SET_WORK_GRAPH_FLAGS
21914 {
21915 D3D12_SET_WORK_GRAPH_FLAG_NONE = 0,
21916 D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1
21917 } D3D12_SET_WORK_GRAPH_FLAGS;
21918
21919DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )
21920typedef struct D3D12_SET_WORK_GRAPH_DESC
21921 {
21922 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21923 D3D12_SET_WORK_GRAPH_FLAGS Flags;
21924 D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
21925 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
21926 } D3D12_SET_WORK_GRAPH_DESC;
21927
21928typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
21929 {
21930 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21931 } D3D12_SET_RAYTRACING_PIPELINE_DESC;
21932
21933typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
21934 {
21935 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21936 } D3D12_SET_GENERIC_PIPELINE_DESC;
21937
21938typedef
21939enum D3D12_PROGRAM_TYPE
21940 {
21941 D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
21942 D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
21943 D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
21944 } D3D12_PROGRAM_TYPE;
21945
21946typedef struct D3D12_SET_PROGRAM_DESC
21947 {
21948 D3D12_PROGRAM_TYPE Type;
21949 union
21950 {
21951 D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
21952 D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
21953 D3D12_SET_WORK_GRAPH_DESC WorkGraph;
21954 } ;
21955 } D3D12_SET_PROGRAM_DESC;
21956
21957typedef
21958enum D3D12_DISPATCH_MODE
21959 {
21960 D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0,
21961 D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1,
21962 D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2,
21963 D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3
21964 } D3D12_DISPATCH_MODE;
21965
21966typedef struct D3D12_NODE_CPU_INPUT
21967 {
21968 UINT EntrypointIndex;
21969 UINT NumRecords;
21970 const void *pRecords;
21971 UINT64 RecordStrideInBytes;
21972 } D3D12_NODE_CPU_INPUT;
21973
21974typedef struct D3D12_NODE_GPU_INPUT
21975 {
21976 UINT EntrypointIndex;
21977 UINT NumRecords;
21978 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
21979 } D3D12_NODE_GPU_INPUT;
21980
21981typedef struct D3D12_MULTI_NODE_CPU_INPUT
21982 {
21983 UINT NumNodeInputs;
21984 const D3D12_NODE_CPU_INPUT *pNodeInputs;
21985 UINT64 NodeInputStrideInBytes;
21986 } D3D12_MULTI_NODE_CPU_INPUT;
21987
21988typedef struct D3D12_MULTI_NODE_GPU_INPUT
21989 {
21990 UINT NumNodeInputs;
21991 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs;
21992 } D3D12_MULTI_NODE_GPU_INPUT;
21993
21994typedef struct D3D12_DISPATCH_GRAPH_DESC
21995 {
21996 D3D12_DISPATCH_MODE Mode;
21997 union
21998 {
21999 D3D12_NODE_CPU_INPUT NodeCPUInput;
22000 D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
22001 D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
22002 D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
22003 } ;
22004 } D3D12_DISPATCH_GRAPH_DESC;
22005
22006
22007
22008extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
22009extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
22010
22011#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
22012#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
22013
22014/* interface ID3D12GraphicsCommandList4 */
22015/* [unique][local][object][uuid] */
22016
22017
22018EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
22019
22020#if defined(__cplusplus) && !defined(CINTERFACE)
22021
22022 MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
22023 ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
22024 {
22025 public:
22026 virtual void STDMETHODCALLTYPE BeginRenderPass(
22027 _In_ UINT NumRenderTargets,
22028 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22029 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22030 D3D12_RENDER_PASS_FLAGS Flags) = 0;
22031
22032 virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0;
22033
22034 virtual void STDMETHODCALLTYPE InitializeMetaCommand(
22035 _In_ ID3D12MetaCommand *pMetaCommand,
22036 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22037 _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0;
22038
22039 virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
22040 _In_ ID3D12MetaCommand *pMetaCommand,
22041 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22042 _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0;
22043
22044 virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
22045 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22046 _In_ UINT NumPostbuildInfoDescs,
22047 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0;
22048
22049 virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
22050 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22051 _In_ UINT NumSourceAccelerationStructures,
22052 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0;
22053
22054 virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
22055 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22056 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22057 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0;
22058
22059 virtual void STDMETHODCALLTYPE SetPipelineState1(
22060 _In_ ID3D12StateObject *pStateObject) = 0;
22061
22062 virtual void STDMETHODCALLTYPE DispatchRays(
22063 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0;
22064
22065 };
22066
22067
22068#else /* C style interface */
22069
22070 typedef struct ID3D12GraphicsCommandList4Vtbl
22071 {
22072 BEGIN_INTERFACE
22073
22074 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
22075 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
22076 ID3D12GraphicsCommandList4 * This,
22077 REFIID riid,
22078 _COM_Outptr_ void **ppvObject);
22079
22080 DECLSPEC_XFGVIRT(IUnknown, AddRef)
22081 ULONG ( STDMETHODCALLTYPE *AddRef )(
22082 ID3D12GraphicsCommandList4 * This);
22083
22084 DECLSPEC_XFGVIRT(IUnknown, Release)
22085 ULONG ( STDMETHODCALLTYPE *Release )(
22086 ID3D12GraphicsCommandList4 * This);
22087
22088 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
22089 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
22090 ID3D12GraphicsCommandList4 * This,
22091 _In_ REFGUID guid,
22092 _Inout_ UINT *pDataSize,
22093 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
22094
22095 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
22096 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
22097 ID3D12GraphicsCommandList4 * This,
22098 _In_ REFGUID guid,
22099 _In_ UINT DataSize,
22100 _In_reads_bytes_opt_( DataSize ) const void *pData);
22101
22102 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
22103 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
22104 ID3D12GraphicsCommandList4 * This,
22105 _In_ REFGUID guid,
22106 _In_opt_ const IUnknown *pData);
22107
22108 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
22109 HRESULT ( STDMETHODCALLTYPE *SetName )(
22110 ID3D12GraphicsCommandList4 * This,
22111 _In_z_ LPCWSTR Name);
22112
22113 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
22114 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
22115 ID3D12GraphicsCommandList4 * This,
22116 REFIID riid,
22117 _COM_Outptr_opt_ void **ppvDevice);
22118
22119 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
22120 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
22121 ID3D12GraphicsCommandList4 * This);
22122
22123 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
22124 HRESULT ( STDMETHODCALLTYPE *Close )(
22125 ID3D12GraphicsCommandList4 * This);
22126
22127 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
22128 HRESULT ( STDMETHODCALLTYPE *Reset )(
22129 ID3D12GraphicsCommandList4 * This,
22130 _In_ ID3D12CommandAllocator *pAllocator,
22131 _In_opt_ ID3D12PipelineState *pInitialState);
22132
22133 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
22134 void ( STDMETHODCALLTYPE *ClearState )(
22135 ID3D12GraphicsCommandList4 * This,
22136 _In_opt_ ID3D12PipelineState *pPipelineState);
22137
22138 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
22139 void ( STDMETHODCALLTYPE *DrawInstanced )(
22140 ID3D12GraphicsCommandList4 * This,
22141 _In_ UINT VertexCountPerInstance,
22142 _In_ UINT InstanceCount,
22143 _In_ UINT StartVertexLocation,
22144 _In_ UINT StartInstanceLocation);
22145
22146 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
22147 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
22148 ID3D12GraphicsCommandList4 * This,
22149 _In_ UINT IndexCountPerInstance,
22150 _In_ UINT InstanceCount,
22151 _In_ UINT StartIndexLocation,
22152 _In_ INT BaseVertexLocation,
22153 _In_ UINT StartInstanceLocation);
22154
22155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
22156 void ( STDMETHODCALLTYPE *Dispatch )(
22157 ID3D12GraphicsCommandList4 * This,
22158 _In_ UINT ThreadGroupCountX,
22159 _In_ UINT ThreadGroupCountY,
22160 _In_ UINT ThreadGroupCountZ);
22161
22162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
22163 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
22164 ID3D12GraphicsCommandList4 * This,
22165 _In_ ID3D12Resource *pDstBuffer,
22166 UINT64 DstOffset,
22167 _In_ ID3D12Resource *pSrcBuffer,
22168 UINT64 SrcOffset,
22169 UINT64 NumBytes);
22170
22171 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
22172 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
22173 ID3D12GraphicsCommandList4 * This,
22174 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
22175 UINT DstX,
22176 UINT DstY,
22177 UINT DstZ,
22178 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
22179 _In_opt_ const D3D12_BOX *pSrcBox);
22180
22181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
22182 void ( STDMETHODCALLTYPE *CopyResource )(
22183 ID3D12GraphicsCommandList4 * This,
22184 _In_ ID3D12Resource *pDstResource,
22185 _In_ ID3D12Resource *pSrcResource);
22186
22187 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
22188 void ( STDMETHODCALLTYPE *CopyTiles )(
22189 ID3D12GraphicsCommandList4 * This,
22190 _In_ ID3D12Resource *pTiledResource,
22191 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
22192 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
22193 _In_ ID3D12Resource *pBuffer,
22194 UINT64 BufferStartOffsetInBytes,
22195 D3D12_TILE_COPY_FLAGS Flags);
22196
22197 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
22198 void ( STDMETHODCALLTYPE *ResolveSubresource )(
22199 ID3D12GraphicsCommandList4 * This,
22200 _In_ ID3D12Resource *pDstResource,
22201 _In_ UINT DstSubresource,
22202 _In_ ID3D12Resource *pSrcResource,
22203 _In_ UINT SrcSubresource,
22204 _In_ DXGI_FORMAT Format);
22205
22206 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
22207 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
22208 ID3D12GraphicsCommandList4 * This,
22209 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
22210
22211 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
22212 void ( STDMETHODCALLTYPE *RSSetViewports )(
22213 ID3D12GraphicsCommandList4 * This,
22214 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
22215 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
22216
22217 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
22218 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
22219 ID3D12GraphicsCommandList4 * This,
22220 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
22221 _In_reads_( NumRects) const D3D12_RECT *pRects);
22222
22223 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
22224 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
22225 ID3D12GraphicsCommandList4 * This,
22226 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
22227
22228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
22229 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
22230 ID3D12GraphicsCommandList4 * This,
22231 _In_ UINT StencilRef);
22232
22233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
22234 void ( STDMETHODCALLTYPE *SetPipelineState )(
22235 ID3D12GraphicsCommandList4 * This,
22236 _In_ ID3D12PipelineState *pPipelineState);
22237
22238 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
22239 void ( STDMETHODCALLTYPE *ResourceBarrier )(
22240 ID3D12GraphicsCommandList4 * This,
22241 _In_ UINT NumBarriers,
22242 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
22243
22244 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
22245 void ( STDMETHODCALLTYPE *ExecuteBundle )(
22246 ID3D12GraphicsCommandList4 * This,
22247 _In_ ID3D12GraphicsCommandList *pCommandList);
22248
22249 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
22250 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
22251 ID3D12GraphicsCommandList4 * This,
22252 _In_ UINT NumDescriptorHeaps,
22253 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
22254
22255 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
22256 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
22257 ID3D12GraphicsCommandList4 * This,
22258 _In_opt_ ID3D12RootSignature *pRootSignature);
22259
22260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
22261 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
22262 ID3D12GraphicsCommandList4 * This,
22263 _In_opt_ ID3D12RootSignature *pRootSignature);
22264
22265 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
22266 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
22267 ID3D12GraphicsCommandList4 * This,
22268 _In_ UINT RootParameterIndex,
22269 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22270
22271 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
22272 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
22273 ID3D12GraphicsCommandList4 * This,
22274 _In_ UINT RootParameterIndex,
22275 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22276
22277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
22278 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
22279 ID3D12GraphicsCommandList4 * This,
22280 _In_ UINT RootParameterIndex,
22281 _In_ UINT SrcData,
22282 _In_ UINT DestOffsetIn32BitValues);
22283
22284 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
22285 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
22286 ID3D12GraphicsCommandList4 * This,
22287 _In_ UINT RootParameterIndex,
22288 _In_ UINT SrcData,
22289 _In_ UINT DestOffsetIn32BitValues);
22290
22291 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
22292 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
22293 ID3D12GraphicsCommandList4 * This,
22294 _In_ UINT RootParameterIndex,
22295 _In_ UINT Num32BitValuesToSet,
22296 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22297 _In_ UINT DestOffsetIn32BitValues);
22298
22299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
22300 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
22301 ID3D12GraphicsCommandList4 * This,
22302 _In_ UINT RootParameterIndex,
22303 _In_ UINT Num32BitValuesToSet,
22304 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22305 _In_ UINT DestOffsetIn32BitValues);
22306
22307 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
22308 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
22309 ID3D12GraphicsCommandList4 * This,
22310 _In_ UINT RootParameterIndex,
22311 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22312
22313 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
22314 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
22315 ID3D12GraphicsCommandList4 * This,
22316 _In_ UINT RootParameterIndex,
22317 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22318
22319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
22320 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
22321 ID3D12GraphicsCommandList4 * This,
22322 _In_ UINT RootParameterIndex,
22323 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22324
22325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
22326 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
22327 ID3D12GraphicsCommandList4 * This,
22328 _In_ UINT RootParameterIndex,
22329 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22330
22331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
22332 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
22333 ID3D12GraphicsCommandList4 * This,
22334 _In_ UINT RootParameterIndex,
22335 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22336
22337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
22338 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
22339 ID3D12GraphicsCommandList4 * This,
22340 _In_ UINT RootParameterIndex,
22341 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22342
22343 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
22344 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
22345 ID3D12GraphicsCommandList4 * This,
22346 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
22347
22348 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
22349 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
22350 ID3D12GraphicsCommandList4 * This,
22351 _In_ UINT StartSlot,
22352 _In_ UINT NumViews,
22353 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
22354
22355 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
22356 void ( STDMETHODCALLTYPE *SOSetTargets )(
22357 ID3D12GraphicsCommandList4 * This,
22358 _In_ UINT StartSlot,
22359 _In_ UINT NumViews,
22360 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
22361
22362 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
22363 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
22364 ID3D12GraphicsCommandList4 * This,
22365 _In_ UINT NumRenderTargetDescriptors,
22366 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
22367 _In_ BOOL RTsSingleHandleToDescriptorRange,
22368 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
22369
22370 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
22371 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
22372 ID3D12GraphicsCommandList4 * This,
22373 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
22374 _In_ D3D12_CLEAR_FLAGS ClearFlags,
22375 _In_ FLOAT Depth,
22376 _In_ UINT8 Stencil,
22377 _In_ UINT NumRects,
22378 _In_reads_(NumRects) const D3D12_RECT *pRects);
22379
22380 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
22381 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
22382 ID3D12GraphicsCommandList4 * This,
22383 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
22384 _In_ const FLOAT ColorRGBA[ 4 ],
22385 _In_ UINT NumRects,
22386 _In_reads_(NumRects) const D3D12_RECT *pRects);
22387
22388 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
22389 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
22390 ID3D12GraphicsCommandList4 * This,
22391 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22392 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22393 _In_ ID3D12Resource *pResource,
22394 _In_ const UINT Values[ 4 ],
22395 _In_ UINT NumRects,
22396 _In_reads_(NumRects) const D3D12_RECT *pRects);
22397
22398 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
22399 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
22400 ID3D12GraphicsCommandList4 * This,
22401 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22402 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22403 _In_ ID3D12Resource *pResource,
22404 _In_ const FLOAT Values[ 4 ],
22405 _In_ UINT NumRects,
22406 _In_reads_(NumRects) const D3D12_RECT *pRects);
22407
22408 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
22409 void ( STDMETHODCALLTYPE *DiscardResource )(
22410 ID3D12GraphicsCommandList4 * This,
22411 _In_ ID3D12Resource *pResource,
22412 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
22413
22414 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
22415 void ( STDMETHODCALLTYPE *BeginQuery )(
22416 ID3D12GraphicsCommandList4 * This,
22417 _In_ ID3D12QueryHeap *pQueryHeap,
22418 _In_ D3D12_QUERY_TYPE Type,
22419 _In_ UINT Index);
22420
22421 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
22422 void ( STDMETHODCALLTYPE *EndQuery )(
22423 ID3D12GraphicsCommandList4 * This,
22424 _In_ ID3D12QueryHeap *pQueryHeap,
22425 _In_ D3D12_QUERY_TYPE Type,
22426 _In_ UINT Index);
22427
22428 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
22429 void ( STDMETHODCALLTYPE *ResolveQueryData )(
22430 ID3D12GraphicsCommandList4 * This,
22431 _In_ ID3D12QueryHeap *pQueryHeap,
22432 _In_ D3D12_QUERY_TYPE Type,
22433 _In_ UINT StartIndex,
22434 _In_ UINT NumQueries,
22435 _In_ ID3D12Resource *pDestinationBuffer,
22436 _In_ UINT64 AlignedDestinationBufferOffset);
22437
22438 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
22439 void ( STDMETHODCALLTYPE *SetPredication )(
22440 ID3D12GraphicsCommandList4 * This,
22441 _In_opt_ ID3D12Resource *pBuffer,
22442 _In_ UINT64 AlignedBufferOffset,
22443 _In_ D3D12_PREDICATION_OP Operation);
22444
22445 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
22446 void ( STDMETHODCALLTYPE *SetMarker )(
22447 ID3D12GraphicsCommandList4 * This,
22448 UINT Metadata,
22449 _In_reads_bytes_opt_(Size) const void *pData,
22450 UINT Size);
22451
22452 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
22453 void ( STDMETHODCALLTYPE *BeginEvent )(
22454 ID3D12GraphicsCommandList4 * This,
22455 UINT Metadata,
22456 _In_reads_bytes_opt_(Size) const void *pData,
22457 UINT Size);
22458
22459 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
22460 void ( STDMETHODCALLTYPE *EndEvent )(
22461 ID3D12GraphicsCommandList4 * This);
22462
22463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
22464 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
22465 ID3D12GraphicsCommandList4 * This,
22466 _In_ ID3D12CommandSignature *pCommandSignature,
22467 _In_ UINT MaxCommandCount,
22468 _In_ ID3D12Resource *pArgumentBuffer,
22469 _In_ UINT64 ArgumentBufferOffset,
22470 _In_opt_ ID3D12Resource *pCountBuffer,
22471 _In_ UINT64 CountBufferOffset);
22472
22473 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
22474 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
22475 ID3D12GraphicsCommandList4 * This,
22476 _In_ ID3D12Resource *pDstBuffer,
22477 UINT64 DstOffset,
22478 _In_ ID3D12Resource *pSrcBuffer,
22479 UINT64 SrcOffset,
22480 UINT Dependencies,
22481 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22482 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22483
22484 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
22485 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
22486 ID3D12GraphicsCommandList4 * This,
22487 _In_ ID3D12Resource *pDstBuffer,
22488 UINT64 DstOffset,
22489 _In_ ID3D12Resource *pSrcBuffer,
22490 UINT64 SrcOffset,
22491 UINT Dependencies,
22492 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22493 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22494
22495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
22496 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
22497 ID3D12GraphicsCommandList4 * This,
22498 _In_ FLOAT Min,
22499 _In_ FLOAT Max);
22500
22501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
22502 void ( STDMETHODCALLTYPE *SetSamplePositions )(
22503 ID3D12GraphicsCommandList4 * This,
22504 _In_ UINT NumSamplesPerPixel,
22505 _In_ UINT NumPixels,
22506 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
22507
22508 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
22509 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
22510 ID3D12GraphicsCommandList4 * This,
22511 _In_ ID3D12Resource *pDstResource,
22512 _In_ UINT DstSubresource,
22513 _In_ UINT DstX,
22514 _In_ UINT DstY,
22515 _In_ ID3D12Resource *pSrcResource,
22516 _In_ UINT SrcSubresource,
22517 _In_opt_ D3D12_RECT *pSrcRect,
22518 _In_ DXGI_FORMAT Format,
22519 _In_ D3D12_RESOLVE_MODE ResolveMode);
22520
22521 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
22522 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
22523 ID3D12GraphicsCommandList4 * This,
22524 _In_ UINT Mask);
22525
22526 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
22527 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
22528 ID3D12GraphicsCommandList4 * This,
22529 UINT Count,
22530 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
22531 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
22532
22533 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
22534 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
22535 ID3D12GraphicsCommandList4 * This,
22536 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
22537
22538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
22539 void ( STDMETHODCALLTYPE *BeginRenderPass )(
22540 ID3D12GraphicsCommandList4 * This,
22541 _In_ UINT NumRenderTargets,
22542 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22543 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22544 D3D12_RENDER_PASS_FLAGS Flags);
22545
22546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
22547 void ( STDMETHODCALLTYPE *EndRenderPass )(
22548 ID3D12GraphicsCommandList4 * This);
22549
22550 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
22551 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
22552 ID3D12GraphicsCommandList4 * This,
22553 _In_ ID3D12MetaCommand *pMetaCommand,
22554 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22555 _In_ SIZE_T InitializationParametersDataSizeInBytes);
22556
22557 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
22558 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
22559 ID3D12GraphicsCommandList4 * This,
22560 _In_ ID3D12MetaCommand *pMetaCommand,
22561 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22562 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
22563
22564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
22565 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
22566 ID3D12GraphicsCommandList4 * This,
22567 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22568 _In_ UINT NumPostbuildInfoDescs,
22569 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
22570
22571 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
22572 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
22573 ID3D12GraphicsCommandList4 * This,
22574 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22575 _In_ UINT NumSourceAccelerationStructures,
22576 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
22577
22578 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
22579 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
22580 ID3D12GraphicsCommandList4 * This,
22581 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22582 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22583 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
22584
22585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
22586 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
22587 ID3D12GraphicsCommandList4 * This,
22588 _In_ ID3D12StateObject *pStateObject);
22589
22590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
22591 void ( STDMETHODCALLTYPE *DispatchRays )(
22592 ID3D12GraphicsCommandList4 * This,
22593 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
22594
22595 END_INTERFACE
22596 } ID3D12GraphicsCommandList4Vtbl;
22597
22598 interface ID3D12GraphicsCommandList4
22599 {
22600 CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl;
22601 };
22602
22603
22604
22605#ifdef COBJMACROS
22606
22607
22608#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \
22609 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
22610
22611#define ID3D12GraphicsCommandList4_AddRef(This) \
22612 ( (This)->lpVtbl -> AddRef(This) )
22613
22614#define ID3D12GraphicsCommandList4_Release(This) \
22615 ( (This)->lpVtbl -> Release(This) )
22616
22617
22618#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
22619 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
22620
22621#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \
22622 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
22623
22624#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \
22625 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
22626
22627#define ID3D12GraphicsCommandList4_SetName(This,Name) \
22628 ( (This)->lpVtbl -> SetName(This,Name) )
22629
22630
22631#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \
22632 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
22633
22634
22635#define ID3D12GraphicsCommandList4_GetType(This) \
22636 ( (This)->lpVtbl -> GetType(This) )
22637
22638
22639#define ID3D12GraphicsCommandList4_Close(This) \
22640 ( (This)->lpVtbl -> Close(This) )
22641
22642#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \
22643 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
22644
22645#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \
22646 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
22647
22648#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
22649 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
22650
22651#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
22652 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
22653
22654#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
22655 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
22656
22657#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
22658 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22659
22660#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22661 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22662
22663#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \
22664 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22665
22666#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22667 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22668
22669#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22670 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22671
22672#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \
22673 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22674
22675#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \
22676 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22677
22678#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \
22679 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22680
22681#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \
22682 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22683
22684#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \
22685 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22686
22687#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \
22688 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22689
22690#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
22691 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22692
22693#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \
22694 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22695
22696#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22697 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22698
22699#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \
22700 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22701
22702#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \
22703 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22704
22705#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22706 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22707
22708#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22709 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22710
22711#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22712 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22713
22714#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22715 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22716
22717#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22718 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22719
22720#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22721 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22722
22723#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22724 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22725
22726#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22727 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22728
22729#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22730 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22731
22732#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22733 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22734
22735#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22736 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22737
22738#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22739 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22740
22741#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \
22742 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22743
22744#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22745 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22746
22747#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \
22748 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22749
22750#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22751 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22752
22753#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22754 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22755
22756#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22757 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22758
22759#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22760 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22761
22762#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22763 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22764
22765#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \
22766 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22767
22768#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
22769 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22770
22771#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
22772 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22773
22774#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22775 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22776
22777#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22778 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22779
22780#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \
22781 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22782
22783#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \
22784 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22785
22786#define ID3D12GraphicsCommandList4_EndEvent(This) \
22787 ( (This)->lpVtbl -> EndEvent(This) )
22788
22789#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22790 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22791
22792
22793#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22794 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22795
22796#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22797 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22798
22799#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \
22800 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22801
22802#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22803 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22804
22805#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
22806 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
22807
22808#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \
22809 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
22810
22811
22812#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
22813 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
22814
22815
22816#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
22817 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
22818
22819
22820#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
22821 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
22822
22823#define ID3D12GraphicsCommandList4_EndRenderPass(This) \
22824 ( (This)->lpVtbl -> EndRenderPass(This) )
22825
22826#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
22827 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
22828
22829#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
22830 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
22831
22832#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
22833 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
22834
22835#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
22836 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
22837
22838#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
22839 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
22840
22841#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \
22842 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
22843
22844#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \
22845 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
22846
22847#endif /* COBJMACROS */
22848
22849
22850#endif /* C style interface */
22851
22852
22853
22854
22855#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
22856
22857
22858/* interface __MIDL_itf_d3d12_0000_0056 */
22859/* [local] */
22860
22861typedef
22862enum D3D12_SHADER_CACHE_MODE
22863 {
22864 D3D12_SHADER_CACHE_MODE_MEMORY = 0,
22865 D3D12_SHADER_CACHE_MODE_DISK = ( D3D12_SHADER_CACHE_MODE_MEMORY + 1 )
22866 } D3D12_SHADER_CACHE_MODE;
22867
22868typedef
22869enum D3D12_SHADER_CACHE_FLAGS
22870 {
22871 D3D12_SHADER_CACHE_FLAG_NONE = 0,
22872 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
22873 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
22874 } D3D12_SHADER_CACHE_FLAGS;
22875
22876DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )
22877typedef struct D3D12_SHADER_CACHE_SESSION_DESC
22878 {
22879 GUID Identifier;
22880 D3D12_SHADER_CACHE_MODE Mode;
22881 D3D12_SHADER_CACHE_FLAGS Flags;
22882 UINT MaximumInMemoryCacheSizeBytes;
22883 UINT MaximumInMemoryCacheEntries;
22884 UINT MaximumValueFileSizeBytes;
22885 UINT64 Version;
22886 } D3D12_SHADER_CACHE_SESSION_DESC;
22887
22888typedef
22889enum D3D12_BARRIER_LAYOUT
22890 {
22891 D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
22892 D3D12_BARRIER_LAYOUT_COMMON = 0,
22893 D3D12_BARRIER_LAYOUT_PRESENT = 0,
22894 D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
22895 D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
22896 D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
22897 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
22898 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
22899 D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
22900 D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
22901 D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
22902 D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
22903 D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
22904 D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
22905 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
22906 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
22907 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
22908 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
22909 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
22910 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
22911 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
22912 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
22913 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
22914 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
22915 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
22916 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
22917 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
22918 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
22919 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
22920 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
22921 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
22922 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
22923 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31
22924 } D3D12_BARRIER_LAYOUT;
22925
22926typedef
22927enum D3D12_BARRIER_SYNC
22928 {
22929 D3D12_BARRIER_SYNC_NONE = 0,
22930 D3D12_BARRIER_SYNC_ALL = 0x1,
22931 D3D12_BARRIER_SYNC_DRAW = 0x2,
22932 D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
22933 D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
22934 D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
22935 D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
22936 D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
22937 D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
22938 D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
22939 D3D12_BARRIER_SYNC_COPY = 0x200,
22940 D3D12_BARRIER_SYNC_RESOLVE = 0x400,
22941 D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
22942 D3D12_BARRIER_SYNC_PREDICATION = 0x800,
22943 D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
22944 D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
22945 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
22946 D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
22947 D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
22948 D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
22949 D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
22950 D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
22951 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
22952 D3D12_BARRIER_SYNC_SPLIT = 0x80000000
22953 } D3D12_BARRIER_SYNC;
22954
22955DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )
22956typedef
22957enum D3D12_BARRIER_ACCESS
22958 {
22959 D3D12_BARRIER_ACCESS_COMMON = 0,
22960 D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
22961 D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
22962 D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
22963 D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
22964 D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
22965 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
22966 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
22967 D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
22968 D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
22969 D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
22970 D3D12_BARRIER_ACCESS_PREDICATION = 0x200,
22971 D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
22972 D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
22973 D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
22974 D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
22975 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
22976 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
22977 D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
22978 D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
22979 D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
22980 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
22981 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
22982 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
22983 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
22984 D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000
22985 } D3D12_BARRIER_ACCESS;
22986
22987DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )
22988typedef
22989enum D3D12_BARRIER_TYPE
22990 {
22991 D3D12_BARRIER_TYPE_GLOBAL = 0,
22992 D3D12_BARRIER_TYPE_TEXTURE = ( D3D12_BARRIER_TYPE_GLOBAL + 1 ) ,
22993 D3D12_BARRIER_TYPE_BUFFER = ( D3D12_BARRIER_TYPE_TEXTURE + 1 )
22994 } D3D12_BARRIER_TYPE;
22995
22996typedef
22997enum D3D12_TEXTURE_BARRIER_FLAGS
22998 {
22999 D3D12_TEXTURE_BARRIER_FLAG_NONE = 0,
23000 D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1
23001 } D3D12_TEXTURE_BARRIER_FLAGS;
23002
23003DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )
23004typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
23005 {
23006 UINT IndexOrFirstMipLevel;
23007 UINT NumMipLevels;
23008 UINT FirstArraySlice;
23009 UINT NumArraySlices;
23010 UINT FirstPlane;
23011 UINT NumPlanes;
23012 } D3D12_BARRIER_SUBRESOURCE_RANGE;
23013
23014typedef struct D3D12_GLOBAL_BARRIER
23015 {
23016 D3D12_BARRIER_SYNC SyncBefore;
23017 D3D12_BARRIER_SYNC SyncAfter;
23018 D3D12_BARRIER_ACCESS AccessBefore;
23019 D3D12_BARRIER_ACCESS AccessAfter;
23020 } D3D12_GLOBAL_BARRIER;
23021
23022typedef struct D3D12_TEXTURE_BARRIER
23023 {
23024 D3D12_BARRIER_SYNC SyncBefore;
23025 D3D12_BARRIER_SYNC SyncAfter;
23026 D3D12_BARRIER_ACCESS AccessBefore;
23027 D3D12_BARRIER_ACCESS AccessAfter;
23028 D3D12_BARRIER_LAYOUT LayoutBefore;
23029 D3D12_BARRIER_LAYOUT LayoutAfter;
23030 _In_ ID3D12Resource *pResource;
23031 D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
23032 D3D12_TEXTURE_BARRIER_FLAGS Flags;
23033 } D3D12_TEXTURE_BARRIER;
23034
23035typedef struct D3D12_BUFFER_BARRIER
23036 {
23037 D3D12_BARRIER_SYNC SyncBefore;
23038 D3D12_BARRIER_SYNC SyncAfter;
23039 D3D12_BARRIER_ACCESS AccessBefore;
23040 D3D12_BARRIER_ACCESS AccessAfter;
23041 _In_ ID3D12Resource *pResource;
23042 UINT64 Offset;
23043 UINT64 Size;
23044 } D3D12_BUFFER_BARRIER;
23045
23046typedef struct D3D12_BARRIER_GROUP
23047 {
23048 D3D12_BARRIER_TYPE Type;
23049 UINT32 NumBarriers;
23050 union
23051 {
23052 _In_reads_(NumBarriers) const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
23053 _In_reads_(NumBarriers) const D3D12_TEXTURE_BARRIER *pTextureBarriers;
23054 _In_reads_(NumBarriers) const D3D12_BUFFER_BARRIER *pBufferBarriers;
23055 } ;
23056 } D3D12_BARRIER_GROUP;
23057
23058
23059
23060extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
23061extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
23062
23063#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
23064#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
23065
23066/* interface ID3D12ShaderCacheSession */
23067/* [unique][local][object][uuid] */
23068
23069
23070EXTERN_C const IID IID_ID3D12ShaderCacheSession;
23071
23072#if defined(__cplusplus) && !defined(CINTERFACE)
23073
23074 MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
23075 ID3D12ShaderCacheSession : public ID3D12DeviceChild
23076 {
23077 public:
23078 virtual HRESULT STDMETHODCALLTYPE FindValue(
23079 /* [annotation][in] */
23080 _In_reads_bytes_(KeySize) const void *pKey,
23081 UINT KeySize,
23082 /* [annotation][out] */
23083 _Out_writes_bytes_(*pValueSize) void *pValue,
23084 _Inout_ UINT *pValueSize) = 0;
23085
23086 virtual HRESULT STDMETHODCALLTYPE StoreValue(
23087 /* [annotation][in] */
23088 _In_reads_bytes_(KeySize) const void *pKey,
23089 UINT KeySize,
23090 /* [annotation][in] */
23091 _In_reads_bytes_(ValueSize) const void *pValue,
23092 UINT ValueSize) = 0;
23093
23094 virtual void STDMETHODCALLTYPE SetDeleteOnDestroy( void) = 0;
23095
23096#if defined(_MSC_VER) || !defined(_WIN32)
23097 virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
23098#else
23099 virtual D3D12_SHADER_CACHE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
23100 D3D12_SHADER_CACHE_SESSION_DESC * RetVal) = 0;
23101#endif
23102
23103 };
23104
23105
23106#else /* C style interface */
23107
23108 typedef struct ID3D12ShaderCacheSessionVtbl
23109 {
23110 BEGIN_INTERFACE
23111
23112 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
23113 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
23114 ID3D12ShaderCacheSession * This,
23115 REFIID riid,
23116 _COM_Outptr_ void **ppvObject);
23117
23118 DECLSPEC_XFGVIRT(IUnknown, AddRef)
23119 ULONG ( STDMETHODCALLTYPE *AddRef )(
23120 ID3D12ShaderCacheSession * This);
23121
23122 DECLSPEC_XFGVIRT(IUnknown, Release)
23123 ULONG ( STDMETHODCALLTYPE *Release )(
23124 ID3D12ShaderCacheSession * This);
23125
23126 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
23127 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
23128 ID3D12ShaderCacheSession * This,
23129 _In_ REFGUID guid,
23130 _Inout_ UINT *pDataSize,
23131 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
23132
23133 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
23134 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
23135 ID3D12ShaderCacheSession * This,
23136 _In_ REFGUID guid,
23137 _In_ UINT DataSize,
23138 _In_reads_bytes_opt_( DataSize ) const void *pData);
23139
23140 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
23141 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
23142 ID3D12ShaderCacheSession * This,
23143 _In_ REFGUID guid,
23144 _In_opt_ const IUnknown *pData);
23145
23146 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
23147 HRESULT ( STDMETHODCALLTYPE *SetName )(
23148 ID3D12ShaderCacheSession * This,
23149 _In_z_ LPCWSTR Name);
23150
23151 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
23152 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
23153 ID3D12ShaderCacheSession * This,
23154 REFIID riid,
23155 _COM_Outptr_opt_ void **ppvDevice);
23156
23157 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, FindValue)
23158 HRESULT ( STDMETHODCALLTYPE *FindValue )(
23159 ID3D12ShaderCacheSession * This,
23160 /* [annotation][in] */
23161 _In_reads_bytes_(KeySize) const void *pKey,
23162 UINT KeySize,
23163 /* [annotation][out] */
23164 _Out_writes_bytes_(*pValueSize) void *pValue,
23165 _Inout_ UINT *pValueSize);
23166
23167 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, StoreValue)
23168 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
23169 ID3D12ShaderCacheSession * This,
23170 /* [annotation][in] */
23171 _In_reads_bytes_(KeySize) const void *pKey,
23172 UINT KeySize,
23173 /* [annotation][in] */
23174 _In_reads_bytes_(ValueSize) const void *pValue,
23175 UINT ValueSize);
23176
23177 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, SetDeleteOnDestroy)
23178 void ( STDMETHODCALLTYPE *SetDeleteOnDestroy )(
23179 ID3D12ShaderCacheSession * This);
23180
23181 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, GetDesc)
23182#if !defined(_WIN32)
23183 D3D12_SHADER_CACHE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
23184 ID3D12ShaderCacheSession * This);
23185
23186#else
23187 D3D12_SHADER_CACHE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
23188 ID3D12ShaderCacheSession * This,
23189 D3D12_SHADER_CACHE_SESSION_DESC * RetVal);
23190
23191#endif
23192
23193 END_INTERFACE
23194 } ID3D12ShaderCacheSessionVtbl;
23195
23196 interface ID3D12ShaderCacheSession
23197 {
23198 CONST_VTBL struct ID3D12ShaderCacheSessionVtbl *lpVtbl;
23199 };
23200
23201
23202
23203#ifdef COBJMACROS
23204
23205
23206#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) \
23207 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
23208
23209#define ID3D12ShaderCacheSession_AddRef(This) \
23210 ( (This)->lpVtbl -> AddRef(This) )
23211
23212#define ID3D12ShaderCacheSession_Release(This) \
23213 ( (This)->lpVtbl -> Release(This) )
23214
23215
23216#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData) \
23217 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
23218
23219#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData) \
23220 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
23221
23222#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData) \
23223 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
23224
23225#define ID3D12ShaderCacheSession_SetName(This,Name) \
23226 ( (This)->lpVtbl -> SetName(This,Name) )
23227
23228
23229#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice) \
23230 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
23231
23232
23233#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize) \
23234 ( (This)->lpVtbl -> FindValue(This,pKey,KeySize,pValue,pValueSize) )
23235
23236#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize) \
23237 ( (This)->lpVtbl -> StoreValue(This,pKey,KeySize,pValue,ValueSize) )
23238
23239#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) \
23240 ( (This)->lpVtbl -> SetDeleteOnDestroy(This) )
23241#if !defined(_WIN32)
23242
23243#define ID3D12ShaderCacheSession_GetDesc(This) \
23244 ( (This)->lpVtbl -> GetDesc(This) )
23245#else
23246#define ID3D12ShaderCacheSession_GetDesc(This,RetVal) \
23247 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
23248#endif
23249
23250#endif /* COBJMACROS */
23251
23252
23253#endif /* C style interface */
23254
23255
23256
23257
23258#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
23259
23260
23261/* interface __MIDL_itf_d3d12_0000_0057 */
23262/* [local] */
23263
23264typedef
23265enum D3D12_SHADER_CACHE_KIND_FLAGS
23266 {
23267 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
23268 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
23269 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
23270 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
23271 } D3D12_SHADER_CACHE_KIND_FLAGS;
23272
23273DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )
23274typedef
23275enum D3D12_SHADER_CACHE_CONTROL_FLAGS
23276 {
23277 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
23278 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
23279 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
23280 } D3D12_SHADER_CACHE_CONTROL_FLAGS;
23281
23282DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )
23283
23284
23285extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_c_ifspec;
23286extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_s_ifspec;
23287
23288#ifndef __ID3D12Device9_INTERFACE_DEFINED__
23289#define __ID3D12Device9_INTERFACE_DEFINED__
23290
23291/* interface ID3D12Device9 */
23292/* [unique][local][object][uuid] */
23293
23294
23295EXTERN_C const IID IID_ID3D12Device9;
23296
23297#if defined(__cplusplus) && !defined(CINTERFACE)
23298
23299 MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
23300 ID3D12Device9 : public ID3D12Device8
23301 {
23302 public:
23303 virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
23304 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
23305 REFIID riid,
23306 _COM_Outptr_opt_ void **ppvSession) = 0;
23307
23308 virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
23309 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
23310 D3D12_SHADER_CACHE_CONTROL_FLAGS Control) = 0;
23311
23312 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
23313 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23314 REFIID CreatorID,
23315 REFIID riid,
23316 _COM_Outptr_ void **ppCommandQueue) = 0;
23317
23318 };
23319
23320
23321#else /* C style interface */
23322
23323 typedef struct ID3D12Device9Vtbl
23324 {
23325 BEGIN_INTERFACE
23326
23327 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
23328 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
23329 ID3D12Device9 * This,
23330 REFIID riid,
23331 _COM_Outptr_ void **ppvObject);
23332
23333 DECLSPEC_XFGVIRT(IUnknown, AddRef)
23334 ULONG ( STDMETHODCALLTYPE *AddRef )(
23335 ID3D12Device9 * This);
23336
23337 DECLSPEC_XFGVIRT(IUnknown, Release)
23338 ULONG ( STDMETHODCALLTYPE *Release )(
23339 ID3D12Device9 * This);
23340
23341 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
23342 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
23343 ID3D12Device9 * This,
23344 _In_ REFGUID guid,
23345 _Inout_ UINT *pDataSize,
23346 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
23347
23348 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
23349 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
23350 ID3D12Device9 * This,
23351 _In_ REFGUID guid,
23352 _In_ UINT DataSize,
23353 _In_reads_bytes_opt_( DataSize ) const void *pData);
23354
23355 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
23356 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
23357 ID3D12Device9 * This,
23358 _In_ REFGUID guid,
23359 _In_opt_ const IUnknown *pData);
23360
23361 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
23362 HRESULT ( STDMETHODCALLTYPE *SetName )(
23363 ID3D12Device9 * This,
23364 _In_z_ LPCWSTR Name);
23365
23366 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
23367 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
23368 ID3D12Device9 * This);
23369
23370 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
23371 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
23372 ID3D12Device9 * This,
23373 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23374 REFIID riid,
23375 _COM_Outptr_ void **ppCommandQueue);
23376
23377 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
23378 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
23379 ID3D12Device9 * This,
23380 _In_ D3D12_COMMAND_LIST_TYPE type,
23381 REFIID riid,
23382 _COM_Outptr_ void **ppCommandAllocator);
23383
23384 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
23385 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
23386 ID3D12Device9 * This,
23387 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
23388 REFIID riid,
23389 _COM_Outptr_ void **ppPipelineState);
23390
23391 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
23392 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
23393 ID3D12Device9 * This,
23394 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
23395 REFIID riid,
23396 _COM_Outptr_ void **ppPipelineState);
23397
23398 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
23399 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
23400 ID3D12Device9 * This,
23401 _In_ UINT nodeMask,
23402 _In_ D3D12_COMMAND_LIST_TYPE type,
23403 _In_ ID3D12CommandAllocator *pCommandAllocator,
23404 _In_opt_ ID3D12PipelineState *pInitialState,
23405 REFIID riid,
23406 _COM_Outptr_ void **ppCommandList);
23407
23408 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
23409 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
23410 ID3D12Device9 * This,
23411 D3D12_FEATURE Feature,
23412 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
23413 UINT FeatureSupportDataSize);
23414
23415 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
23416 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
23417 ID3D12Device9 * This,
23418 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
23419 REFIID riid,
23420 _COM_Outptr_ void **ppvHeap);
23421
23422 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
23423 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
23424 ID3D12Device9 * This,
23425 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
23426
23427 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
23428 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
23429 ID3D12Device9 * This,
23430 _In_ UINT nodeMask,
23431 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
23432 _In_ SIZE_T blobLengthInBytes,
23433 REFIID riid,
23434 _COM_Outptr_ void **ppvRootSignature);
23435
23436 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
23437 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
23438 ID3D12Device9 * This,
23439 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
23440 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23441
23442 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
23443 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
23444 ID3D12Device9 * This,
23445 _In_opt_ ID3D12Resource *pResource,
23446 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
23447 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23448
23449 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
23450 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
23451 ID3D12Device9 * This,
23452 _In_opt_ ID3D12Resource *pResource,
23453 _In_opt_ ID3D12Resource *pCounterResource,
23454 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
23455 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23456
23457 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
23458 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
23459 ID3D12Device9 * This,
23460 _In_opt_ ID3D12Resource *pResource,
23461 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
23462 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23463
23464 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
23465 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
23466 ID3D12Device9 * This,
23467 _In_opt_ ID3D12Resource *pResource,
23468 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
23469 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23470
23471 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
23472 void ( STDMETHODCALLTYPE *CreateSampler )(
23473 ID3D12Device9 * This,
23474 _In_ const D3D12_SAMPLER_DESC *pDesc,
23475 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23476
23477 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
23478 void ( STDMETHODCALLTYPE *CopyDescriptors )(
23479 ID3D12Device9 * This,
23480 _In_ UINT NumDestDescriptorRanges,
23481 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
23482 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
23483 _In_ UINT NumSrcDescriptorRanges,
23484 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
23485 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
23486 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
23487
23488 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
23489 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
23490 ID3D12Device9 * This,
23491 _In_ UINT NumDescriptors,
23492 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
23493 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
23494 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
23495
23496 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
23497#if !defined(_WIN32)
23498 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
23499 ID3D12Device9 * This,
23500 _In_ UINT visibleMask,
23501 _In_ UINT numResourceDescs,
23502 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
23503
23504#else
23505 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
23506 ID3D12Device9 * This,
23507 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23508 _In_ UINT visibleMask,
23509 _In_ UINT numResourceDescs,
23510 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
23511
23512#endif
23513
23514 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
23515#if !defined(_WIN32)
23516 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
23517 ID3D12Device9 * This,
23518 _In_ UINT nodeMask,
23519 D3D12_HEAP_TYPE heapType);
23520
23521#else
23522 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
23523 ID3D12Device9 * This,
23524 D3D12_HEAP_PROPERTIES * RetVal,
23525 _In_ UINT nodeMask,
23526 D3D12_HEAP_TYPE heapType);
23527
23528#endif
23529
23530 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
23531 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
23532 ID3D12Device9 * This,
23533 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23534 D3D12_HEAP_FLAGS HeapFlags,
23535 _In_ const D3D12_RESOURCE_DESC *pDesc,
23536 D3D12_RESOURCE_STATES InitialResourceState,
23537 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23538 REFIID riidResource,
23539 _COM_Outptr_opt_ void **ppvResource);
23540
23541 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
23542 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
23543 ID3D12Device9 * This,
23544 _In_ const D3D12_HEAP_DESC *pDesc,
23545 REFIID riid,
23546 _COM_Outptr_opt_ void **ppvHeap);
23547
23548 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
23549 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
23550 ID3D12Device9 * This,
23551 _In_ ID3D12Heap *pHeap,
23552 UINT64 HeapOffset,
23553 _In_ const D3D12_RESOURCE_DESC *pDesc,
23554 D3D12_RESOURCE_STATES InitialState,
23555 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23556 REFIID riid,
23557 _COM_Outptr_opt_ void **ppvResource);
23558
23559 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
23560 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
23561 ID3D12Device9 * This,
23562 _In_ const D3D12_RESOURCE_DESC *pDesc,
23563 D3D12_RESOURCE_STATES InitialState,
23564 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23565 REFIID riid,
23566 _COM_Outptr_opt_ void **ppvResource);
23567
23568 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
23569 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
23570 ID3D12Device9 * This,
23571 _In_ ID3D12DeviceChild *pObject,
23572 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
23573 DWORD Access,
23574 _In_opt_ LPCWSTR Name,
23575 _Out_ HANDLE *pHandle);
23576
23577 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
23578 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
23579 ID3D12Device9 * This,
23580 _In_ HANDLE NTHandle,
23581 REFIID riid,
23582 _COM_Outptr_opt_ void **ppvObj);
23583
23584 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
23585 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
23586 ID3D12Device9 * This,
23587 _In_ LPCWSTR Name,
23588 DWORD Access,
23589 /* [annotation][out] */
23590 _Out_ HANDLE *pNTHandle);
23591
23592 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
23593 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
23594 ID3D12Device9 * This,
23595 UINT NumObjects,
23596 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
23597
23598 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
23599 HRESULT ( STDMETHODCALLTYPE *Evict )(
23600 ID3D12Device9 * This,
23601 UINT NumObjects,
23602 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
23603
23604 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
23605 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
23606 ID3D12Device9 * This,
23607 UINT64 InitialValue,
23608 D3D12_FENCE_FLAGS Flags,
23609 REFIID riid,
23610 _COM_Outptr_ void **ppFence);
23611
23612 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
23613 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
23614 ID3D12Device9 * This);
23615
23616 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
23617 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
23618 ID3D12Device9 * This,
23619 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
23620 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
23621 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
23622 UINT64 BaseOffset,
23623 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
23624 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
23625 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
23626 _Out_opt_ UINT64 *pTotalBytes);
23627
23628 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
23629 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
23630 ID3D12Device9 * This,
23631 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
23632 REFIID riid,
23633 _COM_Outptr_opt_ void **ppvHeap);
23634
23635 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
23636 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
23637 ID3D12Device9 * This,
23638 BOOL Enable);
23639
23640 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
23641 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
23642 ID3D12Device9 * This,
23643 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
23644 _In_opt_ ID3D12RootSignature *pRootSignature,
23645 REFIID riid,
23646 _COM_Outptr_opt_ void **ppvCommandSignature);
23647
23648 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
23649 void ( STDMETHODCALLTYPE *GetResourceTiling )(
23650 ID3D12Device9 * This,
23651 _In_ ID3D12Resource *pTiledResource,
23652 _Out_opt_ UINT *pNumTilesForEntireResource,
23653 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
23654 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
23655 _Inout_opt_ UINT *pNumSubresourceTilings,
23656 _In_ UINT FirstSubresourceTilingToGet,
23657 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
23658
23659 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
23660#if !defined(_WIN32)
23661 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
23662 ID3D12Device9 * This);
23663
23664#else
23665 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
23666 ID3D12Device9 * This,
23667 LUID * RetVal);
23668
23669#endif
23670
23671 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
23672 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
23673 ID3D12Device9 * This,
23674 _In_reads_(BlobLength) const void *pLibraryBlob,
23675 SIZE_T BlobLength,
23676 REFIID riid,
23677 _COM_Outptr_ void **ppPipelineLibrary);
23678
23679 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
23680 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
23681 ID3D12Device9 * This,
23682 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
23683 _In_reads_(NumFences) const UINT64 *pFenceValues,
23684 UINT NumFences,
23685 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
23686 HANDLE hEvent);
23687
23688 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
23689 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
23690 ID3D12Device9 * This,
23691 UINT NumObjects,
23692 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
23693 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
23694
23695 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
23696 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
23697 ID3D12Device9 * This,
23698 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
23699 REFIID riid,
23700 _COM_Outptr_ void **ppPipelineState);
23701
23702 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
23703 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
23704 ID3D12Device9 * This,
23705 _In_ const void *pAddress,
23706 REFIID riid,
23707 _COM_Outptr_ void **ppvHeap);
23708
23709 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
23710 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
23711 ID3D12Device9 * This,
23712 _In_ HANDLE hFileMapping,
23713 REFIID riid,
23714 _COM_Outptr_ void **ppvHeap);
23715
23716 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
23717 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
23718 ID3D12Device9 * This,
23719 D3D12_RESIDENCY_FLAGS Flags,
23720 UINT NumObjects,
23721 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
23722 _In_ ID3D12Fence *pFenceToSignal,
23723 UINT64 FenceValueToSignal);
23724
23725 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
23726 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
23727 ID3D12Device9 * This,
23728 _In_ UINT nodeMask,
23729 _In_ D3D12_COMMAND_LIST_TYPE type,
23730 _In_ D3D12_COMMAND_LIST_FLAGS flags,
23731 REFIID riid,
23732 _COM_Outptr_ void **ppCommandList);
23733
23734 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
23735 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
23736 ID3D12Device9 * This,
23737 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
23738 _In_ REFIID riid,
23739 _COM_Outptr_ void **ppSession);
23740
23741 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
23742 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
23743 ID3D12Device9 * This,
23744 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23745 D3D12_HEAP_FLAGS HeapFlags,
23746 _In_ const D3D12_RESOURCE_DESC *pDesc,
23747 D3D12_RESOURCE_STATES InitialResourceState,
23748 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23749 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23750 REFIID riidResource,
23751 _COM_Outptr_opt_ void **ppvResource);
23752
23753 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
23754 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
23755 ID3D12Device9 * This,
23756 _In_ const D3D12_HEAP_DESC *pDesc,
23757 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23758 REFIID riid,
23759 _COM_Outptr_opt_ void **ppvHeap);
23760
23761 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
23762 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
23763 ID3D12Device9 * This,
23764 _In_ const D3D12_RESOURCE_DESC *pDesc,
23765 D3D12_RESOURCE_STATES InitialState,
23766 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23767 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23768 REFIID riid,
23769 _COM_Outptr_opt_ void **ppvResource);
23770
23771 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
23772#if !defined(_WIN32)
23773 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
23774 ID3D12Device9 * This,
23775 UINT visibleMask,
23776 UINT numResourceDescs,
23777 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
23778 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23779
23780#else
23781 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
23782 ID3D12Device9 * This,
23783 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23784 UINT visibleMask,
23785 UINT numResourceDescs,
23786 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
23787 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23788
23789#endif
23790
23791 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
23792 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
23793 ID3D12Device9 * This,
23794 _In_ ID3D12LifetimeOwner *pOwner,
23795 REFIID riid,
23796 _COM_Outptr_ void **ppvTracker);
23797
23798 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
23799 void ( STDMETHODCALLTYPE *RemoveDevice )(
23800 ID3D12Device9 * This);
23801
23802 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
23803 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
23804 ID3D12Device9 * This,
23805 _Inout_ UINT *pNumMetaCommands,
23806 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
23807
23808 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
23809 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
23810 ID3D12Device9 * This,
23811 _In_ REFGUID CommandId,
23812 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
23813 _Out_opt_ UINT *pTotalStructureSizeInBytes,
23814 _Inout_ UINT *pParameterCount,
23815 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
23816
23817 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
23818 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
23819 ID3D12Device9 * This,
23820 _In_ REFGUID CommandId,
23821 _In_ UINT NodeMask,
23822 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
23823 _In_ SIZE_T CreationParametersDataSizeInBytes,
23824 REFIID riid,
23825 _COM_Outptr_ void **ppMetaCommand);
23826
23827 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
23828 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
23829 ID3D12Device9 * This,
23830 const D3D12_STATE_OBJECT_DESC *pDesc,
23831 REFIID riid,
23832 _COM_Outptr_ void **ppStateObject);
23833
23834 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
23835 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
23836 ID3D12Device9 * This,
23837 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
23838 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
23839
23840 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
23841 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
23842 ID3D12Device9 * This,
23843 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
23844 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
23845
23846 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
23847 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
23848 ID3D12Device9 * This,
23849 D3D12_BACKGROUND_PROCESSING_MODE Mode,
23850 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
23851 _In_opt_ HANDLE hEventToSignalUponCompletion,
23852 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
23853
23854 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
23855 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
23856 ID3D12Device9 * This,
23857 const D3D12_STATE_OBJECT_DESC *pAddition,
23858 ID3D12StateObject *pStateObjectToGrowFrom,
23859 REFIID riid,
23860 _COM_Outptr_ void **ppNewStateObject);
23861
23862 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
23863 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
23864 ID3D12Device9 * This,
23865 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
23866 _In_ REFIID riid,
23867 _COM_Outptr_ void **ppSession);
23868
23869 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
23870#if !defined(_WIN32)
23871 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
23872 ID3D12Device9 * This,
23873 UINT visibleMask,
23874 UINT numResourceDescs,
23875 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
23876 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23877
23878#else
23879 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
23880 ID3D12Device9 * This,
23881 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23882 UINT visibleMask,
23883 UINT numResourceDescs,
23884 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
23885 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23886
23887#endif
23888
23889 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
23890 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
23891 ID3D12Device9 * This,
23892 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23893 D3D12_HEAP_FLAGS HeapFlags,
23894 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
23895 D3D12_RESOURCE_STATES InitialResourceState,
23896 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23897 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23898 REFIID riidResource,
23899 _COM_Outptr_opt_ void **ppvResource);
23900
23901 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
23902 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
23903 ID3D12Device9 * This,
23904 _In_ ID3D12Heap *pHeap,
23905 UINT64 HeapOffset,
23906 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
23907 D3D12_RESOURCE_STATES InitialState,
23908 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23909 REFIID riid,
23910 _COM_Outptr_opt_ void **ppvResource);
23911
23912 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
23913 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
23914 ID3D12Device9 * This,
23915 _In_opt_ ID3D12Resource *pTargetedResource,
23916 _In_opt_ ID3D12Resource *pFeedbackResource,
23917 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23918
23919 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
23920 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
23921 ID3D12Device9 * This,
23922 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
23923 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
23924 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
23925 UINT64 BaseOffset,
23926 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
23927 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
23928 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
23929 _Out_opt_ UINT64 *pTotalBytes);
23930
23931 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
23932 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
23933 ID3D12Device9 * This,
23934 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
23935 REFIID riid,
23936 _COM_Outptr_opt_ void **ppvSession);
23937
23938 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
23939 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
23940 ID3D12Device9 * This,
23941 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
23942 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
23943
23944 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
23945 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
23946 ID3D12Device9 * This,
23947 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23948 REFIID CreatorID,
23949 REFIID riid,
23950 _COM_Outptr_ void **ppCommandQueue);
23951
23952 END_INTERFACE
23953 } ID3D12Device9Vtbl;
23954
23955 interface ID3D12Device9
23956 {
23957 CONST_VTBL struct ID3D12Device9Vtbl *lpVtbl;
23958 };
23959
23960
23961
23962#ifdef COBJMACROS
23963
23964
23965#define ID3D12Device9_QueryInterface(This,riid,ppvObject) \
23966 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
23967
23968#define ID3D12Device9_AddRef(This) \
23969 ( (This)->lpVtbl -> AddRef(This) )
23970
23971#define ID3D12Device9_Release(This) \
23972 ( (This)->lpVtbl -> Release(This) )
23973
23974
23975#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData) \
23976 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
23977
23978#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData) \
23979 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
23980
23981#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData) \
23982 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
23983
23984#define ID3D12Device9_SetName(This,Name) \
23985 ( (This)->lpVtbl -> SetName(This,Name) )
23986
23987
23988#define ID3D12Device9_GetNodeCount(This) \
23989 ( (This)->lpVtbl -> GetNodeCount(This) )
23990
23991#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
23992 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
23993
23994#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
23995 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
23996
23997#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
23998 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
23999
24000#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
24001 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
24002
24003#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
24004 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
24005
24006#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
24007 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
24008
24009#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
24010 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
24011
24012#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
24013 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
24014
24015#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
24016 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
24017
24018#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor) \
24019 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
24020
24021#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
24022 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
24023
24024#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
24025 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
24026
24027#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
24028 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
24029
24030#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
24031 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
24032
24033#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor) \
24034 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
24035
24036#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
24037 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
24038
24039#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
24040 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
24041#if !defined(_WIN32)
24042
24043#define ID3D12Device9_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
24044 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
24045#else
24046#define ID3D12Device9_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
24047 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
24048#endif
24049#if !defined(_WIN32)
24050
24051#define ID3D12Device9_GetCustomHeapProperties(This,nodeMask,heapType) \
24052 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
24053#else
24054#define ID3D12Device9_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
24055 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
24056#endif
24057
24058#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
24059 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
24060
24061#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap) \
24062 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
24063
24064#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24065 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24066
24067#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24068 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24069
24070#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
24071 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
24072
24073#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
24074 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
24075
24076#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
24077 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
24078
24079#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects) \
24080 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
24081
24082#define ID3D12Device9_Evict(This,NumObjects,ppObjects) \
24083 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
24084
24085#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence) \
24086 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
24087
24088#define ID3D12Device9_GetDeviceRemovedReason(This) \
24089 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
24090
24091#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
24092 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
24093
24094#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
24095 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
24096
24097#define ID3D12Device9_SetStablePowerState(This,Enable) \
24098 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
24099
24100#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
24101 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
24102
24103#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
24104 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
24105#if !defined(_WIN32)
24106
24107#define ID3D12Device9_GetAdapterLuid(This) \
24108 ( (This)->lpVtbl -> GetAdapterLuid(This) )
24109#else
24110#define ID3D12Device9_GetAdapterLuid(This,RetVal) \
24111 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
24112#endif
24113
24114
24115#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
24116 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
24117
24118#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
24119 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
24120
24121#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
24122 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
24123
24124
24125#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
24126 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
24127
24128
24129#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
24130 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
24131
24132#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
24133 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
24134
24135#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
24136 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
24137
24138
24139#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
24140 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
24141
24142#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
24143 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
24144
24145#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
24146 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
24147
24148#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
24149 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
24150
24151#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
24152 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
24153#if !defined(_WIN32)
24154
24155#define ID3D12Device9_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24156 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24157#else
24158#define ID3D12Device9_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24159 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24160#endif
24161
24162
24163#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
24164 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
24165
24166#define ID3D12Device9_RemoveDevice(This) \
24167 ( (This)->lpVtbl -> RemoveDevice(This) )
24168
24169#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
24170 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
24171
24172#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
24173 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
24174
24175#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
24176 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
24177
24178#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject) \
24179 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
24180
24181#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
24182 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
24183
24184#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
24185 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
24186
24187
24188#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
24189 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
24190
24191
24192#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
24193 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
24194
24195#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
24196 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
24197
24198#if !defined(_WIN32)
24199
24200#define ID3D12Device9_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24201 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24202#else
24203#define ID3D12Device9_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24204 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24205#endif
24206
24207#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
24208 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
24209
24210#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24211 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24212
24213#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
24214 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
24215
24216#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
24217 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
24218
24219
24220#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
24221 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
24222
24223#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control) \
24224 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
24225
24226#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
24227 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
24228
24229#endif /* COBJMACROS */
24230
24231
24232#endif /* C style interface */
24233
24234
24235
24236
24237#endif /* __ID3D12Device9_INTERFACE_DEFINED__ */
24238
24239
24240#ifndef __ID3D12Device10_INTERFACE_DEFINED__
24241#define __ID3D12Device10_INTERFACE_DEFINED__
24242
24243/* interface ID3D12Device10 */
24244/* [unique][local][object][uuid] */
24245
24246
24247EXTERN_C const IID IID_ID3D12Device10;
24248
24249#if defined(__cplusplus) && !defined(CINTERFACE)
24250
24251 MIDL_INTERFACE("517f8718-aa66-49f9-b02b-a7ab89c06031")
24252 ID3D12Device10 : public ID3D12Device9
24253 {
24254 public:
24255 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource3(
24256 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24257 D3D12_HEAP_FLAGS HeapFlags,
24258 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24259 D3D12_BARRIER_LAYOUT InitialLayout,
24260 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24261 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24262 UINT32 NumCastableFormats,
24263 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24264 REFIID riidResource,
24265 _COM_Outptr_opt_ void **ppvResource) = 0;
24266
24267 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource2(
24268 _In_ ID3D12Heap *pHeap,
24269 UINT64 HeapOffset,
24270 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24271 D3D12_BARRIER_LAYOUT InitialLayout,
24272 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24273 UINT32 NumCastableFormats,
24274 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24275 REFIID riid,
24276 _COM_Outptr_opt_ void **ppvResource) = 0;
24277
24278 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource2(
24279 _In_ const D3D12_RESOURCE_DESC *pDesc,
24280 D3D12_BARRIER_LAYOUT InitialLayout,
24281 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24282 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24283 UINT32 NumCastableFormats,
24284 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24285 REFIID riid,
24286 _COM_Outptr_opt_ void **ppvResource) = 0;
24287
24288 };
24289
24290
24291#else /* C style interface */
24292
24293 typedef struct ID3D12Device10Vtbl
24294 {
24295 BEGIN_INTERFACE
24296
24297 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
24298 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
24299 ID3D12Device10 * This,
24300 REFIID riid,
24301 _COM_Outptr_ void **ppvObject);
24302
24303 DECLSPEC_XFGVIRT(IUnknown, AddRef)
24304 ULONG ( STDMETHODCALLTYPE *AddRef )(
24305 ID3D12Device10 * This);
24306
24307 DECLSPEC_XFGVIRT(IUnknown, Release)
24308 ULONG ( STDMETHODCALLTYPE *Release )(
24309 ID3D12Device10 * This);
24310
24311 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
24312 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
24313 ID3D12Device10 * This,
24314 _In_ REFGUID guid,
24315 _Inout_ UINT *pDataSize,
24316 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
24317
24318 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
24319 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
24320 ID3D12Device10 * This,
24321 _In_ REFGUID guid,
24322 _In_ UINT DataSize,
24323 _In_reads_bytes_opt_( DataSize ) const void *pData);
24324
24325 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
24326 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
24327 ID3D12Device10 * This,
24328 _In_ REFGUID guid,
24329 _In_opt_ const IUnknown *pData);
24330
24331 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
24332 HRESULT ( STDMETHODCALLTYPE *SetName )(
24333 ID3D12Device10 * This,
24334 _In_z_ LPCWSTR Name);
24335
24336 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
24337 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
24338 ID3D12Device10 * This);
24339
24340 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
24341 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
24342 ID3D12Device10 * This,
24343 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
24344 REFIID riid,
24345 _COM_Outptr_ void **ppCommandQueue);
24346
24347 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
24348 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
24349 ID3D12Device10 * This,
24350 _In_ D3D12_COMMAND_LIST_TYPE type,
24351 REFIID riid,
24352 _COM_Outptr_ void **ppCommandAllocator);
24353
24354 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
24355 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
24356 ID3D12Device10 * This,
24357 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
24358 REFIID riid,
24359 _COM_Outptr_ void **ppPipelineState);
24360
24361 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
24362 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
24363 ID3D12Device10 * This,
24364 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
24365 REFIID riid,
24366 _COM_Outptr_ void **ppPipelineState);
24367
24368 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
24369 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
24370 ID3D12Device10 * This,
24371 _In_ UINT nodeMask,
24372 _In_ D3D12_COMMAND_LIST_TYPE type,
24373 _In_ ID3D12CommandAllocator *pCommandAllocator,
24374 _In_opt_ ID3D12PipelineState *pInitialState,
24375 REFIID riid,
24376 _COM_Outptr_ void **ppCommandList);
24377
24378 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
24379 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
24380 ID3D12Device10 * This,
24381 D3D12_FEATURE Feature,
24382 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
24383 UINT FeatureSupportDataSize);
24384
24385 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
24386 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
24387 ID3D12Device10 * This,
24388 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
24389 REFIID riid,
24390 _COM_Outptr_ void **ppvHeap);
24391
24392 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
24393 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
24394 ID3D12Device10 * This,
24395 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
24396
24397 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
24398 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
24399 ID3D12Device10 * This,
24400 _In_ UINT nodeMask,
24401 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
24402 _In_ SIZE_T blobLengthInBytes,
24403 REFIID riid,
24404 _COM_Outptr_ void **ppvRootSignature);
24405
24406 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
24407 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
24408 ID3D12Device10 * This,
24409 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
24410 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24411
24412 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
24413 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
24414 ID3D12Device10 * This,
24415 _In_opt_ ID3D12Resource *pResource,
24416 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
24417 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24418
24419 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
24420 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
24421 ID3D12Device10 * This,
24422 _In_opt_ ID3D12Resource *pResource,
24423 _In_opt_ ID3D12Resource *pCounterResource,
24424 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
24425 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24426
24427 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
24428 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
24429 ID3D12Device10 * This,
24430 _In_opt_ ID3D12Resource *pResource,
24431 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
24432 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24433
24434 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
24435 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
24436 ID3D12Device10 * This,
24437 _In_opt_ ID3D12Resource *pResource,
24438 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
24439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24440
24441 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
24442 void ( STDMETHODCALLTYPE *CreateSampler )(
24443 ID3D12Device10 * This,
24444 _In_ const D3D12_SAMPLER_DESC *pDesc,
24445 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24446
24447 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
24448 void ( STDMETHODCALLTYPE *CopyDescriptors )(
24449 ID3D12Device10 * This,
24450 _In_ UINT NumDestDescriptorRanges,
24451 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
24452 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
24453 _In_ UINT NumSrcDescriptorRanges,
24454 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
24455 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
24456 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
24457
24458 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
24459 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
24460 ID3D12Device10 * This,
24461 _In_ UINT NumDescriptors,
24462 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
24463 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
24464 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
24465
24466 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
24467#if !defined(_WIN32)
24468 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
24469 ID3D12Device10 * This,
24470 _In_ UINT visibleMask,
24471 _In_ UINT numResourceDescs,
24472 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
24473
24474#else
24475 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
24476 ID3D12Device10 * This,
24477 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24478 _In_ UINT visibleMask,
24479 _In_ UINT numResourceDescs,
24480 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
24481
24482#endif
24483
24484 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
24485#if !defined(_WIN32)
24486 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
24487 ID3D12Device10 * This,
24488 _In_ UINT nodeMask,
24489 D3D12_HEAP_TYPE heapType);
24490
24491#else
24492 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
24493 ID3D12Device10 * This,
24494 D3D12_HEAP_PROPERTIES * RetVal,
24495 _In_ UINT nodeMask,
24496 D3D12_HEAP_TYPE heapType);
24497
24498#endif
24499
24500 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
24501 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
24502 ID3D12Device10 * This,
24503 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24504 D3D12_HEAP_FLAGS HeapFlags,
24505 _In_ const D3D12_RESOURCE_DESC *pDesc,
24506 D3D12_RESOURCE_STATES InitialResourceState,
24507 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24508 REFIID riidResource,
24509 _COM_Outptr_opt_ void **ppvResource);
24510
24511 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
24512 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
24513 ID3D12Device10 * This,
24514 _In_ const D3D12_HEAP_DESC *pDesc,
24515 REFIID riid,
24516 _COM_Outptr_opt_ void **ppvHeap);
24517
24518 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
24519 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
24520 ID3D12Device10 * This,
24521 _In_ ID3D12Heap *pHeap,
24522 UINT64 HeapOffset,
24523 _In_ const D3D12_RESOURCE_DESC *pDesc,
24524 D3D12_RESOURCE_STATES InitialState,
24525 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24526 REFIID riid,
24527 _COM_Outptr_opt_ void **ppvResource);
24528
24529 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
24530 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
24531 ID3D12Device10 * This,
24532 _In_ const D3D12_RESOURCE_DESC *pDesc,
24533 D3D12_RESOURCE_STATES InitialState,
24534 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24535 REFIID riid,
24536 _COM_Outptr_opt_ void **ppvResource);
24537
24538 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
24539 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
24540 ID3D12Device10 * This,
24541 _In_ ID3D12DeviceChild *pObject,
24542 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
24543 DWORD Access,
24544 _In_opt_ LPCWSTR Name,
24545 _Out_ HANDLE *pHandle);
24546
24547 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
24548 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
24549 ID3D12Device10 * This,
24550 _In_ HANDLE NTHandle,
24551 REFIID riid,
24552 _COM_Outptr_opt_ void **ppvObj);
24553
24554 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
24555 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
24556 ID3D12Device10 * This,
24557 _In_ LPCWSTR Name,
24558 DWORD Access,
24559 /* [annotation][out] */
24560 _Out_ HANDLE *pNTHandle);
24561
24562 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
24563 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
24564 ID3D12Device10 * This,
24565 UINT NumObjects,
24566 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
24567
24568 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
24569 HRESULT ( STDMETHODCALLTYPE *Evict )(
24570 ID3D12Device10 * This,
24571 UINT NumObjects,
24572 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
24573
24574 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
24575 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
24576 ID3D12Device10 * This,
24577 UINT64 InitialValue,
24578 D3D12_FENCE_FLAGS Flags,
24579 REFIID riid,
24580 _COM_Outptr_ void **ppFence);
24581
24582 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
24583 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
24584 ID3D12Device10 * This);
24585
24586 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
24587 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
24588 ID3D12Device10 * This,
24589 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
24590 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
24591 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
24592 UINT64 BaseOffset,
24593 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
24594 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
24595 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
24596 _Out_opt_ UINT64 *pTotalBytes);
24597
24598 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
24599 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
24600 ID3D12Device10 * This,
24601 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
24602 REFIID riid,
24603 _COM_Outptr_opt_ void **ppvHeap);
24604
24605 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
24606 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
24607 ID3D12Device10 * This,
24608 BOOL Enable);
24609
24610 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
24611 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
24612 ID3D12Device10 * This,
24613 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
24614 _In_opt_ ID3D12RootSignature *pRootSignature,
24615 REFIID riid,
24616 _COM_Outptr_opt_ void **ppvCommandSignature);
24617
24618 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
24619 void ( STDMETHODCALLTYPE *GetResourceTiling )(
24620 ID3D12Device10 * This,
24621 _In_ ID3D12Resource *pTiledResource,
24622 _Out_opt_ UINT *pNumTilesForEntireResource,
24623 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
24624 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
24625 _Inout_opt_ UINT *pNumSubresourceTilings,
24626 _In_ UINT FirstSubresourceTilingToGet,
24627 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
24628
24629 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
24630#if !defined(_WIN32)
24631 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
24632 ID3D12Device10 * This);
24633
24634#else
24635 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
24636 ID3D12Device10 * This,
24637 LUID * RetVal);
24638
24639#endif
24640
24641 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
24642 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
24643 ID3D12Device10 * This,
24644 _In_reads_(BlobLength) const void *pLibraryBlob,
24645 SIZE_T BlobLength,
24646 REFIID riid,
24647 _COM_Outptr_ void **ppPipelineLibrary);
24648
24649 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
24650 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
24651 ID3D12Device10 * This,
24652 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
24653 _In_reads_(NumFences) const UINT64 *pFenceValues,
24654 UINT NumFences,
24655 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
24656 HANDLE hEvent);
24657
24658 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
24659 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
24660 ID3D12Device10 * This,
24661 UINT NumObjects,
24662 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
24663 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
24664
24665 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
24666 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
24667 ID3D12Device10 * This,
24668 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
24669 REFIID riid,
24670 _COM_Outptr_ void **ppPipelineState);
24671
24672 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
24673 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
24674 ID3D12Device10 * This,
24675 _In_ const void *pAddress,
24676 REFIID riid,
24677 _COM_Outptr_ void **ppvHeap);
24678
24679 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
24680 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
24681 ID3D12Device10 * This,
24682 _In_ HANDLE hFileMapping,
24683 REFIID riid,
24684 _COM_Outptr_ void **ppvHeap);
24685
24686 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
24687 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
24688 ID3D12Device10 * This,
24689 D3D12_RESIDENCY_FLAGS Flags,
24690 UINT NumObjects,
24691 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
24692 _In_ ID3D12Fence *pFenceToSignal,
24693 UINT64 FenceValueToSignal);
24694
24695 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
24696 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
24697 ID3D12Device10 * This,
24698 _In_ UINT nodeMask,
24699 _In_ D3D12_COMMAND_LIST_TYPE type,
24700 _In_ D3D12_COMMAND_LIST_FLAGS flags,
24701 REFIID riid,
24702 _COM_Outptr_ void **ppCommandList);
24703
24704 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
24705 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
24706 ID3D12Device10 * This,
24707 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
24708 _In_ REFIID riid,
24709 _COM_Outptr_ void **ppSession);
24710
24711 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
24712 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
24713 ID3D12Device10 * This,
24714 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24715 D3D12_HEAP_FLAGS HeapFlags,
24716 _In_ const D3D12_RESOURCE_DESC *pDesc,
24717 D3D12_RESOURCE_STATES InitialResourceState,
24718 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24719 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24720 REFIID riidResource,
24721 _COM_Outptr_opt_ void **ppvResource);
24722
24723 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
24724 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
24725 ID3D12Device10 * This,
24726 _In_ const D3D12_HEAP_DESC *pDesc,
24727 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24728 REFIID riid,
24729 _COM_Outptr_opt_ void **ppvHeap);
24730
24731 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
24732 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
24733 ID3D12Device10 * This,
24734 _In_ const D3D12_RESOURCE_DESC *pDesc,
24735 D3D12_RESOURCE_STATES InitialState,
24736 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24737 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24738 REFIID riid,
24739 _COM_Outptr_opt_ void **ppvResource);
24740
24741 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
24742#if !defined(_WIN32)
24743 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
24744 ID3D12Device10 * This,
24745 UINT visibleMask,
24746 UINT numResourceDescs,
24747 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
24748 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24749
24750#else
24751 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
24752 ID3D12Device10 * This,
24753 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24754 UINT visibleMask,
24755 UINT numResourceDescs,
24756 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
24757 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24758
24759#endif
24760
24761 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
24762 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
24763 ID3D12Device10 * This,
24764 _In_ ID3D12LifetimeOwner *pOwner,
24765 REFIID riid,
24766 _COM_Outptr_ void **ppvTracker);
24767
24768 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
24769 void ( STDMETHODCALLTYPE *RemoveDevice )(
24770 ID3D12Device10 * This);
24771
24772 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
24773 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
24774 ID3D12Device10 * This,
24775 _Inout_ UINT *pNumMetaCommands,
24776 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
24777
24778 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
24779 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
24780 ID3D12Device10 * This,
24781 _In_ REFGUID CommandId,
24782 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
24783 _Out_opt_ UINT *pTotalStructureSizeInBytes,
24784 _Inout_ UINT *pParameterCount,
24785 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
24786
24787 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
24788 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
24789 ID3D12Device10 * This,
24790 _In_ REFGUID CommandId,
24791 _In_ UINT NodeMask,
24792 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
24793 _In_ SIZE_T CreationParametersDataSizeInBytes,
24794 REFIID riid,
24795 _COM_Outptr_ void **ppMetaCommand);
24796
24797 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
24798 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
24799 ID3D12Device10 * This,
24800 const D3D12_STATE_OBJECT_DESC *pDesc,
24801 REFIID riid,
24802 _COM_Outptr_ void **ppStateObject);
24803
24804 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
24805 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
24806 ID3D12Device10 * This,
24807 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
24808 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
24809
24810 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
24811 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
24812 ID3D12Device10 * This,
24813 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
24814 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
24815
24816 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
24817 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
24818 ID3D12Device10 * This,
24819 D3D12_BACKGROUND_PROCESSING_MODE Mode,
24820 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
24821 _In_opt_ HANDLE hEventToSignalUponCompletion,
24822 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
24823
24824 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
24825 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
24826 ID3D12Device10 * This,
24827 const D3D12_STATE_OBJECT_DESC *pAddition,
24828 ID3D12StateObject *pStateObjectToGrowFrom,
24829 REFIID riid,
24830 _COM_Outptr_ void **ppNewStateObject);
24831
24832 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
24833 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
24834 ID3D12Device10 * This,
24835 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
24836 _In_ REFIID riid,
24837 _COM_Outptr_ void **ppSession);
24838
24839 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
24840#if !defined(_WIN32)
24841 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
24842 ID3D12Device10 * This,
24843 UINT visibleMask,
24844 UINT numResourceDescs,
24845 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
24846 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24847
24848#else
24849 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
24850 ID3D12Device10 * This,
24851 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24852 UINT visibleMask,
24853 UINT numResourceDescs,
24854 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
24855 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24856
24857#endif
24858
24859 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
24860 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
24861 ID3D12Device10 * This,
24862 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24863 D3D12_HEAP_FLAGS HeapFlags,
24864 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24865 D3D12_RESOURCE_STATES InitialResourceState,
24866 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24867 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24868 REFIID riidResource,
24869 _COM_Outptr_opt_ void **ppvResource);
24870
24871 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
24872 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
24873 ID3D12Device10 * This,
24874 _In_ ID3D12Heap *pHeap,
24875 UINT64 HeapOffset,
24876 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24877 D3D12_RESOURCE_STATES InitialState,
24878 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24879 REFIID riid,
24880 _COM_Outptr_opt_ void **ppvResource);
24881
24882 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
24883 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
24884 ID3D12Device10 * This,
24885 _In_opt_ ID3D12Resource *pTargetedResource,
24886 _In_opt_ ID3D12Resource *pFeedbackResource,
24887 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24888
24889 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
24890 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
24891 ID3D12Device10 * This,
24892 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
24893 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
24894 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
24895 UINT64 BaseOffset,
24896 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
24897 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
24898 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
24899 _Out_opt_ UINT64 *pTotalBytes);
24900
24901 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
24902 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
24903 ID3D12Device10 * This,
24904 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
24905 REFIID riid,
24906 _COM_Outptr_opt_ void **ppvSession);
24907
24908 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
24909 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
24910 ID3D12Device10 * This,
24911 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
24912 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
24913
24914 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
24915 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
24916 ID3D12Device10 * This,
24917 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
24918 REFIID CreatorID,
24919 REFIID riid,
24920 _COM_Outptr_ void **ppCommandQueue);
24921
24922 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
24923 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
24924 ID3D12Device10 * This,
24925 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24926 D3D12_HEAP_FLAGS HeapFlags,
24927 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24928 D3D12_BARRIER_LAYOUT InitialLayout,
24929 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24930 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24931 UINT32 NumCastableFormats,
24932 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24933 REFIID riidResource,
24934 _COM_Outptr_opt_ void **ppvResource);
24935
24936 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
24937 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
24938 ID3D12Device10 * This,
24939 _In_ ID3D12Heap *pHeap,
24940 UINT64 HeapOffset,
24941 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24942 D3D12_BARRIER_LAYOUT InitialLayout,
24943 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24944 UINT32 NumCastableFormats,
24945 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24946 REFIID riid,
24947 _COM_Outptr_opt_ void **ppvResource);
24948
24949 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
24950 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
24951 ID3D12Device10 * This,
24952 _In_ const D3D12_RESOURCE_DESC *pDesc,
24953 D3D12_BARRIER_LAYOUT InitialLayout,
24954 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24955 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24956 UINT32 NumCastableFormats,
24957 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24958 REFIID riid,
24959 _COM_Outptr_opt_ void **ppvResource);
24960
24961 END_INTERFACE
24962 } ID3D12Device10Vtbl;
24963
24964 interface ID3D12Device10
24965 {
24966 CONST_VTBL struct ID3D12Device10Vtbl *lpVtbl;
24967 };
24968
24969
24970
24971#ifdef COBJMACROS
24972
24973
24974#define ID3D12Device10_QueryInterface(This,riid,ppvObject) \
24975 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
24976
24977#define ID3D12Device10_AddRef(This) \
24978 ( (This)->lpVtbl -> AddRef(This) )
24979
24980#define ID3D12Device10_Release(This) \
24981 ( (This)->lpVtbl -> Release(This) )
24982
24983
24984#define ID3D12Device10_GetPrivateData(This,guid,pDataSize,pData) \
24985 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
24986
24987#define ID3D12Device10_SetPrivateData(This,guid,DataSize,pData) \
24988 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
24989
24990#define ID3D12Device10_SetPrivateDataInterface(This,guid,pData) \
24991 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
24992
24993#define ID3D12Device10_SetName(This,Name) \
24994 ( (This)->lpVtbl -> SetName(This,Name) )
24995
24996
24997#define ID3D12Device10_GetNodeCount(This) \
24998 ( (This)->lpVtbl -> GetNodeCount(This) )
24999
25000#define ID3D12Device10_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
25001 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
25002
25003#define ID3D12Device10_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
25004 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
25005
25006#define ID3D12Device10_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
25007 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
25008
25009#define ID3D12Device10_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
25010 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
25011
25012#define ID3D12Device10_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
25013 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
25014
25015#define ID3D12Device10_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
25016 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
25017
25018#define ID3D12Device10_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
25019 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
25020
25021#define ID3D12Device10_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
25022 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
25023
25024#define ID3D12Device10_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
25025 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
25026
25027#define ID3D12Device10_CreateConstantBufferView(This,pDesc,DestDescriptor) \
25028 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
25029
25030#define ID3D12Device10_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
25031 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
25032
25033#define ID3D12Device10_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
25034 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
25035
25036#define ID3D12Device10_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
25037 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
25038
25039#define ID3D12Device10_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
25040 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
25041
25042#define ID3D12Device10_CreateSampler(This,pDesc,DestDescriptor) \
25043 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
25044
25045#define ID3D12Device10_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
25046 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
25047
25048#define ID3D12Device10_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
25049 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
25050#if !defined(_WIN32)
25051
25052#define ID3D12Device10_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
25053 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
25054#else
25055#define ID3D12Device10_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
25056 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
25057#endif
25058#if !defined(_WIN32)
25059
25060#define ID3D12Device10_GetCustomHeapProperties(This,nodeMask,heapType) \
25061 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
25062#else
25063#define ID3D12Device10_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
25064 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
25065#endif
25066
25067#define ID3D12Device10_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
25068 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
25069
25070#define ID3D12Device10_CreateHeap(This,pDesc,riid,ppvHeap) \
25071 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
25072
25073#define ID3D12Device10_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25074 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25075
25076#define ID3D12Device10_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25077 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25078
25079#define ID3D12Device10_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
25080 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
25081
25082#define ID3D12Device10_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
25083 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
25084
25085#define ID3D12Device10_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
25086 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
25087
25088#define ID3D12Device10_MakeResident(This,NumObjects,ppObjects) \
25089 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
25090
25091#define ID3D12Device10_Evict(This,NumObjects,ppObjects) \
25092 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
25093
25094#define ID3D12Device10_CreateFence(This,InitialValue,Flags,riid,ppFence) \
25095 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
25096
25097#define ID3D12Device10_GetDeviceRemovedReason(This) \
25098 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
25099
25100#define ID3D12Device10_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
25101 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
25102
25103#define ID3D12Device10_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
25104 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
25105
25106#define ID3D12Device10_SetStablePowerState(This,Enable) \
25107 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
25108
25109#define ID3D12Device10_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
25110 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
25111
25112#define ID3D12Device10_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
25113 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
25114#if !defined(_WIN32)
25115
25116#define ID3D12Device10_GetAdapterLuid(This) \
25117 ( (This)->lpVtbl -> GetAdapterLuid(This) )
25118#else
25119#define ID3D12Device10_GetAdapterLuid(This,RetVal) \
25120 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
25121#endif
25122
25123
25124#define ID3D12Device10_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
25125 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
25126
25127#define ID3D12Device10_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
25128 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
25129
25130#define ID3D12Device10_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
25131 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
25132
25133
25134#define ID3D12Device10_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
25135 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
25136
25137
25138#define ID3D12Device10_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
25139 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
25140
25141#define ID3D12Device10_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
25142 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
25143
25144#define ID3D12Device10_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
25145 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
25146
25147
25148#define ID3D12Device10_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
25149 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
25150
25151#define ID3D12Device10_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
25152 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
25153
25154#define ID3D12Device10_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
25155 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
25156
25157#define ID3D12Device10_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
25158 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
25159
25160#define ID3D12Device10_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
25161 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
25162#if !defined(_WIN32)
25163
25164#define ID3D12Device10_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25165 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25166#else
25167#define ID3D12Device10_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25168 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25169#endif
25170
25171
25172#define ID3D12Device10_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
25173 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
25174
25175#define ID3D12Device10_RemoveDevice(This) \
25176 ( (This)->lpVtbl -> RemoveDevice(This) )
25177
25178#define ID3D12Device10_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
25179 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
25180
25181#define ID3D12Device10_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
25182 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
25183
25184#define ID3D12Device10_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
25185 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
25186
25187#define ID3D12Device10_CreateStateObject(This,pDesc,riid,ppStateObject) \
25188 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
25189
25190#define ID3D12Device10_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
25191 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
25192
25193#define ID3D12Device10_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
25194 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
25195
25196
25197#define ID3D12Device10_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
25198 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
25199
25200
25201#define ID3D12Device10_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
25202 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
25203
25204#define ID3D12Device10_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
25205 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
25206
25207#if !defined(_WIN32)
25208
25209#define ID3D12Device10_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25210 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25211#else
25212#define ID3D12Device10_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25213 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25214#endif
25215
25216#define ID3D12Device10_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
25217 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
25218
25219#define ID3D12Device10_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25220 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25221
25222#define ID3D12Device10_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
25223 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
25224
25225#define ID3D12Device10_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
25226 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
25227
25228
25229#define ID3D12Device10_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
25230 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
25231
25232#define ID3D12Device10_ShaderCacheControl(This,Kinds,Control) \
25233 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
25234
25235#define ID3D12Device10_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
25236 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
25237
25238
25239#define ID3D12Device10_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
25240 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
25241
25242#define ID3D12Device10_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
25243 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
25244
25245#define ID3D12Device10_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
25246 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
25247
25248#endif /* COBJMACROS */
25249
25250
25251#endif /* C style interface */
25252
25253
25254
25255
25256#endif /* __ID3D12Device10_INTERFACE_DEFINED__ */
25257
25258
25259#ifndef __ID3D12Device11_INTERFACE_DEFINED__
25260#define __ID3D12Device11_INTERFACE_DEFINED__
25261
25262/* interface ID3D12Device11 */
25263/* [unique][local][object][uuid] */
25264
25265
25266EXTERN_C const IID IID_ID3D12Device11;
25267
25268#if defined(__cplusplus) && !defined(CINTERFACE)
25269
25270 MIDL_INTERFACE("5405c344-d457-444e-b4dd-2366e45aee39")
25271 ID3D12Device11 : public ID3D12Device10
25272 {
25273 public:
25274 virtual void STDMETHODCALLTYPE CreateSampler2(
25275 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
25276 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
25277
25278 };
25279
25280
25281#else /* C style interface */
25282
25283 typedef struct ID3D12Device11Vtbl
25284 {
25285 BEGIN_INTERFACE
25286
25287 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
25288 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
25289 ID3D12Device11 * This,
25290 REFIID riid,
25291 _COM_Outptr_ void **ppvObject);
25292
25293 DECLSPEC_XFGVIRT(IUnknown, AddRef)
25294 ULONG ( STDMETHODCALLTYPE *AddRef )(
25295 ID3D12Device11 * This);
25296
25297 DECLSPEC_XFGVIRT(IUnknown, Release)
25298 ULONG ( STDMETHODCALLTYPE *Release )(
25299 ID3D12Device11 * This);
25300
25301 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
25302 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
25303 ID3D12Device11 * This,
25304 _In_ REFGUID guid,
25305 _Inout_ UINT *pDataSize,
25306 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
25307
25308 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
25309 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
25310 ID3D12Device11 * This,
25311 _In_ REFGUID guid,
25312 _In_ UINT DataSize,
25313 _In_reads_bytes_opt_( DataSize ) const void *pData);
25314
25315 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
25316 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
25317 ID3D12Device11 * This,
25318 _In_ REFGUID guid,
25319 _In_opt_ const IUnknown *pData);
25320
25321 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
25322 HRESULT ( STDMETHODCALLTYPE *SetName )(
25323 ID3D12Device11 * This,
25324 _In_z_ LPCWSTR Name);
25325
25326 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
25327 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
25328 ID3D12Device11 * This);
25329
25330 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
25331 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
25332 ID3D12Device11 * This,
25333 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
25334 REFIID riid,
25335 _COM_Outptr_ void **ppCommandQueue);
25336
25337 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
25338 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
25339 ID3D12Device11 * This,
25340 _In_ D3D12_COMMAND_LIST_TYPE type,
25341 REFIID riid,
25342 _COM_Outptr_ void **ppCommandAllocator);
25343
25344 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
25345 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
25346 ID3D12Device11 * This,
25347 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
25348 REFIID riid,
25349 _COM_Outptr_ void **ppPipelineState);
25350
25351 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
25352 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
25353 ID3D12Device11 * This,
25354 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
25355 REFIID riid,
25356 _COM_Outptr_ void **ppPipelineState);
25357
25358 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
25359 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
25360 ID3D12Device11 * This,
25361 _In_ UINT nodeMask,
25362 _In_ D3D12_COMMAND_LIST_TYPE type,
25363 _In_ ID3D12CommandAllocator *pCommandAllocator,
25364 _In_opt_ ID3D12PipelineState *pInitialState,
25365 REFIID riid,
25366 _COM_Outptr_ void **ppCommandList);
25367
25368 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
25369 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
25370 ID3D12Device11 * This,
25371 D3D12_FEATURE Feature,
25372 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
25373 UINT FeatureSupportDataSize);
25374
25375 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
25376 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
25377 ID3D12Device11 * This,
25378 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
25379 REFIID riid,
25380 _COM_Outptr_ void **ppvHeap);
25381
25382 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
25383 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
25384 ID3D12Device11 * This,
25385 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
25386
25387 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
25388 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
25389 ID3D12Device11 * This,
25390 _In_ UINT nodeMask,
25391 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
25392 _In_ SIZE_T blobLengthInBytes,
25393 REFIID riid,
25394 _COM_Outptr_ void **ppvRootSignature);
25395
25396 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
25397 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
25398 ID3D12Device11 * This,
25399 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
25400 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25401
25402 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
25403 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
25404 ID3D12Device11 * This,
25405 _In_opt_ ID3D12Resource *pResource,
25406 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
25407 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25408
25409 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
25410 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
25411 ID3D12Device11 * This,
25412 _In_opt_ ID3D12Resource *pResource,
25413 _In_opt_ ID3D12Resource *pCounterResource,
25414 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
25415 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25416
25417 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
25418 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
25419 ID3D12Device11 * This,
25420 _In_opt_ ID3D12Resource *pResource,
25421 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
25422 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25423
25424 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
25425 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
25426 ID3D12Device11 * This,
25427 _In_opt_ ID3D12Resource *pResource,
25428 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
25429 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25430
25431 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
25432 void ( STDMETHODCALLTYPE *CreateSampler )(
25433 ID3D12Device11 * This,
25434 _In_ const D3D12_SAMPLER_DESC *pDesc,
25435 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25436
25437 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
25438 void ( STDMETHODCALLTYPE *CopyDescriptors )(
25439 ID3D12Device11 * This,
25440 _In_ UINT NumDestDescriptorRanges,
25441 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
25442 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
25443 _In_ UINT NumSrcDescriptorRanges,
25444 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
25445 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
25446 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
25447
25448 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
25449 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
25450 ID3D12Device11 * This,
25451 _In_ UINT NumDescriptors,
25452 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
25453 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
25454 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
25455
25456 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
25457#if !defined(_WIN32)
25458 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
25459 ID3D12Device11 * This,
25460 _In_ UINT visibleMask,
25461 _In_ UINT numResourceDescs,
25462 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
25463
25464#else
25465 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
25466 ID3D12Device11 * This,
25467 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25468 _In_ UINT visibleMask,
25469 _In_ UINT numResourceDescs,
25470 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
25471
25472#endif
25473
25474 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
25475#if !defined(_WIN32)
25476 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
25477 ID3D12Device11 * This,
25478 _In_ UINT nodeMask,
25479 D3D12_HEAP_TYPE heapType);
25480
25481#else
25482 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
25483 ID3D12Device11 * This,
25484 D3D12_HEAP_PROPERTIES * RetVal,
25485 _In_ UINT nodeMask,
25486 D3D12_HEAP_TYPE heapType);
25487
25488#endif
25489
25490 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
25491 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
25492 ID3D12Device11 * This,
25493 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25494 D3D12_HEAP_FLAGS HeapFlags,
25495 _In_ const D3D12_RESOURCE_DESC *pDesc,
25496 D3D12_RESOURCE_STATES InitialResourceState,
25497 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25498 REFIID riidResource,
25499 _COM_Outptr_opt_ void **ppvResource);
25500
25501 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
25502 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
25503 ID3D12Device11 * This,
25504 _In_ const D3D12_HEAP_DESC *pDesc,
25505 REFIID riid,
25506 _COM_Outptr_opt_ void **ppvHeap);
25507
25508 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
25509 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
25510 ID3D12Device11 * This,
25511 _In_ ID3D12Heap *pHeap,
25512 UINT64 HeapOffset,
25513 _In_ const D3D12_RESOURCE_DESC *pDesc,
25514 D3D12_RESOURCE_STATES InitialState,
25515 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25516 REFIID riid,
25517 _COM_Outptr_opt_ void **ppvResource);
25518
25519 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
25520 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
25521 ID3D12Device11 * This,
25522 _In_ const D3D12_RESOURCE_DESC *pDesc,
25523 D3D12_RESOURCE_STATES InitialState,
25524 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25525 REFIID riid,
25526 _COM_Outptr_opt_ void **ppvResource);
25527
25528 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
25529 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
25530 ID3D12Device11 * This,
25531 _In_ ID3D12DeviceChild *pObject,
25532 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
25533 DWORD Access,
25534 _In_opt_ LPCWSTR Name,
25535 _Out_ HANDLE *pHandle);
25536
25537 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
25538 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
25539 ID3D12Device11 * This,
25540 _In_ HANDLE NTHandle,
25541 REFIID riid,
25542 _COM_Outptr_opt_ void **ppvObj);
25543
25544 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
25545 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
25546 ID3D12Device11 * This,
25547 _In_ LPCWSTR Name,
25548 DWORD Access,
25549 /* [annotation][out] */
25550 _Out_ HANDLE *pNTHandle);
25551
25552 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
25553 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
25554 ID3D12Device11 * This,
25555 UINT NumObjects,
25556 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
25557
25558 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
25559 HRESULT ( STDMETHODCALLTYPE *Evict )(
25560 ID3D12Device11 * This,
25561 UINT NumObjects,
25562 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
25563
25564 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
25565 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
25566 ID3D12Device11 * This,
25567 UINT64 InitialValue,
25568 D3D12_FENCE_FLAGS Flags,
25569 REFIID riid,
25570 _COM_Outptr_ void **ppFence);
25571
25572 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
25573 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
25574 ID3D12Device11 * This);
25575
25576 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
25577 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
25578 ID3D12Device11 * This,
25579 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
25580 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
25581 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
25582 UINT64 BaseOffset,
25583 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
25584 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
25585 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
25586 _Out_opt_ UINT64 *pTotalBytes);
25587
25588 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
25589 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
25590 ID3D12Device11 * This,
25591 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
25592 REFIID riid,
25593 _COM_Outptr_opt_ void **ppvHeap);
25594
25595 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
25596 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
25597 ID3D12Device11 * This,
25598 BOOL Enable);
25599
25600 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
25601 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
25602 ID3D12Device11 * This,
25603 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
25604 _In_opt_ ID3D12RootSignature *pRootSignature,
25605 REFIID riid,
25606 _COM_Outptr_opt_ void **ppvCommandSignature);
25607
25608 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
25609 void ( STDMETHODCALLTYPE *GetResourceTiling )(
25610 ID3D12Device11 * This,
25611 _In_ ID3D12Resource *pTiledResource,
25612 _Out_opt_ UINT *pNumTilesForEntireResource,
25613 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
25614 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
25615 _Inout_opt_ UINT *pNumSubresourceTilings,
25616 _In_ UINT FirstSubresourceTilingToGet,
25617 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
25618
25619 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
25620#if !defined(_WIN32)
25621 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
25622 ID3D12Device11 * This);
25623
25624#else
25625 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
25626 ID3D12Device11 * This,
25627 LUID * RetVal);
25628
25629#endif
25630
25631 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
25632 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
25633 ID3D12Device11 * This,
25634 _In_reads_(BlobLength) const void *pLibraryBlob,
25635 SIZE_T BlobLength,
25636 REFIID riid,
25637 _COM_Outptr_ void **ppPipelineLibrary);
25638
25639 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
25640 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
25641 ID3D12Device11 * This,
25642 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
25643 _In_reads_(NumFences) const UINT64 *pFenceValues,
25644 UINT NumFences,
25645 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
25646 HANDLE hEvent);
25647
25648 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
25649 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
25650 ID3D12Device11 * This,
25651 UINT NumObjects,
25652 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
25653 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
25654
25655 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
25656 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
25657 ID3D12Device11 * This,
25658 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
25659 REFIID riid,
25660 _COM_Outptr_ void **ppPipelineState);
25661
25662 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
25663 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
25664 ID3D12Device11 * This,
25665 _In_ const void *pAddress,
25666 REFIID riid,
25667 _COM_Outptr_ void **ppvHeap);
25668
25669 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
25670 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
25671 ID3D12Device11 * This,
25672 _In_ HANDLE hFileMapping,
25673 REFIID riid,
25674 _COM_Outptr_ void **ppvHeap);
25675
25676 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
25677 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
25678 ID3D12Device11 * This,
25679 D3D12_RESIDENCY_FLAGS Flags,
25680 UINT NumObjects,
25681 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
25682 _In_ ID3D12Fence *pFenceToSignal,
25683 UINT64 FenceValueToSignal);
25684
25685 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
25686 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
25687 ID3D12Device11 * This,
25688 _In_ UINT nodeMask,
25689 _In_ D3D12_COMMAND_LIST_TYPE type,
25690 _In_ D3D12_COMMAND_LIST_FLAGS flags,
25691 REFIID riid,
25692 _COM_Outptr_ void **ppCommandList);
25693
25694 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
25695 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
25696 ID3D12Device11 * This,
25697 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
25698 _In_ REFIID riid,
25699 _COM_Outptr_ void **ppSession);
25700
25701 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
25702 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
25703 ID3D12Device11 * This,
25704 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25705 D3D12_HEAP_FLAGS HeapFlags,
25706 _In_ const D3D12_RESOURCE_DESC *pDesc,
25707 D3D12_RESOURCE_STATES InitialResourceState,
25708 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25709 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25710 REFIID riidResource,
25711 _COM_Outptr_opt_ void **ppvResource);
25712
25713 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
25714 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
25715 ID3D12Device11 * This,
25716 _In_ const D3D12_HEAP_DESC *pDesc,
25717 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25718 REFIID riid,
25719 _COM_Outptr_opt_ void **ppvHeap);
25720
25721 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
25722 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
25723 ID3D12Device11 * This,
25724 _In_ const D3D12_RESOURCE_DESC *pDesc,
25725 D3D12_RESOURCE_STATES InitialState,
25726 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25727 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25728 REFIID riid,
25729 _COM_Outptr_opt_ void **ppvResource);
25730
25731 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
25732#if !defined(_WIN32)
25733 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
25734 ID3D12Device11 * This,
25735 UINT visibleMask,
25736 UINT numResourceDescs,
25737 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
25738 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25739
25740#else
25741 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
25742 ID3D12Device11 * This,
25743 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25744 UINT visibleMask,
25745 UINT numResourceDescs,
25746 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
25747 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25748
25749#endif
25750
25751 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
25752 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
25753 ID3D12Device11 * This,
25754 _In_ ID3D12LifetimeOwner *pOwner,
25755 REFIID riid,
25756 _COM_Outptr_ void **ppvTracker);
25757
25758 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
25759 void ( STDMETHODCALLTYPE *RemoveDevice )(
25760 ID3D12Device11 * This);
25761
25762 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
25763 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
25764 ID3D12Device11 * This,
25765 _Inout_ UINT *pNumMetaCommands,
25766 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
25767
25768 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
25769 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
25770 ID3D12Device11 * This,
25771 _In_ REFGUID CommandId,
25772 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
25773 _Out_opt_ UINT *pTotalStructureSizeInBytes,
25774 _Inout_ UINT *pParameterCount,
25775 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
25776
25777 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
25778 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
25779 ID3D12Device11 * This,
25780 _In_ REFGUID CommandId,
25781 _In_ UINT NodeMask,
25782 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
25783 _In_ SIZE_T CreationParametersDataSizeInBytes,
25784 REFIID riid,
25785 _COM_Outptr_ void **ppMetaCommand);
25786
25787 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
25788 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
25789 ID3D12Device11 * This,
25790 const D3D12_STATE_OBJECT_DESC *pDesc,
25791 REFIID riid,
25792 _COM_Outptr_ void **ppStateObject);
25793
25794 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
25795 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
25796 ID3D12Device11 * This,
25797 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
25798 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
25799
25800 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
25801 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
25802 ID3D12Device11 * This,
25803 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
25804 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
25805
25806 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
25807 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
25808 ID3D12Device11 * This,
25809 D3D12_BACKGROUND_PROCESSING_MODE Mode,
25810 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
25811 _In_opt_ HANDLE hEventToSignalUponCompletion,
25812 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
25813
25814 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
25815 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
25816 ID3D12Device11 * This,
25817 const D3D12_STATE_OBJECT_DESC *pAddition,
25818 ID3D12StateObject *pStateObjectToGrowFrom,
25819 REFIID riid,
25820 _COM_Outptr_ void **ppNewStateObject);
25821
25822 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
25823 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
25824 ID3D12Device11 * This,
25825 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
25826 _In_ REFIID riid,
25827 _COM_Outptr_ void **ppSession);
25828
25829 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
25830#if !defined(_WIN32)
25831 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
25832 ID3D12Device11 * This,
25833 UINT visibleMask,
25834 UINT numResourceDescs,
25835 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
25836 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25837
25838#else
25839 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
25840 ID3D12Device11 * This,
25841 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25842 UINT visibleMask,
25843 UINT numResourceDescs,
25844 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
25845 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25846
25847#endif
25848
25849 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
25850 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
25851 ID3D12Device11 * This,
25852 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25853 D3D12_HEAP_FLAGS HeapFlags,
25854 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25855 D3D12_RESOURCE_STATES InitialResourceState,
25856 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25857 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25858 REFIID riidResource,
25859 _COM_Outptr_opt_ void **ppvResource);
25860
25861 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
25862 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
25863 ID3D12Device11 * This,
25864 _In_ ID3D12Heap *pHeap,
25865 UINT64 HeapOffset,
25866 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25867 D3D12_RESOURCE_STATES InitialState,
25868 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25869 REFIID riid,
25870 _COM_Outptr_opt_ void **ppvResource);
25871
25872 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
25873 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
25874 ID3D12Device11 * This,
25875 _In_opt_ ID3D12Resource *pTargetedResource,
25876 _In_opt_ ID3D12Resource *pFeedbackResource,
25877 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25878
25879 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
25880 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
25881 ID3D12Device11 * This,
25882 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
25883 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
25884 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
25885 UINT64 BaseOffset,
25886 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
25887 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
25888 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
25889 _Out_opt_ UINT64 *pTotalBytes);
25890
25891 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
25892 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
25893 ID3D12Device11 * This,
25894 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
25895 REFIID riid,
25896 _COM_Outptr_opt_ void **ppvSession);
25897
25898 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
25899 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
25900 ID3D12Device11 * This,
25901 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
25902 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
25903
25904 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
25905 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
25906 ID3D12Device11 * This,
25907 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
25908 REFIID CreatorID,
25909 REFIID riid,
25910 _COM_Outptr_ void **ppCommandQueue);
25911
25912 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
25913 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
25914 ID3D12Device11 * This,
25915 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25916 D3D12_HEAP_FLAGS HeapFlags,
25917 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25918 D3D12_BARRIER_LAYOUT InitialLayout,
25919 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25920 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25921 UINT32 NumCastableFormats,
25922 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25923 REFIID riidResource,
25924 _COM_Outptr_opt_ void **ppvResource);
25925
25926 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
25927 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
25928 ID3D12Device11 * This,
25929 _In_ ID3D12Heap *pHeap,
25930 UINT64 HeapOffset,
25931 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25932 D3D12_BARRIER_LAYOUT InitialLayout,
25933 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25934 UINT32 NumCastableFormats,
25935 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25936 REFIID riid,
25937 _COM_Outptr_opt_ void **ppvResource);
25938
25939 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
25940 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
25941 ID3D12Device11 * This,
25942 _In_ const D3D12_RESOURCE_DESC *pDesc,
25943 D3D12_BARRIER_LAYOUT InitialLayout,
25944 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25945 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25946 UINT32 NumCastableFormats,
25947 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25948 REFIID riid,
25949 _COM_Outptr_opt_ void **ppvResource);
25950
25951 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
25952 void ( STDMETHODCALLTYPE *CreateSampler2 )(
25953 ID3D12Device11 * This,
25954 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
25955 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25956
25957 END_INTERFACE
25958 } ID3D12Device11Vtbl;
25959
25960 interface ID3D12Device11
25961 {
25962 CONST_VTBL struct ID3D12Device11Vtbl *lpVtbl;
25963 };
25964
25965
25966
25967#ifdef COBJMACROS
25968
25969
25970#define ID3D12Device11_QueryInterface(This,riid,ppvObject) \
25971 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
25972
25973#define ID3D12Device11_AddRef(This) \
25974 ( (This)->lpVtbl -> AddRef(This) )
25975
25976#define ID3D12Device11_Release(This) \
25977 ( (This)->lpVtbl -> Release(This) )
25978
25979
25980#define ID3D12Device11_GetPrivateData(This,guid,pDataSize,pData) \
25981 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
25982
25983#define ID3D12Device11_SetPrivateData(This,guid,DataSize,pData) \
25984 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
25985
25986#define ID3D12Device11_SetPrivateDataInterface(This,guid,pData) \
25987 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
25988
25989#define ID3D12Device11_SetName(This,Name) \
25990 ( (This)->lpVtbl -> SetName(This,Name) )
25991
25992
25993#define ID3D12Device11_GetNodeCount(This) \
25994 ( (This)->lpVtbl -> GetNodeCount(This) )
25995
25996#define ID3D12Device11_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
25997 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
25998
25999#define ID3D12Device11_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
26000 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
26001
26002#define ID3D12Device11_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
26003 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
26004
26005#define ID3D12Device11_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
26006 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
26007
26008#define ID3D12Device11_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
26009 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
26010
26011#define ID3D12Device11_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
26012 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
26013
26014#define ID3D12Device11_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
26015 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
26016
26017#define ID3D12Device11_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
26018 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
26019
26020#define ID3D12Device11_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
26021 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
26022
26023#define ID3D12Device11_CreateConstantBufferView(This,pDesc,DestDescriptor) \
26024 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
26025
26026#define ID3D12Device11_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
26027 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
26028
26029#define ID3D12Device11_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
26030 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
26031
26032#define ID3D12Device11_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
26033 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
26034
26035#define ID3D12Device11_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
26036 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
26037
26038#define ID3D12Device11_CreateSampler(This,pDesc,DestDescriptor) \
26039 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
26040
26041#define ID3D12Device11_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
26042 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
26043
26044#define ID3D12Device11_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
26045 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
26046#if !defined(_WIN32)
26047
26048#define ID3D12Device11_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
26049 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
26050#else
26051#define ID3D12Device11_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
26052 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
26053#endif
26054#if !defined(_WIN32)
26055
26056#define ID3D12Device11_GetCustomHeapProperties(This,nodeMask,heapType) \
26057 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
26058#else
26059#define ID3D12Device11_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
26060 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
26061#endif
26062
26063#define ID3D12Device11_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
26064 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
26065
26066#define ID3D12Device11_CreateHeap(This,pDesc,riid,ppvHeap) \
26067 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
26068
26069#define ID3D12Device11_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26070 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26071
26072#define ID3D12Device11_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26073 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26074
26075#define ID3D12Device11_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
26076 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
26077
26078#define ID3D12Device11_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
26079 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
26080
26081#define ID3D12Device11_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
26082 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
26083
26084#define ID3D12Device11_MakeResident(This,NumObjects,ppObjects) \
26085 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
26086
26087#define ID3D12Device11_Evict(This,NumObjects,ppObjects) \
26088 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
26089
26090#define ID3D12Device11_CreateFence(This,InitialValue,Flags,riid,ppFence) \
26091 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
26092
26093#define ID3D12Device11_GetDeviceRemovedReason(This) \
26094 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
26095
26096#define ID3D12Device11_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
26097 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
26098
26099#define ID3D12Device11_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
26100 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
26101
26102#define ID3D12Device11_SetStablePowerState(This,Enable) \
26103 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
26104
26105#define ID3D12Device11_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
26106 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
26107
26108#define ID3D12Device11_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
26109 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
26110#if !defined(_WIN32)
26111
26112#define ID3D12Device11_GetAdapterLuid(This) \
26113 ( (This)->lpVtbl -> GetAdapterLuid(This) )
26114#else
26115#define ID3D12Device11_GetAdapterLuid(This,RetVal) \
26116 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
26117#endif
26118
26119
26120#define ID3D12Device11_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
26121 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
26122
26123#define ID3D12Device11_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
26124 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
26125
26126#define ID3D12Device11_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
26127 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
26128
26129
26130#define ID3D12Device11_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
26131 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
26132
26133
26134#define ID3D12Device11_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
26135 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
26136
26137#define ID3D12Device11_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
26138 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
26139
26140#define ID3D12Device11_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
26141 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
26142
26143
26144#define ID3D12Device11_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
26145 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
26146
26147#define ID3D12Device11_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
26148 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
26149
26150#define ID3D12Device11_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
26151 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
26152
26153#define ID3D12Device11_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
26154 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
26155
26156#define ID3D12Device11_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
26157 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
26158#if !defined(_WIN32)
26159
26160#define ID3D12Device11_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26161 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26162#else
26163#define ID3D12Device11_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26164 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26165#endif
26166
26167
26168#define ID3D12Device11_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
26169 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
26170
26171#define ID3D12Device11_RemoveDevice(This) \
26172 ( (This)->lpVtbl -> RemoveDevice(This) )
26173
26174#define ID3D12Device11_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
26175 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
26176
26177#define ID3D12Device11_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
26178 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
26179
26180#define ID3D12Device11_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
26181 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
26182
26183#define ID3D12Device11_CreateStateObject(This,pDesc,riid,ppStateObject) \
26184 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
26185
26186#define ID3D12Device11_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
26187 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
26188
26189#define ID3D12Device11_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
26190 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
26191
26192
26193#define ID3D12Device11_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
26194 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
26195
26196
26197#define ID3D12Device11_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
26198 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
26199
26200#define ID3D12Device11_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
26201 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
26202
26203#if !defined(_WIN32)
26204
26205#define ID3D12Device11_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26206 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26207#else
26208#define ID3D12Device11_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26209 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26210#endif
26211
26212#define ID3D12Device11_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
26213 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
26214
26215#define ID3D12Device11_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26216 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26217
26218#define ID3D12Device11_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
26219 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
26220
26221#define ID3D12Device11_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
26222 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
26223
26224
26225#define ID3D12Device11_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
26226 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
26227
26228#define ID3D12Device11_ShaderCacheControl(This,Kinds,Control) \
26229 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
26230
26231#define ID3D12Device11_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
26232 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
26233
26234
26235#define ID3D12Device11_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
26236 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
26237
26238#define ID3D12Device11_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
26239 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
26240
26241#define ID3D12Device11_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
26242 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
26243
26244
26245#define ID3D12Device11_CreateSampler2(This,pDesc,DestDescriptor) \
26246 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
26247
26248#endif /* COBJMACROS */
26249
26250
26251#endif /* C style interface */
26252
26253
26254
26255
26256#endif /* __ID3D12Device11_INTERFACE_DEFINED__ */
26257
26258
26259#ifndef __ID3D12Device12_INTERFACE_DEFINED__
26260#define __ID3D12Device12_INTERFACE_DEFINED__
26261
26262/* interface ID3D12Device12 */
26263/* [unique][local][object][uuid] */
26264
26265
26266EXTERN_C const IID IID_ID3D12Device12;
26267
26268#if defined(__cplusplus) && !defined(CINTERFACE)
26269
26270 MIDL_INTERFACE("5af5c532-4c91-4cd0-b541-15a405395fc5")
26271 ID3D12Device12 : public ID3D12Device11
26272 {
26273 public:
26274#if defined(_MSC_VER) || !defined(_WIN32)
26275 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo3(
26276 UINT visibleMask,
26277 UINT numResourceDescs,
26278 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26279 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26280 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26281 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
26282#else
26283 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo3(
26284 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26285 UINT visibleMask,
26286 UINT numResourceDescs,
26287 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26288 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26289 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26290 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
26291#endif
26292
26293 };
26294
26295
26296#else /* C style interface */
26297
26298 typedef struct ID3D12Device12Vtbl
26299 {
26300 BEGIN_INTERFACE
26301
26302 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
26303 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
26304 ID3D12Device12 * This,
26305 REFIID riid,
26306 _COM_Outptr_ void **ppvObject);
26307
26308 DECLSPEC_XFGVIRT(IUnknown, AddRef)
26309 ULONG ( STDMETHODCALLTYPE *AddRef )(
26310 ID3D12Device12 * This);
26311
26312 DECLSPEC_XFGVIRT(IUnknown, Release)
26313 ULONG ( STDMETHODCALLTYPE *Release )(
26314 ID3D12Device12 * This);
26315
26316 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
26317 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
26318 ID3D12Device12 * This,
26319 _In_ REFGUID guid,
26320 _Inout_ UINT *pDataSize,
26321 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
26322
26323 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
26324 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
26325 ID3D12Device12 * This,
26326 _In_ REFGUID guid,
26327 _In_ UINT DataSize,
26328 _In_reads_bytes_opt_( DataSize ) const void *pData);
26329
26330 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
26331 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
26332 ID3D12Device12 * This,
26333 _In_ REFGUID guid,
26334 _In_opt_ const IUnknown *pData);
26335
26336 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
26337 HRESULT ( STDMETHODCALLTYPE *SetName )(
26338 ID3D12Device12 * This,
26339 _In_z_ LPCWSTR Name);
26340
26341 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
26342 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
26343 ID3D12Device12 * This);
26344
26345 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
26346 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
26347 ID3D12Device12 * This,
26348 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
26349 REFIID riid,
26350 _COM_Outptr_ void **ppCommandQueue);
26351
26352 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
26353 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
26354 ID3D12Device12 * This,
26355 _In_ D3D12_COMMAND_LIST_TYPE type,
26356 REFIID riid,
26357 _COM_Outptr_ void **ppCommandAllocator);
26358
26359 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
26360 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
26361 ID3D12Device12 * This,
26362 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
26363 REFIID riid,
26364 _COM_Outptr_ void **ppPipelineState);
26365
26366 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
26367 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
26368 ID3D12Device12 * This,
26369 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
26370 REFIID riid,
26371 _COM_Outptr_ void **ppPipelineState);
26372
26373 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
26374 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
26375 ID3D12Device12 * This,
26376 _In_ UINT nodeMask,
26377 _In_ D3D12_COMMAND_LIST_TYPE type,
26378 _In_ ID3D12CommandAllocator *pCommandAllocator,
26379 _In_opt_ ID3D12PipelineState *pInitialState,
26380 REFIID riid,
26381 _COM_Outptr_ void **ppCommandList);
26382
26383 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
26384 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
26385 ID3D12Device12 * This,
26386 D3D12_FEATURE Feature,
26387 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
26388 UINT FeatureSupportDataSize);
26389
26390 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
26391 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
26392 ID3D12Device12 * This,
26393 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
26394 REFIID riid,
26395 _COM_Outptr_ void **ppvHeap);
26396
26397 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
26398 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
26399 ID3D12Device12 * This,
26400 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
26401
26402 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
26403 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
26404 ID3D12Device12 * This,
26405 _In_ UINT nodeMask,
26406 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
26407 _In_ SIZE_T blobLengthInBytes,
26408 REFIID riid,
26409 _COM_Outptr_ void **ppvRootSignature);
26410
26411 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
26412 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
26413 ID3D12Device12 * This,
26414 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
26415 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26416
26417 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
26418 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
26419 ID3D12Device12 * This,
26420 _In_opt_ ID3D12Resource *pResource,
26421 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
26422 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26423
26424 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
26425 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
26426 ID3D12Device12 * This,
26427 _In_opt_ ID3D12Resource *pResource,
26428 _In_opt_ ID3D12Resource *pCounterResource,
26429 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
26430 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26431
26432 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
26433 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
26434 ID3D12Device12 * This,
26435 _In_opt_ ID3D12Resource *pResource,
26436 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
26437 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26438
26439 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
26440 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
26441 ID3D12Device12 * This,
26442 _In_opt_ ID3D12Resource *pResource,
26443 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
26444 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26445
26446 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
26447 void ( STDMETHODCALLTYPE *CreateSampler )(
26448 ID3D12Device12 * This,
26449 _In_ const D3D12_SAMPLER_DESC *pDesc,
26450 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26451
26452 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
26453 void ( STDMETHODCALLTYPE *CopyDescriptors )(
26454 ID3D12Device12 * This,
26455 _In_ UINT NumDestDescriptorRanges,
26456 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
26457 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
26458 _In_ UINT NumSrcDescriptorRanges,
26459 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
26460 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
26461 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
26462
26463 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
26464 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
26465 ID3D12Device12 * This,
26466 _In_ UINT NumDescriptors,
26467 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
26468 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
26469 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
26470
26471 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
26472#if !defined(_WIN32)
26473 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
26474 ID3D12Device12 * This,
26475 _In_ UINT visibleMask,
26476 _In_ UINT numResourceDescs,
26477 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
26478
26479#else
26480 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
26481 ID3D12Device12 * This,
26482 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26483 _In_ UINT visibleMask,
26484 _In_ UINT numResourceDescs,
26485 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
26486
26487#endif
26488
26489 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
26490#if !defined(_WIN32)
26491 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
26492 ID3D12Device12 * This,
26493 _In_ UINT nodeMask,
26494 D3D12_HEAP_TYPE heapType);
26495
26496#else
26497 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
26498 ID3D12Device12 * This,
26499 D3D12_HEAP_PROPERTIES * RetVal,
26500 _In_ UINT nodeMask,
26501 D3D12_HEAP_TYPE heapType);
26502
26503#endif
26504
26505 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
26506 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
26507 ID3D12Device12 * This,
26508 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26509 D3D12_HEAP_FLAGS HeapFlags,
26510 _In_ const D3D12_RESOURCE_DESC *pDesc,
26511 D3D12_RESOURCE_STATES InitialResourceState,
26512 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26513 REFIID riidResource,
26514 _COM_Outptr_opt_ void **ppvResource);
26515
26516 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
26517 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
26518 ID3D12Device12 * This,
26519 _In_ const D3D12_HEAP_DESC *pDesc,
26520 REFIID riid,
26521 _COM_Outptr_opt_ void **ppvHeap);
26522
26523 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
26524 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
26525 ID3D12Device12 * This,
26526 _In_ ID3D12Heap *pHeap,
26527 UINT64 HeapOffset,
26528 _In_ const D3D12_RESOURCE_DESC *pDesc,
26529 D3D12_RESOURCE_STATES InitialState,
26530 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26531 REFIID riid,
26532 _COM_Outptr_opt_ void **ppvResource);
26533
26534 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
26535 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
26536 ID3D12Device12 * This,
26537 _In_ const D3D12_RESOURCE_DESC *pDesc,
26538 D3D12_RESOURCE_STATES InitialState,
26539 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26540 REFIID riid,
26541 _COM_Outptr_opt_ void **ppvResource);
26542
26543 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
26544 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
26545 ID3D12Device12 * This,
26546 _In_ ID3D12DeviceChild *pObject,
26547 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
26548 DWORD Access,
26549 _In_opt_ LPCWSTR Name,
26550 _Out_ HANDLE *pHandle);
26551
26552 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
26553 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
26554 ID3D12Device12 * This,
26555 _In_ HANDLE NTHandle,
26556 REFIID riid,
26557 _COM_Outptr_opt_ void **ppvObj);
26558
26559 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
26560 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
26561 ID3D12Device12 * This,
26562 _In_ LPCWSTR Name,
26563 DWORD Access,
26564 /* [annotation][out] */
26565 _Out_ HANDLE *pNTHandle);
26566
26567 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
26568 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
26569 ID3D12Device12 * This,
26570 UINT NumObjects,
26571 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
26572
26573 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
26574 HRESULT ( STDMETHODCALLTYPE *Evict )(
26575 ID3D12Device12 * This,
26576 UINT NumObjects,
26577 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
26578
26579 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
26580 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
26581 ID3D12Device12 * This,
26582 UINT64 InitialValue,
26583 D3D12_FENCE_FLAGS Flags,
26584 REFIID riid,
26585 _COM_Outptr_ void **ppFence);
26586
26587 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
26588 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
26589 ID3D12Device12 * This);
26590
26591 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
26592 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
26593 ID3D12Device12 * This,
26594 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
26595 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
26596 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
26597 UINT64 BaseOffset,
26598 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
26599 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
26600 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
26601 _Out_opt_ UINT64 *pTotalBytes);
26602
26603 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
26604 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
26605 ID3D12Device12 * This,
26606 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
26607 REFIID riid,
26608 _COM_Outptr_opt_ void **ppvHeap);
26609
26610 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
26611 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
26612 ID3D12Device12 * This,
26613 BOOL Enable);
26614
26615 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
26616 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
26617 ID3D12Device12 * This,
26618 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
26619 _In_opt_ ID3D12RootSignature *pRootSignature,
26620 REFIID riid,
26621 _COM_Outptr_opt_ void **ppvCommandSignature);
26622
26623 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
26624 void ( STDMETHODCALLTYPE *GetResourceTiling )(
26625 ID3D12Device12 * This,
26626 _In_ ID3D12Resource *pTiledResource,
26627 _Out_opt_ UINT *pNumTilesForEntireResource,
26628 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
26629 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
26630 _Inout_opt_ UINT *pNumSubresourceTilings,
26631 _In_ UINT FirstSubresourceTilingToGet,
26632 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
26633
26634 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
26635#if !defined(_WIN32)
26636 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
26637 ID3D12Device12 * This);
26638
26639#else
26640 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
26641 ID3D12Device12 * This,
26642 LUID * RetVal);
26643
26644#endif
26645
26646 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
26647 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
26648 ID3D12Device12 * This,
26649 _In_reads_(BlobLength) const void *pLibraryBlob,
26650 SIZE_T BlobLength,
26651 REFIID riid,
26652 _COM_Outptr_ void **ppPipelineLibrary);
26653
26654 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
26655 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
26656 ID3D12Device12 * This,
26657 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
26658 _In_reads_(NumFences) const UINT64 *pFenceValues,
26659 UINT NumFences,
26660 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
26661 HANDLE hEvent);
26662
26663 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
26664 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
26665 ID3D12Device12 * This,
26666 UINT NumObjects,
26667 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
26668 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
26669
26670 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
26671 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
26672 ID3D12Device12 * This,
26673 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
26674 REFIID riid,
26675 _COM_Outptr_ void **ppPipelineState);
26676
26677 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
26678 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
26679 ID3D12Device12 * This,
26680 _In_ const void *pAddress,
26681 REFIID riid,
26682 _COM_Outptr_ void **ppvHeap);
26683
26684 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
26685 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
26686 ID3D12Device12 * This,
26687 _In_ HANDLE hFileMapping,
26688 REFIID riid,
26689 _COM_Outptr_ void **ppvHeap);
26690
26691 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
26692 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
26693 ID3D12Device12 * This,
26694 D3D12_RESIDENCY_FLAGS Flags,
26695 UINT NumObjects,
26696 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
26697 _In_ ID3D12Fence *pFenceToSignal,
26698 UINT64 FenceValueToSignal);
26699
26700 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
26701 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
26702 ID3D12Device12 * This,
26703 _In_ UINT nodeMask,
26704 _In_ D3D12_COMMAND_LIST_TYPE type,
26705 _In_ D3D12_COMMAND_LIST_FLAGS flags,
26706 REFIID riid,
26707 _COM_Outptr_ void **ppCommandList);
26708
26709 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
26710 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
26711 ID3D12Device12 * This,
26712 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
26713 _In_ REFIID riid,
26714 _COM_Outptr_ void **ppSession);
26715
26716 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
26717 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
26718 ID3D12Device12 * This,
26719 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26720 D3D12_HEAP_FLAGS HeapFlags,
26721 _In_ const D3D12_RESOURCE_DESC *pDesc,
26722 D3D12_RESOURCE_STATES InitialResourceState,
26723 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26724 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26725 REFIID riidResource,
26726 _COM_Outptr_opt_ void **ppvResource);
26727
26728 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
26729 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
26730 ID3D12Device12 * This,
26731 _In_ const D3D12_HEAP_DESC *pDesc,
26732 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26733 REFIID riid,
26734 _COM_Outptr_opt_ void **ppvHeap);
26735
26736 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
26737 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
26738 ID3D12Device12 * This,
26739 _In_ const D3D12_RESOURCE_DESC *pDesc,
26740 D3D12_RESOURCE_STATES InitialState,
26741 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26742 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26743 REFIID riid,
26744 _COM_Outptr_opt_ void **ppvResource);
26745
26746 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
26747#if !defined(_WIN32)
26748 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
26749 ID3D12Device12 * This,
26750 UINT visibleMask,
26751 UINT numResourceDescs,
26752 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
26753 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26754
26755#else
26756 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
26757 ID3D12Device12 * This,
26758 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26759 UINT visibleMask,
26760 UINT numResourceDescs,
26761 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
26762 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26763
26764#endif
26765
26766 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
26767 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
26768 ID3D12Device12 * This,
26769 _In_ ID3D12LifetimeOwner *pOwner,
26770 REFIID riid,
26771 _COM_Outptr_ void **ppvTracker);
26772
26773 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
26774 void ( STDMETHODCALLTYPE *RemoveDevice )(
26775 ID3D12Device12 * This);
26776
26777 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
26778 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
26779 ID3D12Device12 * This,
26780 _Inout_ UINT *pNumMetaCommands,
26781 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
26782
26783 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
26784 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
26785 ID3D12Device12 * This,
26786 _In_ REFGUID CommandId,
26787 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
26788 _Out_opt_ UINT *pTotalStructureSizeInBytes,
26789 _Inout_ UINT *pParameterCount,
26790 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
26791
26792 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
26793 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
26794 ID3D12Device12 * This,
26795 _In_ REFGUID CommandId,
26796 _In_ UINT NodeMask,
26797 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
26798 _In_ SIZE_T CreationParametersDataSizeInBytes,
26799 REFIID riid,
26800 _COM_Outptr_ void **ppMetaCommand);
26801
26802 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
26803 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
26804 ID3D12Device12 * This,
26805 const D3D12_STATE_OBJECT_DESC *pDesc,
26806 REFIID riid,
26807 _COM_Outptr_ void **ppStateObject);
26808
26809 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
26810 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
26811 ID3D12Device12 * This,
26812 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
26813 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
26814
26815 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
26816 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
26817 ID3D12Device12 * This,
26818 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
26819 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
26820
26821 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
26822 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
26823 ID3D12Device12 * This,
26824 D3D12_BACKGROUND_PROCESSING_MODE Mode,
26825 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
26826 _In_opt_ HANDLE hEventToSignalUponCompletion,
26827 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
26828
26829 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
26830 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
26831 ID3D12Device12 * This,
26832 const D3D12_STATE_OBJECT_DESC *pAddition,
26833 ID3D12StateObject *pStateObjectToGrowFrom,
26834 REFIID riid,
26835 _COM_Outptr_ void **ppNewStateObject);
26836
26837 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
26838 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
26839 ID3D12Device12 * This,
26840 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
26841 _In_ REFIID riid,
26842 _COM_Outptr_ void **ppSession);
26843
26844 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
26845#if !defined(_WIN32)
26846 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
26847 ID3D12Device12 * This,
26848 UINT visibleMask,
26849 UINT numResourceDescs,
26850 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26851 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26852
26853#else
26854 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
26855 ID3D12Device12 * This,
26856 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26857 UINT visibleMask,
26858 UINT numResourceDescs,
26859 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26860 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26861
26862#endif
26863
26864 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
26865 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
26866 ID3D12Device12 * This,
26867 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26868 D3D12_HEAP_FLAGS HeapFlags,
26869 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26870 D3D12_RESOURCE_STATES InitialResourceState,
26871 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26872 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26873 REFIID riidResource,
26874 _COM_Outptr_opt_ void **ppvResource);
26875
26876 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
26877 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
26878 ID3D12Device12 * This,
26879 _In_ ID3D12Heap *pHeap,
26880 UINT64 HeapOffset,
26881 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26882 D3D12_RESOURCE_STATES InitialState,
26883 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26884 REFIID riid,
26885 _COM_Outptr_opt_ void **ppvResource);
26886
26887 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
26888 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
26889 ID3D12Device12 * This,
26890 _In_opt_ ID3D12Resource *pTargetedResource,
26891 _In_opt_ ID3D12Resource *pFeedbackResource,
26892 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26893
26894 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
26895 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
26896 ID3D12Device12 * This,
26897 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
26898 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
26899 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
26900 UINT64 BaseOffset,
26901 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
26902 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
26903 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
26904 _Out_opt_ UINT64 *pTotalBytes);
26905
26906 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
26907 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
26908 ID3D12Device12 * This,
26909 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
26910 REFIID riid,
26911 _COM_Outptr_opt_ void **ppvSession);
26912
26913 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
26914 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
26915 ID3D12Device12 * This,
26916 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
26917 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
26918
26919 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
26920 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
26921 ID3D12Device12 * This,
26922 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
26923 REFIID CreatorID,
26924 REFIID riid,
26925 _COM_Outptr_ void **ppCommandQueue);
26926
26927 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
26928 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
26929 ID3D12Device12 * This,
26930 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26931 D3D12_HEAP_FLAGS HeapFlags,
26932 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26933 D3D12_BARRIER_LAYOUT InitialLayout,
26934 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26935 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26936 UINT32 NumCastableFormats,
26937 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26938 REFIID riidResource,
26939 _COM_Outptr_opt_ void **ppvResource);
26940
26941 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
26942 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
26943 ID3D12Device12 * This,
26944 _In_ ID3D12Heap *pHeap,
26945 UINT64 HeapOffset,
26946 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26947 D3D12_BARRIER_LAYOUT InitialLayout,
26948 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26949 UINT32 NumCastableFormats,
26950 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26951 REFIID riid,
26952 _COM_Outptr_opt_ void **ppvResource);
26953
26954 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
26955 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
26956 ID3D12Device12 * This,
26957 _In_ const D3D12_RESOURCE_DESC *pDesc,
26958 D3D12_BARRIER_LAYOUT InitialLayout,
26959 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26960 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26961 UINT32 NumCastableFormats,
26962 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26963 REFIID riid,
26964 _COM_Outptr_opt_ void **ppvResource);
26965
26966 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
26967 void ( STDMETHODCALLTYPE *CreateSampler2 )(
26968 ID3D12Device12 * This,
26969 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
26970 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26971
26972 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
26973#if !defined(_WIN32)
26974 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
26975 ID3D12Device12 * This,
26976 UINT visibleMask,
26977 UINT numResourceDescs,
26978 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26979 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26980 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26981 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26982
26983#else
26984 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
26985 ID3D12Device12 * This,
26986 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26987 UINT visibleMask,
26988 UINT numResourceDescs,
26989 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26990 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26991 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26992 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26993
26994#endif
26995
26996 END_INTERFACE
26997 } ID3D12Device12Vtbl;
26998
26999 interface ID3D12Device12
27000 {
27001 CONST_VTBL struct ID3D12Device12Vtbl *lpVtbl;
27002 };
27003
27004
27005
27006#ifdef COBJMACROS
27007
27008
27009#define ID3D12Device12_QueryInterface(This,riid,ppvObject) \
27010 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
27011
27012#define ID3D12Device12_AddRef(This) \
27013 ( (This)->lpVtbl -> AddRef(This) )
27014
27015#define ID3D12Device12_Release(This) \
27016 ( (This)->lpVtbl -> Release(This) )
27017
27018
27019#define ID3D12Device12_GetPrivateData(This,guid,pDataSize,pData) \
27020 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
27021
27022#define ID3D12Device12_SetPrivateData(This,guid,DataSize,pData) \
27023 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
27024
27025#define ID3D12Device12_SetPrivateDataInterface(This,guid,pData) \
27026 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
27027
27028#define ID3D12Device12_SetName(This,Name) \
27029 ( (This)->lpVtbl -> SetName(This,Name) )
27030
27031
27032#define ID3D12Device12_GetNodeCount(This) \
27033 ( (This)->lpVtbl -> GetNodeCount(This) )
27034
27035#define ID3D12Device12_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
27036 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
27037
27038#define ID3D12Device12_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
27039 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
27040
27041#define ID3D12Device12_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
27042 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
27043
27044#define ID3D12Device12_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
27045 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
27046
27047#define ID3D12Device12_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
27048 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
27049
27050#define ID3D12Device12_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
27051 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
27052
27053#define ID3D12Device12_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
27054 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
27055
27056#define ID3D12Device12_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
27057 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
27058
27059#define ID3D12Device12_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
27060 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
27061
27062#define ID3D12Device12_CreateConstantBufferView(This,pDesc,DestDescriptor) \
27063 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
27064
27065#define ID3D12Device12_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
27066 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
27067
27068#define ID3D12Device12_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
27069 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
27070
27071#define ID3D12Device12_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
27072 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
27073
27074#define ID3D12Device12_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
27075 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
27076
27077#define ID3D12Device12_CreateSampler(This,pDesc,DestDescriptor) \
27078 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
27079
27080#define ID3D12Device12_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
27081 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
27082
27083#define ID3D12Device12_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
27084 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
27085#if !defined(_WIN32)
27086
27087#define ID3D12Device12_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
27088 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
27089#else
27090#define ID3D12Device12_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
27091 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
27092#endif
27093#if !defined(_WIN32)
27094
27095#define ID3D12Device12_GetCustomHeapProperties(This,nodeMask,heapType) \
27096 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
27097#else
27098#define ID3D12Device12_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
27099 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
27100#endif
27101
27102#define ID3D12Device12_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
27103 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
27104
27105#define ID3D12Device12_CreateHeap(This,pDesc,riid,ppvHeap) \
27106 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
27107
27108#define ID3D12Device12_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27109 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27110
27111#define ID3D12Device12_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27112 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27113
27114#define ID3D12Device12_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
27115 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
27116
27117#define ID3D12Device12_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
27118 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
27119
27120#define ID3D12Device12_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
27121 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
27122
27123#define ID3D12Device12_MakeResident(This,NumObjects,ppObjects) \
27124 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
27125
27126#define ID3D12Device12_Evict(This,NumObjects,ppObjects) \
27127 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
27128
27129#define ID3D12Device12_CreateFence(This,InitialValue,Flags,riid,ppFence) \
27130 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
27131
27132#define ID3D12Device12_GetDeviceRemovedReason(This) \
27133 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
27134
27135#define ID3D12Device12_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
27136 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
27137
27138#define ID3D12Device12_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
27139 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
27140
27141#define ID3D12Device12_SetStablePowerState(This,Enable) \
27142 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
27143
27144#define ID3D12Device12_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
27145 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
27146
27147#define ID3D12Device12_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
27148 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
27149#if !defined(_WIN32)
27150
27151#define ID3D12Device12_GetAdapterLuid(This) \
27152 ( (This)->lpVtbl -> GetAdapterLuid(This) )
27153#else
27154#define ID3D12Device12_GetAdapterLuid(This,RetVal) \
27155 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
27156#endif
27157
27158
27159#define ID3D12Device12_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
27160 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
27161
27162#define ID3D12Device12_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
27163 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
27164
27165#define ID3D12Device12_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
27166 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
27167
27168
27169#define ID3D12Device12_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
27170 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
27171
27172
27173#define ID3D12Device12_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
27174 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
27175
27176#define ID3D12Device12_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
27177 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
27178
27179#define ID3D12Device12_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
27180 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
27181
27182
27183#define ID3D12Device12_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
27184 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
27185
27186#define ID3D12Device12_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
27187 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
27188
27189#define ID3D12Device12_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
27190 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
27191
27192#define ID3D12Device12_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
27193 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
27194
27195#define ID3D12Device12_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
27196 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
27197#if !defined(_WIN32)
27198
27199#define ID3D12Device12_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27200 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27201#else
27202#define ID3D12Device12_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27203 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27204#endif
27205
27206
27207#define ID3D12Device12_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
27208 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
27209
27210#define ID3D12Device12_RemoveDevice(This) \
27211 ( (This)->lpVtbl -> RemoveDevice(This) )
27212
27213#define ID3D12Device12_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
27214 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
27215
27216#define ID3D12Device12_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
27217 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
27218
27219#define ID3D12Device12_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
27220 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
27221
27222#define ID3D12Device12_CreateStateObject(This,pDesc,riid,ppStateObject) \
27223 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
27224
27225#define ID3D12Device12_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
27226 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
27227
27228#define ID3D12Device12_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
27229 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
27230
27231
27232#define ID3D12Device12_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
27233 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
27234
27235
27236#define ID3D12Device12_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
27237 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
27238
27239#define ID3D12Device12_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
27240 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
27241
27242#if !defined(_WIN32)
27243
27244#define ID3D12Device12_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27245 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27246#else
27247#define ID3D12Device12_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27248 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27249#endif
27250
27251#define ID3D12Device12_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
27252 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
27253
27254#define ID3D12Device12_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27255 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27256
27257#define ID3D12Device12_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
27258 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
27259
27260#define ID3D12Device12_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
27261 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
27262
27263
27264#define ID3D12Device12_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
27265 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
27266
27267#define ID3D12Device12_ShaderCacheControl(This,Kinds,Control) \
27268 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
27269
27270#define ID3D12Device12_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
27271 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
27272
27273
27274#define ID3D12Device12_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
27275 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
27276
27277#define ID3D12Device12_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
27278 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
27279
27280#define ID3D12Device12_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
27281 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
27282
27283
27284#define ID3D12Device12_CreateSampler2(This,pDesc,DestDescriptor) \
27285 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
27286
27287#if !defined(_WIN32)
27288
27289#define ID3D12Device12_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
27290 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
27291#else
27292#define ID3D12Device12_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
27293 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
27294#endif
27295
27296#endif /* COBJMACROS */
27297
27298
27299#endif /* C style interface */
27300
27301
27302
27303
27304#endif /* __ID3D12Device12_INTERFACE_DEFINED__ */
27305
27306
27307#ifndef __ID3D12Device13_INTERFACE_DEFINED__
27308#define __ID3D12Device13_INTERFACE_DEFINED__
27309
27310/* interface ID3D12Device13 */
27311/* [unique][local][object][uuid] */
27312
27313
27314EXTERN_C const IID IID_ID3D12Device13;
27315
27316#if defined(__cplusplus) && !defined(CINTERFACE)
27317
27318 MIDL_INTERFACE("14eecffc-4df8-40f7-a118-5c816f45695e")
27319 ID3D12Device13 : public ID3D12Device12
27320 {
27321 public:
27322 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress1(
27323 _In_ const void *pAddress,
27324 SIZE_T size,
27325 REFIID riid,
27326 _COM_Outptr_ void **ppvHeap) = 0;
27327
27328 };
27329
27330
27331#else /* C style interface */
27332
27333 typedef struct ID3D12Device13Vtbl
27334 {
27335 BEGIN_INTERFACE
27336
27337 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
27338 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
27339 ID3D12Device13 * This,
27340 REFIID riid,
27341 _COM_Outptr_ void **ppvObject);
27342
27343 DECLSPEC_XFGVIRT(IUnknown, AddRef)
27344 ULONG ( STDMETHODCALLTYPE *AddRef )(
27345 ID3D12Device13 * This);
27346
27347 DECLSPEC_XFGVIRT(IUnknown, Release)
27348 ULONG ( STDMETHODCALLTYPE *Release )(
27349 ID3D12Device13 * This);
27350
27351 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
27352 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
27353 ID3D12Device13 * This,
27354 _In_ REFGUID guid,
27355 _Inout_ UINT *pDataSize,
27356 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
27357
27358 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
27359 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
27360 ID3D12Device13 * This,
27361 _In_ REFGUID guid,
27362 _In_ UINT DataSize,
27363 _In_reads_bytes_opt_( DataSize ) const void *pData);
27364
27365 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
27366 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
27367 ID3D12Device13 * This,
27368 _In_ REFGUID guid,
27369 _In_opt_ const IUnknown *pData);
27370
27371 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
27372 HRESULT ( STDMETHODCALLTYPE *SetName )(
27373 ID3D12Device13 * This,
27374 _In_z_ LPCWSTR Name);
27375
27376 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
27377 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
27378 ID3D12Device13 * This);
27379
27380 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
27381 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
27382 ID3D12Device13 * This,
27383 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
27384 REFIID riid,
27385 _COM_Outptr_ void **ppCommandQueue);
27386
27387 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
27388 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
27389 ID3D12Device13 * This,
27390 _In_ D3D12_COMMAND_LIST_TYPE type,
27391 REFIID riid,
27392 _COM_Outptr_ void **ppCommandAllocator);
27393
27394 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
27395 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
27396 ID3D12Device13 * This,
27397 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
27398 REFIID riid,
27399 _COM_Outptr_ void **ppPipelineState);
27400
27401 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
27402 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
27403 ID3D12Device13 * This,
27404 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
27405 REFIID riid,
27406 _COM_Outptr_ void **ppPipelineState);
27407
27408 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
27409 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
27410 ID3D12Device13 * This,
27411 _In_ UINT nodeMask,
27412 _In_ D3D12_COMMAND_LIST_TYPE type,
27413 _In_ ID3D12CommandAllocator *pCommandAllocator,
27414 _In_opt_ ID3D12PipelineState *pInitialState,
27415 REFIID riid,
27416 _COM_Outptr_ void **ppCommandList);
27417
27418 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
27419 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
27420 ID3D12Device13 * This,
27421 D3D12_FEATURE Feature,
27422 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
27423 UINT FeatureSupportDataSize);
27424
27425 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
27426 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
27427 ID3D12Device13 * This,
27428 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
27429 REFIID riid,
27430 _COM_Outptr_ void **ppvHeap);
27431
27432 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
27433 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
27434 ID3D12Device13 * This,
27435 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
27436
27437 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
27438 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
27439 ID3D12Device13 * This,
27440 _In_ UINT nodeMask,
27441 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
27442 _In_ SIZE_T blobLengthInBytes,
27443 REFIID riid,
27444 _COM_Outptr_ void **ppvRootSignature);
27445
27446 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
27447 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
27448 ID3D12Device13 * This,
27449 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
27450 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27451
27452 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
27453 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
27454 ID3D12Device13 * This,
27455 _In_opt_ ID3D12Resource *pResource,
27456 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
27457 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27458
27459 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
27460 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
27461 ID3D12Device13 * This,
27462 _In_opt_ ID3D12Resource *pResource,
27463 _In_opt_ ID3D12Resource *pCounterResource,
27464 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
27465 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27466
27467 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
27468 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
27469 ID3D12Device13 * This,
27470 _In_opt_ ID3D12Resource *pResource,
27471 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
27472 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27473
27474 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
27475 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
27476 ID3D12Device13 * This,
27477 _In_opt_ ID3D12Resource *pResource,
27478 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
27479 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27480
27481 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
27482 void ( STDMETHODCALLTYPE *CreateSampler )(
27483 ID3D12Device13 * This,
27484 _In_ const D3D12_SAMPLER_DESC *pDesc,
27485 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27486
27487 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
27488 void ( STDMETHODCALLTYPE *CopyDescriptors )(
27489 ID3D12Device13 * This,
27490 _In_ UINT NumDestDescriptorRanges,
27491 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
27492 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
27493 _In_ UINT NumSrcDescriptorRanges,
27494 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
27495 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
27496 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
27497
27498 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
27499 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
27500 ID3D12Device13 * This,
27501 _In_ UINT NumDescriptors,
27502 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
27503 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
27504 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
27505
27506 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
27507#if !defined(_WIN32)
27508 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
27509 ID3D12Device13 * This,
27510 _In_ UINT visibleMask,
27511 _In_ UINT numResourceDescs,
27512 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
27513
27514#else
27515 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
27516 ID3D12Device13 * This,
27517 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27518 _In_ UINT visibleMask,
27519 _In_ UINT numResourceDescs,
27520 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
27521
27522#endif
27523
27524 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
27525#if !defined(_WIN32)
27526 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
27527 ID3D12Device13 * This,
27528 _In_ UINT nodeMask,
27529 D3D12_HEAP_TYPE heapType);
27530
27531#else
27532 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
27533 ID3D12Device13 * This,
27534 D3D12_HEAP_PROPERTIES * RetVal,
27535 _In_ UINT nodeMask,
27536 D3D12_HEAP_TYPE heapType);
27537
27538#endif
27539
27540 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
27541 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
27542 ID3D12Device13 * This,
27543 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27544 D3D12_HEAP_FLAGS HeapFlags,
27545 _In_ const D3D12_RESOURCE_DESC *pDesc,
27546 D3D12_RESOURCE_STATES InitialResourceState,
27547 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27548 REFIID riidResource,
27549 _COM_Outptr_opt_ void **ppvResource);
27550
27551 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
27552 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
27553 ID3D12Device13 * This,
27554 _In_ const D3D12_HEAP_DESC *pDesc,
27555 REFIID riid,
27556 _COM_Outptr_opt_ void **ppvHeap);
27557
27558 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
27559 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
27560 ID3D12Device13 * This,
27561 _In_ ID3D12Heap *pHeap,
27562 UINT64 HeapOffset,
27563 _In_ const D3D12_RESOURCE_DESC *pDesc,
27564 D3D12_RESOURCE_STATES InitialState,
27565 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27566 REFIID riid,
27567 _COM_Outptr_opt_ void **ppvResource);
27568
27569 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
27570 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
27571 ID3D12Device13 * This,
27572 _In_ const D3D12_RESOURCE_DESC *pDesc,
27573 D3D12_RESOURCE_STATES InitialState,
27574 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27575 REFIID riid,
27576 _COM_Outptr_opt_ void **ppvResource);
27577
27578 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
27579 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
27580 ID3D12Device13 * This,
27581 _In_ ID3D12DeviceChild *pObject,
27582 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
27583 DWORD Access,
27584 _In_opt_ LPCWSTR Name,
27585 _Out_ HANDLE *pHandle);
27586
27587 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
27588 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
27589 ID3D12Device13 * This,
27590 _In_ HANDLE NTHandle,
27591 REFIID riid,
27592 _COM_Outptr_opt_ void **ppvObj);
27593
27594 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
27595 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
27596 ID3D12Device13 * This,
27597 _In_ LPCWSTR Name,
27598 DWORD Access,
27599 /* [annotation][out] */
27600 _Out_ HANDLE *pNTHandle);
27601
27602 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
27603 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
27604 ID3D12Device13 * This,
27605 UINT NumObjects,
27606 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
27607
27608 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
27609 HRESULT ( STDMETHODCALLTYPE *Evict )(
27610 ID3D12Device13 * This,
27611 UINT NumObjects,
27612 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
27613
27614 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
27615 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
27616 ID3D12Device13 * This,
27617 UINT64 InitialValue,
27618 D3D12_FENCE_FLAGS Flags,
27619 REFIID riid,
27620 _COM_Outptr_ void **ppFence);
27621
27622 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
27623 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
27624 ID3D12Device13 * This);
27625
27626 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
27627 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
27628 ID3D12Device13 * This,
27629 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
27630 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
27631 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
27632 UINT64 BaseOffset,
27633 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
27634 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
27635 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
27636 _Out_opt_ UINT64 *pTotalBytes);
27637
27638 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
27639 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
27640 ID3D12Device13 * This,
27641 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
27642 REFIID riid,
27643 _COM_Outptr_opt_ void **ppvHeap);
27644
27645 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
27646 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
27647 ID3D12Device13 * This,
27648 BOOL Enable);
27649
27650 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
27651 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
27652 ID3D12Device13 * This,
27653 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
27654 _In_opt_ ID3D12RootSignature *pRootSignature,
27655 REFIID riid,
27656 _COM_Outptr_opt_ void **ppvCommandSignature);
27657
27658 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
27659 void ( STDMETHODCALLTYPE *GetResourceTiling )(
27660 ID3D12Device13 * This,
27661 _In_ ID3D12Resource *pTiledResource,
27662 _Out_opt_ UINT *pNumTilesForEntireResource,
27663 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
27664 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
27665 _Inout_opt_ UINT *pNumSubresourceTilings,
27666 _In_ UINT FirstSubresourceTilingToGet,
27667 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
27668
27669 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
27670#if !defined(_WIN32)
27671 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
27672 ID3D12Device13 * This);
27673
27674#else
27675 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
27676 ID3D12Device13 * This,
27677 LUID * RetVal);
27678
27679#endif
27680
27681 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
27682 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
27683 ID3D12Device13 * This,
27684 _In_reads_(BlobLength) const void *pLibraryBlob,
27685 SIZE_T BlobLength,
27686 REFIID riid,
27687 _COM_Outptr_ void **ppPipelineLibrary);
27688
27689 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
27690 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
27691 ID3D12Device13 * This,
27692 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
27693 _In_reads_(NumFences) const UINT64 *pFenceValues,
27694 UINT NumFences,
27695 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
27696 HANDLE hEvent);
27697
27698 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
27699 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
27700 ID3D12Device13 * This,
27701 UINT NumObjects,
27702 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
27703 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
27704
27705 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
27706 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
27707 ID3D12Device13 * This,
27708 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
27709 REFIID riid,
27710 _COM_Outptr_ void **ppPipelineState);
27711
27712 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
27713 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
27714 ID3D12Device13 * This,
27715 _In_ const void *pAddress,
27716 REFIID riid,
27717 _COM_Outptr_ void **ppvHeap);
27718
27719 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
27720 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
27721 ID3D12Device13 * This,
27722 _In_ HANDLE hFileMapping,
27723 REFIID riid,
27724 _COM_Outptr_ void **ppvHeap);
27725
27726 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
27727 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
27728 ID3D12Device13 * This,
27729 D3D12_RESIDENCY_FLAGS Flags,
27730 UINT NumObjects,
27731 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
27732 _In_ ID3D12Fence *pFenceToSignal,
27733 UINT64 FenceValueToSignal);
27734
27735 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
27736 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
27737 ID3D12Device13 * This,
27738 _In_ UINT nodeMask,
27739 _In_ D3D12_COMMAND_LIST_TYPE type,
27740 _In_ D3D12_COMMAND_LIST_FLAGS flags,
27741 REFIID riid,
27742 _COM_Outptr_ void **ppCommandList);
27743
27744 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
27745 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
27746 ID3D12Device13 * This,
27747 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
27748 _In_ REFIID riid,
27749 _COM_Outptr_ void **ppSession);
27750
27751 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
27752 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
27753 ID3D12Device13 * This,
27754 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27755 D3D12_HEAP_FLAGS HeapFlags,
27756 _In_ const D3D12_RESOURCE_DESC *pDesc,
27757 D3D12_RESOURCE_STATES InitialResourceState,
27758 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27759 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27760 REFIID riidResource,
27761 _COM_Outptr_opt_ void **ppvResource);
27762
27763 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
27764 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
27765 ID3D12Device13 * This,
27766 _In_ const D3D12_HEAP_DESC *pDesc,
27767 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27768 REFIID riid,
27769 _COM_Outptr_opt_ void **ppvHeap);
27770
27771 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
27772 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
27773 ID3D12Device13 * This,
27774 _In_ const D3D12_RESOURCE_DESC *pDesc,
27775 D3D12_RESOURCE_STATES InitialState,
27776 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27777 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27778 REFIID riid,
27779 _COM_Outptr_opt_ void **ppvResource);
27780
27781 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
27782#if !defined(_WIN32)
27783 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
27784 ID3D12Device13 * This,
27785 UINT visibleMask,
27786 UINT numResourceDescs,
27787 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
27788 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27789
27790#else
27791 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
27792 ID3D12Device13 * This,
27793 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27794 UINT visibleMask,
27795 UINT numResourceDescs,
27796 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
27797 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27798
27799#endif
27800
27801 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
27802 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
27803 ID3D12Device13 * This,
27804 _In_ ID3D12LifetimeOwner *pOwner,
27805 REFIID riid,
27806 _COM_Outptr_ void **ppvTracker);
27807
27808 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
27809 void ( STDMETHODCALLTYPE *RemoveDevice )(
27810 ID3D12Device13 * This);
27811
27812 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
27813 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
27814 ID3D12Device13 * This,
27815 _Inout_ UINT *pNumMetaCommands,
27816 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
27817
27818 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
27819 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
27820 ID3D12Device13 * This,
27821 _In_ REFGUID CommandId,
27822 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
27823 _Out_opt_ UINT *pTotalStructureSizeInBytes,
27824 _Inout_ UINT *pParameterCount,
27825 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
27826
27827 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
27828 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
27829 ID3D12Device13 * This,
27830 _In_ REFGUID CommandId,
27831 _In_ UINT NodeMask,
27832 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
27833 _In_ SIZE_T CreationParametersDataSizeInBytes,
27834 REFIID riid,
27835 _COM_Outptr_ void **ppMetaCommand);
27836
27837 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
27838 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
27839 ID3D12Device13 * This,
27840 const D3D12_STATE_OBJECT_DESC *pDesc,
27841 REFIID riid,
27842 _COM_Outptr_ void **ppStateObject);
27843
27844 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
27845 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
27846 ID3D12Device13 * This,
27847 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
27848 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
27849
27850 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
27851 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
27852 ID3D12Device13 * This,
27853 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
27854 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
27855
27856 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
27857 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
27858 ID3D12Device13 * This,
27859 D3D12_BACKGROUND_PROCESSING_MODE Mode,
27860 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
27861 _In_opt_ HANDLE hEventToSignalUponCompletion,
27862 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
27863
27864 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
27865 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
27866 ID3D12Device13 * This,
27867 const D3D12_STATE_OBJECT_DESC *pAddition,
27868 ID3D12StateObject *pStateObjectToGrowFrom,
27869 REFIID riid,
27870 _COM_Outptr_ void **ppNewStateObject);
27871
27872 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
27873 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
27874 ID3D12Device13 * This,
27875 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
27876 _In_ REFIID riid,
27877 _COM_Outptr_ void **ppSession);
27878
27879 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
27880#if !defined(_WIN32)
27881 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
27882 ID3D12Device13 * This,
27883 UINT visibleMask,
27884 UINT numResourceDescs,
27885 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
27886 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27887
27888#else
27889 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
27890 ID3D12Device13 * This,
27891 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27892 UINT visibleMask,
27893 UINT numResourceDescs,
27894 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
27895 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27896
27897#endif
27898
27899 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
27900 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
27901 ID3D12Device13 * This,
27902 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27903 D3D12_HEAP_FLAGS HeapFlags,
27904 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27905 D3D12_RESOURCE_STATES InitialResourceState,
27906 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27907 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27908 REFIID riidResource,
27909 _COM_Outptr_opt_ void **ppvResource);
27910
27911 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
27912 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
27913 ID3D12Device13 * This,
27914 _In_ ID3D12Heap *pHeap,
27915 UINT64 HeapOffset,
27916 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27917 D3D12_RESOURCE_STATES InitialState,
27918 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27919 REFIID riid,
27920 _COM_Outptr_opt_ void **ppvResource);
27921
27922 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
27923 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
27924 ID3D12Device13 * This,
27925 _In_opt_ ID3D12Resource *pTargetedResource,
27926 _In_opt_ ID3D12Resource *pFeedbackResource,
27927 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27928
27929 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
27930 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
27931 ID3D12Device13 * This,
27932 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
27933 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
27934 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
27935 UINT64 BaseOffset,
27936 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
27937 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
27938 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
27939 _Out_opt_ UINT64 *pTotalBytes);
27940
27941 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
27942 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
27943 ID3D12Device13 * This,
27944 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
27945 REFIID riid,
27946 _COM_Outptr_opt_ void **ppvSession);
27947
27948 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
27949 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
27950 ID3D12Device13 * This,
27951 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
27952 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
27953
27954 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
27955 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
27956 ID3D12Device13 * This,
27957 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
27958 REFIID CreatorID,
27959 REFIID riid,
27960 _COM_Outptr_ void **ppCommandQueue);
27961
27962 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
27963 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
27964 ID3D12Device13 * This,
27965 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27966 D3D12_HEAP_FLAGS HeapFlags,
27967 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27968 D3D12_BARRIER_LAYOUT InitialLayout,
27969 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27970 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27971 UINT32 NumCastableFormats,
27972 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27973 REFIID riidResource,
27974 _COM_Outptr_opt_ void **ppvResource);
27975
27976 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
27977 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
27978 ID3D12Device13 * This,
27979 _In_ ID3D12Heap *pHeap,
27980 UINT64 HeapOffset,
27981 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27982 D3D12_BARRIER_LAYOUT InitialLayout,
27983 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27984 UINT32 NumCastableFormats,
27985 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27986 REFIID riid,
27987 _COM_Outptr_opt_ void **ppvResource);
27988
27989 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
27990 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
27991 ID3D12Device13 * This,
27992 _In_ const D3D12_RESOURCE_DESC *pDesc,
27993 D3D12_BARRIER_LAYOUT InitialLayout,
27994 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27995 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27996 UINT32 NumCastableFormats,
27997 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27998 REFIID riid,
27999 _COM_Outptr_opt_ void **ppvResource);
28000
28001 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
28002 void ( STDMETHODCALLTYPE *CreateSampler2 )(
28003 ID3D12Device13 * This,
28004 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
28005 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28006
28007 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
28008#if !defined(_WIN32)
28009 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
28010 ID3D12Device13 * This,
28011 UINT visibleMask,
28012 UINT numResourceDescs,
28013 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28014 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
28015 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
28016 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28017
28018#else
28019 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
28020 ID3D12Device13 * This,
28021 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28022 UINT visibleMask,
28023 UINT numResourceDescs,
28024 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28025 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
28026 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
28027 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28028
28029#endif
28030
28031 DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
28032 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
28033 ID3D12Device13 * This,
28034 _In_ const void *pAddress,
28035 SIZE_T size,
28036 REFIID riid,
28037 _COM_Outptr_ void **ppvHeap);
28038
28039 END_INTERFACE
28040 } ID3D12Device13Vtbl;
28041
28042 interface ID3D12Device13
28043 {
28044 CONST_VTBL struct ID3D12Device13Vtbl *lpVtbl;
28045 };
28046
28047
28048
28049#ifdef COBJMACROS
28050
28051
28052#define ID3D12Device13_QueryInterface(This,riid,ppvObject) \
28053 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
28054
28055#define ID3D12Device13_AddRef(This) \
28056 ( (This)->lpVtbl -> AddRef(This) )
28057
28058#define ID3D12Device13_Release(This) \
28059 ( (This)->lpVtbl -> Release(This) )
28060
28061
28062#define ID3D12Device13_GetPrivateData(This,guid,pDataSize,pData) \
28063 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
28064
28065#define ID3D12Device13_SetPrivateData(This,guid,DataSize,pData) \
28066 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
28067
28068#define ID3D12Device13_SetPrivateDataInterface(This,guid,pData) \
28069 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
28070
28071#define ID3D12Device13_SetName(This,Name) \
28072 ( (This)->lpVtbl -> SetName(This,Name) )
28073
28074
28075#define ID3D12Device13_GetNodeCount(This) \
28076 ( (This)->lpVtbl -> GetNodeCount(This) )
28077
28078#define ID3D12Device13_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
28079 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
28080
28081#define ID3D12Device13_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
28082 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
28083
28084#define ID3D12Device13_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
28085 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
28086
28087#define ID3D12Device13_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
28088 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
28089
28090#define ID3D12Device13_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
28091 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
28092
28093#define ID3D12Device13_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
28094 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
28095
28096#define ID3D12Device13_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
28097 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
28098
28099#define ID3D12Device13_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
28100 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
28101
28102#define ID3D12Device13_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
28103 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
28104
28105#define ID3D12Device13_CreateConstantBufferView(This,pDesc,DestDescriptor) \
28106 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
28107
28108#define ID3D12Device13_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
28109 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
28110
28111#define ID3D12Device13_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
28112 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
28113
28114#define ID3D12Device13_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
28115 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
28116
28117#define ID3D12Device13_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
28118 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
28119
28120#define ID3D12Device13_CreateSampler(This,pDesc,DestDescriptor) \
28121 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
28122
28123#define ID3D12Device13_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
28124 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
28125
28126#define ID3D12Device13_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
28127 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
28128#if !defined(_WIN32)
28129
28130#define ID3D12Device13_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
28131 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
28132#else
28133#define ID3D12Device13_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
28134 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
28135#endif
28136#if !defined(_WIN32)
28137
28138#define ID3D12Device13_GetCustomHeapProperties(This,nodeMask,heapType) \
28139 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
28140#else
28141#define ID3D12Device13_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
28142 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
28143#endif
28144
28145#define ID3D12Device13_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
28146 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
28147
28148#define ID3D12Device13_CreateHeap(This,pDesc,riid,ppvHeap) \
28149 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
28150
28151#define ID3D12Device13_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28152 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28153
28154#define ID3D12Device13_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28155 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28156
28157#define ID3D12Device13_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
28158 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
28159
28160#define ID3D12Device13_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
28161 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
28162
28163#define ID3D12Device13_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
28164 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
28165
28166#define ID3D12Device13_MakeResident(This,NumObjects,ppObjects) \
28167 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
28168
28169#define ID3D12Device13_Evict(This,NumObjects,ppObjects) \
28170 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
28171
28172#define ID3D12Device13_CreateFence(This,InitialValue,Flags,riid,ppFence) \
28173 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
28174
28175#define ID3D12Device13_GetDeviceRemovedReason(This) \
28176 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
28177
28178#define ID3D12Device13_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
28179 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
28180
28181#define ID3D12Device13_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
28182 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
28183
28184#define ID3D12Device13_SetStablePowerState(This,Enable) \
28185 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
28186
28187#define ID3D12Device13_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
28188 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
28189
28190#define ID3D12Device13_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
28191 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
28192#if !defined(_WIN32)
28193
28194#define ID3D12Device13_GetAdapterLuid(This) \
28195 ( (This)->lpVtbl -> GetAdapterLuid(This) )
28196#else
28197#define ID3D12Device13_GetAdapterLuid(This,RetVal) \
28198 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
28199#endif
28200
28201
28202#define ID3D12Device13_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
28203 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
28204
28205#define ID3D12Device13_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
28206 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
28207
28208#define ID3D12Device13_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
28209 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
28210
28211
28212#define ID3D12Device13_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
28213 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
28214
28215
28216#define ID3D12Device13_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
28217 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
28218
28219#define ID3D12Device13_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
28220 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
28221
28222#define ID3D12Device13_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
28223 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
28224
28225
28226#define ID3D12Device13_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
28227 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
28228
28229#define ID3D12Device13_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
28230 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
28231
28232#define ID3D12Device13_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
28233 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
28234
28235#define ID3D12Device13_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
28236 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
28237
28238#define ID3D12Device13_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
28239 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
28240#if !defined(_WIN32)
28241
28242#define ID3D12Device13_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28243 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28244#else
28245#define ID3D12Device13_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28246 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28247#endif
28248
28249
28250#define ID3D12Device13_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
28251 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
28252
28253#define ID3D12Device13_RemoveDevice(This) \
28254 ( (This)->lpVtbl -> RemoveDevice(This) )
28255
28256#define ID3D12Device13_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
28257 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
28258
28259#define ID3D12Device13_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
28260 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
28261
28262#define ID3D12Device13_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
28263 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
28264
28265#define ID3D12Device13_CreateStateObject(This,pDesc,riid,ppStateObject) \
28266 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
28267
28268#define ID3D12Device13_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
28269 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
28270
28271#define ID3D12Device13_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
28272 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
28273
28274
28275#define ID3D12Device13_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
28276 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
28277
28278
28279#define ID3D12Device13_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
28280 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
28281
28282#define ID3D12Device13_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
28283 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
28284
28285#if !defined(_WIN32)
28286
28287#define ID3D12Device13_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28288 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28289#else
28290#define ID3D12Device13_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28291 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28292#endif
28293
28294#define ID3D12Device13_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
28295 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
28296
28297#define ID3D12Device13_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28298 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28299
28300#define ID3D12Device13_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
28301 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
28302
28303#define ID3D12Device13_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
28304 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
28305
28306
28307#define ID3D12Device13_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
28308 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
28309
28310#define ID3D12Device13_ShaderCacheControl(This,Kinds,Control) \
28311 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
28312
28313#define ID3D12Device13_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
28314 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
28315
28316
28317#define ID3D12Device13_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
28318 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
28319
28320#define ID3D12Device13_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
28321 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
28322
28323#define ID3D12Device13_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
28324 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
28325
28326
28327#define ID3D12Device13_CreateSampler2(This,pDesc,DestDescriptor) \
28328 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
28329
28330#if !defined(_WIN32)
28331
28332#define ID3D12Device13_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
28333 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
28334#else
28335#define ID3D12Device13_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
28336 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
28337#endif
28338
28339
28340#define ID3D12Device13_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
28341 ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
28342
28343#endif /* COBJMACROS */
28344
28345
28346#endif /* C style interface */
28347
28348
28349
28350
28351#endif /* __ID3D12Device13_INTERFACE_DEFINED__ */
28352
28353
28354#ifndef __ID3D12Device14_INTERFACE_DEFINED__
28355#define __ID3D12Device14_INTERFACE_DEFINED__
28356
28357/* interface ID3D12Device14 */
28358/* [unique][local][object][uuid] */
28359
28360
28361EXTERN_C const IID IID_ID3D12Device14;
28362
28363#if defined(__cplusplus) && !defined(CINTERFACE)
28364
28365 MIDL_INTERFACE("5f6e592d-d895-44c2-8e4a-88ad4926d323")
28366 ID3D12Device14 : public ID3D12Device13
28367 {
28368 public:
28369 virtual HRESULT STDMETHODCALLTYPE CreateRootSignatureFromSubobjectInLibrary(
28370 _In_ UINT nodeMask,
28371 _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
28372 _In_ SIZE_T blobLengthInBytes,
28373 _In_opt_ LPCWSTR subobjectName,
28374 REFIID riid,
28375 _COM_Outptr_ void **ppvRootSignature) = 0;
28376
28377 };
28378
28379
28380#else /* C style interface */
28381
28382 typedef struct ID3D12Device14Vtbl
28383 {
28384 BEGIN_INTERFACE
28385
28386 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
28387 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
28388 ID3D12Device14 * This,
28389 REFIID riid,
28390 _COM_Outptr_ void **ppvObject);
28391
28392 DECLSPEC_XFGVIRT(IUnknown, AddRef)
28393 ULONG ( STDMETHODCALLTYPE *AddRef )(
28394 ID3D12Device14 * This);
28395
28396 DECLSPEC_XFGVIRT(IUnknown, Release)
28397 ULONG ( STDMETHODCALLTYPE *Release )(
28398 ID3D12Device14 * This);
28399
28400 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
28401 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
28402 ID3D12Device14 * This,
28403 _In_ REFGUID guid,
28404 _Inout_ UINT *pDataSize,
28405 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
28406
28407 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
28408 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
28409 ID3D12Device14 * This,
28410 _In_ REFGUID guid,
28411 _In_ UINT DataSize,
28412 _In_reads_bytes_opt_( DataSize ) const void *pData);
28413
28414 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
28415 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
28416 ID3D12Device14 * This,
28417 _In_ REFGUID guid,
28418 _In_opt_ const IUnknown *pData);
28419
28420 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
28421 HRESULT ( STDMETHODCALLTYPE *SetName )(
28422 ID3D12Device14 * This,
28423 _In_z_ LPCWSTR Name);
28424
28425 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
28426 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
28427 ID3D12Device14 * This);
28428
28429 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
28430 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
28431 ID3D12Device14 * This,
28432 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
28433 REFIID riid,
28434 _COM_Outptr_ void **ppCommandQueue);
28435
28436 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
28437 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
28438 ID3D12Device14 * This,
28439 _In_ D3D12_COMMAND_LIST_TYPE type,
28440 REFIID riid,
28441 _COM_Outptr_ void **ppCommandAllocator);
28442
28443 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
28444 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
28445 ID3D12Device14 * This,
28446 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
28447 REFIID riid,
28448 _COM_Outptr_ void **ppPipelineState);
28449
28450 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
28451 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
28452 ID3D12Device14 * This,
28453 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
28454 REFIID riid,
28455 _COM_Outptr_ void **ppPipelineState);
28456
28457 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
28458 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
28459 ID3D12Device14 * This,
28460 _In_ UINT nodeMask,
28461 _In_ D3D12_COMMAND_LIST_TYPE type,
28462 _In_ ID3D12CommandAllocator *pCommandAllocator,
28463 _In_opt_ ID3D12PipelineState *pInitialState,
28464 REFIID riid,
28465 _COM_Outptr_ void **ppCommandList);
28466
28467 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
28468 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
28469 ID3D12Device14 * This,
28470 D3D12_FEATURE Feature,
28471 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
28472 UINT FeatureSupportDataSize);
28473
28474 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
28475 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
28476 ID3D12Device14 * This,
28477 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
28478 REFIID riid,
28479 _COM_Outptr_ void **ppvHeap);
28480
28481 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
28482 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
28483 ID3D12Device14 * This,
28484 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
28485
28486 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
28487 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
28488 ID3D12Device14 * This,
28489 _In_ UINT nodeMask,
28490 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
28491 _In_ SIZE_T blobLengthInBytes,
28492 REFIID riid,
28493 _COM_Outptr_ void **ppvRootSignature);
28494
28495 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
28496 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
28497 ID3D12Device14 * This,
28498 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
28499 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28500
28501 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
28502 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
28503 ID3D12Device14 * This,
28504 _In_opt_ ID3D12Resource *pResource,
28505 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
28506 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28507
28508 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
28509 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
28510 ID3D12Device14 * This,
28511 _In_opt_ ID3D12Resource *pResource,
28512 _In_opt_ ID3D12Resource *pCounterResource,
28513 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
28514 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28515
28516 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
28517 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
28518 ID3D12Device14 * This,
28519 _In_opt_ ID3D12Resource *pResource,
28520 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
28521 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28522
28523 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
28524 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
28525 ID3D12Device14 * This,
28526 _In_opt_ ID3D12Resource *pResource,
28527 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
28528 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28529
28530 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
28531 void ( STDMETHODCALLTYPE *CreateSampler )(
28532 ID3D12Device14 * This,
28533 _In_ const D3D12_SAMPLER_DESC *pDesc,
28534 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28535
28536 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
28537 void ( STDMETHODCALLTYPE *CopyDescriptors )(
28538 ID3D12Device14 * This,
28539 _In_ UINT NumDestDescriptorRanges,
28540 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
28541 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
28542 _In_ UINT NumSrcDescriptorRanges,
28543 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
28544 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
28545 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
28546
28547 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
28548 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
28549 ID3D12Device14 * This,
28550 _In_ UINT NumDescriptors,
28551 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
28552 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
28553 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
28554
28555 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
28556#if !defined(_WIN32)
28557 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
28558 ID3D12Device14 * This,
28559 _In_ UINT visibleMask,
28560 _In_ UINT numResourceDescs,
28561 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
28562
28563#else
28564 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
28565 ID3D12Device14 * This,
28566 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28567 _In_ UINT visibleMask,
28568 _In_ UINT numResourceDescs,
28569 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
28570
28571#endif
28572
28573 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
28574#if !defined(_WIN32)
28575 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
28576 ID3D12Device14 * This,
28577 _In_ UINT nodeMask,
28578 D3D12_HEAP_TYPE heapType);
28579
28580#else
28581 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
28582 ID3D12Device14 * This,
28583 D3D12_HEAP_PROPERTIES * RetVal,
28584 _In_ UINT nodeMask,
28585 D3D12_HEAP_TYPE heapType);
28586
28587#endif
28588
28589 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
28590 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
28591 ID3D12Device14 * This,
28592 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28593 D3D12_HEAP_FLAGS HeapFlags,
28594 _In_ const D3D12_RESOURCE_DESC *pDesc,
28595 D3D12_RESOURCE_STATES InitialResourceState,
28596 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28597 REFIID riidResource,
28598 _COM_Outptr_opt_ void **ppvResource);
28599
28600 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
28601 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
28602 ID3D12Device14 * This,
28603 _In_ const D3D12_HEAP_DESC *pDesc,
28604 REFIID riid,
28605 _COM_Outptr_opt_ void **ppvHeap);
28606
28607 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
28608 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
28609 ID3D12Device14 * This,
28610 _In_ ID3D12Heap *pHeap,
28611 UINT64 HeapOffset,
28612 _In_ const D3D12_RESOURCE_DESC *pDesc,
28613 D3D12_RESOURCE_STATES InitialState,
28614 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28615 REFIID riid,
28616 _COM_Outptr_opt_ void **ppvResource);
28617
28618 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
28619 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
28620 ID3D12Device14 * This,
28621 _In_ const D3D12_RESOURCE_DESC *pDesc,
28622 D3D12_RESOURCE_STATES InitialState,
28623 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28624 REFIID riid,
28625 _COM_Outptr_opt_ void **ppvResource);
28626
28627 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
28628 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
28629 ID3D12Device14 * This,
28630 _In_ ID3D12DeviceChild *pObject,
28631 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
28632 DWORD Access,
28633 _In_opt_ LPCWSTR Name,
28634 _Out_ HANDLE *pHandle);
28635
28636 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
28637 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
28638 ID3D12Device14 * This,
28639 _In_ HANDLE NTHandle,
28640 REFIID riid,
28641 _COM_Outptr_opt_ void **ppvObj);
28642
28643 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
28644 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
28645 ID3D12Device14 * This,
28646 _In_ LPCWSTR Name,
28647 DWORD Access,
28648 /* [annotation][out] */
28649 _Out_ HANDLE *pNTHandle);
28650
28651 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
28652 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
28653 ID3D12Device14 * This,
28654 UINT NumObjects,
28655 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
28656
28657 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
28658 HRESULT ( STDMETHODCALLTYPE *Evict )(
28659 ID3D12Device14 * This,
28660 UINT NumObjects,
28661 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
28662
28663 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
28664 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
28665 ID3D12Device14 * This,
28666 UINT64 InitialValue,
28667 D3D12_FENCE_FLAGS Flags,
28668 REFIID riid,
28669 _COM_Outptr_ void **ppFence);
28670
28671 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
28672 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
28673 ID3D12Device14 * This);
28674
28675 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
28676 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
28677 ID3D12Device14 * This,
28678 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
28679 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
28680 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
28681 UINT64 BaseOffset,
28682 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
28683 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
28684 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
28685 _Out_opt_ UINT64 *pTotalBytes);
28686
28687 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
28688 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
28689 ID3D12Device14 * This,
28690 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
28691 REFIID riid,
28692 _COM_Outptr_opt_ void **ppvHeap);
28693
28694 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
28695 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
28696 ID3D12Device14 * This,
28697 BOOL Enable);
28698
28699 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
28700 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
28701 ID3D12Device14 * This,
28702 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
28703 _In_opt_ ID3D12RootSignature *pRootSignature,
28704 REFIID riid,
28705 _COM_Outptr_opt_ void **ppvCommandSignature);
28706
28707 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
28708 void ( STDMETHODCALLTYPE *GetResourceTiling )(
28709 ID3D12Device14 * This,
28710 _In_ ID3D12Resource *pTiledResource,
28711 _Out_opt_ UINT *pNumTilesForEntireResource,
28712 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
28713 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
28714 _Inout_opt_ UINT *pNumSubresourceTilings,
28715 _In_ UINT FirstSubresourceTilingToGet,
28716 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
28717
28718 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
28719#if !defined(_WIN32)
28720 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
28721 ID3D12Device14 * This);
28722
28723#else
28724 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
28725 ID3D12Device14 * This,
28726 LUID * RetVal);
28727
28728#endif
28729
28730 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
28731 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
28732 ID3D12Device14 * This,
28733 _In_reads_(BlobLength) const void *pLibraryBlob,
28734 SIZE_T BlobLength,
28735 REFIID riid,
28736 _COM_Outptr_ void **ppPipelineLibrary);
28737
28738 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
28739 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
28740 ID3D12Device14 * This,
28741 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
28742 _In_reads_(NumFences) const UINT64 *pFenceValues,
28743 UINT NumFences,
28744 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
28745 HANDLE hEvent);
28746
28747 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
28748 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
28749 ID3D12Device14 * This,
28750 UINT NumObjects,
28751 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
28752 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
28753
28754 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
28755 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
28756 ID3D12Device14 * This,
28757 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
28758 REFIID riid,
28759 _COM_Outptr_ void **ppPipelineState);
28760
28761 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
28762 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
28763 ID3D12Device14 * This,
28764 _In_ const void *pAddress,
28765 REFIID riid,
28766 _COM_Outptr_ void **ppvHeap);
28767
28768 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
28769 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
28770 ID3D12Device14 * This,
28771 _In_ HANDLE hFileMapping,
28772 REFIID riid,
28773 _COM_Outptr_ void **ppvHeap);
28774
28775 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
28776 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
28777 ID3D12Device14 * This,
28778 D3D12_RESIDENCY_FLAGS Flags,
28779 UINT NumObjects,
28780 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
28781 _In_ ID3D12Fence *pFenceToSignal,
28782 UINT64 FenceValueToSignal);
28783
28784 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
28785 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
28786 ID3D12Device14 * This,
28787 _In_ UINT nodeMask,
28788 _In_ D3D12_COMMAND_LIST_TYPE type,
28789 _In_ D3D12_COMMAND_LIST_FLAGS flags,
28790 REFIID riid,
28791 _COM_Outptr_ void **ppCommandList);
28792
28793 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
28794 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
28795 ID3D12Device14 * This,
28796 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
28797 _In_ REFIID riid,
28798 _COM_Outptr_ void **ppSession);
28799
28800 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
28801 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
28802 ID3D12Device14 * This,
28803 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28804 D3D12_HEAP_FLAGS HeapFlags,
28805 _In_ const D3D12_RESOURCE_DESC *pDesc,
28806 D3D12_RESOURCE_STATES InitialResourceState,
28807 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28808 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28809 REFIID riidResource,
28810 _COM_Outptr_opt_ void **ppvResource);
28811
28812 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
28813 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
28814 ID3D12Device14 * This,
28815 _In_ const D3D12_HEAP_DESC *pDesc,
28816 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28817 REFIID riid,
28818 _COM_Outptr_opt_ void **ppvHeap);
28819
28820 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
28821 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
28822 ID3D12Device14 * This,
28823 _In_ const D3D12_RESOURCE_DESC *pDesc,
28824 D3D12_RESOURCE_STATES InitialState,
28825 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28826 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28827 REFIID riid,
28828 _COM_Outptr_opt_ void **ppvResource);
28829
28830 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
28831#if !defined(_WIN32)
28832 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
28833 ID3D12Device14 * This,
28834 UINT visibleMask,
28835 UINT numResourceDescs,
28836 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
28837 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28838
28839#else
28840 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
28841 ID3D12Device14 * This,
28842 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28843 UINT visibleMask,
28844 UINT numResourceDescs,
28845 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
28846 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28847
28848#endif
28849
28850 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
28851 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
28852 ID3D12Device14 * This,
28853 _In_ ID3D12LifetimeOwner *pOwner,
28854 REFIID riid,
28855 _COM_Outptr_ void **ppvTracker);
28856
28857 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
28858 void ( STDMETHODCALLTYPE *RemoveDevice )(
28859 ID3D12Device14 * This);
28860
28861 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
28862 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
28863 ID3D12Device14 * This,
28864 _Inout_ UINT *pNumMetaCommands,
28865 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
28866
28867 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
28868 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
28869 ID3D12Device14 * This,
28870 _In_ REFGUID CommandId,
28871 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
28872 _Out_opt_ UINT *pTotalStructureSizeInBytes,
28873 _Inout_ UINT *pParameterCount,
28874 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
28875
28876 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
28877 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
28878 ID3D12Device14 * This,
28879 _In_ REFGUID CommandId,
28880 _In_ UINT NodeMask,
28881 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
28882 _In_ SIZE_T CreationParametersDataSizeInBytes,
28883 REFIID riid,
28884 _COM_Outptr_ void **ppMetaCommand);
28885
28886 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
28887 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
28888 ID3D12Device14 * This,
28889 const D3D12_STATE_OBJECT_DESC *pDesc,
28890 REFIID riid,
28891 _COM_Outptr_ void **ppStateObject);
28892
28893 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
28894 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
28895 ID3D12Device14 * This,
28896 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
28897 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
28898
28899 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
28900 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
28901 ID3D12Device14 * This,
28902 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
28903 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
28904
28905 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
28906 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
28907 ID3D12Device14 * This,
28908 D3D12_BACKGROUND_PROCESSING_MODE Mode,
28909 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
28910 _In_opt_ HANDLE hEventToSignalUponCompletion,
28911 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
28912
28913 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
28914 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
28915 ID3D12Device14 * This,
28916 const D3D12_STATE_OBJECT_DESC *pAddition,
28917 ID3D12StateObject *pStateObjectToGrowFrom,
28918 REFIID riid,
28919 _COM_Outptr_ void **ppNewStateObject);
28920
28921 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
28922 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
28923 ID3D12Device14 * This,
28924 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
28925 _In_ REFIID riid,
28926 _COM_Outptr_ void **ppSession);
28927
28928 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
28929#if !defined(_WIN32)
28930 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
28931 ID3D12Device14 * This,
28932 UINT visibleMask,
28933 UINT numResourceDescs,
28934 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28935 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28936
28937#else
28938 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
28939 ID3D12Device14 * This,
28940 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28941 UINT visibleMask,
28942 UINT numResourceDescs,
28943 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28944 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28945
28946#endif
28947
28948 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
28949 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
28950 ID3D12Device14 * This,
28951 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28952 D3D12_HEAP_FLAGS HeapFlags,
28953 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
28954 D3D12_RESOURCE_STATES InitialResourceState,
28955 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28956 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28957 REFIID riidResource,
28958 _COM_Outptr_opt_ void **ppvResource);
28959
28960 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
28961 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
28962 ID3D12Device14 * This,
28963 _In_ ID3D12Heap *pHeap,
28964 UINT64 HeapOffset,
28965 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
28966 D3D12_RESOURCE_STATES InitialState,
28967 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28968 REFIID riid,
28969 _COM_Outptr_opt_ void **ppvResource);
28970
28971 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
28972 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
28973 ID3D12Device14 * This,
28974 _In_opt_ ID3D12Resource *pTargetedResource,
28975 _In_opt_ ID3D12Resource *pFeedbackResource,
28976 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28977
28978 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
28979 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
28980 ID3D12Device14 * This,
28981 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
28982 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
28983 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
28984 UINT64 BaseOffset,
28985 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
28986 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
28987 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
28988 _Out_opt_ UINT64 *pTotalBytes);
28989
28990 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
28991 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
28992 ID3D12Device14 * This,
28993 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
28994 REFIID riid,
28995 _COM_Outptr_opt_ void **ppvSession);
28996
28997 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
28998 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
28999 ID3D12Device14 * This,
29000 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
29001 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
29002
29003 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
29004 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
29005 ID3D12Device14 * This,
29006 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
29007 REFIID CreatorID,
29008 REFIID riid,
29009 _COM_Outptr_ void **ppCommandQueue);
29010
29011 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
29012 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
29013 ID3D12Device14 * This,
29014 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
29015 D3D12_HEAP_FLAGS HeapFlags,
29016 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
29017 D3D12_BARRIER_LAYOUT InitialLayout,
29018 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29019 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
29020 UINT32 NumCastableFormats,
29021 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29022 REFIID riidResource,
29023 _COM_Outptr_opt_ void **ppvResource);
29024
29025 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
29026 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
29027 ID3D12Device14 * This,
29028 _In_ ID3D12Heap *pHeap,
29029 UINT64 HeapOffset,
29030 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
29031 D3D12_BARRIER_LAYOUT InitialLayout,
29032 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29033 UINT32 NumCastableFormats,
29034 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29035 REFIID riid,
29036 _COM_Outptr_opt_ void **ppvResource);
29037
29038 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
29039 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
29040 ID3D12Device14 * This,
29041 _In_ const D3D12_RESOURCE_DESC *pDesc,
29042 D3D12_BARRIER_LAYOUT InitialLayout,
29043 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29044 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
29045 UINT32 NumCastableFormats,
29046 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29047 REFIID riid,
29048 _COM_Outptr_opt_ void **ppvResource);
29049
29050 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
29051 void ( STDMETHODCALLTYPE *CreateSampler2 )(
29052 ID3D12Device14 * This,
29053 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
29054 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
29055
29056 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
29057#if !defined(_WIN32)
29058 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
29059 ID3D12Device14 * This,
29060 UINT visibleMask,
29061 UINT numResourceDescs,
29062 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
29063 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
29064 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
29065 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
29066
29067#else
29068 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
29069 ID3D12Device14 * This,
29070 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
29071 UINT visibleMask,
29072 UINT numResourceDescs,
29073 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
29074 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
29075 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
29076 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
29077
29078#endif
29079
29080 DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
29081 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
29082 ID3D12Device14 * This,
29083 _In_ const void *pAddress,
29084 SIZE_T size,
29085 REFIID riid,
29086 _COM_Outptr_ void **ppvHeap);
29087
29088 DECLSPEC_XFGVIRT(ID3D12Device14, CreateRootSignatureFromSubobjectInLibrary)
29089 HRESULT ( STDMETHODCALLTYPE *CreateRootSignatureFromSubobjectInLibrary )(
29090 ID3D12Device14 * This,
29091 _In_ UINT nodeMask,
29092 _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
29093 _In_ SIZE_T blobLengthInBytes,
29094 _In_opt_ LPCWSTR subobjectName,
29095 REFIID riid,
29096 _COM_Outptr_ void **ppvRootSignature);
29097
29098 END_INTERFACE
29099 } ID3D12Device14Vtbl;
29100
29101 interface ID3D12Device14
29102 {
29103 CONST_VTBL struct ID3D12Device14Vtbl *lpVtbl;
29104 };
29105
29106
29107
29108#ifdef COBJMACROS
29109
29110
29111#define ID3D12Device14_QueryInterface(This,riid,ppvObject) \
29112 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29113
29114#define ID3D12Device14_AddRef(This) \
29115 ( (This)->lpVtbl -> AddRef(This) )
29116
29117#define ID3D12Device14_Release(This) \
29118 ( (This)->lpVtbl -> Release(This) )
29119
29120
29121#define ID3D12Device14_GetPrivateData(This,guid,pDataSize,pData) \
29122 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
29123
29124#define ID3D12Device14_SetPrivateData(This,guid,DataSize,pData) \
29125 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
29126
29127#define ID3D12Device14_SetPrivateDataInterface(This,guid,pData) \
29128 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
29129
29130#define ID3D12Device14_SetName(This,Name) \
29131 ( (This)->lpVtbl -> SetName(This,Name) )
29132
29133
29134#define ID3D12Device14_GetNodeCount(This) \
29135 ( (This)->lpVtbl -> GetNodeCount(This) )
29136
29137#define ID3D12Device14_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
29138 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
29139
29140#define ID3D12Device14_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
29141 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
29142
29143#define ID3D12Device14_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
29144 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
29145
29146#define ID3D12Device14_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
29147 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
29148
29149#define ID3D12Device14_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
29150 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
29151
29152#define ID3D12Device14_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
29153 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
29154
29155#define ID3D12Device14_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
29156 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
29157
29158#define ID3D12Device14_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
29159 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
29160
29161#define ID3D12Device14_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
29162 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
29163
29164#define ID3D12Device14_CreateConstantBufferView(This,pDesc,DestDescriptor) \
29165 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
29166
29167#define ID3D12Device14_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
29168 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
29169
29170#define ID3D12Device14_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
29171 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
29172
29173#define ID3D12Device14_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
29174 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
29175
29176#define ID3D12Device14_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
29177 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
29178
29179#define ID3D12Device14_CreateSampler(This,pDesc,DestDescriptor) \
29180 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
29181
29182#define ID3D12Device14_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
29183 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
29184
29185#define ID3D12Device14_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
29186 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
29187#if !defined(_WIN32)
29188
29189#define ID3D12Device14_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
29190 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
29191#else
29192#define ID3D12Device14_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
29193 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
29194#endif
29195#if !defined(_WIN32)
29196
29197#define ID3D12Device14_GetCustomHeapProperties(This,nodeMask,heapType) \
29198 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
29199#else
29200#define ID3D12Device14_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
29201 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
29202#endif
29203
29204#define ID3D12Device14_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
29205 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
29206
29207#define ID3D12Device14_CreateHeap(This,pDesc,riid,ppvHeap) \
29208 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
29209
29210#define ID3D12Device14_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29211 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29212
29213#define ID3D12Device14_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29214 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29215
29216#define ID3D12Device14_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
29217 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
29218
29219#define ID3D12Device14_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
29220 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
29221
29222#define ID3D12Device14_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
29223 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
29224
29225#define ID3D12Device14_MakeResident(This,NumObjects,ppObjects) \
29226 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
29227
29228#define ID3D12Device14_Evict(This,NumObjects,ppObjects) \
29229 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
29230
29231#define ID3D12Device14_CreateFence(This,InitialValue,Flags,riid,ppFence) \
29232 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
29233
29234#define ID3D12Device14_GetDeviceRemovedReason(This) \
29235 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
29236
29237#define ID3D12Device14_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
29238 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
29239
29240#define ID3D12Device14_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
29241 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
29242
29243#define ID3D12Device14_SetStablePowerState(This,Enable) \
29244 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
29245
29246#define ID3D12Device14_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
29247 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
29248
29249#define ID3D12Device14_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
29250 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
29251#if !defined(_WIN32)
29252
29253#define ID3D12Device14_GetAdapterLuid(This) \
29254 ( (This)->lpVtbl -> GetAdapterLuid(This) )
29255#else
29256#define ID3D12Device14_GetAdapterLuid(This,RetVal) \
29257 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
29258#endif
29259
29260
29261#define ID3D12Device14_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
29262 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
29263
29264#define ID3D12Device14_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
29265 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
29266
29267#define ID3D12Device14_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
29268 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
29269
29270
29271#define ID3D12Device14_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
29272 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
29273
29274
29275#define ID3D12Device14_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
29276 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
29277
29278#define ID3D12Device14_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
29279 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
29280
29281#define ID3D12Device14_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
29282 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
29283
29284
29285#define ID3D12Device14_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
29286 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
29287
29288#define ID3D12Device14_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
29289 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
29290
29291#define ID3D12Device14_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
29292 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
29293
29294#define ID3D12Device14_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
29295 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
29296
29297#define ID3D12Device14_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
29298 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
29299#if !defined(_WIN32)
29300
29301#define ID3D12Device14_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29302 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29303#else
29304#define ID3D12Device14_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29305 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29306#endif
29307
29308
29309#define ID3D12Device14_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
29310 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
29311
29312#define ID3D12Device14_RemoveDevice(This) \
29313 ( (This)->lpVtbl -> RemoveDevice(This) )
29314
29315#define ID3D12Device14_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
29316 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
29317
29318#define ID3D12Device14_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
29319 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
29320
29321#define ID3D12Device14_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
29322 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
29323
29324#define ID3D12Device14_CreateStateObject(This,pDesc,riid,ppStateObject) \
29325 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
29326
29327#define ID3D12Device14_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
29328 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
29329
29330#define ID3D12Device14_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
29331 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
29332
29333
29334#define ID3D12Device14_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
29335 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
29336
29337
29338#define ID3D12Device14_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
29339 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
29340
29341#define ID3D12Device14_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
29342 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
29343
29344#if !defined(_WIN32)
29345
29346#define ID3D12Device14_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29347 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29348#else
29349#define ID3D12Device14_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29350 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29351#endif
29352
29353#define ID3D12Device14_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
29354 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
29355
29356#define ID3D12Device14_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29357 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29358
29359#define ID3D12Device14_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
29360 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
29361
29362#define ID3D12Device14_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
29363 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
29364
29365
29366#define ID3D12Device14_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
29367 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
29368
29369#define ID3D12Device14_ShaderCacheControl(This,Kinds,Control) \
29370 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
29371
29372#define ID3D12Device14_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
29373 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
29374
29375
29376#define ID3D12Device14_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
29377 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
29378
29379#define ID3D12Device14_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
29380 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
29381
29382#define ID3D12Device14_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
29383 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
29384
29385
29386#define ID3D12Device14_CreateSampler2(This,pDesc,DestDescriptor) \
29387 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
29388
29389#if !defined(_WIN32)
29390
29391#define ID3D12Device14_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
29392 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
29393#else
29394#define ID3D12Device14_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
29395 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
29396#endif
29397
29398
29399#define ID3D12Device14_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
29400 ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
29401
29402
29403#define ID3D12Device14_CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) \
29404 ( (This)->lpVtbl -> CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) )
29405
29406#endif /* COBJMACROS */
29407
29408
29409#endif /* C style interface */
29410
29411
29412
29413
29414#endif /* __ID3D12Device14_INTERFACE_DEFINED__ */
29415
29416
29417/* interface __MIDL_itf_d3d12_0000_0063 */
29418/* [local] */
29419
29420typedef union D3D12_VERSION_NUMBER
29421 {
29422 UINT64 Version;
29423 UINT16 VersionParts[ 4 ];
29424 } D3D12_VERSION_NUMBER;
29425
29426typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
29427 {
29428 WCHAR szAdapterFamily[ 128 ];
29429 UINT64 MinimumABISupportVersion;
29430 UINT64 MaximumABISupportVersion;
29431 D3D12_VERSION_NUMBER CompilerVersion;
29432 D3D12_VERSION_NUMBER ApplicationProfileVersion;
29433 } D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
29434
29435typedef void ( __stdcall *D3D12PipelineStateFunc )(
29436 _In_reads_bytes_(KeySize) const void *pKey,
29437 UINT KeySize,
29438 UINT Version,
29439 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
29440 _Inout_opt_ void *pContext);
29441
29442typedef void ( __stdcall *D3D12StateObjectFunc )(
29443 _In_reads_bytes_(KeySize) const void *pKey,
29444 UINT KeySize,
29445 UINT Version,
29446 const D3D12_STATE_OBJECT_DESC *pDesc,
29447 _In_reads_bytes_(ParentKeySize) const void *pParentKey,
29448 UINT ParentKeySize,
29449 _Inout_opt_ void *pContext);
29450
29451typedef struct D3D12_APPLICATION_DESC
29452 {
29453 LPCWSTR pExeFilename;
29454 LPCWSTR pName;
29455 D3D12_VERSION_NUMBER Version;
29456 LPCWSTR pEngineName;
29457 D3D12_VERSION_NUMBER EngineVersion;
29458 } D3D12_APPLICATION_DESC;
29459
29460typedef void ( __stdcall *D3D12ApplicationDescFunc )(
29461 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
29462 _Inout_opt_ void *pContext);
29463
29464typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
29465 {
29466 _Field_size_bytes_full_(KeySize) const void *pKey;
29467 UINT KeySize;
29468 UINT NumExports;
29469 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
29470 } D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
29471
29472
29473
29474extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_c_ifspec;
29475extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_s_ifspec;
29476
29477#ifndef __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
29478#define __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
29479
29480/* interface ID3D12StateObjectDatabase */
29481/* [unique][local][object][uuid] */
29482
29483
29484EXTERN_C const IID IID_ID3D12StateObjectDatabase;
29485
29486#if defined(__cplusplus) && !defined(CINTERFACE)
29487
29488 MIDL_INTERFACE("c56060b7-b5fc-4135-98e0-a1e9997eace0")
29489 ID3D12StateObjectDatabase : public IUnknown
29490 {
29491 public:
29492 virtual HRESULT STDMETHODCALLTYPE SetApplicationDesc(
29493 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc) = 0;
29494
29495 virtual HRESULT STDMETHODCALLTYPE GetApplicationDesc(
29496 _In_ D3D12ApplicationDescFunc CallbackFunc,
29497 _Inout_opt_ void *pContext) = 0;
29498
29499 virtual HRESULT STDMETHODCALLTYPE StorePipelineStateDesc(
29500 _In_reads_(KeySize) const void *pKey,
29501 UINT KeySize,
29502 UINT Version,
29503 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
29504
29505 virtual HRESULT STDMETHODCALLTYPE FindPipelineStateDesc(
29506 _In_reads_(KeySize) const void *pKey,
29507 UINT KeySize,
29508 _In_ D3D12PipelineStateFunc CallbackFunc,
29509 _Inout_opt_ void *pContext) = 0;
29510
29511 virtual HRESULT STDMETHODCALLTYPE StoreStateObjectDesc(
29512 _In_reads_(KeySize) const void *pKey,
29513 UINT KeySize,
29514 UINT Version,
29515 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
29516 _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
29517 UINT StateObjectToGrowFromKeySize) = 0;
29518
29519 virtual HRESULT STDMETHODCALLTYPE FindStateObjectDesc(
29520 _In_reads_(keySize) const void *pKey,
29521 UINT KeySize,
29522 D3D12StateObjectFunc CallbackFunc,
29523 _Inout_opt_ void *pContext) = 0;
29524
29525 virtual HRESULT STDMETHODCALLTYPE FindObjectVersion(
29526 _In_reads_(keySize) const void *pKey,
29527 UINT KeySize,
29528 _Out_ UINT *pVersion) = 0;
29529
29530 };
29531
29532
29533#else /* C style interface */
29534
29535 typedef struct ID3D12StateObjectDatabaseVtbl
29536 {
29537 BEGIN_INTERFACE
29538
29539 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29540 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29541 ID3D12StateObjectDatabase * This,
29542 REFIID riid,
29543 _COM_Outptr_ void **ppvObject);
29544
29545 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29546 ULONG ( STDMETHODCALLTYPE *AddRef )(
29547 ID3D12StateObjectDatabase * This);
29548
29549 DECLSPEC_XFGVIRT(IUnknown, Release)
29550 ULONG ( STDMETHODCALLTYPE *Release )(
29551 ID3D12StateObjectDatabase * This);
29552
29553 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, SetApplicationDesc)
29554 HRESULT ( STDMETHODCALLTYPE *SetApplicationDesc )(
29555 ID3D12StateObjectDatabase * This,
29556 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc);
29557
29558 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, GetApplicationDesc)
29559 HRESULT ( STDMETHODCALLTYPE *GetApplicationDesc )(
29560 ID3D12StateObjectDatabase * This,
29561 _In_ D3D12ApplicationDescFunc CallbackFunc,
29562 _Inout_opt_ void *pContext);
29563
29564 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StorePipelineStateDesc)
29565 HRESULT ( STDMETHODCALLTYPE *StorePipelineStateDesc )(
29566 ID3D12StateObjectDatabase * This,
29567 _In_reads_(KeySize) const void *pKey,
29568 UINT KeySize,
29569 UINT Version,
29570 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
29571
29572 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindPipelineStateDesc)
29573 HRESULT ( STDMETHODCALLTYPE *FindPipelineStateDesc )(
29574 ID3D12StateObjectDatabase * This,
29575 _In_reads_(KeySize) const void *pKey,
29576 UINT KeySize,
29577 _In_ D3D12PipelineStateFunc CallbackFunc,
29578 _Inout_opt_ void *pContext);
29579
29580 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StoreStateObjectDesc)
29581 HRESULT ( STDMETHODCALLTYPE *StoreStateObjectDesc )(
29582 ID3D12StateObjectDatabase * This,
29583 _In_reads_(KeySize) const void *pKey,
29584 UINT KeySize,
29585 UINT Version,
29586 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
29587 _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
29588 UINT StateObjectToGrowFromKeySize);
29589
29590 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindStateObjectDesc)
29591 HRESULT ( STDMETHODCALLTYPE *FindStateObjectDesc )(
29592 ID3D12StateObjectDatabase * This,
29593 _In_reads_(keySize) const void *pKey,
29594 UINT KeySize,
29595 D3D12StateObjectFunc CallbackFunc,
29596 _Inout_opt_ void *pContext);
29597
29598 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindObjectVersion)
29599 HRESULT ( STDMETHODCALLTYPE *FindObjectVersion )(
29600 ID3D12StateObjectDatabase * This,
29601 _In_reads_(keySize) const void *pKey,
29602 UINT KeySize,
29603 _Out_ UINT *pVersion);
29604
29605 END_INTERFACE
29606 } ID3D12StateObjectDatabaseVtbl;
29607
29608 interface ID3D12StateObjectDatabase
29609 {
29610 CONST_VTBL struct ID3D12StateObjectDatabaseVtbl *lpVtbl;
29611 };
29612
29613
29614
29615#ifdef COBJMACROS
29616
29617
29618#define ID3D12StateObjectDatabase_QueryInterface(This,riid,ppvObject) \
29619 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29620
29621#define ID3D12StateObjectDatabase_AddRef(This) \
29622 ( (This)->lpVtbl -> AddRef(This) )
29623
29624#define ID3D12StateObjectDatabase_Release(This) \
29625 ( (This)->lpVtbl -> Release(This) )
29626
29627
29628#define ID3D12StateObjectDatabase_SetApplicationDesc(This,pApplicationDesc) \
29629 ( (This)->lpVtbl -> SetApplicationDesc(This,pApplicationDesc) )
29630
29631#define ID3D12StateObjectDatabase_GetApplicationDesc(This,CallbackFunc,pContext) \
29632 ( (This)->lpVtbl -> GetApplicationDesc(This,CallbackFunc,pContext) )
29633
29634#define ID3D12StateObjectDatabase_StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) \
29635 ( (This)->lpVtbl -> StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) )
29636
29637#define ID3D12StateObjectDatabase_FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) \
29638 ( (This)->lpVtbl -> FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) )
29639
29640#define ID3D12StateObjectDatabase_StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) \
29641 ( (This)->lpVtbl -> StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) )
29642
29643#define ID3D12StateObjectDatabase_FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) \
29644 ( (This)->lpVtbl -> FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) )
29645
29646#define ID3D12StateObjectDatabase_FindObjectVersion(This,pKey,KeySize,pVersion) \
29647 ( (This)->lpVtbl -> FindObjectVersion(This,pKey,KeySize,pVersion) )
29648
29649#endif /* COBJMACROS */
29650
29651
29652#endif /* C style interface */
29653
29654
29655
29656
29657#endif /* __ID3D12StateObjectDatabase_INTERFACE_DEFINED__ */
29658
29659
29660#ifndef __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
29661#define __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
29662
29663/* interface ID3D12VirtualizationGuestDevice */
29664/* [unique][local][object][uuid] */
29665
29666
29667EXTERN_C const IID IID_ID3D12VirtualizationGuestDevice;
29668
29669#if defined(__cplusplus) && !defined(CINTERFACE)
29670
29671 MIDL_INTERFACE("bc66d368-7373-4943-8757-fc87dc79e476")
29672 ID3D12VirtualizationGuestDevice : public IUnknown
29673 {
29674 public:
29675 virtual HRESULT STDMETHODCALLTYPE ShareWithHost(
29676 _In_ ID3D12DeviceChild *pObject,
29677 _Out_ HANDLE *pHandle) = 0;
29678
29679 virtual HRESULT STDMETHODCALLTYPE CreateFenceFd(
29680 _In_ ID3D12Fence *pFence,
29681 UINT64 FenceValue,
29682 _Out_ int *pFenceFd) = 0;
29683
29684 };
29685
29686
29687#else /* C style interface */
29688
29689 typedef struct ID3D12VirtualizationGuestDeviceVtbl
29690 {
29691 BEGIN_INTERFACE
29692
29693 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29694 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29695 ID3D12VirtualizationGuestDevice * This,
29696 REFIID riid,
29697 _COM_Outptr_ void **ppvObject);
29698
29699 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29700 ULONG ( STDMETHODCALLTYPE *AddRef )(
29701 ID3D12VirtualizationGuestDevice * This);
29702
29703 DECLSPEC_XFGVIRT(IUnknown, Release)
29704 ULONG ( STDMETHODCALLTYPE *Release )(
29705 ID3D12VirtualizationGuestDevice * This);
29706
29707 DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, ShareWithHost)
29708 HRESULT ( STDMETHODCALLTYPE *ShareWithHost )(
29709 ID3D12VirtualizationGuestDevice * This,
29710 _In_ ID3D12DeviceChild *pObject,
29711 _Out_ HANDLE *pHandle);
29712
29713 DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, CreateFenceFd)
29714 HRESULT ( STDMETHODCALLTYPE *CreateFenceFd )(
29715 ID3D12VirtualizationGuestDevice * This,
29716 _In_ ID3D12Fence *pFence,
29717 UINT64 FenceValue,
29718 _Out_ int *pFenceFd);
29719
29720 END_INTERFACE
29721 } ID3D12VirtualizationGuestDeviceVtbl;
29722
29723 interface ID3D12VirtualizationGuestDevice
29724 {
29725 CONST_VTBL struct ID3D12VirtualizationGuestDeviceVtbl *lpVtbl;
29726 };
29727
29728
29729
29730#ifdef COBJMACROS
29731
29732
29733#define ID3D12VirtualizationGuestDevice_QueryInterface(This,riid,ppvObject) \
29734 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29735
29736#define ID3D12VirtualizationGuestDevice_AddRef(This) \
29737 ( (This)->lpVtbl -> AddRef(This) )
29738
29739#define ID3D12VirtualizationGuestDevice_Release(This) \
29740 ( (This)->lpVtbl -> Release(This) )
29741
29742
29743#define ID3D12VirtualizationGuestDevice_ShareWithHost(This,pObject,pHandle) \
29744 ( (This)->lpVtbl -> ShareWithHost(This,pObject,pHandle) )
29745
29746#define ID3D12VirtualizationGuestDevice_CreateFenceFd(This,pFence,FenceValue,pFenceFd) \
29747 ( (This)->lpVtbl -> CreateFenceFd(This,pFence,FenceValue,pFenceFd) )
29748
29749#endif /* COBJMACROS */
29750
29751
29752#endif /* C style interface */
29753
29754
29755
29756
29757#endif /* __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__ */
29758
29759
29760#ifndef __ID3D12Tools_INTERFACE_DEFINED__
29761#define __ID3D12Tools_INTERFACE_DEFINED__
29762
29763/* interface ID3D12Tools */
29764/* [unique][local][object][uuid] */
29765
29766
29767EXTERN_C const IID IID_ID3D12Tools;
29768
29769#if defined(__cplusplus) && !defined(CINTERFACE)
29770
29771 MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
29772 ID3D12Tools : public IUnknown
29773 {
29774 public:
29775 virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
29776 BOOL bEnable) = 0;
29777
29778 virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
29779
29780 };
29781
29782
29783#else /* C style interface */
29784
29785 typedef struct ID3D12ToolsVtbl
29786 {
29787 BEGIN_INTERFACE
29788
29789 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29790 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29791 ID3D12Tools * This,
29792 REFIID riid,
29793 _COM_Outptr_ void **ppvObject);
29794
29795 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29796 ULONG ( STDMETHODCALLTYPE *AddRef )(
29797 ID3D12Tools * This);
29798
29799 DECLSPEC_XFGVIRT(IUnknown, Release)
29800 ULONG ( STDMETHODCALLTYPE *Release )(
29801 ID3D12Tools * This);
29802
29803 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
29804 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
29805 ID3D12Tools * This,
29806 BOOL bEnable);
29807
29808 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
29809 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
29810 ID3D12Tools * This);
29811
29812 END_INTERFACE
29813 } ID3D12ToolsVtbl;
29814
29815 interface ID3D12Tools
29816 {
29817 CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
29818 };
29819
29820
29821
29822#ifdef COBJMACROS
29823
29824
29825#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
29826 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29827
29828#define ID3D12Tools_AddRef(This) \
29829 ( (This)->lpVtbl -> AddRef(This) )
29830
29831#define ID3D12Tools_Release(This) \
29832 ( (This)->lpVtbl -> Release(This) )
29833
29834
29835#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
29836 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
29837
29838#define ID3D12Tools_ShaderInstrumentationEnabled(This) \
29839 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
29840
29841#endif /* COBJMACROS */
29842
29843
29844#endif /* C style interface */
29845
29846
29847
29848
29849#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
29850
29851
29852#ifndef __ID3D12Tools1_INTERFACE_DEFINED__
29853#define __ID3D12Tools1_INTERFACE_DEFINED__
29854
29855/* interface ID3D12Tools1 */
29856/* [unique][local][object][uuid] */
29857
29858
29859EXTERN_C const IID IID_ID3D12Tools1;
29860
29861#if defined(__cplusplus) && !defined(CINTERFACE)
29862
29863 MIDL_INTERFACE("e4fbc019-dd3c-43e1-8f32-7f649575f0a0")
29864 ID3D12Tools1 : public ID3D12Tools
29865 {
29866 public:
29867 virtual HRESULT STDMETHODCALLTYPE ReserveGPUVARangesAtCreate(
29868 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
29869 _In_ UINT uiNumRanges) = 0;
29870
29871 virtual void STDMETHODCALLTYPE ClearReservedGPUVARangesList( void) = 0;
29872
29873 };
29874
29875
29876#else /* C style interface */
29877
29878 typedef struct ID3D12Tools1Vtbl
29879 {
29880 BEGIN_INTERFACE
29881
29882 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29883 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29884 ID3D12Tools1 * This,
29885 REFIID riid,
29886 _COM_Outptr_ void **ppvObject);
29887
29888 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29889 ULONG ( STDMETHODCALLTYPE *AddRef )(
29890 ID3D12Tools1 * This);
29891
29892 DECLSPEC_XFGVIRT(IUnknown, Release)
29893 ULONG ( STDMETHODCALLTYPE *Release )(
29894 ID3D12Tools1 * This);
29895
29896 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
29897 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
29898 ID3D12Tools1 * This,
29899 BOOL bEnable);
29900
29901 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
29902 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
29903 ID3D12Tools1 * This);
29904
29905 DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
29906 HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
29907 ID3D12Tools1 * This,
29908 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
29909 _In_ UINT uiNumRanges);
29910
29911 DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
29912 void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
29913 ID3D12Tools1 * This);
29914
29915 END_INTERFACE
29916 } ID3D12Tools1Vtbl;
29917
29918 interface ID3D12Tools1
29919 {
29920 CONST_VTBL struct ID3D12Tools1Vtbl *lpVtbl;
29921 };
29922
29923
29924
29925#ifdef COBJMACROS
29926
29927
29928#define ID3D12Tools1_QueryInterface(This,riid,ppvObject) \
29929 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29930
29931#define ID3D12Tools1_AddRef(This) \
29932 ( (This)->lpVtbl -> AddRef(This) )
29933
29934#define ID3D12Tools1_Release(This) \
29935 ( (This)->lpVtbl -> Release(This) )
29936
29937
29938#define ID3D12Tools1_EnableShaderInstrumentation(This,bEnable) \
29939 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
29940
29941#define ID3D12Tools1_ShaderInstrumentationEnabled(This) \
29942 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
29943
29944
29945#define ID3D12Tools1_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
29946 ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
29947
29948#define ID3D12Tools1_ClearReservedGPUVARangesList(This) \
29949 ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
29950
29951#endif /* COBJMACROS */
29952
29953
29954#endif /* C style interface */
29955
29956
29957
29958
29959#endif /* __ID3D12Tools1_INTERFACE_DEFINED__ */
29960
29961
29962#ifndef __ID3D12Tools2_INTERFACE_DEFINED__
29963#define __ID3D12Tools2_INTERFACE_DEFINED__
29964
29965/* interface ID3D12Tools2 */
29966/* [unique][local][object][uuid] */
29967
29968
29969EXTERN_C const IID IID_ID3D12Tools2;
29970
29971#if defined(__cplusplus) && !defined(CINTERFACE)
29972
29973 MIDL_INTERFACE("01d393c5-c9b0-42a1-958c-c26b02d4d097")
29974 ID3D12Tools2 : public ID3D12Tools1
29975 {
29976 public:
29977 virtual HRESULT STDMETHODCALLTYPE SetApplicationSpecificDriverState(
29978 _In_ IUnknown *pAdapter,
29979 _In_opt_ ID3DBlob *pBlob) = 0;
29980
29981 };
29982
29983
29984#else /* C style interface */
29985
29986 typedef struct ID3D12Tools2Vtbl
29987 {
29988 BEGIN_INTERFACE
29989
29990 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29991 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29992 ID3D12Tools2 * This,
29993 REFIID riid,
29994 _COM_Outptr_ void **ppvObject);
29995
29996 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29997 ULONG ( STDMETHODCALLTYPE *AddRef )(
29998 ID3D12Tools2 * This);
29999
30000 DECLSPEC_XFGVIRT(IUnknown, Release)
30001 ULONG ( STDMETHODCALLTYPE *Release )(
30002 ID3D12Tools2 * This);
30003
30004 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
30005 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
30006 ID3D12Tools2 * This,
30007 BOOL bEnable);
30008
30009 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
30010 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
30011 ID3D12Tools2 * This);
30012
30013 DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
30014 HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
30015 ID3D12Tools2 * This,
30016 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
30017 _In_ UINT uiNumRanges);
30018
30019 DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
30020 void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
30021 ID3D12Tools2 * This);
30022
30023 DECLSPEC_XFGVIRT(ID3D12Tools2, SetApplicationSpecificDriverState)
30024 HRESULT ( STDMETHODCALLTYPE *SetApplicationSpecificDriverState )(
30025 ID3D12Tools2 * This,
30026 _In_ IUnknown *pAdapter,
30027 _In_opt_ ID3DBlob *pBlob);
30028
30029 END_INTERFACE
30030 } ID3D12Tools2Vtbl;
30031
30032 interface ID3D12Tools2
30033 {
30034 CONST_VTBL struct ID3D12Tools2Vtbl *lpVtbl;
30035 };
30036
30037
30038
30039#ifdef COBJMACROS
30040
30041
30042#define ID3D12Tools2_QueryInterface(This,riid,ppvObject) \
30043 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30044
30045#define ID3D12Tools2_AddRef(This) \
30046 ( (This)->lpVtbl -> AddRef(This) )
30047
30048#define ID3D12Tools2_Release(This) \
30049 ( (This)->lpVtbl -> Release(This) )
30050
30051
30052#define ID3D12Tools2_EnableShaderInstrumentation(This,bEnable) \
30053 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
30054
30055#define ID3D12Tools2_ShaderInstrumentationEnabled(This) \
30056 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
30057
30058
30059#define ID3D12Tools2_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
30060 ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
30061
30062#define ID3D12Tools2_ClearReservedGPUVARangesList(This) \
30063 ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
30064
30065
30066#define ID3D12Tools2_SetApplicationSpecificDriverState(This,pAdapter,pBlob) \
30067 ( (This)->lpVtbl -> SetApplicationSpecificDriverState(This,pAdapter,pBlob) )
30068
30069#endif /* COBJMACROS */
30070
30071
30072#endif /* C style interface */
30073
30074
30075
30076
30077#endif /* __ID3D12Tools2_INTERFACE_DEFINED__ */
30078
30079
30080#ifndef __ID3D12PageableTools_INTERFACE_DEFINED__
30081#define __ID3D12PageableTools_INTERFACE_DEFINED__
30082
30083/* interface ID3D12PageableTools */
30084/* [unique][local][object][uuid] */
30085
30086
30087EXTERN_C const IID IID_ID3D12PageableTools;
30088
30089#if defined(__cplusplus) && !defined(CINTERFACE)
30090
30091 MIDL_INTERFACE("8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d")
30092 ID3D12PageableTools : public IUnknown
30093 {
30094 public:
30095 virtual HRESULT STDMETHODCALLTYPE GetAllocation(
30096 _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation) = 0;
30097
30098 };
30099
30100
30101#else /* C style interface */
30102
30103 typedef struct ID3D12PageableToolsVtbl
30104 {
30105 BEGIN_INTERFACE
30106
30107 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30108 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30109 ID3D12PageableTools * This,
30110 REFIID riid,
30111 _COM_Outptr_ void **ppvObject);
30112
30113 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30114 ULONG ( STDMETHODCALLTYPE *AddRef )(
30115 ID3D12PageableTools * This);
30116
30117 DECLSPEC_XFGVIRT(IUnknown, Release)
30118 ULONG ( STDMETHODCALLTYPE *Release )(
30119 ID3D12PageableTools * This);
30120
30121 DECLSPEC_XFGVIRT(ID3D12PageableTools, GetAllocation)
30122 HRESULT ( STDMETHODCALLTYPE *GetAllocation )(
30123 ID3D12PageableTools * This,
30124 _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation);
30125
30126 END_INTERFACE
30127 } ID3D12PageableToolsVtbl;
30128
30129 interface ID3D12PageableTools
30130 {
30131 CONST_VTBL struct ID3D12PageableToolsVtbl *lpVtbl;
30132 };
30133
30134
30135
30136#ifdef COBJMACROS
30137
30138
30139#define ID3D12PageableTools_QueryInterface(This,riid,ppvObject) \
30140 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30141
30142#define ID3D12PageableTools_AddRef(This) \
30143 ( (This)->lpVtbl -> AddRef(This) )
30144
30145#define ID3D12PageableTools_Release(This) \
30146 ( (This)->lpVtbl -> Release(This) )
30147
30148
30149#define ID3D12PageableTools_GetAllocation(This,pAllocation) \
30150 ( (This)->lpVtbl -> GetAllocation(This,pAllocation) )
30151
30152#endif /* COBJMACROS */
30153
30154
30155#endif /* C style interface */
30156
30157
30158
30159
30160#endif /* __ID3D12PageableTools_INTERFACE_DEFINED__ */
30161
30162
30163#ifndef __ID3D12DeviceTools_INTERFACE_DEFINED__
30164#define __ID3D12DeviceTools_INTERFACE_DEFINED__
30165
30166/* interface ID3D12DeviceTools */
30167/* [unique][local][object][uuid] */
30168
30169
30170EXTERN_C const IID IID_ID3D12DeviceTools;
30171
30172#if defined(__cplusplus) && !defined(CINTERFACE)
30173
30174 MIDL_INTERFACE("2ea68e9c-19c3-4e47-a109-6cdadff0aca9")
30175 ID3D12DeviceTools : public IUnknown
30176 {
30177 public:
30178 virtual void STDMETHODCALLTYPE SetNextAllocationAddress(
30179 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress) = 0;
30180
30181 };
30182
30183
30184#else /* C style interface */
30185
30186 typedef struct ID3D12DeviceToolsVtbl
30187 {
30188 BEGIN_INTERFACE
30189
30190 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30191 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30192 ID3D12DeviceTools * This,
30193 REFIID riid,
30194 _COM_Outptr_ void **ppvObject);
30195
30196 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30197 ULONG ( STDMETHODCALLTYPE *AddRef )(
30198 ID3D12DeviceTools * This);
30199
30200 DECLSPEC_XFGVIRT(IUnknown, Release)
30201 ULONG ( STDMETHODCALLTYPE *Release )(
30202 ID3D12DeviceTools * This);
30203
30204 DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
30205 void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
30206 ID3D12DeviceTools * This,
30207 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
30208
30209 END_INTERFACE
30210 } ID3D12DeviceToolsVtbl;
30211
30212 interface ID3D12DeviceTools
30213 {
30214 CONST_VTBL struct ID3D12DeviceToolsVtbl *lpVtbl;
30215 };
30216
30217
30218
30219#ifdef COBJMACROS
30220
30221
30222#define ID3D12DeviceTools_QueryInterface(This,riid,ppvObject) \
30223 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30224
30225#define ID3D12DeviceTools_AddRef(This) \
30226 ( (This)->lpVtbl -> AddRef(This) )
30227
30228#define ID3D12DeviceTools_Release(This) \
30229 ( (This)->lpVtbl -> Release(This) )
30230
30231
30232#define ID3D12DeviceTools_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
30233 ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
30234
30235#endif /* COBJMACROS */
30236
30237
30238#endif /* C style interface */
30239
30240
30241
30242
30243#endif /* __ID3D12DeviceTools_INTERFACE_DEFINED__ */
30244
30245
30246/* interface __MIDL_itf_d3d12_0000_0070 */
30247/* [local] */
30248
30249typedef
30250enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
30251 {
30252 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
30253 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
30254 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
30255 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4
30256 } D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
30257
30258
30259
30260extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_c_ifspec;
30261extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_s_ifspec;
30262
30263#ifndef __ID3D12DeviceTools1_INTERFACE_DEFINED__
30264#define __ID3D12DeviceTools1_INTERFACE_DEFINED__
30265
30266/* interface ID3D12DeviceTools1 */
30267/* [unique][local][object][uuid] */
30268
30269
30270EXTERN_C const IID IID_ID3D12DeviceTools1;
30271
30272#if defined(__cplusplus) && !defined(CINTERFACE)
30273
30274 MIDL_INTERFACE("e30e9fc7-e641-4d6e-8a81-9dd9206ec47a")
30275 ID3D12DeviceTools1 : public ID3D12DeviceTools
30276 {
30277 public:
30278 virtual HRESULT STDMETHODCALLTYPE GetApplicationSpecificDriverState(
30279 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
30280
30281 virtual D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS STDMETHODCALLTYPE GetApplicationSpecificDriverBlobStatus( void) = 0;
30282
30283 };
30284
30285
30286#else /* C style interface */
30287
30288 typedef struct ID3D12DeviceTools1Vtbl
30289 {
30290 BEGIN_INTERFACE
30291
30292 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30293 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30294 ID3D12DeviceTools1 * This,
30295 REFIID riid,
30296 _COM_Outptr_ void **ppvObject);
30297
30298 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30299 ULONG ( STDMETHODCALLTYPE *AddRef )(
30300 ID3D12DeviceTools1 * This);
30301
30302 DECLSPEC_XFGVIRT(IUnknown, Release)
30303 ULONG ( STDMETHODCALLTYPE *Release )(
30304 ID3D12DeviceTools1 * This);
30305
30306 DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
30307 void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
30308 ID3D12DeviceTools1 * This,
30309 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
30310
30311 DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverState)
30312 HRESULT ( STDMETHODCALLTYPE *GetApplicationSpecificDriverState )(
30313 ID3D12DeviceTools1 * This,
30314 _COM_Outptr_ ID3DBlob **ppBlob);
30315
30316 DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverBlobStatus)
30317 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS ( STDMETHODCALLTYPE *GetApplicationSpecificDriverBlobStatus )(
30318 ID3D12DeviceTools1 * This);
30319
30320 END_INTERFACE
30321 } ID3D12DeviceTools1Vtbl;
30322
30323 interface ID3D12DeviceTools1
30324 {
30325 CONST_VTBL struct ID3D12DeviceTools1Vtbl *lpVtbl;
30326 };
30327
30328
30329
30330#ifdef COBJMACROS
30331
30332
30333#define ID3D12DeviceTools1_QueryInterface(This,riid,ppvObject) \
30334 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30335
30336#define ID3D12DeviceTools1_AddRef(This) \
30337 ( (This)->lpVtbl -> AddRef(This) )
30338
30339#define ID3D12DeviceTools1_Release(This) \
30340 ( (This)->lpVtbl -> Release(This) )
30341
30342
30343#define ID3D12DeviceTools1_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
30344 ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
30345
30346
30347#define ID3D12DeviceTools1_GetApplicationSpecificDriverState(This,ppBlob) \
30348 ( (This)->lpVtbl -> GetApplicationSpecificDriverState(This,ppBlob) )
30349
30350#define ID3D12DeviceTools1_GetApplicationSpecificDriverBlobStatus(This) \
30351 ( (This)->lpVtbl -> GetApplicationSpecificDriverBlobStatus(This) )
30352
30353#endif /* COBJMACROS */
30354
30355
30356#endif /* C style interface */
30357
30358
30359
30360
30361#endif /* __ID3D12DeviceTools1_INTERFACE_DEFINED__ */
30362
30363
30364/* interface __MIDL_itf_d3d12_0000_0071 */
30365/* [local] */
30366
30367typedef struct D3D12_SUBRESOURCE_DATA
30368 {
30369 const void *pData;
30370 LONG_PTR RowPitch;
30371 LONG_PTR SlicePitch;
30372 } D3D12_SUBRESOURCE_DATA;
30373
30374typedef struct D3D12_MEMCPY_DEST
30375 {
30376 void *pData;
30377 SIZE_T RowPitch;
30378 SIZE_T SlicePitch;
30379 } D3D12_MEMCPY_DEST;
30380
30381#if !defined( D3D12_IGNORE_SDK_LAYERS )
30382#include "d3d12sdklayers.h"
30383#endif
30384
30385///////////////////////////////////////////////////////////////////////////
30386// D3D12CreateDevice
30387// ------------------
30388//
30389// pAdapter
30390// If NULL, D3D12CreateDevice will choose the primary adapter.
30391// If non-NULL, D3D12CreateDevice will use the provided adapter.
30392// MinimumFeatureLevel
30393// The minimum feature level required for successful device creation.
30394// riid
30395// The interface IID of the device to be returned. Expected: ID3D12Device.
30396// ppDevice
30397// Pointer to returned interface. May be NULL.
30398//
30399// Return Values
30400// Any of those documented for
30401// CreateDXGIFactory1
30402// IDXGIFactory::EnumAdapters
30403// D3D12CreateDevice
30404//
30405///////////////////////////////////////////////////////////////////////////
30406typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
30407 D3D_FEATURE_LEVEL,
30408 _In_ REFIID, _COM_Outptr_opt_ void** );
30409
30410HRESULT WINAPI D3D12CreateDevice(
30411 _In_opt_ IUnknown* pAdapter,
30412 D3D_FEATURE_LEVEL MinimumFeatureLevel,
30413 _In_ REFIID riid, // Expected: ID3D12Device
30414 _COM_Outptr_opt_ void** ppDevice );
30415
30416
30417typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
30418
30419HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
30420
30421// --------------------------------------------------------------------------------------------------------------------------------
30422// D3D12EnableExperimentalFeatures
30423//
30424// Pass in a list of feature GUIDs to be enabled together.
30425//
30426// If a particular feature requires some configuration information on enablement, it will have
30427// a configuration struct that can be passed alongside the GUID.
30428//
30429// Some features might use an interface IID as the GUID. For these, once the feature is enabled via
30430// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
30431// for manipulating the feature. This allows for control that might not cleanly be expressed by just
30432// the configuration struct that D3D12EnableExperimentalFeatures provides.
30433//
30434// If this method is called and a change to existing feature enablement is made,
30435// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
30436// singleton device for a process. Removing the devices when configuration changes prevents
30437// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
30438//
30439// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
30440// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
30441// in are known to be incompatible with each other, or other errors.
30442// Returns S_OK otherwise.
30443//
30444// --------------------------------------------------------------------------------------------------------------------------------
30445HRESULT WINAPI D3D12EnableExperimentalFeatures(
30446 UINT NumFeatures,
30447 _In_count_(NumFeatures) const IID* pIIDs,
30448 _In_opt_count_(NumFeatures) void* pConfigurationStructs,
30449 _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);
30450
30451// --------------------------------------------------------------------------------------------------------------------------------
30452// Experimental Feature: D3D12ExperimentalShaderModels
30453//
30454// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
30455// meaning shader models that haven't been finalized for use in retail.
30456//
30457// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
30458//
30459// --------------------------------------------------------------------------------------------------------------------------------
30460static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
30461 0x76f5573e,
30462 0xf13a,
30463 0x40f5,
30464 { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
30465};
30466// --------------------------------------------------------------------------------------------------------------------------------
30467// Experimental Feature: D3D12TiledResourceTier4
30468//
30469// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,
30470// meaning texture tile data-inheritance is allowed.
30471//
30472// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.
30473//
30474// --------------------------------------------------------------------------------------------------------------------------------
30475static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */
30476 0xc9c4725f,
30477 0xa81a,
30478 0x4f56,
30479 { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
30480};
30481// --------------------------------------------------------------------------------------------------------------------------------
30482// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS
30483//
30484// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS,
30485// driver support is still required for this feature.
30486//
30487// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.
30488//
30489// --------------------------------------------------------------------------------------------------------------------------------
30490static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */
30491 0x45dc51f3,
30492 0x767f,
30493 0x4588,
30494 { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }
30495};
30496// --------------------------------------------------------------------------------------------------------------------------------
30497// D3D12GetInterface
30498//
30499// Retrieve Global D3D12 Interface.
30500//
30501
30502DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
30503DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
30504DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
30505DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
30506DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);
30507DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);
30508DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);
30509
30510typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
30511
30512HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
30513
30514
30515
30516extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_c_ifspec;
30517extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_s_ifspec;
30518
30519#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
30520#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
30521
30522/* interface ID3D12SDKConfiguration */
30523/* [unique][local][object][uuid] */
30524
30525
30526EXTERN_C const IID IID_ID3D12SDKConfiguration;
30527
30528#if defined(__cplusplus) && !defined(CINTERFACE)
30529
30530 MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
30531 ID3D12SDKConfiguration : public IUnknown
30532 {
30533 public:
30534 virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
30535 UINT SDKVersion,
30536 _In_z_ LPCSTR SDKPath) = 0;
30537
30538 };
30539
30540
30541#else /* C style interface */
30542
30543 typedef struct ID3D12SDKConfigurationVtbl
30544 {
30545 BEGIN_INTERFACE
30546
30547 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30548 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30549 ID3D12SDKConfiguration * This,
30550 REFIID riid,
30551 _COM_Outptr_ void **ppvObject);
30552
30553 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30554 ULONG ( STDMETHODCALLTYPE *AddRef )(
30555 ID3D12SDKConfiguration * This);
30556
30557 DECLSPEC_XFGVIRT(IUnknown, Release)
30558 ULONG ( STDMETHODCALLTYPE *Release )(
30559 ID3D12SDKConfiguration * This);
30560
30561 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
30562 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
30563 ID3D12SDKConfiguration * This,
30564 UINT SDKVersion,
30565 _In_z_ LPCSTR SDKPath);
30566
30567 END_INTERFACE
30568 } ID3D12SDKConfigurationVtbl;
30569
30570 interface ID3D12SDKConfiguration
30571 {
30572 CONST_VTBL struct ID3D12SDKConfigurationVtbl *lpVtbl;
30573 };
30574
30575
30576
30577#ifdef COBJMACROS
30578
30579
30580#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) \
30581 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30582
30583#define ID3D12SDKConfiguration_AddRef(This) \
30584 ( (This)->lpVtbl -> AddRef(This) )
30585
30586#define ID3D12SDKConfiguration_Release(This) \
30587 ( (This)->lpVtbl -> Release(This) )
30588
30589
30590#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath) \
30591 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
30592
30593#endif /* COBJMACROS */
30594
30595
30596#endif /* C style interface */
30597
30598
30599
30600
30601#endif /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
30602
30603
30604#ifndef __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
30605#define __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
30606
30607/* interface ID3D12SDKConfiguration1 */
30608/* [unique][local][object][uuid] */
30609
30610
30611EXTERN_C const IID IID_ID3D12SDKConfiguration1;
30612
30613#if defined(__cplusplus) && !defined(CINTERFACE)
30614
30615 MIDL_INTERFACE("8aaf9303-ad25-48b9-9a57-d9c37e009d9f")
30616 ID3D12SDKConfiguration1 : public ID3D12SDKConfiguration
30617 {
30618 public:
30619 virtual HRESULT STDMETHODCALLTYPE CreateDeviceFactory(
30620 UINT SDKVersion,
30621 _In_ LPCSTR SDKPath,
30622 REFIID riid,
30623 _COM_Outptr_ void **ppvFactory) = 0;
30624
30625 virtual void STDMETHODCALLTYPE FreeUnusedSDKs( void) = 0;
30626
30627 };
30628
30629
30630#else /* C style interface */
30631
30632 typedef struct ID3D12SDKConfiguration1Vtbl
30633 {
30634 BEGIN_INTERFACE
30635
30636 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30637 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30638 ID3D12SDKConfiguration1 * This,
30639 REFIID riid,
30640 _COM_Outptr_ void **ppvObject);
30641
30642 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30643 ULONG ( STDMETHODCALLTYPE *AddRef )(
30644 ID3D12SDKConfiguration1 * This);
30645
30646 DECLSPEC_XFGVIRT(IUnknown, Release)
30647 ULONG ( STDMETHODCALLTYPE *Release )(
30648 ID3D12SDKConfiguration1 * This);
30649
30650 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
30651 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
30652 ID3D12SDKConfiguration1 * This,
30653 UINT SDKVersion,
30654 _In_z_ LPCSTR SDKPath);
30655
30656 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, CreateDeviceFactory)
30657 HRESULT ( STDMETHODCALLTYPE *CreateDeviceFactory )(
30658 ID3D12SDKConfiguration1 * This,
30659 UINT SDKVersion,
30660 _In_ LPCSTR SDKPath,
30661 REFIID riid,
30662 _COM_Outptr_ void **ppvFactory);
30663
30664 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, FreeUnusedSDKs)
30665 void ( STDMETHODCALLTYPE *FreeUnusedSDKs )(
30666 ID3D12SDKConfiguration1 * This);
30667
30668 END_INTERFACE
30669 } ID3D12SDKConfiguration1Vtbl;
30670
30671 interface ID3D12SDKConfiguration1
30672 {
30673 CONST_VTBL struct ID3D12SDKConfiguration1Vtbl *lpVtbl;
30674 };
30675
30676
30677
30678#ifdef COBJMACROS
30679
30680
30681#define ID3D12SDKConfiguration1_QueryInterface(This,riid,ppvObject) \
30682 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30683
30684#define ID3D12SDKConfiguration1_AddRef(This) \
30685 ( (This)->lpVtbl -> AddRef(This) )
30686
30687#define ID3D12SDKConfiguration1_Release(This) \
30688 ( (This)->lpVtbl -> Release(This) )
30689
30690
30691#define ID3D12SDKConfiguration1_SetSDKVersion(This,SDKVersion,SDKPath) \
30692 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
30693
30694
30695#define ID3D12SDKConfiguration1_CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) \
30696 ( (This)->lpVtbl -> CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) )
30697
30698#define ID3D12SDKConfiguration1_FreeUnusedSDKs(This) \
30699 ( (This)->lpVtbl -> FreeUnusedSDKs(This) )
30700
30701#endif /* COBJMACROS */
30702
30703
30704#endif /* C style interface */
30705
30706
30707
30708
30709#endif /* __ID3D12SDKConfiguration1_INTERFACE_DEFINED__ */
30710
30711
30712/* interface __MIDL_itf_d3d12_0000_0073 */
30713/* [local] */
30714
30715typedef
30716enum D3D12_DEVICE_FACTORY_FLAGS
30717 {
30718 D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
30719 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
30720 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
30721 D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4
30722 } D3D12_DEVICE_FACTORY_FLAGS;
30723
30724DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )
30725
30726
30727extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_c_ifspec;
30728extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_s_ifspec;
30729
30730#ifndef __ID3D12DeviceFactory_INTERFACE_DEFINED__
30731#define __ID3D12DeviceFactory_INTERFACE_DEFINED__
30732
30733/* interface ID3D12DeviceFactory */
30734/* [unique][local][object][uuid] */
30735
30736
30737EXTERN_C const IID IID_ID3D12DeviceFactory;
30738
30739#if defined(__cplusplus) && !defined(CINTERFACE)
30740
30741 MIDL_INTERFACE("61f307d3-d34e-4e7c-8374-3ba4de23cccb")
30742 ID3D12DeviceFactory : public IUnknown
30743 {
30744 public:
30745 virtual HRESULT STDMETHODCALLTYPE InitializeFromGlobalState( void) = 0;
30746
30747 virtual HRESULT STDMETHODCALLTYPE ApplyToGlobalState( void) = 0;
30748
30749 virtual HRESULT STDMETHODCALLTYPE SetFlags(
30750 D3D12_DEVICE_FACTORY_FLAGS flags) = 0;
30751
30752 virtual D3D12_DEVICE_FACTORY_FLAGS STDMETHODCALLTYPE GetFlags( void) = 0;
30753
30754 virtual HRESULT STDMETHODCALLTYPE GetConfigurationInterface(
30755 REFCLSID clsid,
30756 REFIID iid,
30757 _COM_Outptr_ void **ppv) = 0;
30758
30759 virtual HRESULT STDMETHODCALLTYPE EnableExperimentalFeatures(
30760 UINT NumFeatures,
30761 _In_reads_(NumFeatures) const IID *pIIDs,
30762 _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
30763 _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes) = 0;
30764
30765 virtual HRESULT STDMETHODCALLTYPE CreateDevice(
30766 _In_opt_ IUnknown *adapter,
30767 D3D_FEATURE_LEVEL FeatureLevel,
30768 REFIID riid,
30769 _COM_Outptr_opt_ void **ppvDevice) = 0;
30770
30771 };
30772
30773
30774#else /* C style interface */
30775
30776 typedef struct ID3D12DeviceFactoryVtbl
30777 {
30778 BEGIN_INTERFACE
30779
30780 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30781 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30782 ID3D12DeviceFactory * This,
30783 REFIID riid,
30784 _COM_Outptr_ void **ppvObject);
30785
30786 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30787 ULONG ( STDMETHODCALLTYPE *AddRef )(
30788 ID3D12DeviceFactory * This);
30789
30790 DECLSPEC_XFGVIRT(IUnknown, Release)
30791 ULONG ( STDMETHODCALLTYPE *Release )(
30792 ID3D12DeviceFactory * This);
30793
30794 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, InitializeFromGlobalState)
30795 HRESULT ( STDMETHODCALLTYPE *InitializeFromGlobalState )(
30796 ID3D12DeviceFactory * This);
30797
30798 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, ApplyToGlobalState)
30799 HRESULT ( STDMETHODCALLTYPE *ApplyToGlobalState )(
30800 ID3D12DeviceFactory * This);
30801
30802 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, SetFlags)
30803 HRESULT ( STDMETHODCALLTYPE *SetFlags )(
30804 ID3D12DeviceFactory * This,
30805 D3D12_DEVICE_FACTORY_FLAGS flags);
30806
30807 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetFlags)
30808 D3D12_DEVICE_FACTORY_FLAGS ( STDMETHODCALLTYPE *GetFlags )(
30809 ID3D12DeviceFactory * This);
30810
30811 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetConfigurationInterface)
30812 HRESULT ( STDMETHODCALLTYPE *GetConfigurationInterface )(
30813 ID3D12DeviceFactory * This,
30814 REFCLSID clsid,
30815 REFIID iid,
30816 _COM_Outptr_ void **ppv);
30817
30818 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, EnableExperimentalFeatures)
30819 HRESULT ( STDMETHODCALLTYPE *EnableExperimentalFeatures )(
30820 ID3D12DeviceFactory * This,
30821 UINT NumFeatures,
30822 _In_reads_(NumFeatures) const IID *pIIDs,
30823 _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
30824 _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes);
30825
30826 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, CreateDevice)
30827 HRESULT ( STDMETHODCALLTYPE *CreateDevice )(
30828 ID3D12DeviceFactory * This,
30829 _In_opt_ IUnknown *adapter,
30830 D3D_FEATURE_LEVEL FeatureLevel,
30831 REFIID riid,
30832 _COM_Outptr_opt_ void **ppvDevice);
30833
30834 END_INTERFACE
30835 } ID3D12DeviceFactoryVtbl;
30836
30837 interface ID3D12DeviceFactory
30838 {
30839 CONST_VTBL struct ID3D12DeviceFactoryVtbl *lpVtbl;
30840 };
30841
30842
30843
30844#ifdef COBJMACROS
30845
30846
30847#define ID3D12DeviceFactory_QueryInterface(This,riid,ppvObject) \
30848 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30849
30850#define ID3D12DeviceFactory_AddRef(This) \
30851 ( (This)->lpVtbl -> AddRef(This) )
30852
30853#define ID3D12DeviceFactory_Release(This) \
30854 ( (This)->lpVtbl -> Release(This) )
30855
30856
30857#define ID3D12DeviceFactory_InitializeFromGlobalState(This) \
30858 ( (This)->lpVtbl -> InitializeFromGlobalState(This) )
30859
30860#define ID3D12DeviceFactory_ApplyToGlobalState(This) \
30861 ( (This)->lpVtbl -> ApplyToGlobalState(This) )
30862
30863#define ID3D12DeviceFactory_SetFlags(This,flags) \
30864 ( (This)->lpVtbl -> SetFlags(This,flags) )
30865
30866#define ID3D12DeviceFactory_GetFlags(This) \
30867 ( (This)->lpVtbl -> GetFlags(This) )
30868
30869#define ID3D12DeviceFactory_GetConfigurationInterface(This,clsid,iid,ppv) \
30870 ( (This)->lpVtbl -> GetConfigurationInterface(This,clsid,iid,ppv) )
30871
30872#define ID3D12DeviceFactory_EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) \
30873 ( (This)->lpVtbl -> EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) )
30874
30875#define ID3D12DeviceFactory_CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) \
30876 ( (This)->lpVtbl -> CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) )
30877
30878#endif /* COBJMACROS */
30879
30880
30881#endif /* C style interface */
30882
30883
30884
30885
30886#endif /* __ID3D12DeviceFactory_INTERFACE_DEFINED__ */
30887
30888
30889/* interface __MIDL_itf_d3d12_0000_0074 */
30890/* [local] */
30891
30892typedef
30893enum D3D12_DEVICE_FLAGS
30894 {
30895 D3D12_DEVICE_FLAG_NONE = 0,
30896 D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
30897 D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
30898 D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
30899 D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
30900 D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
30901 D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
30902 D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
30903 D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
30904 D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
30905 D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
30906 D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400
30907 } D3D12_DEVICE_FLAGS;
30908
30909DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )
30910typedef struct D3D12_DEVICE_CONFIGURATION_DESC
30911 {
30912 D3D12_DEVICE_FLAGS Flags;
30913 UINT GpuBasedValidationFlags;
30914 UINT SDKVersion;
30915 UINT NumEnabledExperimentalFeatures;
30916 } D3D12_DEVICE_CONFIGURATION_DESC;
30917
30918
30919
30920extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_c_ifspec;
30921extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_s_ifspec;
30922
30923#ifndef __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
30924#define __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
30925
30926/* interface ID3D12DeviceConfiguration */
30927/* [unique][local][object][uuid] */
30928
30929
30930EXTERN_C const IID IID_ID3D12DeviceConfiguration;
30931
30932#if defined(__cplusplus) && !defined(CINTERFACE)
30933
30934 MIDL_INTERFACE("78dbf87b-f766-422b-a61c-c8c446bdb9ad")
30935 ID3D12DeviceConfiguration : public IUnknown
30936 {
30937 public:
30938#if defined(_MSC_VER) || !defined(_WIN32)
30939 virtual D3D12_DEVICE_CONFIGURATION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
30940#else
30941 virtual D3D12_DEVICE_CONFIGURATION_DESC *STDMETHODCALLTYPE GetDesc(
30942 D3D12_DEVICE_CONFIGURATION_DESC * RetVal) = 0;
30943#endif
30944
30945 virtual HRESULT STDMETHODCALLTYPE GetEnabledExperimentalFeatures(
30946 _Out_writes_(NumGuids) GUID *pGuids,
30947 UINT NumGuids) = 0;
30948
30949 virtual HRESULT STDMETHODCALLTYPE SerializeVersionedRootSignature(
30950 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
30951 _COM_Outptr_ ID3DBlob **ppResult,
30952 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError) = 0;
30953
30954 virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializer(
30955 _In_reads_bytes_(Size) const void *pBlob,
30956 SIZE_T Size,
30957 REFIID riid,
30958 _COM_Outptr_ void **ppvDeserializer) = 0;
30959
30960 };
30961
30962
30963#else /* C style interface */
30964
30965 typedef struct ID3D12DeviceConfigurationVtbl
30966 {
30967 BEGIN_INTERFACE
30968
30969 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30970 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30971 ID3D12DeviceConfiguration * This,
30972 REFIID riid,
30973 _COM_Outptr_ void **ppvObject);
30974
30975 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30976 ULONG ( STDMETHODCALLTYPE *AddRef )(
30977 ID3D12DeviceConfiguration * This);
30978
30979 DECLSPEC_XFGVIRT(IUnknown, Release)
30980 ULONG ( STDMETHODCALLTYPE *Release )(
30981 ID3D12DeviceConfiguration * This);
30982
30983 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
30984#if !defined(_WIN32)
30985 D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
30986 ID3D12DeviceConfiguration * This);
30987
30988#else
30989 D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
30990 ID3D12DeviceConfiguration * This,
30991 D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
30992
30993#endif
30994
30995 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
30996 HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
30997 ID3D12DeviceConfiguration * This,
30998 _Out_writes_(NumGuids) GUID *pGuids,
30999 UINT NumGuids);
31000
31001 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
31002 HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
31003 ID3D12DeviceConfiguration * This,
31004 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
31005 _COM_Outptr_ ID3DBlob **ppResult,
31006 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
31007
31008 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
31009 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
31010 ID3D12DeviceConfiguration * This,
31011 _In_reads_bytes_(Size) const void *pBlob,
31012 SIZE_T Size,
31013 REFIID riid,
31014 _COM_Outptr_ void **ppvDeserializer);
31015
31016 END_INTERFACE
31017 } ID3D12DeviceConfigurationVtbl;
31018
31019 interface ID3D12DeviceConfiguration
31020 {
31021 CONST_VTBL struct ID3D12DeviceConfigurationVtbl *lpVtbl;
31022 };
31023
31024
31025
31026#ifdef COBJMACROS
31027
31028
31029#define ID3D12DeviceConfiguration_QueryInterface(This,riid,ppvObject) \
31030 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31031
31032#define ID3D12DeviceConfiguration_AddRef(This) \
31033 ( (This)->lpVtbl -> AddRef(This) )
31034
31035#define ID3D12DeviceConfiguration_Release(This) \
31036 ( (This)->lpVtbl -> Release(This) )
31037
31038#if !defined(_WIN32)
31039
31040#define ID3D12DeviceConfiguration_GetDesc(This) \
31041 ( (This)->lpVtbl -> GetDesc(This) )
31042#else
31043#define ID3D12DeviceConfiguration_GetDesc(This,RetVal) \
31044 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
31045#endif
31046
31047#define ID3D12DeviceConfiguration_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
31048 ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
31049
31050#define ID3D12DeviceConfiguration_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
31051 ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
31052
31053#define ID3D12DeviceConfiguration_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
31054 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
31055
31056#endif /* COBJMACROS */
31057
31058
31059#endif /* C style interface */
31060
31061
31062
31063
31064#endif /* __ID3D12DeviceConfiguration_INTERFACE_DEFINED__ */
31065
31066
31067#ifndef __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
31068#define __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
31069
31070/* interface ID3D12DeviceConfiguration1 */
31071/* [unique][local][object][uuid] */
31072
31073
31074EXTERN_C const IID IID_ID3D12DeviceConfiguration1;
31075
31076#if defined(__cplusplus) && !defined(CINTERFACE)
31077
31078 MIDL_INTERFACE("ed342442-6343-4e16-bb82-a3a577874e56")
31079 ID3D12DeviceConfiguration1 : public ID3D12DeviceConfiguration
31080 {
31081 public:
31082 virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
31083 _In_reads_bytes_(Size) const void *pLibraryBlob,
31084 SIZE_T Size,
31085 LPCWSTR RootSignatureSubobjectName,
31086 REFIID riid,
31087 _COM_Outptr_ void **ppvDeserializer) = 0;
31088
31089 };
31090
31091
31092#else /* C style interface */
31093
31094 typedef struct ID3D12DeviceConfiguration1Vtbl
31095 {
31096 BEGIN_INTERFACE
31097
31098 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31099 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31100 ID3D12DeviceConfiguration1 * This,
31101 REFIID riid,
31102 _COM_Outptr_ void **ppvObject);
31103
31104 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31105 ULONG ( STDMETHODCALLTYPE *AddRef )(
31106 ID3D12DeviceConfiguration1 * This);
31107
31108 DECLSPEC_XFGVIRT(IUnknown, Release)
31109 ULONG ( STDMETHODCALLTYPE *Release )(
31110 ID3D12DeviceConfiguration1 * This);
31111
31112 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
31113#if !defined(_WIN32)
31114 D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
31115 ID3D12DeviceConfiguration1 * This);
31116
31117#else
31118 D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
31119 ID3D12DeviceConfiguration1 * This,
31120 D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
31121
31122#endif
31123
31124 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
31125 HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
31126 ID3D12DeviceConfiguration1 * This,
31127 _Out_writes_(NumGuids) GUID *pGuids,
31128 UINT NumGuids);
31129
31130 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
31131 HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
31132 ID3D12DeviceConfiguration1 * This,
31133 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
31134 _COM_Outptr_ ID3DBlob **ppResult,
31135 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
31136
31137 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
31138 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
31139 ID3D12DeviceConfiguration1 * This,
31140 _In_reads_bytes_(Size) const void *pBlob,
31141 SIZE_T Size,
31142 REFIID riid,
31143 _COM_Outptr_ void **ppvDeserializer);
31144
31145 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration1, CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary)
31146 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary )(
31147 ID3D12DeviceConfiguration1 * This,
31148 _In_reads_bytes_(Size) const void *pLibraryBlob,
31149 SIZE_T Size,
31150 LPCWSTR RootSignatureSubobjectName,
31151 REFIID riid,
31152 _COM_Outptr_ void **ppvDeserializer);
31153
31154 END_INTERFACE
31155 } ID3D12DeviceConfiguration1Vtbl;
31156
31157 interface ID3D12DeviceConfiguration1
31158 {
31159 CONST_VTBL struct ID3D12DeviceConfiguration1Vtbl *lpVtbl;
31160 };
31161
31162
31163
31164#ifdef COBJMACROS
31165
31166
31167#define ID3D12DeviceConfiguration1_QueryInterface(This,riid,ppvObject) \
31168 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31169
31170#define ID3D12DeviceConfiguration1_AddRef(This) \
31171 ( (This)->lpVtbl -> AddRef(This) )
31172
31173#define ID3D12DeviceConfiguration1_Release(This) \
31174 ( (This)->lpVtbl -> Release(This) )
31175
31176#if !defined(_WIN32)
31177
31178#define ID3D12DeviceConfiguration1_GetDesc(This) \
31179 ( (This)->lpVtbl -> GetDesc(This) )
31180#else
31181#define ID3D12DeviceConfiguration1_GetDesc(This,RetVal) \
31182 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
31183#endif
31184
31185#define ID3D12DeviceConfiguration1_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
31186 ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
31187
31188#define ID3D12DeviceConfiguration1_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
31189 ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
31190
31191#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
31192 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
31193
31194
31195#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) \
31196 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) )
31197
31198#endif /* COBJMACROS */
31199
31200
31201#endif /* C style interface */
31202
31203
31204
31205
31206#endif /* __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__ */
31207
31208
31209/* interface __MIDL_itf_d3d12_0000_0076 */
31210/* [local] */
31211
31212typedef
31213enum D3D12_STATE_OBJECT_DATABASE_FLAGS
31214 {
31215 D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0,
31216 D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1
31217 } D3D12_STATE_OBJECT_DATABASE_FLAGS;
31218
31219DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )
31220
31221
31222extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_c_ifspec;
31223extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_s_ifspec;
31224
31225#ifndef __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
31226#define __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
31227
31228/* interface ID3D12StateObjectDatabaseFactory */
31229/* [unique][local][object][uuid] */
31230
31231
31232EXTERN_C const IID IID_ID3D12StateObjectDatabaseFactory;
31233
31234#if defined(__cplusplus) && !defined(CINTERFACE)
31235
31236 MIDL_INTERFACE("f5b066f0-648a-4611-bd41-27fd0948b9eb")
31237 ID3D12StateObjectDatabaseFactory : public IUnknown
31238 {
31239 public:
31240 virtual HRESULT STDMETHODCALLTYPE CreateStateObjectDatabaseFromFile(
31241 LPCWSTR pDatabaseFile,
31242 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
31243 REFIID riid,
31244 _COM_Outptr_ void **ppvStateObjectDatabase) = 0;
31245
31246 };
31247
31248
31249#else /* C style interface */
31250
31251 typedef struct ID3D12StateObjectDatabaseFactoryVtbl
31252 {
31253 BEGIN_INTERFACE
31254
31255 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31256 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31257 ID3D12StateObjectDatabaseFactory * This,
31258 REFIID riid,
31259 _COM_Outptr_ void **ppvObject);
31260
31261 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31262 ULONG ( STDMETHODCALLTYPE *AddRef )(
31263 ID3D12StateObjectDatabaseFactory * This);
31264
31265 DECLSPEC_XFGVIRT(IUnknown, Release)
31266 ULONG ( STDMETHODCALLTYPE *Release )(
31267 ID3D12StateObjectDatabaseFactory * This);
31268
31269 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabaseFactory, CreateStateObjectDatabaseFromFile)
31270 HRESULT ( STDMETHODCALLTYPE *CreateStateObjectDatabaseFromFile )(
31271 ID3D12StateObjectDatabaseFactory * This,
31272 LPCWSTR pDatabaseFile,
31273 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
31274 REFIID riid,
31275 _COM_Outptr_ void **ppvStateObjectDatabase);
31276
31277 END_INTERFACE
31278 } ID3D12StateObjectDatabaseFactoryVtbl;
31279
31280 interface ID3D12StateObjectDatabaseFactory
31281 {
31282 CONST_VTBL struct ID3D12StateObjectDatabaseFactoryVtbl *lpVtbl;
31283 };
31284
31285
31286
31287#ifdef COBJMACROS
31288
31289
31290#define ID3D12StateObjectDatabaseFactory_QueryInterface(This,riid,ppvObject) \
31291 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31292
31293#define ID3D12StateObjectDatabaseFactory_AddRef(This) \
31294 ( (This)->lpVtbl -> AddRef(This) )
31295
31296#define ID3D12StateObjectDatabaseFactory_Release(This) \
31297 ( (This)->lpVtbl -> Release(This) )
31298
31299
31300#define ID3D12StateObjectDatabaseFactory_CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) \
31301 ( (This)->lpVtbl -> CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) )
31302
31303#endif /* COBJMACROS */
31304
31305
31306#endif /* C style interface */
31307
31308
31309
31310
31311#endif /* __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__ */
31312
31313
31314/* interface __MIDL_itf_d3d12_0000_0077 */
31315/* [local] */
31316
31317typedef
31318enum D3D12_AXIS_SHADING_RATE
31319 {
31320 D3D12_AXIS_SHADING_RATE_1X = 0,
31321 D3D12_AXIS_SHADING_RATE_2X = 0x1,
31322 D3D12_AXIS_SHADING_RATE_4X = 0x2
31323 } D3D12_AXIS_SHADING_RATE;
31324
31325#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2
31326#define D3D12_SHADING_RATE_VALID_MASK 3
31327#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
31328#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
31329#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)
31330typedef
31331enum D3D12_SHADING_RATE
31332 {
31333 D3D12_SHADING_RATE_1X1 = 0,
31334 D3D12_SHADING_RATE_1X2 = 0x1,
31335 D3D12_SHADING_RATE_2X1 = 0x4,
31336 D3D12_SHADING_RATE_2X2 = 0x5,
31337 D3D12_SHADING_RATE_2X4 = 0x6,
31338 D3D12_SHADING_RATE_4X2 = 0x9,
31339 D3D12_SHADING_RATE_4X4 = 0xa
31340 } D3D12_SHADING_RATE;
31341
31342typedef
31343enum D3D12_SHADING_RATE_COMBINER
31344 {
31345 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
31346 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
31347 D3D12_SHADING_RATE_COMBINER_MIN = 2,
31348 D3D12_SHADING_RATE_COMBINER_MAX = 3,
31349 D3D12_SHADING_RATE_COMBINER_SUM = 4
31350 } D3D12_SHADING_RATE_COMBINER;
31351
31352
31353
31354extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_c_ifspec;
31355extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_s_ifspec;
31356
31357#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
31358#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
31359
31360/* interface ID3D12GraphicsCommandList5 */
31361/* [unique][local][object][uuid] */
31362
31363
31364EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
31365
31366#if defined(__cplusplus) && !defined(CINTERFACE)
31367
31368 MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
31369 ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
31370 {
31371 public:
31372 virtual void STDMETHODCALLTYPE RSSetShadingRate(
31373 _In_ D3D12_SHADING_RATE baseShadingRate,
31374 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
31375
31376 virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
31377 _In_opt_ ID3D12Resource *shadingRateImage) = 0;
31378
31379 };
31380
31381
31382#else /* C style interface */
31383
31384 typedef struct ID3D12GraphicsCommandList5Vtbl
31385 {
31386 BEGIN_INTERFACE
31387
31388 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31389 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31390 ID3D12GraphicsCommandList5 * This,
31391 REFIID riid,
31392 _COM_Outptr_ void **ppvObject);
31393
31394 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31395 ULONG ( STDMETHODCALLTYPE *AddRef )(
31396 ID3D12GraphicsCommandList5 * This);
31397
31398 DECLSPEC_XFGVIRT(IUnknown, Release)
31399 ULONG ( STDMETHODCALLTYPE *Release )(
31400 ID3D12GraphicsCommandList5 * This);
31401
31402 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
31403 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
31404 ID3D12GraphicsCommandList5 * This,
31405 _In_ REFGUID guid,
31406 _Inout_ UINT *pDataSize,
31407 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
31408
31409 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
31410 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
31411 ID3D12GraphicsCommandList5 * This,
31412 _In_ REFGUID guid,
31413 _In_ UINT DataSize,
31414 _In_reads_bytes_opt_( DataSize ) const void *pData);
31415
31416 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
31417 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
31418 ID3D12GraphicsCommandList5 * This,
31419 _In_ REFGUID guid,
31420 _In_opt_ const IUnknown *pData);
31421
31422 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
31423 HRESULT ( STDMETHODCALLTYPE *SetName )(
31424 ID3D12GraphicsCommandList5 * This,
31425 _In_z_ LPCWSTR Name);
31426
31427 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
31428 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
31429 ID3D12GraphicsCommandList5 * This,
31430 REFIID riid,
31431 _COM_Outptr_opt_ void **ppvDevice);
31432
31433 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
31434 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
31435 ID3D12GraphicsCommandList5 * This);
31436
31437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
31438 HRESULT ( STDMETHODCALLTYPE *Close )(
31439 ID3D12GraphicsCommandList5 * This);
31440
31441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
31442 HRESULT ( STDMETHODCALLTYPE *Reset )(
31443 ID3D12GraphicsCommandList5 * This,
31444 _In_ ID3D12CommandAllocator *pAllocator,
31445 _In_opt_ ID3D12PipelineState *pInitialState);
31446
31447 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
31448 void ( STDMETHODCALLTYPE *ClearState )(
31449 ID3D12GraphicsCommandList5 * This,
31450 _In_opt_ ID3D12PipelineState *pPipelineState);
31451
31452 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
31453 void ( STDMETHODCALLTYPE *DrawInstanced )(
31454 ID3D12GraphicsCommandList5 * This,
31455 _In_ UINT VertexCountPerInstance,
31456 _In_ UINT InstanceCount,
31457 _In_ UINT StartVertexLocation,
31458 _In_ UINT StartInstanceLocation);
31459
31460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
31461 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
31462 ID3D12GraphicsCommandList5 * This,
31463 _In_ UINT IndexCountPerInstance,
31464 _In_ UINT InstanceCount,
31465 _In_ UINT StartIndexLocation,
31466 _In_ INT BaseVertexLocation,
31467 _In_ UINT StartInstanceLocation);
31468
31469 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
31470 void ( STDMETHODCALLTYPE *Dispatch )(
31471 ID3D12GraphicsCommandList5 * This,
31472 _In_ UINT ThreadGroupCountX,
31473 _In_ UINT ThreadGroupCountY,
31474 _In_ UINT ThreadGroupCountZ);
31475
31476 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
31477 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
31478 ID3D12GraphicsCommandList5 * This,
31479 _In_ ID3D12Resource *pDstBuffer,
31480 UINT64 DstOffset,
31481 _In_ ID3D12Resource *pSrcBuffer,
31482 UINT64 SrcOffset,
31483 UINT64 NumBytes);
31484
31485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
31486 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
31487 ID3D12GraphicsCommandList5 * This,
31488 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
31489 UINT DstX,
31490 UINT DstY,
31491 UINT DstZ,
31492 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
31493 _In_opt_ const D3D12_BOX *pSrcBox);
31494
31495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
31496 void ( STDMETHODCALLTYPE *CopyResource )(
31497 ID3D12GraphicsCommandList5 * This,
31498 _In_ ID3D12Resource *pDstResource,
31499 _In_ ID3D12Resource *pSrcResource);
31500
31501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
31502 void ( STDMETHODCALLTYPE *CopyTiles )(
31503 ID3D12GraphicsCommandList5 * This,
31504 _In_ ID3D12Resource *pTiledResource,
31505 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
31506 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
31507 _In_ ID3D12Resource *pBuffer,
31508 UINT64 BufferStartOffsetInBytes,
31509 D3D12_TILE_COPY_FLAGS Flags);
31510
31511 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
31512 void ( STDMETHODCALLTYPE *ResolveSubresource )(
31513 ID3D12GraphicsCommandList5 * This,
31514 _In_ ID3D12Resource *pDstResource,
31515 _In_ UINT DstSubresource,
31516 _In_ ID3D12Resource *pSrcResource,
31517 _In_ UINT SrcSubresource,
31518 _In_ DXGI_FORMAT Format);
31519
31520 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
31521 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
31522 ID3D12GraphicsCommandList5 * This,
31523 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
31524
31525 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
31526 void ( STDMETHODCALLTYPE *RSSetViewports )(
31527 ID3D12GraphicsCommandList5 * This,
31528 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
31529 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
31530
31531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
31532 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
31533 ID3D12GraphicsCommandList5 * This,
31534 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
31535 _In_reads_( NumRects) const D3D12_RECT *pRects);
31536
31537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
31538 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
31539 ID3D12GraphicsCommandList5 * This,
31540 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
31541
31542 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
31543 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
31544 ID3D12GraphicsCommandList5 * This,
31545 _In_ UINT StencilRef);
31546
31547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
31548 void ( STDMETHODCALLTYPE *SetPipelineState )(
31549 ID3D12GraphicsCommandList5 * This,
31550 _In_ ID3D12PipelineState *pPipelineState);
31551
31552 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
31553 void ( STDMETHODCALLTYPE *ResourceBarrier )(
31554 ID3D12GraphicsCommandList5 * This,
31555 _In_ UINT NumBarriers,
31556 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
31557
31558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
31559 void ( STDMETHODCALLTYPE *ExecuteBundle )(
31560 ID3D12GraphicsCommandList5 * This,
31561 _In_ ID3D12GraphicsCommandList *pCommandList);
31562
31563 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
31564 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
31565 ID3D12GraphicsCommandList5 * This,
31566 _In_ UINT NumDescriptorHeaps,
31567 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
31568
31569 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
31570 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
31571 ID3D12GraphicsCommandList5 * This,
31572 _In_opt_ ID3D12RootSignature *pRootSignature);
31573
31574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
31575 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
31576 ID3D12GraphicsCommandList5 * This,
31577 _In_opt_ ID3D12RootSignature *pRootSignature);
31578
31579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
31580 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
31581 ID3D12GraphicsCommandList5 * This,
31582 _In_ UINT RootParameterIndex,
31583 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
31584
31585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
31586 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
31587 ID3D12GraphicsCommandList5 * This,
31588 _In_ UINT RootParameterIndex,
31589 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
31590
31591 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
31592 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
31593 ID3D12GraphicsCommandList5 * This,
31594 _In_ UINT RootParameterIndex,
31595 _In_ UINT SrcData,
31596 _In_ UINT DestOffsetIn32BitValues);
31597
31598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
31599 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
31600 ID3D12GraphicsCommandList5 * This,
31601 _In_ UINT RootParameterIndex,
31602 _In_ UINT SrcData,
31603 _In_ UINT DestOffsetIn32BitValues);
31604
31605 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
31606 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
31607 ID3D12GraphicsCommandList5 * This,
31608 _In_ UINT RootParameterIndex,
31609 _In_ UINT Num32BitValuesToSet,
31610 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
31611 _In_ UINT DestOffsetIn32BitValues);
31612
31613 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
31614 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
31615 ID3D12GraphicsCommandList5 * This,
31616 _In_ UINT RootParameterIndex,
31617 _In_ UINT Num32BitValuesToSet,
31618 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
31619 _In_ UINT DestOffsetIn32BitValues);
31620
31621 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
31622 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
31623 ID3D12GraphicsCommandList5 * This,
31624 _In_ UINT RootParameterIndex,
31625 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31626
31627 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
31628 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
31629 ID3D12GraphicsCommandList5 * This,
31630 _In_ UINT RootParameterIndex,
31631 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31632
31633 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
31634 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
31635 ID3D12GraphicsCommandList5 * This,
31636 _In_ UINT RootParameterIndex,
31637 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31638
31639 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
31640 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
31641 ID3D12GraphicsCommandList5 * This,
31642 _In_ UINT RootParameterIndex,
31643 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31644
31645 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
31646 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
31647 ID3D12GraphicsCommandList5 * This,
31648 _In_ UINT RootParameterIndex,
31649 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31650
31651 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
31652 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
31653 ID3D12GraphicsCommandList5 * This,
31654 _In_ UINT RootParameterIndex,
31655 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31656
31657 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
31658 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
31659 ID3D12GraphicsCommandList5 * This,
31660 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
31661
31662 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
31663 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
31664 ID3D12GraphicsCommandList5 * This,
31665 _In_ UINT StartSlot,
31666 _In_ UINT NumViews,
31667 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
31668
31669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
31670 void ( STDMETHODCALLTYPE *SOSetTargets )(
31671 ID3D12GraphicsCommandList5 * This,
31672 _In_ UINT StartSlot,
31673 _In_ UINT NumViews,
31674 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
31675
31676 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
31677 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
31678 ID3D12GraphicsCommandList5 * This,
31679 _In_ UINT NumRenderTargetDescriptors,
31680 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
31681 _In_ BOOL RTsSingleHandleToDescriptorRange,
31682 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
31683
31684 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
31685 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
31686 ID3D12GraphicsCommandList5 * This,
31687 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
31688 _In_ D3D12_CLEAR_FLAGS ClearFlags,
31689 _In_ FLOAT Depth,
31690 _In_ UINT8 Stencil,
31691 _In_ UINT NumRects,
31692 _In_reads_(NumRects) const D3D12_RECT *pRects);
31693
31694 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
31695 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
31696 ID3D12GraphicsCommandList5 * This,
31697 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
31698 _In_ const FLOAT ColorRGBA[ 4 ],
31699 _In_ UINT NumRects,
31700 _In_reads_(NumRects) const D3D12_RECT *pRects);
31701
31702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
31703 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
31704 ID3D12GraphicsCommandList5 * This,
31705 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
31706 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
31707 _In_ ID3D12Resource *pResource,
31708 _In_ const UINT Values[ 4 ],
31709 _In_ UINT NumRects,
31710 _In_reads_(NumRects) const D3D12_RECT *pRects);
31711
31712 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
31713 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
31714 ID3D12GraphicsCommandList5 * This,
31715 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
31716 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
31717 _In_ ID3D12Resource *pResource,
31718 _In_ const FLOAT Values[ 4 ],
31719 _In_ UINT NumRects,
31720 _In_reads_(NumRects) const D3D12_RECT *pRects);
31721
31722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
31723 void ( STDMETHODCALLTYPE *DiscardResource )(
31724 ID3D12GraphicsCommandList5 * This,
31725 _In_ ID3D12Resource *pResource,
31726 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
31727
31728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
31729 void ( STDMETHODCALLTYPE *BeginQuery )(
31730 ID3D12GraphicsCommandList5 * This,
31731 _In_ ID3D12QueryHeap *pQueryHeap,
31732 _In_ D3D12_QUERY_TYPE Type,
31733 _In_ UINT Index);
31734
31735 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
31736 void ( STDMETHODCALLTYPE *EndQuery )(
31737 ID3D12GraphicsCommandList5 * This,
31738 _In_ ID3D12QueryHeap *pQueryHeap,
31739 _In_ D3D12_QUERY_TYPE Type,
31740 _In_ UINT Index);
31741
31742 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
31743 void ( STDMETHODCALLTYPE *ResolveQueryData )(
31744 ID3D12GraphicsCommandList5 * This,
31745 _In_ ID3D12QueryHeap *pQueryHeap,
31746 _In_ D3D12_QUERY_TYPE Type,
31747 _In_ UINT StartIndex,
31748 _In_ UINT NumQueries,
31749 _In_ ID3D12Resource *pDestinationBuffer,
31750 _In_ UINT64 AlignedDestinationBufferOffset);
31751
31752 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
31753 void ( STDMETHODCALLTYPE *SetPredication )(
31754 ID3D12GraphicsCommandList5 * This,
31755 _In_opt_ ID3D12Resource *pBuffer,
31756 _In_ UINT64 AlignedBufferOffset,
31757 _In_ D3D12_PREDICATION_OP Operation);
31758
31759 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
31760 void ( STDMETHODCALLTYPE *SetMarker )(
31761 ID3D12GraphicsCommandList5 * This,
31762 UINT Metadata,
31763 _In_reads_bytes_opt_(Size) const void *pData,
31764 UINT Size);
31765
31766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
31767 void ( STDMETHODCALLTYPE *BeginEvent )(
31768 ID3D12GraphicsCommandList5 * This,
31769 UINT Metadata,
31770 _In_reads_bytes_opt_(Size) const void *pData,
31771 UINT Size);
31772
31773 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
31774 void ( STDMETHODCALLTYPE *EndEvent )(
31775 ID3D12GraphicsCommandList5 * This);
31776
31777 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
31778 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
31779 ID3D12GraphicsCommandList5 * This,
31780 _In_ ID3D12CommandSignature *pCommandSignature,
31781 _In_ UINT MaxCommandCount,
31782 _In_ ID3D12Resource *pArgumentBuffer,
31783 _In_ UINT64 ArgumentBufferOffset,
31784 _In_opt_ ID3D12Resource *pCountBuffer,
31785 _In_ UINT64 CountBufferOffset);
31786
31787 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
31788 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
31789 ID3D12GraphicsCommandList5 * This,
31790 _In_ ID3D12Resource *pDstBuffer,
31791 UINT64 DstOffset,
31792 _In_ ID3D12Resource *pSrcBuffer,
31793 UINT64 SrcOffset,
31794 UINT Dependencies,
31795 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
31796 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
31797
31798 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
31799 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
31800 ID3D12GraphicsCommandList5 * This,
31801 _In_ ID3D12Resource *pDstBuffer,
31802 UINT64 DstOffset,
31803 _In_ ID3D12Resource *pSrcBuffer,
31804 UINT64 SrcOffset,
31805 UINT Dependencies,
31806 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
31807 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
31808
31809 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
31810 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
31811 ID3D12GraphicsCommandList5 * This,
31812 _In_ FLOAT Min,
31813 _In_ FLOAT Max);
31814
31815 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
31816 void ( STDMETHODCALLTYPE *SetSamplePositions )(
31817 ID3D12GraphicsCommandList5 * This,
31818 _In_ UINT NumSamplesPerPixel,
31819 _In_ UINT NumPixels,
31820 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
31821
31822 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
31823 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
31824 ID3D12GraphicsCommandList5 * This,
31825 _In_ ID3D12Resource *pDstResource,
31826 _In_ UINT DstSubresource,
31827 _In_ UINT DstX,
31828 _In_ UINT DstY,
31829 _In_ ID3D12Resource *pSrcResource,
31830 _In_ UINT SrcSubresource,
31831 _In_opt_ D3D12_RECT *pSrcRect,
31832 _In_ DXGI_FORMAT Format,
31833 _In_ D3D12_RESOLVE_MODE ResolveMode);
31834
31835 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
31836 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
31837 ID3D12GraphicsCommandList5 * This,
31838 _In_ UINT Mask);
31839
31840 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
31841 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
31842 ID3D12GraphicsCommandList5 * This,
31843 UINT Count,
31844 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
31845 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
31846
31847 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
31848 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
31849 ID3D12GraphicsCommandList5 * This,
31850 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
31851
31852 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
31853 void ( STDMETHODCALLTYPE *BeginRenderPass )(
31854 ID3D12GraphicsCommandList5 * This,
31855 _In_ UINT NumRenderTargets,
31856 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
31857 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
31858 D3D12_RENDER_PASS_FLAGS Flags);
31859
31860 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
31861 void ( STDMETHODCALLTYPE *EndRenderPass )(
31862 ID3D12GraphicsCommandList5 * This);
31863
31864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
31865 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
31866 ID3D12GraphicsCommandList5 * This,
31867 _In_ ID3D12MetaCommand *pMetaCommand,
31868 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
31869 _In_ SIZE_T InitializationParametersDataSizeInBytes);
31870
31871 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
31872 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
31873 ID3D12GraphicsCommandList5 * This,
31874 _In_ ID3D12MetaCommand *pMetaCommand,
31875 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
31876 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
31877
31878 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
31879 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
31880 ID3D12GraphicsCommandList5 * This,
31881 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
31882 _In_ UINT NumPostbuildInfoDescs,
31883 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
31884
31885 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
31886 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
31887 ID3D12GraphicsCommandList5 * This,
31888 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
31889 _In_ UINT NumSourceAccelerationStructures,
31890 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
31891
31892 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
31893 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
31894 ID3D12GraphicsCommandList5 * This,
31895 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
31896 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
31897 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
31898
31899 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
31900 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
31901 ID3D12GraphicsCommandList5 * This,
31902 _In_ ID3D12StateObject *pStateObject);
31903
31904 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
31905 void ( STDMETHODCALLTYPE *DispatchRays )(
31906 ID3D12GraphicsCommandList5 * This,
31907 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
31908
31909 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
31910 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
31911 ID3D12GraphicsCommandList5 * This,
31912 _In_ D3D12_SHADING_RATE baseShadingRate,
31913 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
31914
31915 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
31916 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
31917 ID3D12GraphicsCommandList5 * This,
31918 _In_opt_ ID3D12Resource *shadingRateImage);
31919
31920 END_INTERFACE
31921 } ID3D12GraphicsCommandList5Vtbl;
31922
31923 interface ID3D12GraphicsCommandList5
31924 {
31925 CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl;
31926 };
31927
31928
31929
31930#ifdef COBJMACROS
31931
31932
31933#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \
31934 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31935
31936#define ID3D12GraphicsCommandList5_AddRef(This) \
31937 ( (This)->lpVtbl -> AddRef(This) )
31938
31939#define ID3D12GraphicsCommandList5_Release(This) \
31940 ( (This)->lpVtbl -> Release(This) )
31941
31942
31943#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \
31944 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
31945
31946#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \
31947 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
31948
31949#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \
31950 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
31951
31952#define ID3D12GraphicsCommandList5_SetName(This,Name) \
31953 ( (This)->lpVtbl -> SetName(This,Name) )
31954
31955
31956#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \
31957 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
31958
31959
31960#define ID3D12GraphicsCommandList5_GetType(This) \
31961 ( (This)->lpVtbl -> GetType(This) )
31962
31963
31964#define ID3D12GraphicsCommandList5_Close(This) \
31965 ( (This)->lpVtbl -> Close(This) )
31966
31967#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \
31968 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
31969
31970#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \
31971 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
31972
31973#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
31974 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
31975
31976#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
31977 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
31978
31979#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
31980 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
31981
31982#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
31983 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
31984
31985#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
31986 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
31987
31988#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \
31989 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
31990
31991#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
31992 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
31993
31994#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
31995 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
31996
31997#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \
31998 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
31999
32000#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \
32001 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
32002
32003#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \
32004 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
32005
32006#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \
32007 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
32008
32009#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \
32010 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
32011
32012#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \
32013 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
32014
32015#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \
32016 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
32017
32018#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \
32019 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
32020
32021#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
32022 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
32023
32024#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \
32025 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
32026
32027#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \
32028 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
32029
32030#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32031 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32032
32033#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32034 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32035
32036#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32037 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32038
32039#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32040 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32041
32042#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32043 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32044
32045#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32046 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32047
32048#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32049 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32050
32051#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32052 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32053
32054#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32055 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32056
32057#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32058 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32059
32060#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32061 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32062
32063#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32064 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32065
32066#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \
32067 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
32068
32069#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
32070 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
32071
32072#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \
32073 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
32074
32075#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
32076 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
32077
32078#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
32079 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
32080
32081#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
32082 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
32083
32084#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32085 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32086
32087#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32088 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32089
32090#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \
32091 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
32092
32093#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \
32094 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
32095
32096#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \
32097 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
32098
32099#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
32100 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
32101
32102#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
32103 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
32104
32105#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \
32106 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
32107
32108#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \
32109 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
32110
32111#define ID3D12GraphicsCommandList5_EndEvent(This) \
32112 ( (This)->lpVtbl -> EndEvent(This) )
32113
32114#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
32115 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
32116
32117
32118#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32119 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32120
32121#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32122 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32123
32124#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \
32125 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
32126
32127#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
32128 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
32129
32130#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
32131 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
32132
32133#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \
32134 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
32135
32136
32137#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \
32138 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
32139
32140
32141#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \
32142 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
32143
32144
32145#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
32146 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
32147
32148#define ID3D12GraphicsCommandList5_EndRenderPass(This) \
32149 ( (This)->lpVtbl -> EndRenderPass(This) )
32150
32151#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
32152 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
32153
32154#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
32155 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
32156
32157#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
32158 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
32159
32160#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
32161 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
32162
32163#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
32164 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
32165
32166#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \
32167 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
32168
32169#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \
32170 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
32171
32172
32173#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \
32174 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
32175
32176#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \
32177 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
32178
32179#endif /* COBJMACROS */
32180
32181
32182#endif /* C style interface */
32183
32184
32185
32186
32187#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
32188
32189
32190/* interface __MIDL_itf_d3d12_0000_0078 */
32191/* [local] */
32192
32193typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
32194 {
32195 UINT ThreadGroupCountX;
32196 UINT ThreadGroupCountY;
32197 UINT ThreadGroupCountZ;
32198 } D3D12_DISPATCH_MESH_ARGUMENTS;
32199
32200
32201
32202extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_c_ifspec;
32203extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_s_ifspec;
32204
32205#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
32206#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
32207
32208/* interface ID3D12GraphicsCommandList6 */
32209/* [unique][local][object][uuid] */
32210
32211
32212EXTERN_C const IID IID_ID3D12GraphicsCommandList6;
32213
32214#if defined(__cplusplus) && !defined(CINTERFACE)
32215
32216 MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
32217 ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
32218 {
32219 public:
32220 virtual void STDMETHODCALLTYPE DispatchMesh(
32221 _In_ UINT ThreadGroupCountX,
32222 _In_ UINT ThreadGroupCountY,
32223 _In_ UINT ThreadGroupCountZ) = 0;
32224
32225 };
32226
32227
32228#else /* C style interface */
32229
32230 typedef struct ID3D12GraphicsCommandList6Vtbl
32231 {
32232 BEGIN_INTERFACE
32233
32234 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
32235 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
32236 ID3D12GraphicsCommandList6 * This,
32237 REFIID riid,
32238 _COM_Outptr_ void **ppvObject);
32239
32240 DECLSPEC_XFGVIRT(IUnknown, AddRef)
32241 ULONG ( STDMETHODCALLTYPE *AddRef )(
32242 ID3D12GraphicsCommandList6 * This);
32243
32244 DECLSPEC_XFGVIRT(IUnknown, Release)
32245 ULONG ( STDMETHODCALLTYPE *Release )(
32246 ID3D12GraphicsCommandList6 * This);
32247
32248 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
32249 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
32250 ID3D12GraphicsCommandList6 * This,
32251 _In_ REFGUID guid,
32252 _Inout_ UINT *pDataSize,
32253 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
32254
32255 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
32256 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
32257 ID3D12GraphicsCommandList6 * This,
32258 _In_ REFGUID guid,
32259 _In_ UINT DataSize,
32260 _In_reads_bytes_opt_( DataSize ) const void *pData);
32261
32262 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
32263 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
32264 ID3D12GraphicsCommandList6 * This,
32265 _In_ REFGUID guid,
32266 _In_opt_ const IUnknown *pData);
32267
32268 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
32269 HRESULT ( STDMETHODCALLTYPE *SetName )(
32270 ID3D12GraphicsCommandList6 * This,
32271 _In_z_ LPCWSTR Name);
32272
32273 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
32274 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
32275 ID3D12GraphicsCommandList6 * This,
32276 REFIID riid,
32277 _COM_Outptr_opt_ void **ppvDevice);
32278
32279 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
32280 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
32281 ID3D12GraphicsCommandList6 * This);
32282
32283 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
32284 HRESULT ( STDMETHODCALLTYPE *Close )(
32285 ID3D12GraphicsCommandList6 * This);
32286
32287 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
32288 HRESULT ( STDMETHODCALLTYPE *Reset )(
32289 ID3D12GraphicsCommandList6 * This,
32290 _In_ ID3D12CommandAllocator *pAllocator,
32291 _In_opt_ ID3D12PipelineState *pInitialState);
32292
32293 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
32294 void ( STDMETHODCALLTYPE *ClearState )(
32295 ID3D12GraphicsCommandList6 * This,
32296 _In_opt_ ID3D12PipelineState *pPipelineState);
32297
32298 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
32299 void ( STDMETHODCALLTYPE *DrawInstanced )(
32300 ID3D12GraphicsCommandList6 * This,
32301 _In_ UINT VertexCountPerInstance,
32302 _In_ UINT InstanceCount,
32303 _In_ UINT StartVertexLocation,
32304 _In_ UINT StartInstanceLocation);
32305
32306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
32307 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
32308 ID3D12GraphicsCommandList6 * This,
32309 _In_ UINT IndexCountPerInstance,
32310 _In_ UINT InstanceCount,
32311 _In_ UINT StartIndexLocation,
32312 _In_ INT BaseVertexLocation,
32313 _In_ UINT StartInstanceLocation);
32314
32315 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
32316 void ( STDMETHODCALLTYPE *Dispatch )(
32317 ID3D12GraphicsCommandList6 * This,
32318 _In_ UINT ThreadGroupCountX,
32319 _In_ UINT ThreadGroupCountY,
32320 _In_ UINT ThreadGroupCountZ);
32321
32322 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
32323 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
32324 ID3D12GraphicsCommandList6 * This,
32325 _In_ ID3D12Resource *pDstBuffer,
32326 UINT64 DstOffset,
32327 _In_ ID3D12Resource *pSrcBuffer,
32328 UINT64 SrcOffset,
32329 UINT64 NumBytes);
32330
32331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
32332 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
32333 ID3D12GraphicsCommandList6 * This,
32334 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
32335 UINT DstX,
32336 UINT DstY,
32337 UINT DstZ,
32338 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
32339 _In_opt_ const D3D12_BOX *pSrcBox);
32340
32341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
32342 void ( STDMETHODCALLTYPE *CopyResource )(
32343 ID3D12GraphicsCommandList6 * This,
32344 _In_ ID3D12Resource *pDstResource,
32345 _In_ ID3D12Resource *pSrcResource);
32346
32347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
32348 void ( STDMETHODCALLTYPE *CopyTiles )(
32349 ID3D12GraphicsCommandList6 * This,
32350 _In_ ID3D12Resource *pTiledResource,
32351 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
32352 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
32353 _In_ ID3D12Resource *pBuffer,
32354 UINT64 BufferStartOffsetInBytes,
32355 D3D12_TILE_COPY_FLAGS Flags);
32356
32357 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
32358 void ( STDMETHODCALLTYPE *ResolveSubresource )(
32359 ID3D12GraphicsCommandList6 * This,
32360 _In_ ID3D12Resource *pDstResource,
32361 _In_ UINT DstSubresource,
32362 _In_ ID3D12Resource *pSrcResource,
32363 _In_ UINT SrcSubresource,
32364 _In_ DXGI_FORMAT Format);
32365
32366 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
32367 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
32368 ID3D12GraphicsCommandList6 * This,
32369 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
32370
32371 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
32372 void ( STDMETHODCALLTYPE *RSSetViewports )(
32373 ID3D12GraphicsCommandList6 * This,
32374 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
32375 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
32376
32377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
32378 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
32379 ID3D12GraphicsCommandList6 * This,
32380 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
32381 _In_reads_( NumRects) const D3D12_RECT *pRects);
32382
32383 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
32384 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
32385 ID3D12GraphicsCommandList6 * This,
32386 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
32387
32388 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
32389 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
32390 ID3D12GraphicsCommandList6 * This,
32391 _In_ UINT StencilRef);
32392
32393 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
32394 void ( STDMETHODCALLTYPE *SetPipelineState )(
32395 ID3D12GraphicsCommandList6 * This,
32396 _In_ ID3D12PipelineState *pPipelineState);
32397
32398 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
32399 void ( STDMETHODCALLTYPE *ResourceBarrier )(
32400 ID3D12GraphicsCommandList6 * This,
32401 _In_ UINT NumBarriers,
32402 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
32403
32404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
32405 void ( STDMETHODCALLTYPE *ExecuteBundle )(
32406 ID3D12GraphicsCommandList6 * This,
32407 _In_ ID3D12GraphicsCommandList *pCommandList);
32408
32409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
32410 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
32411 ID3D12GraphicsCommandList6 * This,
32412 _In_ UINT NumDescriptorHeaps,
32413 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
32414
32415 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
32416 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
32417 ID3D12GraphicsCommandList6 * This,
32418 _In_opt_ ID3D12RootSignature *pRootSignature);
32419
32420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
32421 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
32422 ID3D12GraphicsCommandList6 * This,
32423 _In_opt_ ID3D12RootSignature *pRootSignature);
32424
32425 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
32426 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
32427 ID3D12GraphicsCommandList6 * This,
32428 _In_ UINT RootParameterIndex,
32429 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
32430
32431 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
32432 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
32433 ID3D12GraphicsCommandList6 * This,
32434 _In_ UINT RootParameterIndex,
32435 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
32436
32437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
32438 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
32439 ID3D12GraphicsCommandList6 * This,
32440 _In_ UINT RootParameterIndex,
32441 _In_ UINT SrcData,
32442 _In_ UINT DestOffsetIn32BitValues);
32443
32444 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
32445 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
32446 ID3D12GraphicsCommandList6 * This,
32447 _In_ UINT RootParameterIndex,
32448 _In_ UINT SrcData,
32449 _In_ UINT DestOffsetIn32BitValues);
32450
32451 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
32452 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
32453 ID3D12GraphicsCommandList6 * This,
32454 _In_ UINT RootParameterIndex,
32455 _In_ UINT Num32BitValuesToSet,
32456 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
32457 _In_ UINT DestOffsetIn32BitValues);
32458
32459 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
32460 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
32461 ID3D12GraphicsCommandList6 * This,
32462 _In_ UINT RootParameterIndex,
32463 _In_ UINT Num32BitValuesToSet,
32464 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
32465 _In_ UINT DestOffsetIn32BitValues);
32466
32467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
32468 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
32469 ID3D12GraphicsCommandList6 * This,
32470 _In_ UINT RootParameterIndex,
32471 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32472
32473 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
32474 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
32475 ID3D12GraphicsCommandList6 * This,
32476 _In_ UINT RootParameterIndex,
32477 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32478
32479 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
32480 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
32481 ID3D12GraphicsCommandList6 * This,
32482 _In_ UINT RootParameterIndex,
32483 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32484
32485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
32486 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
32487 ID3D12GraphicsCommandList6 * This,
32488 _In_ UINT RootParameterIndex,
32489 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32490
32491 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
32492 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
32493 ID3D12GraphicsCommandList6 * This,
32494 _In_ UINT RootParameterIndex,
32495 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32496
32497 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
32498 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
32499 ID3D12GraphicsCommandList6 * This,
32500 _In_ UINT RootParameterIndex,
32501 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32502
32503 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
32504 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
32505 ID3D12GraphicsCommandList6 * This,
32506 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
32507
32508 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
32509 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
32510 ID3D12GraphicsCommandList6 * This,
32511 _In_ UINT StartSlot,
32512 _In_ UINT NumViews,
32513 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
32514
32515 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
32516 void ( STDMETHODCALLTYPE *SOSetTargets )(
32517 ID3D12GraphicsCommandList6 * This,
32518 _In_ UINT StartSlot,
32519 _In_ UINT NumViews,
32520 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
32521
32522 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
32523 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
32524 ID3D12GraphicsCommandList6 * This,
32525 _In_ UINT NumRenderTargetDescriptors,
32526 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
32527 _In_ BOOL RTsSingleHandleToDescriptorRange,
32528 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
32529
32530 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
32531 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
32532 ID3D12GraphicsCommandList6 * This,
32533 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
32534 _In_ D3D12_CLEAR_FLAGS ClearFlags,
32535 _In_ FLOAT Depth,
32536 _In_ UINT8 Stencil,
32537 _In_ UINT NumRects,
32538 _In_reads_(NumRects) const D3D12_RECT *pRects);
32539
32540 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
32541 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
32542 ID3D12GraphicsCommandList6 * This,
32543 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
32544 _In_ const FLOAT ColorRGBA[ 4 ],
32545 _In_ UINT NumRects,
32546 _In_reads_(NumRects) const D3D12_RECT *pRects);
32547
32548 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
32549 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
32550 ID3D12GraphicsCommandList6 * This,
32551 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
32552 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
32553 _In_ ID3D12Resource *pResource,
32554 _In_ const UINT Values[ 4 ],
32555 _In_ UINT NumRects,
32556 _In_reads_(NumRects) const D3D12_RECT *pRects);
32557
32558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
32559 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
32560 ID3D12GraphicsCommandList6 * This,
32561 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
32562 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
32563 _In_ ID3D12Resource *pResource,
32564 _In_ const FLOAT Values[ 4 ],
32565 _In_ UINT NumRects,
32566 _In_reads_(NumRects) const D3D12_RECT *pRects);
32567
32568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
32569 void ( STDMETHODCALLTYPE *DiscardResource )(
32570 ID3D12GraphicsCommandList6 * This,
32571 _In_ ID3D12Resource *pResource,
32572 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
32573
32574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
32575 void ( STDMETHODCALLTYPE *BeginQuery )(
32576 ID3D12GraphicsCommandList6 * This,
32577 _In_ ID3D12QueryHeap *pQueryHeap,
32578 _In_ D3D12_QUERY_TYPE Type,
32579 _In_ UINT Index);
32580
32581 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
32582 void ( STDMETHODCALLTYPE *EndQuery )(
32583 ID3D12GraphicsCommandList6 * This,
32584 _In_ ID3D12QueryHeap *pQueryHeap,
32585 _In_ D3D12_QUERY_TYPE Type,
32586 _In_ UINT Index);
32587
32588 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
32589 void ( STDMETHODCALLTYPE *ResolveQueryData )(
32590 ID3D12GraphicsCommandList6 * This,
32591 _In_ ID3D12QueryHeap *pQueryHeap,
32592 _In_ D3D12_QUERY_TYPE Type,
32593 _In_ UINT StartIndex,
32594 _In_ UINT NumQueries,
32595 _In_ ID3D12Resource *pDestinationBuffer,
32596 _In_ UINT64 AlignedDestinationBufferOffset);
32597
32598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
32599 void ( STDMETHODCALLTYPE *SetPredication )(
32600 ID3D12GraphicsCommandList6 * This,
32601 _In_opt_ ID3D12Resource *pBuffer,
32602 _In_ UINT64 AlignedBufferOffset,
32603 _In_ D3D12_PREDICATION_OP Operation);
32604
32605 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
32606 void ( STDMETHODCALLTYPE *SetMarker )(
32607 ID3D12GraphicsCommandList6 * This,
32608 UINT Metadata,
32609 _In_reads_bytes_opt_(Size) const void *pData,
32610 UINT Size);
32611
32612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
32613 void ( STDMETHODCALLTYPE *BeginEvent )(
32614 ID3D12GraphicsCommandList6 * This,
32615 UINT Metadata,
32616 _In_reads_bytes_opt_(Size) const void *pData,
32617 UINT Size);
32618
32619 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
32620 void ( STDMETHODCALLTYPE *EndEvent )(
32621 ID3D12GraphicsCommandList6 * This);
32622
32623 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
32624 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
32625 ID3D12GraphicsCommandList6 * This,
32626 _In_ ID3D12CommandSignature *pCommandSignature,
32627 _In_ UINT MaxCommandCount,
32628 _In_ ID3D12Resource *pArgumentBuffer,
32629 _In_ UINT64 ArgumentBufferOffset,
32630 _In_opt_ ID3D12Resource *pCountBuffer,
32631 _In_ UINT64 CountBufferOffset);
32632
32633 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
32634 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
32635 ID3D12GraphicsCommandList6 * This,
32636 _In_ ID3D12Resource *pDstBuffer,
32637 UINT64 DstOffset,
32638 _In_ ID3D12Resource *pSrcBuffer,
32639 UINT64 SrcOffset,
32640 UINT Dependencies,
32641 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
32642 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
32643
32644 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
32645 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
32646 ID3D12GraphicsCommandList6 * This,
32647 _In_ ID3D12Resource *pDstBuffer,
32648 UINT64 DstOffset,
32649 _In_ ID3D12Resource *pSrcBuffer,
32650 UINT64 SrcOffset,
32651 UINT Dependencies,
32652 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
32653 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
32654
32655 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
32656 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
32657 ID3D12GraphicsCommandList6 * This,
32658 _In_ FLOAT Min,
32659 _In_ FLOAT Max);
32660
32661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
32662 void ( STDMETHODCALLTYPE *SetSamplePositions )(
32663 ID3D12GraphicsCommandList6 * This,
32664 _In_ UINT NumSamplesPerPixel,
32665 _In_ UINT NumPixels,
32666 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
32667
32668 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
32669 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
32670 ID3D12GraphicsCommandList6 * This,
32671 _In_ ID3D12Resource *pDstResource,
32672 _In_ UINT DstSubresource,
32673 _In_ UINT DstX,
32674 _In_ UINT DstY,
32675 _In_ ID3D12Resource *pSrcResource,
32676 _In_ UINT SrcSubresource,
32677 _In_opt_ D3D12_RECT *pSrcRect,
32678 _In_ DXGI_FORMAT Format,
32679 _In_ D3D12_RESOLVE_MODE ResolveMode);
32680
32681 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
32682 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
32683 ID3D12GraphicsCommandList6 * This,
32684 _In_ UINT Mask);
32685
32686 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
32687 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
32688 ID3D12GraphicsCommandList6 * This,
32689 UINT Count,
32690 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
32691 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
32692
32693 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
32694 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
32695 ID3D12GraphicsCommandList6 * This,
32696 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
32697
32698 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
32699 void ( STDMETHODCALLTYPE *BeginRenderPass )(
32700 ID3D12GraphicsCommandList6 * This,
32701 _In_ UINT NumRenderTargets,
32702 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
32703 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
32704 D3D12_RENDER_PASS_FLAGS Flags);
32705
32706 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
32707 void ( STDMETHODCALLTYPE *EndRenderPass )(
32708 ID3D12GraphicsCommandList6 * This);
32709
32710 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
32711 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
32712 ID3D12GraphicsCommandList6 * This,
32713 _In_ ID3D12MetaCommand *pMetaCommand,
32714 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
32715 _In_ SIZE_T InitializationParametersDataSizeInBytes);
32716
32717 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
32718 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
32719 ID3D12GraphicsCommandList6 * This,
32720 _In_ ID3D12MetaCommand *pMetaCommand,
32721 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
32722 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
32723
32724 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
32725 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
32726 ID3D12GraphicsCommandList6 * This,
32727 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
32728 _In_ UINT NumPostbuildInfoDescs,
32729 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
32730
32731 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
32732 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
32733 ID3D12GraphicsCommandList6 * This,
32734 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
32735 _In_ UINT NumSourceAccelerationStructures,
32736 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
32737
32738 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
32739 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
32740 ID3D12GraphicsCommandList6 * This,
32741 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
32742 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
32743 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
32744
32745 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
32746 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
32747 ID3D12GraphicsCommandList6 * This,
32748 _In_ ID3D12StateObject *pStateObject);
32749
32750 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
32751 void ( STDMETHODCALLTYPE *DispatchRays )(
32752 ID3D12GraphicsCommandList6 * This,
32753 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
32754
32755 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
32756 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
32757 ID3D12GraphicsCommandList6 * This,
32758 _In_ D3D12_SHADING_RATE baseShadingRate,
32759 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
32760
32761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
32762 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
32763 ID3D12GraphicsCommandList6 * This,
32764 _In_opt_ ID3D12Resource *shadingRateImage);
32765
32766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
32767 void ( STDMETHODCALLTYPE *DispatchMesh )(
32768 ID3D12GraphicsCommandList6 * This,
32769 _In_ UINT ThreadGroupCountX,
32770 _In_ UINT ThreadGroupCountY,
32771 _In_ UINT ThreadGroupCountZ);
32772
32773 END_INTERFACE
32774 } ID3D12GraphicsCommandList6Vtbl;
32775
32776 interface ID3D12GraphicsCommandList6
32777 {
32778 CONST_VTBL struct ID3D12GraphicsCommandList6Vtbl *lpVtbl;
32779 };
32780
32781
32782
32783#ifdef COBJMACROS
32784
32785
32786#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) \
32787 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
32788
32789#define ID3D12GraphicsCommandList6_AddRef(This) \
32790 ( (This)->lpVtbl -> AddRef(This) )
32791
32792#define ID3D12GraphicsCommandList6_Release(This) \
32793 ( (This)->lpVtbl -> Release(This) )
32794
32795
32796#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData) \
32797 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
32798
32799#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData) \
32800 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
32801
32802#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData) \
32803 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
32804
32805#define ID3D12GraphicsCommandList6_SetName(This,Name) \
32806 ( (This)->lpVtbl -> SetName(This,Name) )
32807
32808
32809#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice) \
32810 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
32811
32812
32813#define ID3D12GraphicsCommandList6_GetType(This) \
32814 ( (This)->lpVtbl -> GetType(This) )
32815
32816
32817#define ID3D12GraphicsCommandList6_Close(This) \
32818 ( (This)->lpVtbl -> Close(This) )
32819
32820#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState) \
32821 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
32822
32823#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState) \
32824 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
32825
32826#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
32827 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
32828
32829#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
32830 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
32831
32832#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
32833 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
32834
32835#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
32836 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
32837
32838#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
32839 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
32840
32841#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource) \
32842 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
32843
32844#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
32845 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
32846
32847#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
32848 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
32849
32850#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology) \
32851 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
32852
32853#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports) \
32854 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
32855
32856#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects) \
32857 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
32858
32859#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor) \
32860 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
32861
32862#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef) \
32863 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
32864
32865#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState) \
32866 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
32867
32868#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers) \
32869 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
32870
32871#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList) \
32872 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
32873
32874#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
32875 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
32876
32877#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature) \
32878 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
32879
32880#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature) \
32881 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
32882
32883#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32884 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32885
32886#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32887 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32888
32889#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32890 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32891
32892#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32893 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32894
32895#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32896 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32897
32898#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32899 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32900
32901#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32902 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32903
32904#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32905 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32906
32907#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32908 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32909
32910#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32911 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32912
32913#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32914 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32915
32916#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32917 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32918
32919#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView) \
32920 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
32921
32922#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
32923 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
32924
32925#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews) \
32926 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
32927
32928#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
32929 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
32930
32931#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
32932 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
32933
32934#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
32935 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
32936
32937#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32938 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32939
32940#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32941 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32942
32943#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion) \
32944 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
32945
32946#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index) \
32947 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
32948
32949#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index) \
32950 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
32951
32952#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
32953 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
32954
32955#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
32956 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
32957
32958#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size) \
32959 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
32960
32961#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size) \
32962 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
32963
32964#define ID3D12GraphicsCommandList6_EndEvent(This) \
32965 ( (This)->lpVtbl -> EndEvent(This) )
32966
32967#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
32968 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
32969
32970
32971#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32972 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32973
32974#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32975 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32976
32977#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max) \
32978 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
32979
32980#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
32981 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
32982
32983#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
32984 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
32985
32986#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask) \
32987 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
32988
32989
32990#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes) \
32991 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
32992
32993
32994#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession) \
32995 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
32996
32997
32998#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
32999 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
33000
33001#define ID3D12GraphicsCommandList6_EndRenderPass(This) \
33002 ( (This)->lpVtbl -> EndRenderPass(This) )
33003
33004#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
33005 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
33006
33007#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
33008 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
33009
33010#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
33011 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
33012
33013#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
33014 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
33015
33016#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
33017 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
33018
33019#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject) \
33020 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
33021
33022#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc) \
33023 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
33024
33025
33026#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners) \
33027 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
33028
33029#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage) \
33030 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
33031
33032
33033#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33034 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33035
33036#endif /* COBJMACROS */
33037
33038
33039#endif /* C style interface */
33040
33041
33042
33043
33044#endif /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
33045
33046
33047#ifndef __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
33048#define __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
33049
33050/* interface ID3D12GraphicsCommandList7 */
33051/* [unique][local][object][uuid] */
33052
33053
33054EXTERN_C const IID IID_ID3D12GraphicsCommandList7;
33055
33056#if defined(__cplusplus) && !defined(CINTERFACE)
33057
33058 MIDL_INTERFACE("dd171223-8b61-4769-90e3-160ccde4e2c1")
33059 ID3D12GraphicsCommandList7 : public ID3D12GraphicsCommandList6
33060 {
33061 public:
33062 virtual void STDMETHODCALLTYPE Barrier(
33063 UINT32 NumBarrierGroups,
33064 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
33065
33066 };
33067
33068
33069#else /* C style interface */
33070
33071 typedef struct ID3D12GraphicsCommandList7Vtbl
33072 {
33073 BEGIN_INTERFACE
33074
33075 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
33076 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
33077 ID3D12GraphicsCommandList7 * This,
33078 REFIID riid,
33079 _COM_Outptr_ void **ppvObject);
33080
33081 DECLSPEC_XFGVIRT(IUnknown, AddRef)
33082 ULONG ( STDMETHODCALLTYPE *AddRef )(
33083 ID3D12GraphicsCommandList7 * This);
33084
33085 DECLSPEC_XFGVIRT(IUnknown, Release)
33086 ULONG ( STDMETHODCALLTYPE *Release )(
33087 ID3D12GraphicsCommandList7 * This);
33088
33089 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
33090 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
33091 ID3D12GraphicsCommandList7 * This,
33092 _In_ REFGUID guid,
33093 _Inout_ UINT *pDataSize,
33094 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
33095
33096 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
33097 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
33098 ID3D12GraphicsCommandList7 * This,
33099 _In_ REFGUID guid,
33100 _In_ UINT DataSize,
33101 _In_reads_bytes_opt_( DataSize ) const void *pData);
33102
33103 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
33104 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
33105 ID3D12GraphicsCommandList7 * This,
33106 _In_ REFGUID guid,
33107 _In_opt_ const IUnknown *pData);
33108
33109 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
33110 HRESULT ( STDMETHODCALLTYPE *SetName )(
33111 ID3D12GraphicsCommandList7 * This,
33112 _In_z_ LPCWSTR Name);
33113
33114 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
33115 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
33116 ID3D12GraphicsCommandList7 * This,
33117 REFIID riid,
33118 _COM_Outptr_opt_ void **ppvDevice);
33119
33120 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
33121 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
33122 ID3D12GraphicsCommandList7 * This);
33123
33124 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
33125 HRESULT ( STDMETHODCALLTYPE *Close )(
33126 ID3D12GraphicsCommandList7 * This);
33127
33128 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
33129 HRESULT ( STDMETHODCALLTYPE *Reset )(
33130 ID3D12GraphicsCommandList7 * This,
33131 _In_ ID3D12CommandAllocator *pAllocator,
33132 _In_opt_ ID3D12PipelineState *pInitialState);
33133
33134 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
33135 void ( STDMETHODCALLTYPE *ClearState )(
33136 ID3D12GraphicsCommandList7 * This,
33137 _In_opt_ ID3D12PipelineState *pPipelineState);
33138
33139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
33140 void ( STDMETHODCALLTYPE *DrawInstanced )(
33141 ID3D12GraphicsCommandList7 * This,
33142 _In_ UINT VertexCountPerInstance,
33143 _In_ UINT InstanceCount,
33144 _In_ UINT StartVertexLocation,
33145 _In_ UINT StartInstanceLocation);
33146
33147 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
33148 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
33149 ID3D12GraphicsCommandList7 * This,
33150 _In_ UINT IndexCountPerInstance,
33151 _In_ UINT InstanceCount,
33152 _In_ UINT StartIndexLocation,
33153 _In_ INT BaseVertexLocation,
33154 _In_ UINT StartInstanceLocation);
33155
33156 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
33157 void ( STDMETHODCALLTYPE *Dispatch )(
33158 ID3D12GraphicsCommandList7 * This,
33159 _In_ UINT ThreadGroupCountX,
33160 _In_ UINT ThreadGroupCountY,
33161 _In_ UINT ThreadGroupCountZ);
33162
33163 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
33164 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
33165 ID3D12GraphicsCommandList7 * This,
33166 _In_ ID3D12Resource *pDstBuffer,
33167 UINT64 DstOffset,
33168 _In_ ID3D12Resource *pSrcBuffer,
33169 UINT64 SrcOffset,
33170 UINT64 NumBytes);
33171
33172 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
33173 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
33174 ID3D12GraphicsCommandList7 * This,
33175 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
33176 UINT DstX,
33177 UINT DstY,
33178 UINT DstZ,
33179 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
33180 _In_opt_ const D3D12_BOX *pSrcBox);
33181
33182 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
33183 void ( STDMETHODCALLTYPE *CopyResource )(
33184 ID3D12GraphicsCommandList7 * This,
33185 _In_ ID3D12Resource *pDstResource,
33186 _In_ ID3D12Resource *pSrcResource);
33187
33188 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
33189 void ( STDMETHODCALLTYPE *CopyTiles )(
33190 ID3D12GraphicsCommandList7 * This,
33191 _In_ ID3D12Resource *pTiledResource,
33192 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
33193 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
33194 _In_ ID3D12Resource *pBuffer,
33195 UINT64 BufferStartOffsetInBytes,
33196 D3D12_TILE_COPY_FLAGS Flags);
33197
33198 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
33199 void ( STDMETHODCALLTYPE *ResolveSubresource )(
33200 ID3D12GraphicsCommandList7 * This,
33201 _In_ ID3D12Resource *pDstResource,
33202 _In_ UINT DstSubresource,
33203 _In_ ID3D12Resource *pSrcResource,
33204 _In_ UINT SrcSubresource,
33205 _In_ DXGI_FORMAT Format);
33206
33207 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
33208 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
33209 ID3D12GraphicsCommandList7 * This,
33210 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
33211
33212 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
33213 void ( STDMETHODCALLTYPE *RSSetViewports )(
33214 ID3D12GraphicsCommandList7 * This,
33215 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
33216 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
33217
33218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
33219 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
33220 ID3D12GraphicsCommandList7 * This,
33221 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
33222 _In_reads_( NumRects) const D3D12_RECT *pRects);
33223
33224 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
33225 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
33226 ID3D12GraphicsCommandList7 * This,
33227 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
33228
33229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
33230 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
33231 ID3D12GraphicsCommandList7 * This,
33232 _In_ UINT StencilRef);
33233
33234 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
33235 void ( STDMETHODCALLTYPE *SetPipelineState )(
33236 ID3D12GraphicsCommandList7 * This,
33237 _In_ ID3D12PipelineState *pPipelineState);
33238
33239 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
33240 void ( STDMETHODCALLTYPE *ResourceBarrier )(
33241 ID3D12GraphicsCommandList7 * This,
33242 _In_ UINT NumBarriers,
33243 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
33244
33245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
33246 void ( STDMETHODCALLTYPE *ExecuteBundle )(
33247 ID3D12GraphicsCommandList7 * This,
33248 _In_ ID3D12GraphicsCommandList *pCommandList);
33249
33250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
33251 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
33252 ID3D12GraphicsCommandList7 * This,
33253 _In_ UINT NumDescriptorHeaps,
33254 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
33255
33256 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
33257 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
33258 ID3D12GraphicsCommandList7 * This,
33259 _In_opt_ ID3D12RootSignature *pRootSignature);
33260
33261 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
33262 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
33263 ID3D12GraphicsCommandList7 * This,
33264 _In_opt_ ID3D12RootSignature *pRootSignature);
33265
33266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
33267 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
33268 ID3D12GraphicsCommandList7 * This,
33269 _In_ UINT RootParameterIndex,
33270 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
33271
33272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
33273 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
33274 ID3D12GraphicsCommandList7 * This,
33275 _In_ UINT RootParameterIndex,
33276 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
33277
33278 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
33279 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
33280 ID3D12GraphicsCommandList7 * This,
33281 _In_ UINT RootParameterIndex,
33282 _In_ UINT SrcData,
33283 _In_ UINT DestOffsetIn32BitValues);
33284
33285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
33286 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
33287 ID3D12GraphicsCommandList7 * This,
33288 _In_ UINT RootParameterIndex,
33289 _In_ UINT SrcData,
33290 _In_ UINT DestOffsetIn32BitValues);
33291
33292 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
33293 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
33294 ID3D12GraphicsCommandList7 * This,
33295 _In_ UINT RootParameterIndex,
33296 _In_ UINT Num32BitValuesToSet,
33297 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
33298 _In_ UINT DestOffsetIn32BitValues);
33299
33300 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
33301 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
33302 ID3D12GraphicsCommandList7 * This,
33303 _In_ UINT RootParameterIndex,
33304 _In_ UINT Num32BitValuesToSet,
33305 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
33306 _In_ UINT DestOffsetIn32BitValues);
33307
33308 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
33309 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
33310 ID3D12GraphicsCommandList7 * This,
33311 _In_ UINT RootParameterIndex,
33312 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33313
33314 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
33315 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
33316 ID3D12GraphicsCommandList7 * This,
33317 _In_ UINT RootParameterIndex,
33318 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33319
33320 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
33321 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
33322 ID3D12GraphicsCommandList7 * This,
33323 _In_ UINT RootParameterIndex,
33324 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33325
33326 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
33327 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
33328 ID3D12GraphicsCommandList7 * This,
33329 _In_ UINT RootParameterIndex,
33330 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33331
33332 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
33333 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
33334 ID3D12GraphicsCommandList7 * This,
33335 _In_ UINT RootParameterIndex,
33336 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33337
33338 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
33339 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
33340 ID3D12GraphicsCommandList7 * This,
33341 _In_ UINT RootParameterIndex,
33342 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33343
33344 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
33345 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
33346 ID3D12GraphicsCommandList7 * This,
33347 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
33348
33349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
33350 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
33351 ID3D12GraphicsCommandList7 * This,
33352 _In_ UINT StartSlot,
33353 _In_ UINT NumViews,
33354 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
33355
33356 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
33357 void ( STDMETHODCALLTYPE *SOSetTargets )(
33358 ID3D12GraphicsCommandList7 * This,
33359 _In_ UINT StartSlot,
33360 _In_ UINT NumViews,
33361 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
33362
33363 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
33364 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
33365 ID3D12GraphicsCommandList7 * This,
33366 _In_ UINT NumRenderTargetDescriptors,
33367 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
33368 _In_ BOOL RTsSingleHandleToDescriptorRange,
33369 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
33370
33371 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
33372 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
33373 ID3D12GraphicsCommandList7 * This,
33374 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
33375 _In_ D3D12_CLEAR_FLAGS ClearFlags,
33376 _In_ FLOAT Depth,
33377 _In_ UINT8 Stencil,
33378 _In_ UINT NumRects,
33379 _In_reads_(NumRects) const D3D12_RECT *pRects);
33380
33381 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
33382 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
33383 ID3D12GraphicsCommandList7 * This,
33384 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
33385 _In_ const FLOAT ColorRGBA[ 4 ],
33386 _In_ UINT NumRects,
33387 _In_reads_(NumRects) const D3D12_RECT *pRects);
33388
33389 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
33390 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
33391 ID3D12GraphicsCommandList7 * This,
33392 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
33393 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
33394 _In_ ID3D12Resource *pResource,
33395 _In_ const UINT Values[ 4 ],
33396 _In_ UINT NumRects,
33397 _In_reads_(NumRects) const D3D12_RECT *pRects);
33398
33399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
33400 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
33401 ID3D12GraphicsCommandList7 * This,
33402 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
33403 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
33404 _In_ ID3D12Resource *pResource,
33405 _In_ const FLOAT Values[ 4 ],
33406 _In_ UINT NumRects,
33407 _In_reads_(NumRects) const D3D12_RECT *pRects);
33408
33409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
33410 void ( STDMETHODCALLTYPE *DiscardResource )(
33411 ID3D12GraphicsCommandList7 * This,
33412 _In_ ID3D12Resource *pResource,
33413 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
33414
33415 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
33416 void ( STDMETHODCALLTYPE *BeginQuery )(
33417 ID3D12GraphicsCommandList7 * This,
33418 _In_ ID3D12QueryHeap *pQueryHeap,
33419 _In_ D3D12_QUERY_TYPE Type,
33420 _In_ UINT Index);
33421
33422 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
33423 void ( STDMETHODCALLTYPE *EndQuery )(
33424 ID3D12GraphicsCommandList7 * This,
33425 _In_ ID3D12QueryHeap *pQueryHeap,
33426 _In_ D3D12_QUERY_TYPE Type,
33427 _In_ UINT Index);
33428
33429 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
33430 void ( STDMETHODCALLTYPE *ResolveQueryData )(
33431 ID3D12GraphicsCommandList7 * This,
33432 _In_ ID3D12QueryHeap *pQueryHeap,
33433 _In_ D3D12_QUERY_TYPE Type,
33434 _In_ UINT StartIndex,
33435 _In_ UINT NumQueries,
33436 _In_ ID3D12Resource *pDestinationBuffer,
33437 _In_ UINT64 AlignedDestinationBufferOffset);
33438
33439 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
33440 void ( STDMETHODCALLTYPE *SetPredication )(
33441 ID3D12GraphicsCommandList7 * This,
33442 _In_opt_ ID3D12Resource *pBuffer,
33443 _In_ UINT64 AlignedBufferOffset,
33444 _In_ D3D12_PREDICATION_OP Operation);
33445
33446 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
33447 void ( STDMETHODCALLTYPE *SetMarker )(
33448 ID3D12GraphicsCommandList7 * This,
33449 UINT Metadata,
33450 _In_reads_bytes_opt_(Size) const void *pData,
33451 UINT Size);
33452
33453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
33454 void ( STDMETHODCALLTYPE *BeginEvent )(
33455 ID3D12GraphicsCommandList7 * This,
33456 UINT Metadata,
33457 _In_reads_bytes_opt_(Size) const void *pData,
33458 UINT Size);
33459
33460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
33461 void ( STDMETHODCALLTYPE *EndEvent )(
33462 ID3D12GraphicsCommandList7 * This);
33463
33464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
33465 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
33466 ID3D12GraphicsCommandList7 * This,
33467 _In_ ID3D12CommandSignature *pCommandSignature,
33468 _In_ UINT MaxCommandCount,
33469 _In_ ID3D12Resource *pArgumentBuffer,
33470 _In_ UINT64 ArgumentBufferOffset,
33471 _In_opt_ ID3D12Resource *pCountBuffer,
33472 _In_ UINT64 CountBufferOffset);
33473
33474 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
33475 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
33476 ID3D12GraphicsCommandList7 * This,
33477 _In_ ID3D12Resource *pDstBuffer,
33478 UINT64 DstOffset,
33479 _In_ ID3D12Resource *pSrcBuffer,
33480 UINT64 SrcOffset,
33481 UINT Dependencies,
33482 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
33483 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
33484
33485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
33486 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
33487 ID3D12GraphicsCommandList7 * This,
33488 _In_ ID3D12Resource *pDstBuffer,
33489 UINT64 DstOffset,
33490 _In_ ID3D12Resource *pSrcBuffer,
33491 UINT64 SrcOffset,
33492 UINT Dependencies,
33493 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
33494 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
33495
33496 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
33497 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
33498 ID3D12GraphicsCommandList7 * This,
33499 _In_ FLOAT Min,
33500 _In_ FLOAT Max);
33501
33502 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
33503 void ( STDMETHODCALLTYPE *SetSamplePositions )(
33504 ID3D12GraphicsCommandList7 * This,
33505 _In_ UINT NumSamplesPerPixel,
33506 _In_ UINT NumPixels,
33507 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
33508
33509 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
33510 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
33511 ID3D12GraphicsCommandList7 * This,
33512 _In_ ID3D12Resource *pDstResource,
33513 _In_ UINT DstSubresource,
33514 _In_ UINT DstX,
33515 _In_ UINT DstY,
33516 _In_ ID3D12Resource *pSrcResource,
33517 _In_ UINT SrcSubresource,
33518 _In_opt_ D3D12_RECT *pSrcRect,
33519 _In_ DXGI_FORMAT Format,
33520 _In_ D3D12_RESOLVE_MODE ResolveMode);
33521
33522 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
33523 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
33524 ID3D12GraphicsCommandList7 * This,
33525 _In_ UINT Mask);
33526
33527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
33528 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
33529 ID3D12GraphicsCommandList7 * This,
33530 UINT Count,
33531 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
33532 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
33533
33534 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
33535 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
33536 ID3D12GraphicsCommandList7 * This,
33537 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
33538
33539 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
33540 void ( STDMETHODCALLTYPE *BeginRenderPass )(
33541 ID3D12GraphicsCommandList7 * This,
33542 _In_ UINT NumRenderTargets,
33543 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
33544 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
33545 D3D12_RENDER_PASS_FLAGS Flags);
33546
33547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
33548 void ( STDMETHODCALLTYPE *EndRenderPass )(
33549 ID3D12GraphicsCommandList7 * This);
33550
33551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
33552 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
33553 ID3D12GraphicsCommandList7 * This,
33554 _In_ ID3D12MetaCommand *pMetaCommand,
33555 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
33556 _In_ SIZE_T InitializationParametersDataSizeInBytes);
33557
33558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
33559 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
33560 ID3D12GraphicsCommandList7 * This,
33561 _In_ ID3D12MetaCommand *pMetaCommand,
33562 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
33563 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
33564
33565 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
33566 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
33567 ID3D12GraphicsCommandList7 * This,
33568 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
33569 _In_ UINT NumPostbuildInfoDescs,
33570 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
33571
33572 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
33573 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
33574 ID3D12GraphicsCommandList7 * This,
33575 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
33576 _In_ UINT NumSourceAccelerationStructures,
33577 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
33578
33579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
33580 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
33581 ID3D12GraphicsCommandList7 * This,
33582 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
33583 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
33584 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
33585
33586 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
33587 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
33588 ID3D12GraphicsCommandList7 * This,
33589 _In_ ID3D12StateObject *pStateObject);
33590
33591 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
33592 void ( STDMETHODCALLTYPE *DispatchRays )(
33593 ID3D12GraphicsCommandList7 * This,
33594 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
33595
33596 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
33597 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
33598 ID3D12GraphicsCommandList7 * This,
33599 _In_ D3D12_SHADING_RATE baseShadingRate,
33600 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
33601
33602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
33603 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
33604 ID3D12GraphicsCommandList7 * This,
33605 _In_opt_ ID3D12Resource *shadingRateImage);
33606
33607 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
33608 void ( STDMETHODCALLTYPE *DispatchMesh )(
33609 ID3D12GraphicsCommandList7 * This,
33610 _In_ UINT ThreadGroupCountX,
33611 _In_ UINT ThreadGroupCountY,
33612 _In_ UINT ThreadGroupCountZ);
33613
33614 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
33615 void ( STDMETHODCALLTYPE *Barrier )(
33616 ID3D12GraphicsCommandList7 * This,
33617 UINT32 NumBarrierGroups,
33618 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
33619
33620 END_INTERFACE
33621 } ID3D12GraphicsCommandList7Vtbl;
33622
33623 interface ID3D12GraphicsCommandList7
33624 {
33625 CONST_VTBL struct ID3D12GraphicsCommandList7Vtbl *lpVtbl;
33626 };
33627
33628
33629
33630#ifdef COBJMACROS
33631
33632
33633#define ID3D12GraphicsCommandList7_QueryInterface(This,riid,ppvObject) \
33634 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
33635
33636#define ID3D12GraphicsCommandList7_AddRef(This) \
33637 ( (This)->lpVtbl -> AddRef(This) )
33638
33639#define ID3D12GraphicsCommandList7_Release(This) \
33640 ( (This)->lpVtbl -> Release(This) )
33641
33642
33643#define ID3D12GraphicsCommandList7_GetPrivateData(This,guid,pDataSize,pData) \
33644 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
33645
33646#define ID3D12GraphicsCommandList7_SetPrivateData(This,guid,DataSize,pData) \
33647 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
33648
33649#define ID3D12GraphicsCommandList7_SetPrivateDataInterface(This,guid,pData) \
33650 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
33651
33652#define ID3D12GraphicsCommandList7_SetName(This,Name) \
33653 ( (This)->lpVtbl -> SetName(This,Name) )
33654
33655
33656#define ID3D12GraphicsCommandList7_GetDevice(This,riid,ppvDevice) \
33657 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
33658
33659
33660#define ID3D12GraphicsCommandList7_GetType(This) \
33661 ( (This)->lpVtbl -> GetType(This) )
33662
33663
33664#define ID3D12GraphicsCommandList7_Close(This) \
33665 ( (This)->lpVtbl -> Close(This) )
33666
33667#define ID3D12GraphicsCommandList7_Reset(This,pAllocator,pInitialState) \
33668 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
33669
33670#define ID3D12GraphicsCommandList7_ClearState(This,pPipelineState) \
33671 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
33672
33673#define ID3D12GraphicsCommandList7_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
33674 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
33675
33676#define ID3D12GraphicsCommandList7_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
33677 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
33678
33679#define ID3D12GraphicsCommandList7_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33680 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33681
33682#define ID3D12GraphicsCommandList7_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
33683 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
33684
33685#define ID3D12GraphicsCommandList7_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
33686 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
33687
33688#define ID3D12GraphicsCommandList7_CopyResource(This,pDstResource,pSrcResource) \
33689 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
33690
33691#define ID3D12GraphicsCommandList7_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
33692 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
33693
33694#define ID3D12GraphicsCommandList7_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
33695 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
33696
33697#define ID3D12GraphicsCommandList7_IASetPrimitiveTopology(This,PrimitiveTopology) \
33698 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
33699
33700#define ID3D12GraphicsCommandList7_RSSetViewports(This,NumViewports,pViewports) \
33701 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
33702
33703#define ID3D12GraphicsCommandList7_RSSetScissorRects(This,NumRects,pRects) \
33704 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
33705
33706#define ID3D12GraphicsCommandList7_OMSetBlendFactor(This,BlendFactor) \
33707 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
33708
33709#define ID3D12GraphicsCommandList7_OMSetStencilRef(This,StencilRef) \
33710 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
33711
33712#define ID3D12GraphicsCommandList7_SetPipelineState(This,pPipelineState) \
33713 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
33714
33715#define ID3D12GraphicsCommandList7_ResourceBarrier(This,NumBarriers,pBarriers) \
33716 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
33717
33718#define ID3D12GraphicsCommandList7_ExecuteBundle(This,pCommandList) \
33719 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
33720
33721#define ID3D12GraphicsCommandList7_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
33722 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
33723
33724#define ID3D12GraphicsCommandList7_SetComputeRootSignature(This,pRootSignature) \
33725 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
33726
33727#define ID3D12GraphicsCommandList7_SetGraphicsRootSignature(This,pRootSignature) \
33728 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
33729
33730#define ID3D12GraphicsCommandList7_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
33731 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
33732
33733#define ID3D12GraphicsCommandList7_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
33734 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
33735
33736#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
33737 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
33738
33739#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
33740 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
33741
33742#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
33743 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
33744
33745#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
33746 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
33747
33748#define ID3D12GraphicsCommandList7_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
33749 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
33750
33751#define ID3D12GraphicsCommandList7_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
33752 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
33753
33754#define ID3D12GraphicsCommandList7_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
33755 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
33756
33757#define ID3D12GraphicsCommandList7_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
33758 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
33759
33760#define ID3D12GraphicsCommandList7_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
33761 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
33762
33763#define ID3D12GraphicsCommandList7_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
33764 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
33765
33766#define ID3D12GraphicsCommandList7_IASetIndexBuffer(This,pView) \
33767 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
33768
33769#define ID3D12GraphicsCommandList7_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
33770 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
33771
33772#define ID3D12GraphicsCommandList7_SOSetTargets(This,StartSlot,NumViews,pViews) \
33773 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
33774
33775#define ID3D12GraphicsCommandList7_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
33776 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
33777
33778#define ID3D12GraphicsCommandList7_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
33779 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
33780
33781#define ID3D12GraphicsCommandList7_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
33782 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
33783
33784#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
33785 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
33786
33787#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
33788 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
33789
33790#define ID3D12GraphicsCommandList7_DiscardResource(This,pResource,pRegion) \
33791 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
33792
33793#define ID3D12GraphicsCommandList7_BeginQuery(This,pQueryHeap,Type,Index) \
33794 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
33795
33796#define ID3D12GraphicsCommandList7_EndQuery(This,pQueryHeap,Type,Index) \
33797 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
33798
33799#define ID3D12GraphicsCommandList7_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
33800 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
33801
33802#define ID3D12GraphicsCommandList7_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
33803 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
33804
33805#define ID3D12GraphicsCommandList7_SetMarker(This,Metadata,pData,Size) \
33806 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
33807
33808#define ID3D12GraphicsCommandList7_BeginEvent(This,Metadata,pData,Size) \
33809 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
33810
33811#define ID3D12GraphicsCommandList7_EndEvent(This) \
33812 ( (This)->lpVtbl -> EndEvent(This) )
33813
33814#define ID3D12GraphicsCommandList7_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
33815 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
33816
33817
33818#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
33819 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
33820
33821#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
33822 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
33823
33824#define ID3D12GraphicsCommandList7_OMSetDepthBounds(This,Min,Max) \
33825 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
33826
33827#define ID3D12GraphicsCommandList7_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
33828 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
33829
33830#define ID3D12GraphicsCommandList7_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
33831 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
33832
33833#define ID3D12GraphicsCommandList7_SetViewInstanceMask(This,Mask) \
33834 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
33835
33836
33837#define ID3D12GraphicsCommandList7_WriteBufferImmediate(This,Count,pParams,pModes) \
33838 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
33839
33840
33841#define ID3D12GraphicsCommandList7_SetProtectedResourceSession(This,pProtectedResourceSession) \
33842 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
33843
33844
33845#define ID3D12GraphicsCommandList7_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
33846 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
33847
33848#define ID3D12GraphicsCommandList7_EndRenderPass(This) \
33849 ( (This)->lpVtbl -> EndRenderPass(This) )
33850
33851#define ID3D12GraphicsCommandList7_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
33852 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
33853
33854#define ID3D12GraphicsCommandList7_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
33855 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
33856
33857#define ID3D12GraphicsCommandList7_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
33858 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
33859
33860#define ID3D12GraphicsCommandList7_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
33861 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
33862
33863#define ID3D12GraphicsCommandList7_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
33864 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
33865
33866#define ID3D12GraphicsCommandList7_SetPipelineState1(This,pStateObject) \
33867 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
33868
33869#define ID3D12GraphicsCommandList7_DispatchRays(This,pDesc) \
33870 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
33871
33872
33873#define ID3D12GraphicsCommandList7_RSSetShadingRate(This,baseShadingRate,combiners) \
33874 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
33875
33876#define ID3D12GraphicsCommandList7_RSSetShadingRateImage(This,shadingRateImage) \
33877 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
33878
33879
33880#define ID3D12GraphicsCommandList7_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33881 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33882
33883
33884#define ID3D12GraphicsCommandList7_Barrier(This,NumBarrierGroups,pBarrierGroups) \
33885 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
33886
33887#endif /* COBJMACROS */
33888
33889
33890#endif /* C style interface */
33891
33892
33893
33894
33895#endif /* __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__ */
33896
33897
33898#ifndef __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
33899#define __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
33900
33901/* interface ID3D12GraphicsCommandList8 */
33902/* [unique][local][object][uuid] */
33903
33904
33905EXTERN_C const IID IID_ID3D12GraphicsCommandList8;
33906
33907#if defined(__cplusplus) && !defined(CINTERFACE)
33908
33909 MIDL_INTERFACE("ee936ef9-599d-4d28-938e-23c4ad05ce51")
33910 ID3D12GraphicsCommandList8 : public ID3D12GraphicsCommandList7
33911 {
33912 public:
33913 virtual void STDMETHODCALLTYPE OMSetFrontAndBackStencilRef(
33914 _In_ UINT FrontStencilRef,
33915 _In_ UINT BackStencilRef) = 0;
33916
33917 };
33918
33919
33920#else /* C style interface */
33921
33922 typedef struct ID3D12GraphicsCommandList8Vtbl
33923 {
33924 BEGIN_INTERFACE
33925
33926 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
33927 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
33928 ID3D12GraphicsCommandList8 * This,
33929 REFIID riid,
33930 _COM_Outptr_ void **ppvObject);
33931
33932 DECLSPEC_XFGVIRT(IUnknown, AddRef)
33933 ULONG ( STDMETHODCALLTYPE *AddRef )(
33934 ID3D12GraphicsCommandList8 * This);
33935
33936 DECLSPEC_XFGVIRT(IUnknown, Release)
33937 ULONG ( STDMETHODCALLTYPE *Release )(
33938 ID3D12GraphicsCommandList8 * This);
33939
33940 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
33941 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
33942 ID3D12GraphicsCommandList8 * This,
33943 _In_ REFGUID guid,
33944 _Inout_ UINT *pDataSize,
33945 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
33946
33947 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
33948 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
33949 ID3D12GraphicsCommandList8 * This,
33950 _In_ REFGUID guid,
33951 _In_ UINT DataSize,
33952 _In_reads_bytes_opt_( DataSize ) const void *pData);
33953
33954 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
33955 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
33956 ID3D12GraphicsCommandList8 * This,
33957 _In_ REFGUID guid,
33958 _In_opt_ const IUnknown *pData);
33959
33960 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
33961 HRESULT ( STDMETHODCALLTYPE *SetName )(
33962 ID3D12GraphicsCommandList8 * This,
33963 _In_z_ LPCWSTR Name);
33964
33965 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
33966 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
33967 ID3D12GraphicsCommandList8 * This,
33968 REFIID riid,
33969 _COM_Outptr_opt_ void **ppvDevice);
33970
33971 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
33972 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
33973 ID3D12GraphicsCommandList8 * This);
33974
33975 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
33976 HRESULT ( STDMETHODCALLTYPE *Close )(
33977 ID3D12GraphicsCommandList8 * This);
33978
33979 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
33980 HRESULT ( STDMETHODCALLTYPE *Reset )(
33981 ID3D12GraphicsCommandList8 * This,
33982 _In_ ID3D12CommandAllocator *pAllocator,
33983 _In_opt_ ID3D12PipelineState *pInitialState);
33984
33985 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
33986 void ( STDMETHODCALLTYPE *ClearState )(
33987 ID3D12GraphicsCommandList8 * This,
33988 _In_opt_ ID3D12PipelineState *pPipelineState);
33989
33990 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
33991 void ( STDMETHODCALLTYPE *DrawInstanced )(
33992 ID3D12GraphicsCommandList8 * This,
33993 _In_ UINT VertexCountPerInstance,
33994 _In_ UINT InstanceCount,
33995 _In_ UINT StartVertexLocation,
33996 _In_ UINT StartInstanceLocation);
33997
33998 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
33999 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
34000 ID3D12GraphicsCommandList8 * This,
34001 _In_ UINT IndexCountPerInstance,
34002 _In_ UINT InstanceCount,
34003 _In_ UINT StartIndexLocation,
34004 _In_ INT BaseVertexLocation,
34005 _In_ UINT StartInstanceLocation);
34006
34007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
34008 void ( STDMETHODCALLTYPE *Dispatch )(
34009 ID3D12GraphicsCommandList8 * This,
34010 _In_ UINT ThreadGroupCountX,
34011 _In_ UINT ThreadGroupCountY,
34012 _In_ UINT ThreadGroupCountZ);
34013
34014 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
34015 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
34016 ID3D12GraphicsCommandList8 * This,
34017 _In_ ID3D12Resource *pDstBuffer,
34018 UINT64 DstOffset,
34019 _In_ ID3D12Resource *pSrcBuffer,
34020 UINT64 SrcOffset,
34021 UINT64 NumBytes);
34022
34023 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
34024 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
34025 ID3D12GraphicsCommandList8 * This,
34026 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
34027 UINT DstX,
34028 UINT DstY,
34029 UINT DstZ,
34030 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
34031 _In_opt_ const D3D12_BOX *pSrcBox);
34032
34033 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
34034 void ( STDMETHODCALLTYPE *CopyResource )(
34035 ID3D12GraphicsCommandList8 * This,
34036 _In_ ID3D12Resource *pDstResource,
34037 _In_ ID3D12Resource *pSrcResource);
34038
34039 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
34040 void ( STDMETHODCALLTYPE *CopyTiles )(
34041 ID3D12GraphicsCommandList8 * This,
34042 _In_ ID3D12Resource *pTiledResource,
34043 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
34044 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
34045 _In_ ID3D12Resource *pBuffer,
34046 UINT64 BufferStartOffsetInBytes,
34047 D3D12_TILE_COPY_FLAGS Flags);
34048
34049 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
34050 void ( STDMETHODCALLTYPE *ResolveSubresource )(
34051 ID3D12GraphicsCommandList8 * This,
34052 _In_ ID3D12Resource *pDstResource,
34053 _In_ UINT DstSubresource,
34054 _In_ ID3D12Resource *pSrcResource,
34055 _In_ UINT SrcSubresource,
34056 _In_ DXGI_FORMAT Format);
34057
34058 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
34059 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
34060 ID3D12GraphicsCommandList8 * This,
34061 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
34062
34063 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
34064 void ( STDMETHODCALLTYPE *RSSetViewports )(
34065 ID3D12GraphicsCommandList8 * This,
34066 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
34067 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
34068
34069 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
34070 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
34071 ID3D12GraphicsCommandList8 * This,
34072 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
34073 _In_reads_( NumRects) const D3D12_RECT *pRects);
34074
34075 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
34076 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
34077 ID3D12GraphicsCommandList8 * This,
34078 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
34079
34080 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
34081 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
34082 ID3D12GraphicsCommandList8 * This,
34083 _In_ UINT StencilRef);
34084
34085 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
34086 void ( STDMETHODCALLTYPE *SetPipelineState )(
34087 ID3D12GraphicsCommandList8 * This,
34088 _In_ ID3D12PipelineState *pPipelineState);
34089
34090 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
34091 void ( STDMETHODCALLTYPE *ResourceBarrier )(
34092 ID3D12GraphicsCommandList8 * This,
34093 _In_ UINT NumBarriers,
34094 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
34095
34096 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
34097 void ( STDMETHODCALLTYPE *ExecuteBundle )(
34098 ID3D12GraphicsCommandList8 * This,
34099 _In_ ID3D12GraphicsCommandList *pCommandList);
34100
34101 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
34102 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
34103 ID3D12GraphicsCommandList8 * This,
34104 _In_ UINT NumDescriptorHeaps,
34105 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
34106
34107 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
34108 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
34109 ID3D12GraphicsCommandList8 * This,
34110 _In_opt_ ID3D12RootSignature *pRootSignature);
34111
34112 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
34113 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
34114 ID3D12GraphicsCommandList8 * This,
34115 _In_opt_ ID3D12RootSignature *pRootSignature);
34116
34117 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
34118 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
34119 ID3D12GraphicsCommandList8 * This,
34120 _In_ UINT RootParameterIndex,
34121 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34122
34123 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
34124 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
34125 ID3D12GraphicsCommandList8 * This,
34126 _In_ UINT RootParameterIndex,
34127 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34128
34129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
34130 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
34131 ID3D12GraphicsCommandList8 * This,
34132 _In_ UINT RootParameterIndex,
34133 _In_ UINT SrcData,
34134 _In_ UINT DestOffsetIn32BitValues);
34135
34136 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
34137 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
34138 ID3D12GraphicsCommandList8 * This,
34139 _In_ UINT RootParameterIndex,
34140 _In_ UINT SrcData,
34141 _In_ UINT DestOffsetIn32BitValues);
34142
34143 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
34144 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
34145 ID3D12GraphicsCommandList8 * This,
34146 _In_ UINT RootParameterIndex,
34147 _In_ UINT Num32BitValuesToSet,
34148 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
34149 _In_ UINT DestOffsetIn32BitValues);
34150
34151 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
34152 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
34153 ID3D12GraphicsCommandList8 * This,
34154 _In_ UINT RootParameterIndex,
34155 _In_ UINT Num32BitValuesToSet,
34156 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
34157 _In_ UINT DestOffsetIn32BitValues);
34158
34159 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
34160 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
34161 ID3D12GraphicsCommandList8 * This,
34162 _In_ UINT RootParameterIndex,
34163 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34164
34165 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
34166 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
34167 ID3D12GraphicsCommandList8 * This,
34168 _In_ UINT RootParameterIndex,
34169 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34170
34171 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
34172 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
34173 ID3D12GraphicsCommandList8 * This,
34174 _In_ UINT RootParameterIndex,
34175 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34176
34177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
34178 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
34179 ID3D12GraphicsCommandList8 * This,
34180 _In_ UINT RootParameterIndex,
34181 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34182
34183 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
34184 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
34185 ID3D12GraphicsCommandList8 * This,
34186 _In_ UINT RootParameterIndex,
34187 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34188
34189 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
34190 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
34191 ID3D12GraphicsCommandList8 * This,
34192 _In_ UINT RootParameterIndex,
34193 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34194
34195 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
34196 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
34197 ID3D12GraphicsCommandList8 * This,
34198 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
34199
34200 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
34201 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
34202 ID3D12GraphicsCommandList8 * This,
34203 _In_ UINT StartSlot,
34204 _In_ UINT NumViews,
34205 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
34206
34207 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
34208 void ( STDMETHODCALLTYPE *SOSetTargets )(
34209 ID3D12GraphicsCommandList8 * This,
34210 _In_ UINT StartSlot,
34211 _In_ UINT NumViews,
34212 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
34213
34214 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
34215 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
34216 ID3D12GraphicsCommandList8 * This,
34217 _In_ UINT NumRenderTargetDescriptors,
34218 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
34219 _In_ BOOL RTsSingleHandleToDescriptorRange,
34220 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
34221
34222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
34223 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
34224 ID3D12GraphicsCommandList8 * This,
34225 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
34226 _In_ D3D12_CLEAR_FLAGS ClearFlags,
34227 _In_ FLOAT Depth,
34228 _In_ UINT8 Stencil,
34229 _In_ UINT NumRects,
34230 _In_reads_(NumRects) const D3D12_RECT *pRects);
34231
34232 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
34233 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
34234 ID3D12GraphicsCommandList8 * This,
34235 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
34236 _In_ const FLOAT ColorRGBA[ 4 ],
34237 _In_ UINT NumRects,
34238 _In_reads_(NumRects) const D3D12_RECT *pRects);
34239
34240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
34241 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
34242 ID3D12GraphicsCommandList8 * This,
34243 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
34244 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
34245 _In_ ID3D12Resource *pResource,
34246 _In_ const UINT Values[ 4 ],
34247 _In_ UINT NumRects,
34248 _In_reads_(NumRects) const D3D12_RECT *pRects);
34249
34250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
34251 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
34252 ID3D12GraphicsCommandList8 * This,
34253 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
34254 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
34255 _In_ ID3D12Resource *pResource,
34256 _In_ const FLOAT Values[ 4 ],
34257 _In_ UINT NumRects,
34258 _In_reads_(NumRects) const D3D12_RECT *pRects);
34259
34260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
34261 void ( STDMETHODCALLTYPE *DiscardResource )(
34262 ID3D12GraphicsCommandList8 * This,
34263 _In_ ID3D12Resource *pResource,
34264 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
34265
34266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
34267 void ( STDMETHODCALLTYPE *BeginQuery )(
34268 ID3D12GraphicsCommandList8 * This,
34269 _In_ ID3D12QueryHeap *pQueryHeap,
34270 _In_ D3D12_QUERY_TYPE Type,
34271 _In_ UINT Index);
34272
34273 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
34274 void ( STDMETHODCALLTYPE *EndQuery )(
34275 ID3D12GraphicsCommandList8 * This,
34276 _In_ ID3D12QueryHeap *pQueryHeap,
34277 _In_ D3D12_QUERY_TYPE Type,
34278 _In_ UINT Index);
34279
34280 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
34281 void ( STDMETHODCALLTYPE *ResolveQueryData )(
34282 ID3D12GraphicsCommandList8 * This,
34283 _In_ ID3D12QueryHeap *pQueryHeap,
34284 _In_ D3D12_QUERY_TYPE Type,
34285 _In_ UINT StartIndex,
34286 _In_ UINT NumQueries,
34287 _In_ ID3D12Resource *pDestinationBuffer,
34288 _In_ UINT64 AlignedDestinationBufferOffset);
34289
34290 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
34291 void ( STDMETHODCALLTYPE *SetPredication )(
34292 ID3D12GraphicsCommandList8 * This,
34293 _In_opt_ ID3D12Resource *pBuffer,
34294 _In_ UINT64 AlignedBufferOffset,
34295 _In_ D3D12_PREDICATION_OP Operation);
34296
34297 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
34298 void ( STDMETHODCALLTYPE *SetMarker )(
34299 ID3D12GraphicsCommandList8 * This,
34300 UINT Metadata,
34301 _In_reads_bytes_opt_(Size) const void *pData,
34302 UINT Size);
34303
34304 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
34305 void ( STDMETHODCALLTYPE *BeginEvent )(
34306 ID3D12GraphicsCommandList8 * This,
34307 UINT Metadata,
34308 _In_reads_bytes_opt_(Size) const void *pData,
34309 UINT Size);
34310
34311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
34312 void ( STDMETHODCALLTYPE *EndEvent )(
34313 ID3D12GraphicsCommandList8 * This);
34314
34315 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
34316 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
34317 ID3D12GraphicsCommandList8 * This,
34318 _In_ ID3D12CommandSignature *pCommandSignature,
34319 _In_ UINT MaxCommandCount,
34320 _In_ ID3D12Resource *pArgumentBuffer,
34321 _In_ UINT64 ArgumentBufferOffset,
34322 _In_opt_ ID3D12Resource *pCountBuffer,
34323 _In_ UINT64 CountBufferOffset);
34324
34325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
34326 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
34327 ID3D12GraphicsCommandList8 * This,
34328 _In_ ID3D12Resource *pDstBuffer,
34329 UINT64 DstOffset,
34330 _In_ ID3D12Resource *pSrcBuffer,
34331 UINT64 SrcOffset,
34332 UINT Dependencies,
34333 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
34334 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
34335
34336 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
34337 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
34338 ID3D12GraphicsCommandList8 * This,
34339 _In_ ID3D12Resource *pDstBuffer,
34340 UINT64 DstOffset,
34341 _In_ ID3D12Resource *pSrcBuffer,
34342 UINT64 SrcOffset,
34343 UINT Dependencies,
34344 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
34345 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
34346
34347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
34348 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
34349 ID3D12GraphicsCommandList8 * This,
34350 _In_ FLOAT Min,
34351 _In_ FLOAT Max);
34352
34353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
34354 void ( STDMETHODCALLTYPE *SetSamplePositions )(
34355 ID3D12GraphicsCommandList8 * This,
34356 _In_ UINT NumSamplesPerPixel,
34357 _In_ UINT NumPixels,
34358 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
34359
34360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
34361 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
34362 ID3D12GraphicsCommandList8 * This,
34363 _In_ ID3D12Resource *pDstResource,
34364 _In_ UINT DstSubresource,
34365 _In_ UINT DstX,
34366 _In_ UINT DstY,
34367 _In_ ID3D12Resource *pSrcResource,
34368 _In_ UINT SrcSubresource,
34369 _In_opt_ D3D12_RECT *pSrcRect,
34370 _In_ DXGI_FORMAT Format,
34371 _In_ D3D12_RESOLVE_MODE ResolveMode);
34372
34373 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
34374 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
34375 ID3D12GraphicsCommandList8 * This,
34376 _In_ UINT Mask);
34377
34378 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
34379 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
34380 ID3D12GraphicsCommandList8 * This,
34381 UINT Count,
34382 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
34383 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
34384
34385 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
34386 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
34387 ID3D12GraphicsCommandList8 * This,
34388 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
34389
34390 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
34391 void ( STDMETHODCALLTYPE *BeginRenderPass )(
34392 ID3D12GraphicsCommandList8 * This,
34393 _In_ UINT NumRenderTargets,
34394 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
34395 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
34396 D3D12_RENDER_PASS_FLAGS Flags);
34397
34398 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
34399 void ( STDMETHODCALLTYPE *EndRenderPass )(
34400 ID3D12GraphicsCommandList8 * This);
34401
34402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
34403 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
34404 ID3D12GraphicsCommandList8 * This,
34405 _In_ ID3D12MetaCommand *pMetaCommand,
34406 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
34407 _In_ SIZE_T InitializationParametersDataSizeInBytes);
34408
34409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
34410 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
34411 ID3D12GraphicsCommandList8 * This,
34412 _In_ ID3D12MetaCommand *pMetaCommand,
34413 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
34414 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
34415
34416 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
34417 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
34418 ID3D12GraphicsCommandList8 * This,
34419 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
34420 _In_ UINT NumPostbuildInfoDescs,
34421 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
34422
34423 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
34424 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
34425 ID3D12GraphicsCommandList8 * This,
34426 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
34427 _In_ UINT NumSourceAccelerationStructures,
34428 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
34429
34430 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
34431 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
34432 ID3D12GraphicsCommandList8 * This,
34433 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
34434 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
34435 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
34436
34437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
34438 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
34439 ID3D12GraphicsCommandList8 * This,
34440 _In_ ID3D12StateObject *pStateObject);
34441
34442 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
34443 void ( STDMETHODCALLTYPE *DispatchRays )(
34444 ID3D12GraphicsCommandList8 * This,
34445 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
34446
34447 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
34448 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
34449 ID3D12GraphicsCommandList8 * This,
34450 _In_ D3D12_SHADING_RATE baseShadingRate,
34451 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
34452
34453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
34454 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
34455 ID3D12GraphicsCommandList8 * This,
34456 _In_opt_ ID3D12Resource *shadingRateImage);
34457
34458 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
34459 void ( STDMETHODCALLTYPE *DispatchMesh )(
34460 ID3D12GraphicsCommandList8 * This,
34461 _In_ UINT ThreadGroupCountX,
34462 _In_ UINT ThreadGroupCountY,
34463 _In_ UINT ThreadGroupCountZ);
34464
34465 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
34466 void ( STDMETHODCALLTYPE *Barrier )(
34467 ID3D12GraphicsCommandList8 * This,
34468 UINT32 NumBarrierGroups,
34469 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
34470
34471 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
34472 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
34473 ID3D12GraphicsCommandList8 * This,
34474 _In_ UINT FrontStencilRef,
34475 _In_ UINT BackStencilRef);
34476
34477 END_INTERFACE
34478 } ID3D12GraphicsCommandList8Vtbl;
34479
34480 interface ID3D12GraphicsCommandList8
34481 {
34482 CONST_VTBL struct ID3D12GraphicsCommandList8Vtbl *lpVtbl;
34483 };
34484
34485
34486
34487#ifdef COBJMACROS
34488
34489
34490#define ID3D12GraphicsCommandList8_QueryInterface(This,riid,ppvObject) \
34491 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
34492
34493#define ID3D12GraphicsCommandList8_AddRef(This) \
34494 ( (This)->lpVtbl -> AddRef(This) )
34495
34496#define ID3D12GraphicsCommandList8_Release(This) \
34497 ( (This)->lpVtbl -> Release(This) )
34498
34499
34500#define ID3D12GraphicsCommandList8_GetPrivateData(This,guid,pDataSize,pData) \
34501 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
34502
34503#define ID3D12GraphicsCommandList8_SetPrivateData(This,guid,DataSize,pData) \
34504 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
34505
34506#define ID3D12GraphicsCommandList8_SetPrivateDataInterface(This,guid,pData) \
34507 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
34508
34509#define ID3D12GraphicsCommandList8_SetName(This,Name) \
34510 ( (This)->lpVtbl -> SetName(This,Name) )
34511
34512
34513#define ID3D12GraphicsCommandList8_GetDevice(This,riid,ppvDevice) \
34514 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
34515
34516
34517#define ID3D12GraphicsCommandList8_GetType(This) \
34518 ( (This)->lpVtbl -> GetType(This) )
34519
34520
34521#define ID3D12GraphicsCommandList8_Close(This) \
34522 ( (This)->lpVtbl -> Close(This) )
34523
34524#define ID3D12GraphicsCommandList8_Reset(This,pAllocator,pInitialState) \
34525 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
34526
34527#define ID3D12GraphicsCommandList8_ClearState(This,pPipelineState) \
34528 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
34529
34530#define ID3D12GraphicsCommandList8_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
34531 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
34532
34533#define ID3D12GraphicsCommandList8_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
34534 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
34535
34536#define ID3D12GraphicsCommandList8_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
34537 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
34538
34539#define ID3D12GraphicsCommandList8_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
34540 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
34541
34542#define ID3D12GraphicsCommandList8_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
34543 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
34544
34545#define ID3D12GraphicsCommandList8_CopyResource(This,pDstResource,pSrcResource) \
34546 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
34547
34548#define ID3D12GraphicsCommandList8_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
34549 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
34550
34551#define ID3D12GraphicsCommandList8_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
34552 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
34553
34554#define ID3D12GraphicsCommandList8_IASetPrimitiveTopology(This,PrimitiveTopology) \
34555 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
34556
34557#define ID3D12GraphicsCommandList8_RSSetViewports(This,NumViewports,pViewports) \
34558 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
34559
34560#define ID3D12GraphicsCommandList8_RSSetScissorRects(This,NumRects,pRects) \
34561 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
34562
34563#define ID3D12GraphicsCommandList8_OMSetBlendFactor(This,BlendFactor) \
34564 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
34565
34566#define ID3D12GraphicsCommandList8_OMSetStencilRef(This,StencilRef) \
34567 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
34568
34569#define ID3D12GraphicsCommandList8_SetPipelineState(This,pPipelineState) \
34570 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
34571
34572#define ID3D12GraphicsCommandList8_ResourceBarrier(This,NumBarriers,pBarriers) \
34573 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
34574
34575#define ID3D12GraphicsCommandList8_ExecuteBundle(This,pCommandList) \
34576 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
34577
34578#define ID3D12GraphicsCommandList8_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
34579 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
34580
34581#define ID3D12GraphicsCommandList8_SetComputeRootSignature(This,pRootSignature) \
34582 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
34583
34584#define ID3D12GraphicsCommandList8_SetGraphicsRootSignature(This,pRootSignature) \
34585 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
34586
34587#define ID3D12GraphicsCommandList8_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
34588 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
34589
34590#define ID3D12GraphicsCommandList8_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
34591 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
34592
34593#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
34594 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
34595
34596#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
34597 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
34598
34599#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
34600 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
34601
34602#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
34603 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
34604
34605#define ID3D12GraphicsCommandList8_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
34606 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
34607
34608#define ID3D12GraphicsCommandList8_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
34609 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
34610
34611#define ID3D12GraphicsCommandList8_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
34612 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
34613
34614#define ID3D12GraphicsCommandList8_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
34615 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
34616
34617#define ID3D12GraphicsCommandList8_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
34618 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
34619
34620#define ID3D12GraphicsCommandList8_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
34621 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
34622
34623#define ID3D12GraphicsCommandList8_IASetIndexBuffer(This,pView) \
34624 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
34625
34626#define ID3D12GraphicsCommandList8_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
34627 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
34628
34629#define ID3D12GraphicsCommandList8_SOSetTargets(This,StartSlot,NumViews,pViews) \
34630 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
34631
34632#define ID3D12GraphicsCommandList8_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
34633 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
34634
34635#define ID3D12GraphicsCommandList8_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
34636 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
34637
34638#define ID3D12GraphicsCommandList8_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
34639 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
34640
34641#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
34642 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
34643
34644#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
34645 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
34646
34647#define ID3D12GraphicsCommandList8_DiscardResource(This,pResource,pRegion) \
34648 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
34649
34650#define ID3D12GraphicsCommandList8_BeginQuery(This,pQueryHeap,Type,Index) \
34651 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
34652
34653#define ID3D12GraphicsCommandList8_EndQuery(This,pQueryHeap,Type,Index) \
34654 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
34655
34656#define ID3D12GraphicsCommandList8_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
34657 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
34658
34659#define ID3D12GraphicsCommandList8_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
34660 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
34661
34662#define ID3D12GraphicsCommandList8_SetMarker(This,Metadata,pData,Size) \
34663 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
34664
34665#define ID3D12GraphicsCommandList8_BeginEvent(This,Metadata,pData,Size) \
34666 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
34667
34668#define ID3D12GraphicsCommandList8_EndEvent(This) \
34669 ( (This)->lpVtbl -> EndEvent(This) )
34670
34671#define ID3D12GraphicsCommandList8_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
34672 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
34673
34674
34675#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
34676 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
34677
34678#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
34679 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
34680
34681#define ID3D12GraphicsCommandList8_OMSetDepthBounds(This,Min,Max) \
34682 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
34683
34684#define ID3D12GraphicsCommandList8_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
34685 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
34686
34687#define ID3D12GraphicsCommandList8_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
34688 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
34689
34690#define ID3D12GraphicsCommandList8_SetViewInstanceMask(This,Mask) \
34691 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
34692
34693
34694#define ID3D12GraphicsCommandList8_WriteBufferImmediate(This,Count,pParams,pModes) \
34695 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
34696
34697
34698#define ID3D12GraphicsCommandList8_SetProtectedResourceSession(This,pProtectedResourceSession) \
34699 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
34700
34701
34702#define ID3D12GraphicsCommandList8_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
34703 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
34704
34705#define ID3D12GraphicsCommandList8_EndRenderPass(This) \
34706 ( (This)->lpVtbl -> EndRenderPass(This) )
34707
34708#define ID3D12GraphicsCommandList8_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
34709 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
34710
34711#define ID3D12GraphicsCommandList8_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
34712 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
34713
34714#define ID3D12GraphicsCommandList8_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
34715 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
34716
34717#define ID3D12GraphicsCommandList8_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
34718 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
34719
34720#define ID3D12GraphicsCommandList8_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
34721 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
34722
34723#define ID3D12GraphicsCommandList8_SetPipelineState1(This,pStateObject) \
34724 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
34725
34726#define ID3D12GraphicsCommandList8_DispatchRays(This,pDesc) \
34727 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
34728
34729
34730#define ID3D12GraphicsCommandList8_RSSetShadingRate(This,baseShadingRate,combiners) \
34731 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
34732
34733#define ID3D12GraphicsCommandList8_RSSetShadingRateImage(This,shadingRateImage) \
34734 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
34735
34736
34737#define ID3D12GraphicsCommandList8_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
34738 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
34739
34740
34741#define ID3D12GraphicsCommandList8_Barrier(This,NumBarrierGroups,pBarrierGroups) \
34742 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
34743
34744
34745#define ID3D12GraphicsCommandList8_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
34746 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
34747
34748#endif /* COBJMACROS */
34749
34750
34751#endif /* C style interface */
34752
34753
34754
34755
34756#endif /* __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__ */
34757
34758
34759#ifndef __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
34760#define __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
34761
34762/* interface ID3D12GraphicsCommandList9 */
34763/* [unique][local][object][uuid] */
34764
34765
34766EXTERN_C const IID IID_ID3D12GraphicsCommandList9;
34767
34768#if defined(__cplusplus) && !defined(CINTERFACE)
34769
34770 MIDL_INTERFACE("34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1")
34771 ID3D12GraphicsCommandList9 : public ID3D12GraphicsCommandList8
34772 {
34773 public:
34774 virtual void STDMETHODCALLTYPE RSSetDepthBias(
34775 _In_ FLOAT DepthBias,
34776 _In_ FLOAT DepthBiasClamp,
34777 _In_ FLOAT SlopeScaledDepthBias) = 0;
34778
34779 virtual void STDMETHODCALLTYPE IASetIndexBufferStripCutValue(
34780 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) = 0;
34781
34782 };
34783
34784
34785#else /* C style interface */
34786
34787 typedef struct ID3D12GraphicsCommandList9Vtbl
34788 {
34789 BEGIN_INTERFACE
34790
34791 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
34792 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
34793 ID3D12GraphicsCommandList9 * This,
34794 REFIID riid,
34795 _COM_Outptr_ void **ppvObject);
34796
34797 DECLSPEC_XFGVIRT(IUnknown, AddRef)
34798 ULONG ( STDMETHODCALLTYPE *AddRef )(
34799 ID3D12GraphicsCommandList9 * This);
34800
34801 DECLSPEC_XFGVIRT(IUnknown, Release)
34802 ULONG ( STDMETHODCALLTYPE *Release )(
34803 ID3D12GraphicsCommandList9 * This);
34804
34805 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
34806 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
34807 ID3D12GraphicsCommandList9 * This,
34808 _In_ REFGUID guid,
34809 _Inout_ UINT *pDataSize,
34810 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
34811
34812 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
34813 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
34814 ID3D12GraphicsCommandList9 * This,
34815 _In_ REFGUID guid,
34816 _In_ UINT DataSize,
34817 _In_reads_bytes_opt_( DataSize ) const void *pData);
34818
34819 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
34820 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
34821 ID3D12GraphicsCommandList9 * This,
34822 _In_ REFGUID guid,
34823 _In_opt_ const IUnknown *pData);
34824
34825 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
34826 HRESULT ( STDMETHODCALLTYPE *SetName )(
34827 ID3D12GraphicsCommandList9 * This,
34828 _In_z_ LPCWSTR Name);
34829
34830 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
34831 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
34832 ID3D12GraphicsCommandList9 * This,
34833 REFIID riid,
34834 _COM_Outptr_opt_ void **ppvDevice);
34835
34836 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
34837 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
34838 ID3D12GraphicsCommandList9 * This);
34839
34840 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
34841 HRESULT ( STDMETHODCALLTYPE *Close )(
34842 ID3D12GraphicsCommandList9 * This);
34843
34844 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
34845 HRESULT ( STDMETHODCALLTYPE *Reset )(
34846 ID3D12GraphicsCommandList9 * This,
34847 _In_ ID3D12CommandAllocator *pAllocator,
34848 _In_opt_ ID3D12PipelineState *pInitialState);
34849
34850 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
34851 void ( STDMETHODCALLTYPE *ClearState )(
34852 ID3D12GraphicsCommandList9 * This,
34853 _In_opt_ ID3D12PipelineState *pPipelineState);
34854
34855 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
34856 void ( STDMETHODCALLTYPE *DrawInstanced )(
34857 ID3D12GraphicsCommandList9 * This,
34858 _In_ UINT VertexCountPerInstance,
34859 _In_ UINT InstanceCount,
34860 _In_ UINT StartVertexLocation,
34861 _In_ UINT StartInstanceLocation);
34862
34863 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
34864 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
34865 ID3D12GraphicsCommandList9 * This,
34866 _In_ UINT IndexCountPerInstance,
34867 _In_ UINT InstanceCount,
34868 _In_ UINT StartIndexLocation,
34869 _In_ INT BaseVertexLocation,
34870 _In_ UINT StartInstanceLocation);
34871
34872 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
34873 void ( STDMETHODCALLTYPE *Dispatch )(
34874 ID3D12GraphicsCommandList9 * This,
34875 _In_ UINT ThreadGroupCountX,
34876 _In_ UINT ThreadGroupCountY,
34877 _In_ UINT ThreadGroupCountZ);
34878
34879 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
34880 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
34881 ID3D12GraphicsCommandList9 * This,
34882 _In_ ID3D12Resource *pDstBuffer,
34883 UINT64 DstOffset,
34884 _In_ ID3D12Resource *pSrcBuffer,
34885 UINT64 SrcOffset,
34886 UINT64 NumBytes);
34887
34888 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
34889 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
34890 ID3D12GraphicsCommandList9 * This,
34891 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
34892 UINT DstX,
34893 UINT DstY,
34894 UINT DstZ,
34895 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
34896 _In_opt_ const D3D12_BOX *pSrcBox);
34897
34898 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
34899 void ( STDMETHODCALLTYPE *CopyResource )(
34900 ID3D12GraphicsCommandList9 * This,
34901 _In_ ID3D12Resource *pDstResource,
34902 _In_ ID3D12Resource *pSrcResource);
34903
34904 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
34905 void ( STDMETHODCALLTYPE *CopyTiles )(
34906 ID3D12GraphicsCommandList9 * This,
34907 _In_ ID3D12Resource *pTiledResource,
34908 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
34909 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
34910 _In_ ID3D12Resource *pBuffer,
34911 UINT64 BufferStartOffsetInBytes,
34912 D3D12_TILE_COPY_FLAGS Flags);
34913
34914 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
34915 void ( STDMETHODCALLTYPE *ResolveSubresource )(
34916 ID3D12GraphicsCommandList9 * This,
34917 _In_ ID3D12Resource *pDstResource,
34918 _In_ UINT DstSubresource,
34919 _In_ ID3D12Resource *pSrcResource,
34920 _In_ UINT SrcSubresource,
34921 _In_ DXGI_FORMAT Format);
34922
34923 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
34924 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
34925 ID3D12GraphicsCommandList9 * This,
34926 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
34927
34928 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
34929 void ( STDMETHODCALLTYPE *RSSetViewports )(
34930 ID3D12GraphicsCommandList9 * This,
34931 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
34932 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
34933
34934 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
34935 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
34936 ID3D12GraphicsCommandList9 * This,
34937 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
34938 _In_reads_( NumRects) const D3D12_RECT *pRects);
34939
34940 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
34941 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
34942 ID3D12GraphicsCommandList9 * This,
34943 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
34944
34945 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
34946 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
34947 ID3D12GraphicsCommandList9 * This,
34948 _In_ UINT StencilRef);
34949
34950 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
34951 void ( STDMETHODCALLTYPE *SetPipelineState )(
34952 ID3D12GraphicsCommandList9 * This,
34953 _In_ ID3D12PipelineState *pPipelineState);
34954
34955 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
34956 void ( STDMETHODCALLTYPE *ResourceBarrier )(
34957 ID3D12GraphicsCommandList9 * This,
34958 _In_ UINT NumBarriers,
34959 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
34960
34961 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
34962 void ( STDMETHODCALLTYPE *ExecuteBundle )(
34963 ID3D12GraphicsCommandList9 * This,
34964 _In_ ID3D12GraphicsCommandList *pCommandList);
34965
34966 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
34967 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
34968 ID3D12GraphicsCommandList9 * This,
34969 _In_ UINT NumDescriptorHeaps,
34970 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
34971
34972 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
34973 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
34974 ID3D12GraphicsCommandList9 * This,
34975 _In_opt_ ID3D12RootSignature *pRootSignature);
34976
34977 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
34978 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
34979 ID3D12GraphicsCommandList9 * This,
34980 _In_opt_ ID3D12RootSignature *pRootSignature);
34981
34982 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
34983 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
34984 ID3D12GraphicsCommandList9 * This,
34985 _In_ UINT RootParameterIndex,
34986 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34987
34988 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
34989 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
34990 ID3D12GraphicsCommandList9 * This,
34991 _In_ UINT RootParameterIndex,
34992 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34993
34994 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
34995 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
34996 ID3D12GraphicsCommandList9 * This,
34997 _In_ UINT RootParameterIndex,
34998 _In_ UINT SrcData,
34999 _In_ UINT DestOffsetIn32BitValues);
35000
35001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
35002 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
35003 ID3D12GraphicsCommandList9 * This,
35004 _In_ UINT RootParameterIndex,
35005 _In_ UINT SrcData,
35006 _In_ UINT DestOffsetIn32BitValues);
35007
35008 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
35009 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
35010 ID3D12GraphicsCommandList9 * This,
35011 _In_ UINT RootParameterIndex,
35012 _In_ UINT Num32BitValuesToSet,
35013 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35014 _In_ UINT DestOffsetIn32BitValues);
35015
35016 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
35017 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
35018 ID3D12GraphicsCommandList9 * This,
35019 _In_ UINT RootParameterIndex,
35020 _In_ UINT Num32BitValuesToSet,
35021 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35022 _In_ UINT DestOffsetIn32BitValues);
35023
35024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
35025 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
35026 ID3D12GraphicsCommandList9 * This,
35027 _In_ UINT RootParameterIndex,
35028 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35029
35030 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
35031 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
35032 ID3D12GraphicsCommandList9 * This,
35033 _In_ UINT RootParameterIndex,
35034 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35035
35036 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
35037 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
35038 ID3D12GraphicsCommandList9 * This,
35039 _In_ UINT RootParameterIndex,
35040 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35041
35042 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
35043 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
35044 ID3D12GraphicsCommandList9 * This,
35045 _In_ UINT RootParameterIndex,
35046 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35047
35048 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
35049 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
35050 ID3D12GraphicsCommandList9 * This,
35051 _In_ UINT RootParameterIndex,
35052 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35053
35054 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
35055 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
35056 ID3D12GraphicsCommandList9 * This,
35057 _In_ UINT RootParameterIndex,
35058 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35059
35060 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
35061 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
35062 ID3D12GraphicsCommandList9 * This,
35063 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
35064
35065 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
35066 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
35067 ID3D12GraphicsCommandList9 * This,
35068 _In_ UINT StartSlot,
35069 _In_ UINT NumViews,
35070 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
35071
35072 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
35073 void ( STDMETHODCALLTYPE *SOSetTargets )(
35074 ID3D12GraphicsCommandList9 * This,
35075 _In_ UINT StartSlot,
35076 _In_ UINT NumViews,
35077 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
35078
35079 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
35080 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
35081 ID3D12GraphicsCommandList9 * This,
35082 _In_ UINT NumRenderTargetDescriptors,
35083 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
35084 _In_ BOOL RTsSingleHandleToDescriptorRange,
35085 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
35086
35087 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
35088 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
35089 ID3D12GraphicsCommandList9 * This,
35090 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
35091 _In_ D3D12_CLEAR_FLAGS ClearFlags,
35092 _In_ FLOAT Depth,
35093 _In_ UINT8 Stencil,
35094 _In_ UINT NumRects,
35095 _In_reads_(NumRects) const D3D12_RECT *pRects);
35096
35097 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
35098 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
35099 ID3D12GraphicsCommandList9 * This,
35100 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
35101 _In_ const FLOAT ColorRGBA[ 4 ],
35102 _In_ UINT NumRects,
35103 _In_reads_(NumRects) const D3D12_RECT *pRects);
35104
35105 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
35106 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
35107 ID3D12GraphicsCommandList9 * This,
35108 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35109 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35110 _In_ ID3D12Resource *pResource,
35111 _In_ const UINT Values[ 4 ],
35112 _In_ UINT NumRects,
35113 _In_reads_(NumRects) const D3D12_RECT *pRects);
35114
35115 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
35116 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
35117 ID3D12GraphicsCommandList9 * This,
35118 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35119 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35120 _In_ ID3D12Resource *pResource,
35121 _In_ const FLOAT Values[ 4 ],
35122 _In_ UINT NumRects,
35123 _In_reads_(NumRects) const D3D12_RECT *pRects);
35124
35125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
35126 void ( STDMETHODCALLTYPE *DiscardResource )(
35127 ID3D12GraphicsCommandList9 * This,
35128 _In_ ID3D12Resource *pResource,
35129 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
35130
35131 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
35132 void ( STDMETHODCALLTYPE *BeginQuery )(
35133 ID3D12GraphicsCommandList9 * This,
35134 _In_ ID3D12QueryHeap *pQueryHeap,
35135 _In_ D3D12_QUERY_TYPE Type,
35136 _In_ UINT Index);
35137
35138 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
35139 void ( STDMETHODCALLTYPE *EndQuery )(
35140 ID3D12GraphicsCommandList9 * This,
35141 _In_ ID3D12QueryHeap *pQueryHeap,
35142 _In_ D3D12_QUERY_TYPE Type,
35143 _In_ UINT Index);
35144
35145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
35146 void ( STDMETHODCALLTYPE *ResolveQueryData )(
35147 ID3D12GraphicsCommandList9 * This,
35148 _In_ ID3D12QueryHeap *pQueryHeap,
35149 _In_ D3D12_QUERY_TYPE Type,
35150 _In_ UINT StartIndex,
35151 _In_ UINT NumQueries,
35152 _In_ ID3D12Resource *pDestinationBuffer,
35153 _In_ UINT64 AlignedDestinationBufferOffset);
35154
35155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
35156 void ( STDMETHODCALLTYPE *SetPredication )(
35157 ID3D12GraphicsCommandList9 * This,
35158 _In_opt_ ID3D12Resource *pBuffer,
35159 _In_ UINT64 AlignedBufferOffset,
35160 _In_ D3D12_PREDICATION_OP Operation);
35161
35162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
35163 void ( STDMETHODCALLTYPE *SetMarker )(
35164 ID3D12GraphicsCommandList9 * This,
35165 UINT Metadata,
35166 _In_reads_bytes_opt_(Size) const void *pData,
35167 UINT Size);
35168
35169 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
35170 void ( STDMETHODCALLTYPE *BeginEvent )(
35171 ID3D12GraphicsCommandList9 * This,
35172 UINT Metadata,
35173 _In_reads_bytes_opt_(Size) const void *pData,
35174 UINT Size);
35175
35176 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
35177 void ( STDMETHODCALLTYPE *EndEvent )(
35178 ID3D12GraphicsCommandList9 * This);
35179
35180 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
35181 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
35182 ID3D12GraphicsCommandList9 * This,
35183 _In_ ID3D12CommandSignature *pCommandSignature,
35184 _In_ UINT MaxCommandCount,
35185 _In_ ID3D12Resource *pArgumentBuffer,
35186 _In_ UINT64 ArgumentBufferOffset,
35187 _In_opt_ ID3D12Resource *pCountBuffer,
35188 _In_ UINT64 CountBufferOffset);
35189
35190 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
35191 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
35192 ID3D12GraphicsCommandList9 * This,
35193 _In_ ID3D12Resource *pDstBuffer,
35194 UINT64 DstOffset,
35195 _In_ ID3D12Resource *pSrcBuffer,
35196 UINT64 SrcOffset,
35197 UINT Dependencies,
35198 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
35199 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
35200
35201 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
35202 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
35203 ID3D12GraphicsCommandList9 * This,
35204 _In_ ID3D12Resource *pDstBuffer,
35205 UINT64 DstOffset,
35206 _In_ ID3D12Resource *pSrcBuffer,
35207 UINT64 SrcOffset,
35208 UINT Dependencies,
35209 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
35210 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
35211
35212 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
35213 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
35214 ID3D12GraphicsCommandList9 * This,
35215 _In_ FLOAT Min,
35216 _In_ FLOAT Max);
35217
35218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
35219 void ( STDMETHODCALLTYPE *SetSamplePositions )(
35220 ID3D12GraphicsCommandList9 * This,
35221 _In_ UINT NumSamplesPerPixel,
35222 _In_ UINT NumPixels,
35223 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
35224
35225 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
35226 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
35227 ID3D12GraphicsCommandList9 * This,
35228 _In_ ID3D12Resource *pDstResource,
35229 _In_ UINT DstSubresource,
35230 _In_ UINT DstX,
35231 _In_ UINT DstY,
35232 _In_ ID3D12Resource *pSrcResource,
35233 _In_ UINT SrcSubresource,
35234 _In_opt_ D3D12_RECT *pSrcRect,
35235 _In_ DXGI_FORMAT Format,
35236 _In_ D3D12_RESOLVE_MODE ResolveMode);
35237
35238 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
35239 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
35240 ID3D12GraphicsCommandList9 * This,
35241 _In_ UINT Mask);
35242
35243 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
35244 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
35245 ID3D12GraphicsCommandList9 * This,
35246 UINT Count,
35247 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
35248 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
35249
35250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
35251 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
35252 ID3D12GraphicsCommandList9 * This,
35253 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
35254
35255 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
35256 void ( STDMETHODCALLTYPE *BeginRenderPass )(
35257 ID3D12GraphicsCommandList9 * This,
35258 _In_ UINT NumRenderTargets,
35259 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
35260 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
35261 D3D12_RENDER_PASS_FLAGS Flags);
35262
35263 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
35264 void ( STDMETHODCALLTYPE *EndRenderPass )(
35265 ID3D12GraphicsCommandList9 * This);
35266
35267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
35268 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
35269 ID3D12GraphicsCommandList9 * This,
35270 _In_ ID3D12MetaCommand *pMetaCommand,
35271 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
35272 _In_ SIZE_T InitializationParametersDataSizeInBytes);
35273
35274 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
35275 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
35276 ID3D12GraphicsCommandList9 * This,
35277 _In_ ID3D12MetaCommand *pMetaCommand,
35278 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
35279 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
35280
35281 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
35282 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
35283 ID3D12GraphicsCommandList9 * This,
35284 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
35285 _In_ UINT NumPostbuildInfoDescs,
35286 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
35287
35288 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
35289 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
35290 ID3D12GraphicsCommandList9 * This,
35291 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
35292 _In_ UINT NumSourceAccelerationStructures,
35293 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
35294
35295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
35296 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
35297 ID3D12GraphicsCommandList9 * This,
35298 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
35299 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
35300 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
35301
35302 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
35303 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
35304 ID3D12GraphicsCommandList9 * This,
35305 _In_ ID3D12StateObject *pStateObject);
35306
35307 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
35308 void ( STDMETHODCALLTYPE *DispatchRays )(
35309 ID3D12GraphicsCommandList9 * This,
35310 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
35311
35312 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
35313 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
35314 ID3D12GraphicsCommandList9 * This,
35315 _In_ D3D12_SHADING_RATE baseShadingRate,
35316 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
35317
35318 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
35319 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
35320 ID3D12GraphicsCommandList9 * This,
35321 _In_opt_ ID3D12Resource *shadingRateImage);
35322
35323 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
35324 void ( STDMETHODCALLTYPE *DispatchMesh )(
35325 ID3D12GraphicsCommandList9 * This,
35326 _In_ UINT ThreadGroupCountX,
35327 _In_ UINT ThreadGroupCountY,
35328 _In_ UINT ThreadGroupCountZ);
35329
35330 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
35331 void ( STDMETHODCALLTYPE *Barrier )(
35332 ID3D12GraphicsCommandList9 * This,
35333 UINT32 NumBarrierGroups,
35334 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
35335
35336 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
35337 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
35338 ID3D12GraphicsCommandList9 * This,
35339 _In_ UINT FrontStencilRef,
35340 _In_ UINT BackStencilRef);
35341
35342 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
35343 void ( STDMETHODCALLTYPE *RSSetDepthBias )(
35344 ID3D12GraphicsCommandList9 * This,
35345 _In_ FLOAT DepthBias,
35346 _In_ FLOAT DepthBiasClamp,
35347 _In_ FLOAT SlopeScaledDepthBias);
35348
35349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
35350 void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
35351 ID3D12GraphicsCommandList9 * This,
35352 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
35353
35354 END_INTERFACE
35355 } ID3D12GraphicsCommandList9Vtbl;
35356
35357 interface ID3D12GraphicsCommandList9
35358 {
35359 CONST_VTBL struct ID3D12GraphicsCommandList9Vtbl *lpVtbl;
35360 };
35361
35362
35363
35364#ifdef COBJMACROS
35365
35366
35367#define ID3D12GraphicsCommandList9_QueryInterface(This,riid,ppvObject) \
35368 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
35369
35370#define ID3D12GraphicsCommandList9_AddRef(This) \
35371 ( (This)->lpVtbl -> AddRef(This) )
35372
35373#define ID3D12GraphicsCommandList9_Release(This) \
35374 ( (This)->lpVtbl -> Release(This) )
35375
35376
35377#define ID3D12GraphicsCommandList9_GetPrivateData(This,guid,pDataSize,pData) \
35378 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
35379
35380#define ID3D12GraphicsCommandList9_SetPrivateData(This,guid,DataSize,pData) \
35381 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
35382
35383#define ID3D12GraphicsCommandList9_SetPrivateDataInterface(This,guid,pData) \
35384 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
35385
35386#define ID3D12GraphicsCommandList9_SetName(This,Name) \
35387 ( (This)->lpVtbl -> SetName(This,Name) )
35388
35389
35390#define ID3D12GraphicsCommandList9_GetDevice(This,riid,ppvDevice) \
35391 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
35392
35393
35394#define ID3D12GraphicsCommandList9_GetType(This) \
35395 ( (This)->lpVtbl -> GetType(This) )
35396
35397
35398#define ID3D12GraphicsCommandList9_Close(This) \
35399 ( (This)->lpVtbl -> Close(This) )
35400
35401#define ID3D12GraphicsCommandList9_Reset(This,pAllocator,pInitialState) \
35402 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
35403
35404#define ID3D12GraphicsCommandList9_ClearState(This,pPipelineState) \
35405 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
35406
35407#define ID3D12GraphicsCommandList9_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
35408 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
35409
35410#define ID3D12GraphicsCommandList9_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
35411 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
35412
35413#define ID3D12GraphicsCommandList9_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
35414 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
35415
35416#define ID3D12GraphicsCommandList9_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
35417 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
35418
35419#define ID3D12GraphicsCommandList9_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
35420 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
35421
35422#define ID3D12GraphicsCommandList9_CopyResource(This,pDstResource,pSrcResource) \
35423 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
35424
35425#define ID3D12GraphicsCommandList9_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
35426 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
35427
35428#define ID3D12GraphicsCommandList9_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
35429 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
35430
35431#define ID3D12GraphicsCommandList9_IASetPrimitiveTopology(This,PrimitiveTopology) \
35432 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
35433
35434#define ID3D12GraphicsCommandList9_RSSetViewports(This,NumViewports,pViewports) \
35435 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
35436
35437#define ID3D12GraphicsCommandList9_RSSetScissorRects(This,NumRects,pRects) \
35438 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
35439
35440#define ID3D12GraphicsCommandList9_OMSetBlendFactor(This,BlendFactor) \
35441 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
35442
35443#define ID3D12GraphicsCommandList9_OMSetStencilRef(This,StencilRef) \
35444 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
35445
35446#define ID3D12GraphicsCommandList9_SetPipelineState(This,pPipelineState) \
35447 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
35448
35449#define ID3D12GraphicsCommandList9_ResourceBarrier(This,NumBarriers,pBarriers) \
35450 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
35451
35452#define ID3D12GraphicsCommandList9_ExecuteBundle(This,pCommandList) \
35453 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
35454
35455#define ID3D12GraphicsCommandList9_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
35456 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
35457
35458#define ID3D12GraphicsCommandList9_SetComputeRootSignature(This,pRootSignature) \
35459 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
35460
35461#define ID3D12GraphicsCommandList9_SetGraphicsRootSignature(This,pRootSignature) \
35462 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
35463
35464#define ID3D12GraphicsCommandList9_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
35465 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
35466
35467#define ID3D12GraphicsCommandList9_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
35468 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
35469
35470#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
35471 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
35472
35473#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
35474 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
35475
35476#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
35477 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
35478
35479#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
35480 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
35481
35482#define ID3D12GraphicsCommandList9_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
35483 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
35484
35485#define ID3D12GraphicsCommandList9_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
35486 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
35487
35488#define ID3D12GraphicsCommandList9_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
35489 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
35490
35491#define ID3D12GraphicsCommandList9_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
35492 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
35493
35494#define ID3D12GraphicsCommandList9_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
35495 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
35496
35497#define ID3D12GraphicsCommandList9_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
35498 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
35499
35500#define ID3D12GraphicsCommandList9_IASetIndexBuffer(This,pView) \
35501 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
35502
35503#define ID3D12GraphicsCommandList9_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
35504 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
35505
35506#define ID3D12GraphicsCommandList9_SOSetTargets(This,StartSlot,NumViews,pViews) \
35507 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
35508
35509#define ID3D12GraphicsCommandList9_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
35510 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
35511
35512#define ID3D12GraphicsCommandList9_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
35513 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
35514
35515#define ID3D12GraphicsCommandList9_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
35516 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
35517
35518#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
35519 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
35520
35521#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
35522 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
35523
35524#define ID3D12GraphicsCommandList9_DiscardResource(This,pResource,pRegion) \
35525 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
35526
35527#define ID3D12GraphicsCommandList9_BeginQuery(This,pQueryHeap,Type,Index) \
35528 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
35529
35530#define ID3D12GraphicsCommandList9_EndQuery(This,pQueryHeap,Type,Index) \
35531 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
35532
35533#define ID3D12GraphicsCommandList9_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
35534 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
35535
35536#define ID3D12GraphicsCommandList9_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
35537 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
35538
35539#define ID3D12GraphicsCommandList9_SetMarker(This,Metadata,pData,Size) \
35540 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
35541
35542#define ID3D12GraphicsCommandList9_BeginEvent(This,Metadata,pData,Size) \
35543 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
35544
35545#define ID3D12GraphicsCommandList9_EndEvent(This) \
35546 ( (This)->lpVtbl -> EndEvent(This) )
35547
35548#define ID3D12GraphicsCommandList9_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
35549 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
35550
35551
35552#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
35553 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
35554
35555#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
35556 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
35557
35558#define ID3D12GraphicsCommandList9_OMSetDepthBounds(This,Min,Max) \
35559 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
35560
35561#define ID3D12GraphicsCommandList9_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
35562 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
35563
35564#define ID3D12GraphicsCommandList9_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
35565 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
35566
35567#define ID3D12GraphicsCommandList9_SetViewInstanceMask(This,Mask) \
35568 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
35569
35570
35571#define ID3D12GraphicsCommandList9_WriteBufferImmediate(This,Count,pParams,pModes) \
35572 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
35573
35574
35575#define ID3D12GraphicsCommandList9_SetProtectedResourceSession(This,pProtectedResourceSession) \
35576 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
35577
35578
35579#define ID3D12GraphicsCommandList9_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
35580 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
35581
35582#define ID3D12GraphicsCommandList9_EndRenderPass(This) \
35583 ( (This)->lpVtbl -> EndRenderPass(This) )
35584
35585#define ID3D12GraphicsCommandList9_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
35586 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
35587
35588#define ID3D12GraphicsCommandList9_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
35589 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
35590
35591#define ID3D12GraphicsCommandList9_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
35592 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
35593
35594#define ID3D12GraphicsCommandList9_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
35595 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
35596
35597#define ID3D12GraphicsCommandList9_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
35598 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
35599
35600#define ID3D12GraphicsCommandList9_SetPipelineState1(This,pStateObject) \
35601 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
35602
35603#define ID3D12GraphicsCommandList9_DispatchRays(This,pDesc) \
35604 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
35605
35606
35607#define ID3D12GraphicsCommandList9_RSSetShadingRate(This,baseShadingRate,combiners) \
35608 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
35609
35610#define ID3D12GraphicsCommandList9_RSSetShadingRateImage(This,shadingRateImage) \
35611 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
35612
35613
35614#define ID3D12GraphicsCommandList9_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
35615 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
35616
35617
35618#define ID3D12GraphicsCommandList9_Barrier(This,NumBarrierGroups,pBarrierGroups) \
35619 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
35620
35621
35622#define ID3D12GraphicsCommandList9_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
35623 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
35624
35625
35626#define ID3D12GraphicsCommandList9_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
35627 ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
35628
35629#define ID3D12GraphicsCommandList9_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
35630 ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
35631
35632#endif /* COBJMACROS */
35633
35634
35635#endif /* C style interface */
35636
35637
35638
35639
35640#endif /* __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__ */
35641
35642
35643#ifndef __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
35644#define __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
35645
35646/* interface ID3D12GraphicsCommandList10 */
35647/* [unique][local][object][uuid] */
35648
35649
35650EXTERN_C const IID IID_ID3D12GraphicsCommandList10;
35651
35652#if defined(__cplusplus) && !defined(CINTERFACE)
35653
35654 MIDL_INTERFACE("7013c015-d161-4b63-a08c-238552dd8acc")
35655 ID3D12GraphicsCommandList10 : public ID3D12GraphicsCommandList9
35656 {
35657 public:
35658 virtual void STDMETHODCALLTYPE SetProgram(
35659 _In_ const D3D12_SET_PROGRAM_DESC *pDesc) = 0;
35660
35661 virtual void STDMETHODCALLTYPE DispatchGraph(
35662 _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc) = 0;
35663
35664 };
35665
35666
35667#else /* C style interface */
35668
35669 typedef struct ID3D12GraphicsCommandList10Vtbl
35670 {
35671 BEGIN_INTERFACE
35672
35673 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
35674 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
35675 ID3D12GraphicsCommandList10 * This,
35676 REFIID riid,
35677 _COM_Outptr_ void **ppvObject);
35678
35679 DECLSPEC_XFGVIRT(IUnknown, AddRef)
35680 ULONG ( STDMETHODCALLTYPE *AddRef )(
35681 ID3D12GraphicsCommandList10 * This);
35682
35683 DECLSPEC_XFGVIRT(IUnknown, Release)
35684 ULONG ( STDMETHODCALLTYPE *Release )(
35685 ID3D12GraphicsCommandList10 * This);
35686
35687 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
35688 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
35689 ID3D12GraphicsCommandList10 * This,
35690 _In_ REFGUID guid,
35691 _Inout_ UINT *pDataSize,
35692 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
35693
35694 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
35695 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
35696 ID3D12GraphicsCommandList10 * This,
35697 _In_ REFGUID guid,
35698 _In_ UINT DataSize,
35699 _In_reads_bytes_opt_( DataSize ) const void *pData);
35700
35701 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
35702 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
35703 ID3D12GraphicsCommandList10 * This,
35704 _In_ REFGUID guid,
35705 _In_opt_ const IUnknown *pData);
35706
35707 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
35708 HRESULT ( STDMETHODCALLTYPE *SetName )(
35709 ID3D12GraphicsCommandList10 * This,
35710 _In_z_ LPCWSTR Name);
35711
35712 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
35713 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
35714 ID3D12GraphicsCommandList10 * This,
35715 REFIID riid,
35716 _COM_Outptr_opt_ void **ppvDevice);
35717
35718 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
35719 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
35720 ID3D12GraphicsCommandList10 * This);
35721
35722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
35723 HRESULT ( STDMETHODCALLTYPE *Close )(
35724 ID3D12GraphicsCommandList10 * This);
35725
35726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
35727 HRESULT ( STDMETHODCALLTYPE *Reset )(
35728 ID3D12GraphicsCommandList10 * This,
35729 _In_ ID3D12CommandAllocator *pAllocator,
35730 _In_opt_ ID3D12PipelineState *pInitialState);
35731
35732 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
35733 void ( STDMETHODCALLTYPE *ClearState )(
35734 ID3D12GraphicsCommandList10 * This,
35735 _In_opt_ ID3D12PipelineState *pPipelineState);
35736
35737 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
35738 void ( STDMETHODCALLTYPE *DrawInstanced )(
35739 ID3D12GraphicsCommandList10 * This,
35740 _In_ UINT VertexCountPerInstance,
35741 _In_ UINT InstanceCount,
35742 _In_ UINT StartVertexLocation,
35743 _In_ UINT StartInstanceLocation);
35744
35745 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
35746 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
35747 ID3D12GraphicsCommandList10 * This,
35748 _In_ UINT IndexCountPerInstance,
35749 _In_ UINT InstanceCount,
35750 _In_ UINT StartIndexLocation,
35751 _In_ INT BaseVertexLocation,
35752 _In_ UINT StartInstanceLocation);
35753
35754 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
35755 void ( STDMETHODCALLTYPE *Dispatch )(
35756 ID3D12GraphicsCommandList10 * This,
35757 _In_ UINT ThreadGroupCountX,
35758 _In_ UINT ThreadGroupCountY,
35759 _In_ UINT ThreadGroupCountZ);
35760
35761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
35762 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
35763 ID3D12GraphicsCommandList10 * This,
35764 _In_ ID3D12Resource *pDstBuffer,
35765 UINT64 DstOffset,
35766 _In_ ID3D12Resource *pSrcBuffer,
35767 UINT64 SrcOffset,
35768 UINT64 NumBytes);
35769
35770 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
35771 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
35772 ID3D12GraphicsCommandList10 * This,
35773 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
35774 UINT DstX,
35775 UINT DstY,
35776 UINT DstZ,
35777 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
35778 _In_opt_ const D3D12_BOX *pSrcBox);
35779
35780 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
35781 void ( STDMETHODCALLTYPE *CopyResource )(
35782 ID3D12GraphicsCommandList10 * This,
35783 _In_ ID3D12Resource *pDstResource,
35784 _In_ ID3D12Resource *pSrcResource);
35785
35786 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
35787 void ( STDMETHODCALLTYPE *CopyTiles )(
35788 ID3D12GraphicsCommandList10 * This,
35789 _In_ ID3D12Resource *pTiledResource,
35790 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
35791 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
35792 _In_ ID3D12Resource *pBuffer,
35793 UINT64 BufferStartOffsetInBytes,
35794 D3D12_TILE_COPY_FLAGS Flags);
35795
35796 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
35797 void ( STDMETHODCALLTYPE *ResolveSubresource )(
35798 ID3D12GraphicsCommandList10 * This,
35799 _In_ ID3D12Resource *pDstResource,
35800 _In_ UINT DstSubresource,
35801 _In_ ID3D12Resource *pSrcResource,
35802 _In_ UINT SrcSubresource,
35803 _In_ DXGI_FORMAT Format);
35804
35805 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
35806 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
35807 ID3D12GraphicsCommandList10 * This,
35808 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
35809
35810 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
35811 void ( STDMETHODCALLTYPE *RSSetViewports )(
35812 ID3D12GraphicsCommandList10 * This,
35813 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
35814 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
35815
35816 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
35817 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
35818 ID3D12GraphicsCommandList10 * This,
35819 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
35820 _In_reads_( NumRects) const D3D12_RECT *pRects);
35821
35822 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
35823 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
35824 ID3D12GraphicsCommandList10 * This,
35825 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
35826
35827 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
35828 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
35829 ID3D12GraphicsCommandList10 * This,
35830 _In_ UINT StencilRef);
35831
35832 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
35833 void ( STDMETHODCALLTYPE *SetPipelineState )(
35834 ID3D12GraphicsCommandList10 * This,
35835 _In_ ID3D12PipelineState *pPipelineState);
35836
35837 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
35838 void ( STDMETHODCALLTYPE *ResourceBarrier )(
35839 ID3D12GraphicsCommandList10 * This,
35840 _In_ UINT NumBarriers,
35841 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
35842
35843 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
35844 void ( STDMETHODCALLTYPE *ExecuteBundle )(
35845 ID3D12GraphicsCommandList10 * This,
35846 _In_ ID3D12GraphicsCommandList *pCommandList);
35847
35848 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
35849 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
35850 ID3D12GraphicsCommandList10 * This,
35851 _In_ UINT NumDescriptorHeaps,
35852 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
35853
35854 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
35855 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
35856 ID3D12GraphicsCommandList10 * This,
35857 _In_opt_ ID3D12RootSignature *pRootSignature);
35858
35859 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
35860 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
35861 ID3D12GraphicsCommandList10 * This,
35862 _In_opt_ ID3D12RootSignature *pRootSignature);
35863
35864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
35865 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
35866 ID3D12GraphicsCommandList10 * This,
35867 _In_ UINT RootParameterIndex,
35868 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
35869
35870 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
35871 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
35872 ID3D12GraphicsCommandList10 * This,
35873 _In_ UINT RootParameterIndex,
35874 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
35875
35876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
35877 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
35878 ID3D12GraphicsCommandList10 * This,
35879 _In_ UINT RootParameterIndex,
35880 _In_ UINT SrcData,
35881 _In_ UINT DestOffsetIn32BitValues);
35882
35883 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
35884 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
35885 ID3D12GraphicsCommandList10 * This,
35886 _In_ UINT RootParameterIndex,
35887 _In_ UINT SrcData,
35888 _In_ UINT DestOffsetIn32BitValues);
35889
35890 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
35891 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
35892 ID3D12GraphicsCommandList10 * This,
35893 _In_ UINT RootParameterIndex,
35894 _In_ UINT Num32BitValuesToSet,
35895 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35896 _In_ UINT DestOffsetIn32BitValues);
35897
35898 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
35899 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
35900 ID3D12GraphicsCommandList10 * This,
35901 _In_ UINT RootParameterIndex,
35902 _In_ UINT Num32BitValuesToSet,
35903 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35904 _In_ UINT DestOffsetIn32BitValues);
35905
35906 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
35907 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
35908 ID3D12GraphicsCommandList10 * This,
35909 _In_ UINT RootParameterIndex,
35910 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35911
35912 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
35913 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
35914 ID3D12GraphicsCommandList10 * This,
35915 _In_ UINT RootParameterIndex,
35916 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35917
35918 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
35919 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
35920 ID3D12GraphicsCommandList10 * This,
35921 _In_ UINT RootParameterIndex,
35922 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35923
35924 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
35925 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
35926 ID3D12GraphicsCommandList10 * This,
35927 _In_ UINT RootParameterIndex,
35928 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35929
35930 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
35931 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
35932 ID3D12GraphicsCommandList10 * This,
35933 _In_ UINT RootParameterIndex,
35934 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35935
35936 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
35937 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
35938 ID3D12GraphicsCommandList10 * This,
35939 _In_ UINT RootParameterIndex,
35940 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35941
35942 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
35943 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
35944 ID3D12GraphicsCommandList10 * This,
35945 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
35946
35947 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
35948 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
35949 ID3D12GraphicsCommandList10 * This,
35950 _In_ UINT StartSlot,
35951 _In_ UINT NumViews,
35952 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
35953
35954 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
35955 void ( STDMETHODCALLTYPE *SOSetTargets )(
35956 ID3D12GraphicsCommandList10 * This,
35957 _In_ UINT StartSlot,
35958 _In_ UINT NumViews,
35959 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
35960
35961 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
35962 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
35963 ID3D12GraphicsCommandList10 * This,
35964 _In_ UINT NumRenderTargetDescriptors,
35965 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
35966 _In_ BOOL RTsSingleHandleToDescriptorRange,
35967 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
35968
35969 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
35970 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
35971 ID3D12GraphicsCommandList10 * This,
35972 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
35973 _In_ D3D12_CLEAR_FLAGS ClearFlags,
35974 _In_ FLOAT Depth,
35975 _In_ UINT8 Stencil,
35976 _In_ UINT NumRects,
35977 _In_reads_(NumRects) const D3D12_RECT *pRects);
35978
35979 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
35980 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
35981 ID3D12GraphicsCommandList10 * This,
35982 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
35983 _In_ const FLOAT ColorRGBA[ 4 ],
35984 _In_ UINT NumRects,
35985 _In_reads_(NumRects) const D3D12_RECT *pRects);
35986
35987 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
35988 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
35989 ID3D12GraphicsCommandList10 * This,
35990 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35991 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35992 _In_ ID3D12Resource *pResource,
35993 _In_ const UINT Values[ 4 ],
35994 _In_ UINT NumRects,
35995 _In_reads_(NumRects) const D3D12_RECT *pRects);
35996
35997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
35998 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
35999 ID3D12GraphicsCommandList10 * This,
36000 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
36001 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
36002 _In_ ID3D12Resource *pResource,
36003 _In_ const FLOAT Values[ 4 ],
36004 _In_ UINT NumRects,
36005 _In_reads_(NumRects) const D3D12_RECT *pRects);
36006
36007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
36008 void ( STDMETHODCALLTYPE *DiscardResource )(
36009 ID3D12GraphicsCommandList10 * This,
36010 _In_ ID3D12Resource *pResource,
36011 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
36012
36013 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
36014 void ( STDMETHODCALLTYPE *BeginQuery )(
36015 ID3D12GraphicsCommandList10 * This,
36016 _In_ ID3D12QueryHeap *pQueryHeap,
36017 _In_ D3D12_QUERY_TYPE Type,
36018 _In_ UINT Index);
36019
36020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
36021 void ( STDMETHODCALLTYPE *EndQuery )(
36022 ID3D12GraphicsCommandList10 * This,
36023 _In_ ID3D12QueryHeap *pQueryHeap,
36024 _In_ D3D12_QUERY_TYPE Type,
36025 _In_ UINT Index);
36026
36027 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
36028 void ( STDMETHODCALLTYPE *ResolveQueryData )(
36029 ID3D12GraphicsCommandList10 * This,
36030 _In_ ID3D12QueryHeap *pQueryHeap,
36031 _In_ D3D12_QUERY_TYPE Type,
36032 _In_ UINT StartIndex,
36033 _In_ UINT NumQueries,
36034 _In_ ID3D12Resource *pDestinationBuffer,
36035 _In_ UINT64 AlignedDestinationBufferOffset);
36036
36037 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
36038 void ( STDMETHODCALLTYPE *SetPredication )(
36039 ID3D12GraphicsCommandList10 * This,
36040 _In_opt_ ID3D12Resource *pBuffer,
36041 _In_ UINT64 AlignedBufferOffset,
36042 _In_ D3D12_PREDICATION_OP Operation);
36043
36044 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
36045 void ( STDMETHODCALLTYPE *SetMarker )(
36046 ID3D12GraphicsCommandList10 * This,
36047 UINT Metadata,
36048 _In_reads_bytes_opt_(Size) const void *pData,
36049 UINT Size);
36050
36051 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
36052 void ( STDMETHODCALLTYPE *BeginEvent )(
36053 ID3D12GraphicsCommandList10 * This,
36054 UINT Metadata,
36055 _In_reads_bytes_opt_(Size) const void *pData,
36056 UINT Size);
36057
36058 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
36059 void ( STDMETHODCALLTYPE *EndEvent )(
36060 ID3D12GraphicsCommandList10 * This);
36061
36062 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
36063 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
36064 ID3D12GraphicsCommandList10 * This,
36065 _In_ ID3D12CommandSignature *pCommandSignature,
36066 _In_ UINT MaxCommandCount,
36067 _In_ ID3D12Resource *pArgumentBuffer,
36068 _In_ UINT64 ArgumentBufferOffset,
36069 _In_opt_ ID3D12Resource *pCountBuffer,
36070 _In_ UINT64 CountBufferOffset);
36071
36072 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
36073 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
36074 ID3D12GraphicsCommandList10 * This,
36075 _In_ ID3D12Resource *pDstBuffer,
36076 UINT64 DstOffset,
36077 _In_ ID3D12Resource *pSrcBuffer,
36078 UINT64 SrcOffset,
36079 UINT Dependencies,
36080 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
36081 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
36082
36083 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
36084 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
36085 ID3D12GraphicsCommandList10 * This,
36086 _In_ ID3D12Resource *pDstBuffer,
36087 UINT64 DstOffset,
36088 _In_ ID3D12Resource *pSrcBuffer,
36089 UINT64 SrcOffset,
36090 UINT Dependencies,
36091 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
36092 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
36093
36094 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
36095 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
36096 ID3D12GraphicsCommandList10 * This,
36097 _In_ FLOAT Min,
36098 _In_ FLOAT Max);
36099
36100 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
36101 void ( STDMETHODCALLTYPE *SetSamplePositions )(
36102 ID3D12GraphicsCommandList10 * This,
36103 _In_ UINT NumSamplesPerPixel,
36104 _In_ UINT NumPixels,
36105 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
36106
36107 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
36108 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
36109 ID3D12GraphicsCommandList10 * This,
36110 _In_ ID3D12Resource *pDstResource,
36111 _In_ UINT DstSubresource,
36112 _In_ UINT DstX,
36113 _In_ UINT DstY,
36114 _In_ ID3D12Resource *pSrcResource,
36115 _In_ UINT SrcSubresource,
36116 _In_opt_ D3D12_RECT *pSrcRect,
36117 _In_ DXGI_FORMAT Format,
36118 _In_ D3D12_RESOLVE_MODE ResolveMode);
36119
36120 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
36121 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
36122 ID3D12GraphicsCommandList10 * This,
36123 _In_ UINT Mask);
36124
36125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
36126 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
36127 ID3D12GraphicsCommandList10 * This,
36128 UINT Count,
36129 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
36130 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
36131
36132 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
36133 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
36134 ID3D12GraphicsCommandList10 * This,
36135 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
36136
36137 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
36138 void ( STDMETHODCALLTYPE *BeginRenderPass )(
36139 ID3D12GraphicsCommandList10 * This,
36140 _In_ UINT NumRenderTargets,
36141 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
36142 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
36143 D3D12_RENDER_PASS_FLAGS Flags);
36144
36145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
36146 void ( STDMETHODCALLTYPE *EndRenderPass )(
36147 ID3D12GraphicsCommandList10 * This);
36148
36149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
36150 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
36151 ID3D12GraphicsCommandList10 * This,
36152 _In_ ID3D12MetaCommand *pMetaCommand,
36153 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
36154 _In_ SIZE_T InitializationParametersDataSizeInBytes);
36155
36156 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
36157 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
36158 ID3D12GraphicsCommandList10 * This,
36159 _In_ ID3D12MetaCommand *pMetaCommand,
36160 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
36161 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
36162
36163 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
36164 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
36165 ID3D12GraphicsCommandList10 * This,
36166 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
36167 _In_ UINT NumPostbuildInfoDescs,
36168 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
36169
36170 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
36171 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
36172 ID3D12GraphicsCommandList10 * This,
36173 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
36174 _In_ UINT NumSourceAccelerationStructures,
36175 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
36176
36177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
36178 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
36179 ID3D12GraphicsCommandList10 * This,
36180 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
36181 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
36182 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
36183
36184 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
36185 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
36186 ID3D12GraphicsCommandList10 * This,
36187 _In_ ID3D12StateObject *pStateObject);
36188
36189 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
36190 void ( STDMETHODCALLTYPE *DispatchRays )(
36191 ID3D12GraphicsCommandList10 * This,
36192 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
36193
36194 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
36195 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
36196 ID3D12GraphicsCommandList10 * This,
36197 _In_ D3D12_SHADING_RATE baseShadingRate,
36198 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
36199
36200 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
36201 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
36202 ID3D12GraphicsCommandList10 * This,
36203 _In_opt_ ID3D12Resource *shadingRateImage);
36204
36205 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
36206 void ( STDMETHODCALLTYPE *DispatchMesh )(
36207 ID3D12GraphicsCommandList10 * This,
36208 _In_ UINT ThreadGroupCountX,
36209 _In_ UINT ThreadGroupCountY,
36210 _In_ UINT ThreadGroupCountZ);
36211
36212 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
36213 void ( STDMETHODCALLTYPE *Barrier )(
36214 ID3D12GraphicsCommandList10 * This,
36215 UINT32 NumBarrierGroups,
36216 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
36217
36218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
36219 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
36220 ID3D12GraphicsCommandList10 * This,
36221 _In_ UINT FrontStencilRef,
36222 _In_ UINT BackStencilRef);
36223
36224 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
36225 void ( STDMETHODCALLTYPE *RSSetDepthBias )(
36226 ID3D12GraphicsCommandList10 * This,
36227 _In_ FLOAT DepthBias,
36228 _In_ FLOAT DepthBiasClamp,
36229 _In_ FLOAT SlopeScaledDepthBias);
36230
36231 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
36232 void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
36233 ID3D12GraphicsCommandList10 * This,
36234 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
36235
36236 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, SetProgram)
36237 void ( STDMETHODCALLTYPE *SetProgram )(
36238 ID3D12GraphicsCommandList10 * This,
36239 _In_ const D3D12_SET_PROGRAM_DESC *pDesc);
36240
36241 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, DispatchGraph)
36242 void ( STDMETHODCALLTYPE *DispatchGraph )(
36243 ID3D12GraphicsCommandList10 * This,
36244 _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc);
36245
36246 END_INTERFACE
36247 } ID3D12GraphicsCommandList10Vtbl;
36248
36249 interface ID3D12GraphicsCommandList10
36250 {
36251 CONST_VTBL struct ID3D12GraphicsCommandList10Vtbl *lpVtbl;
36252 };
36253
36254
36255
36256#ifdef COBJMACROS
36257
36258
36259#define ID3D12GraphicsCommandList10_QueryInterface(This,riid,ppvObject) \
36260 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36261
36262#define ID3D12GraphicsCommandList10_AddRef(This) \
36263 ( (This)->lpVtbl -> AddRef(This) )
36264
36265#define ID3D12GraphicsCommandList10_Release(This) \
36266 ( (This)->lpVtbl -> Release(This) )
36267
36268
36269#define ID3D12GraphicsCommandList10_GetPrivateData(This,guid,pDataSize,pData) \
36270 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
36271
36272#define ID3D12GraphicsCommandList10_SetPrivateData(This,guid,DataSize,pData) \
36273 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
36274
36275#define ID3D12GraphicsCommandList10_SetPrivateDataInterface(This,guid,pData) \
36276 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
36277
36278#define ID3D12GraphicsCommandList10_SetName(This,Name) \
36279 ( (This)->lpVtbl -> SetName(This,Name) )
36280
36281
36282#define ID3D12GraphicsCommandList10_GetDevice(This,riid,ppvDevice) \
36283 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
36284
36285
36286#define ID3D12GraphicsCommandList10_GetType(This) \
36287 ( (This)->lpVtbl -> GetType(This) )
36288
36289
36290#define ID3D12GraphicsCommandList10_Close(This) \
36291 ( (This)->lpVtbl -> Close(This) )
36292
36293#define ID3D12GraphicsCommandList10_Reset(This,pAllocator,pInitialState) \
36294 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
36295
36296#define ID3D12GraphicsCommandList10_ClearState(This,pPipelineState) \
36297 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
36298
36299#define ID3D12GraphicsCommandList10_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
36300 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
36301
36302#define ID3D12GraphicsCommandList10_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
36303 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
36304
36305#define ID3D12GraphicsCommandList10_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
36306 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
36307
36308#define ID3D12GraphicsCommandList10_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
36309 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
36310
36311#define ID3D12GraphicsCommandList10_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
36312 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
36313
36314#define ID3D12GraphicsCommandList10_CopyResource(This,pDstResource,pSrcResource) \
36315 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
36316
36317#define ID3D12GraphicsCommandList10_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
36318 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
36319
36320#define ID3D12GraphicsCommandList10_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
36321 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
36322
36323#define ID3D12GraphicsCommandList10_IASetPrimitiveTopology(This,PrimitiveTopology) \
36324 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
36325
36326#define ID3D12GraphicsCommandList10_RSSetViewports(This,NumViewports,pViewports) \
36327 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
36328
36329#define ID3D12GraphicsCommandList10_RSSetScissorRects(This,NumRects,pRects) \
36330 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
36331
36332#define ID3D12GraphicsCommandList10_OMSetBlendFactor(This,BlendFactor) \
36333 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
36334
36335#define ID3D12GraphicsCommandList10_OMSetStencilRef(This,StencilRef) \
36336 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
36337
36338#define ID3D12GraphicsCommandList10_SetPipelineState(This,pPipelineState) \
36339 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
36340
36341#define ID3D12GraphicsCommandList10_ResourceBarrier(This,NumBarriers,pBarriers) \
36342 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
36343
36344#define ID3D12GraphicsCommandList10_ExecuteBundle(This,pCommandList) \
36345 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
36346
36347#define ID3D12GraphicsCommandList10_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
36348 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
36349
36350#define ID3D12GraphicsCommandList10_SetComputeRootSignature(This,pRootSignature) \
36351 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
36352
36353#define ID3D12GraphicsCommandList10_SetGraphicsRootSignature(This,pRootSignature) \
36354 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
36355
36356#define ID3D12GraphicsCommandList10_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
36357 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
36358
36359#define ID3D12GraphicsCommandList10_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
36360 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
36361
36362#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
36363 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
36364
36365#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
36366 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
36367
36368#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
36369 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
36370
36371#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
36372 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
36373
36374#define ID3D12GraphicsCommandList10_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
36375 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
36376
36377#define ID3D12GraphicsCommandList10_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
36378 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
36379
36380#define ID3D12GraphicsCommandList10_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
36381 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
36382
36383#define ID3D12GraphicsCommandList10_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
36384 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
36385
36386#define ID3D12GraphicsCommandList10_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
36387 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
36388
36389#define ID3D12GraphicsCommandList10_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
36390 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
36391
36392#define ID3D12GraphicsCommandList10_IASetIndexBuffer(This,pView) \
36393 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
36394
36395#define ID3D12GraphicsCommandList10_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
36396 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
36397
36398#define ID3D12GraphicsCommandList10_SOSetTargets(This,StartSlot,NumViews,pViews) \
36399 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
36400
36401#define ID3D12GraphicsCommandList10_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
36402 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
36403
36404#define ID3D12GraphicsCommandList10_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
36405 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
36406
36407#define ID3D12GraphicsCommandList10_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
36408 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
36409
36410#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
36411 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
36412
36413#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
36414 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
36415
36416#define ID3D12GraphicsCommandList10_DiscardResource(This,pResource,pRegion) \
36417 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
36418
36419#define ID3D12GraphicsCommandList10_BeginQuery(This,pQueryHeap,Type,Index) \
36420 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
36421
36422#define ID3D12GraphicsCommandList10_EndQuery(This,pQueryHeap,Type,Index) \
36423 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
36424
36425#define ID3D12GraphicsCommandList10_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
36426 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
36427
36428#define ID3D12GraphicsCommandList10_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
36429 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
36430
36431#define ID3D12GraphicsCommandList10_SetMarker(This,Metadata,pData,Size) \
36432 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
36433
36434#define ID3D12GraphicsCommandList10_BeginEvent(This,Metadata,pData,Size) \
36435 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
36436
36437#define ID3D12GraphicsCommandList10_EndEvent(This) \
36438 ( (This)->lpVtbl -> EndEvent(This) )
36439
36440#define ID3D12GraphicsCommandList10_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
36441 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
36442
36443
36444#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
36445 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
36446
36447#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
36448 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
36449
36450#define ID3D12GraphicsCommandList10_OMSetDepthBounds(This,Min,Max) \
36451 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
36452
36453#define ID3D12GraphicsCommandList10_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
36454 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
36455
36456#define ID3D12GraphicsCommandList10_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
36457 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
36458
36459#define ID3D12GraphicsCommandList10_SetViewInstanceMask(This,Mask) \
36460 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
36461
36462
36463#define ID3D12GraphicsCommandList10_WriteBufferImmediate(This,Count,pParams,pModes) \
36464 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
36465
36466
36467#define ID3D12GraphicsCommandList10_SetProtectedResourceSession(This,pProtectedResourceSession) \
36468 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
36469
36470
36471#define ID3D12GraphicsCommandList10_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
36472 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
36473
36474#define ID3D12GraphicsCommandList10_EndRenderPass(This) \
36475 ( (This)->lpVtbl -> EndRenderPass(This) )
36476
36477#define ID3D12GraphicsCommandList10_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
36478 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
36479
36480#define ID3D12GraphicsCommandList10_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
36481 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
36482
36483#define ID3D12GraphicsCommandList10_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
36484 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
36485
36486#define ID3D12GraphicsCommandList10_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
36487 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
36488
36489#define ID3D12GraphicsCommandList10_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
36490 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
36491
36492#define ID3D12GraphicsCommandList10_SetPipelineState1(This,pStateObject) \
36493 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
36494
36495#define ID3D12GraphicsCommandList10_DispatchRays(This,pDesc) \
36496 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
36497
36498
36499#define ID3D12GraphicsCommandList10_RSSetShadingRate(This,baseShadingRate,combiners) \
36500 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
36501
36502#define ID3D12GraphicsCommandList10_RSSetShadingRateImage(This,shadingRateImage) \
36503 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
36504
36505
36506#define ID3D12GraphicsCommandList10_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
36507 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
36508
36509
36510#define ID3D12GraphicsCommandList10_Barrier(This,NumBarrierGroups,pBarrierGroups) \
36511 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
36512
36513
36514#define ID3D12GraphicsCommandList10_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
36515 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
36516
36517
36518#define ID3D12GraphicsCommandList10_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
36519 ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
36520
36521#define ID3D12GraphicsCommandList10_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
36522 ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
36523
36524
36525#define ID3D12GraphicsCommandList10_SetProgram(This,pDesc) \
36526 ( (This)->lpVtbl -> SetProgram(This,pDesc) )
36527
36528#define ID3D12GraphicsCommandList10_DispatchGraph(This,pDesc) \
36529 ( (This)->lpVtbl -> DispatchGraph(This,pDesc) )
36530
36531#endif /* COBJMACROS */
36532
36533
36534#endif /* C style interface */
36535
36536
36537
36538
36539#endif /* __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__ */
36540
36541
36542#ifndef __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
36543#define __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
36544
36545/* interface ID3D12DSRDeviceFactory */
36546/* [unique][local][object][uuid] */
36547
36548
36549EXTERN_C const IID IID_ID3D12DSRDeviceFactory;
36550
36551#if defined(__cplusplus) && !defined(CINTERFACE)
36552
36553 MIDL_INTERFACE("f343d1a0-afe3-439f-b13d-cd87a43b70ca")
36554 ID3D12DSRDeviceFactory : public IUnknown
36555 {
36556 public:
36557 virtual HRESULT STDMETHODCALLTYPE CreateDSRDevice(
36558 ID3D12Device *pD3D12Device,
36559 UINT NodeMask,
36560 REFIID riid,
36561 _COM_Outptr_ void **ppvDSRDevice) = 0;
36562
36563 };
36564
36565
36566#else /* C style interface */
36567
36568 typedef struct ID3D12DSRDeviceFactoryVtbl
36569 {
36570 BEGIN_INTERFACE
36571
36572 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
36573 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
36574 ID3D12DSRDeviceFactory * This,
36575 REFIID riid,
36576 _COM_Outptr_ void **ppvObject);
36577
36578 DECLSPEC_XFGVIRT(IUnknown, AddRef)
36579 ULONG ( STDMETHODCALLTYPE *AddRef )(
36580 ID3D12DSRDeviceFactory * This);
36581
36582 DECLSPEC_XFGVIRT(IUnknown, Release)
36583 ULONG ( STDMETHODCALLTYPE *Release )(
36584 ID3D12DSRDeviceFactory * This);
36585
36586 DECLSPEC_XFGVIRT(ID3D12DSRDeviceFactory, CreateDSRDevice)
36587 HRESULT ( STDMETHODCALLTYPE *CreateDSRDevice )(
36588 ID3D12DSRDeviceFactory * This,
36589 ID3D12Device *pD3D12Device,
36590 UINT NodeMask,
36591 REFIID riid,
36592 _COM_Outptr_ void **ppvDSRDevice);
36593
36594 END_INTERFACE
36595 } ID3D12DSRDeviceFactoryVtbl;
36596
36597 interface ID3D12DSRDeviceFactory
36598 {
36599 CONST_VTBL struct ID3D12DSRDeviceFactoryVtbl *lpVtbl;
36600 };
36601
36602
36603
36604#ifdef COBJMACROS
36605
36606
36607#define ID3D12DSRDeviceFactory_QueryInterface(This,riid,ppvObject) \
36608 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36609
36610#define ID3D12DSRDeviceFactory_AddRef(This) \
36611 ( (This)->lpVtbl -> AddRef(This) )
36612
36613#define ID3D12DSRDeviceFactory_Release(This) \
36614 ( (This)->lpVtbl -> Release(This) )
36615
36616
36617#define ID3D12DSRDeviceFactory_CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) \
36618 ( (This)->lpVtbl -> CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) )
36619
36620#endif /* COBJMACROS */
36621
36622
36623#endif /* C style interface */
36624
36625
36626
36627
36628#endif /* __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__ */
36629
36630
36631#ifndef __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
36632#define __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
36633
36634/* interface ID3D12GBVDiagnostics */
36635/* [unique][local][object][uuid] */
36636
36637
36638EXTERN_C const IID IID_ID3D12GBVDiagnostics;
36639
36640#if defined(__cplusplus) && !defined(CINTERFACE)
36641
36642 MIDL_INTERFACE("597985ab-9b75-4dbb-be23-0761195bebee")
36643 ID3D12GBVDiagnostics : public IUnknown
36644 {
36645 public:
36646 virtual HRESULT STDMETHODCALLTYPE GetGBVEntireSubresourceStatesData(
36647 _In_ ID3D12Resource *pResource,
36648 _Out_writes_bytes_(DataSize) int *pData,
36649 UINT DataSize) = 0;
36650
36651 virtual HRESULT STDMETHODCALLTYPE GetGBVSubresourceState(
36652 _In_ ID3D12Resource *pResource,
36653 UINT Subresource,
36654 _Out_ int *pData) = 0;
36655
36656 virtual HRESULT STDMETHODCALLTYPE GetGBVResourceUniformState(
36657 _In_ ID3D12Resource *pResource,
36658 _Out_ int *pData) = 0;
36659
36660 virtual HRESULT STDMETHODCALLTYPE GetGBVResourceInfo(
36661 _In_ ID3D12Resource *pResource,
36662 _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
36663 _In_opt_ UINT32 *pResourceHash,
36664 _In_opt_ UINT32 *pSubresourceStatesByteOffset) = 0;
36665
36666 virtual void STDMETHODCALLTYPE GBVReserved0( void) = 0;
36667
36668 virtual void STDMETHODCALLTYPE GBVReserved1( void) = 0;
36669
36670 };
36671
36672
36673#else /* C style interface */
36674
36675 typedef struct ID3D12GBVDiagnosticsVtbl
36676 {
36677 BEGIN_INTERFACE
36678
36679 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
36680 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
36681 ID3D12GBVDiagnostics * This,
36682 REFIID riid,
36683 _COM_Outptr_ void **ppvObject);
36684
36685 DECLSPEC_XFGVIRT(IUnknown, AddRef)
36686 ULONG ( STDMETHODCALLTYPE *AddRef )(
36687 ID3D12GBVDiagnostics * This);
36688
36689 DECLSPEC_XFGVIRT(IUnknown, Release)
36690 ULONG ( STDMETHODCALLTYPE *Release )(
36691 ID3D12GBVDiagnostics * This);
36692
36693 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVEntireSubresourceStatesData)
36694 HRESULT ( STDMETHODCALLTYPE *GetGBVEntireSubresourceStatesData )(
36695 ID3D12GBVDiagnostics * This,
36696 _In_ ID3D12Resource *pResource,
36697 _Out_writes_bytes_(DataSize) int *pData,
36698 UINT DataSize);
36699
36700 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVSubresourceState)
36701 HRESULT ( STDMETHODCALLTYPE *GetGBVSubresourceState )(
36702 ID3D12GBVDiagnostics * This,
36703 _In_ ID3D12Resource *pResource,
36704 UINT Subresource,
36705 _Out_ int *pData);
36706
36707 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceUniformState)
36708 HRESULT ( STDMETHODCALLTYPE *GetGBVResourceUniformState )(
36709 ID3D12GBVDiagnostics * This,
36710 _In_ ID3D12Resource *pResource,
36711 _Out_ int *pData);
36712
36713 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceInfo)
36714 HRESULT ( STDMETHODCALLTYPE *GetGBVResourceInfo )(
36715 ID3D12GBVDiagnostics * This,
36716 _In_ ID3D12Resource *pResource,
36717 _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
36718 _In_opt_ UINT32 *pResourceHash,
36719 _In_opt_ UINT32 *pSubresourceStatesByteOffset);
36720
36721 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved0)
36722 void ( STDMETHODCALLTYPE *GBVReserved0 )(
36723 ID3D12GBVDiagnostics * This);
36724
36725 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved1)
36726 void ( STDMETHODCALLTYPE *GBVReserved1 )(
36727 ID3D12GBVDiagnostics * This);
36728
36729 END_INTERFACE
36730 } ID3D12GBVDiagnosticsVtbl;
36731
36732 interface ID3D12GBVDiagnostics
36733 {
36734 CONST_VTBL struct ID3D12GBVDiagnosticsVtbl *lpVtbl;
36735 };
36736
36737
36738
36739#ifdef COBJMACROS
36740
36741
36742#define ID3D12GBVDiagnostics_QueryInterface(This,riid,ppvObject) \
36743 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36744
36745#define ID3D12GBVDiagnostics_AddRef(This) \
36746 ( (This)->lpVtbl -> AddRef(This) )
36747
36748#define ID3D12GBVDiagnostics_Release(This) \
36749 ( (This)->lpVtbl -> Release(This) )
36750
36751
36752#define ID3D12GBVDiagnostics_GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) \
36753 ( (This)->lpVtbl -> GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) )
36754
36755#define ID3D12GBVDiagnostics_GetGBVSubresourceState(This,pResource,Subresource,pData) \
36756 ( (This)->lpVtbl -> GetGBVSubresourceState(This,pResource,Subresource,pData) )
36757
36758#define ID3D12GBVDiagnostics_GetGBVResourceUniformState(This,pResource,pData) \
36759 ( (This)->lpVtbl -> GetGBVResourceUniformState(This,pResource,pData) )
36760
36761#define ID3D12GBVDiagnostics_GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) \
36762 ( (This)->lpVtbl -> GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) )
36763
36764#define ID3D12GBVDiagnostics_GBVReserved0(This) \
36765 ( (This)->lpVtbl -> GBVReserved0(This) )
36766
36767#define ID3D12GBVDiagnostics_GBVReserved1(This) \
36768 ( (This)->lpVtbl -> GBVReserved1(This) )
36769
36770#endif /* COBJMACROS */
36771
36772
36773#endif /* C style interface */
36774
36775
36776
36777
36778#endif /* __ID3D12GBVDiagnostics_INTERFACE_DEFINED__ */
36779
36780
36781/* interface __MIDL_itf_d3d12_0000_0085 */
36782/* [local] */
36783
36784#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
36785#pragma endregion
36786DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
36787DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
36788DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
36789DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
36790DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
36791DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
36792DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
36793DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
36794DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
36795DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
36796DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
36797DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
36798DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);
36799DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
36800DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
36801DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
36802DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
36803DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
36804DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
36805DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
36806DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
36807DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);
36808DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
36809DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
36810DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
36811DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
36812DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
36813DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);
36814DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);
36815DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);
36816DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);
36817DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);
36818DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
36819DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
36820DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
36821DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
36822DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);
36823DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);
36824DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);
36825DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
36826DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
36827DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
36828DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);
36829DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);
36830DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);
36831DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);
36832DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);
36833DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);
36834DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);
36835DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);
36836DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);
36837DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);
36838DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);
36839DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);
36840DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);
36841DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);
36842DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);
36843DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
36844DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);
36845DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);
36846DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);
36847DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);
36848DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);
36849DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);
36850DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);
36851DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
36852DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);
36853DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);
36854DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);
36855DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);
36856DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);
36857DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
36858DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);
36859DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);
36860DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);
36861DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);
36862DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);
36863DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
36864DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
36865DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);
36866DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);
36867DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);
36868DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);
36869DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);
36870DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);
36871
36872
36873extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_c_ifspec;
36874extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_s_ifspec;
36875
36876/* Additional Prototypes for ALL interfaces */
36877
36878/* end of Additional Prototypes */
36879
36880#ifdef __cplusplus
36881}
36882#endif
36883
36884#endif
36885
36886
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.idl
new file mode 100644
index 0000000..f87746a
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.idl
@@ -0,0 +1,7014 @@
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_PREVIEW_SDK_VERSION = 717;
297const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
298const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
299const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
300const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
301const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
302const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
303const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
304const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
305const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
306const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
307const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
308const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
309const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
310cpp_quote("#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )")
311const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
312const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
313const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
314const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
315const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
316const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
317const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
318const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
319const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
320cpp_quote("#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )")
321const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
322const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
323const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
324const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
325const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
326const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
327const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
328const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
329const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
330const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
331const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
332const UINT D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT = 128;
333const UINT D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL = 12;
334const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
335const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
336const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
337const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
338const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
339const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
340const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
341const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
342const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
343const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
344const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
345const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
346const UINT D3D12_REQ_MAXANISOTROPY = 16;
347const UINT D3D12_REQ_MIP_LEVELS = 15;
348const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
349const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
350const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
351const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
352cpp_quote("#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )")
353const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
354const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
355const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
356const UINT D3D12_REQ_SUBRESOURCES = 30720;
357const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
358const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
359const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
360const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
361const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
362const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
363const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
364const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
365const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
366const UINT D3D12_SDK_VERSION = 618;
367const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
368const UINT D3D12_SHADER_MAJOR_VERSION = 5;
369const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
370const UINT D3D12_SHADER_MAX_INTERFACES = 253;
371const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
372const UINT D3D12_SHADER_MAX_TYPES = 65535;
373const UINT D3D12_SHADER_MINOR_VERSION = 1;
374const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
375const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
376const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
377const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
378const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
379const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
380const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
381const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
382const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
383const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
384const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
385const UINT D3D12_SO_STREAM_COUNT = 4;
386const UINT D3D12_SPEC_DATE_DAY = 14;
387const UINT D3D12_SPEC_DATE_MONTH = 11;
388const UINT D3D12_SPEC_DATE_YEAR = 2014;
389cpp_quote("#define D3D12_SPEC_VERSION ( 1.16 )")
390cpp_quote("#define D3D12_SRGB_GAMMA ( 2.2f )")
391cpp_quote("#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )")
392cpp_quote("#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )")
393cpp_quote("#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )")
394cpp_quote("#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )")
395cpp_quote("#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )")
396cpp_quote("#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )")
397const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
398const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
399const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
400const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
401const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
402const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
403const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
404const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
405const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
406const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
407const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
408const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
409const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
410const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
411const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
412const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
413const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
414const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
415const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
416const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
417const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
418const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
419const UINT D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT = 4096;
420const UINT D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT = 8;
421const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
422const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
423const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
424const UINT D3D12_UAV_SLOT_COUNT = 64;
425const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
426const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
427const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
428const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
429const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
430const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
431const UINT D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX = 0xFF;
432const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS = 64;
433const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS = 64;
434const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN = 9;
435const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM = 8;
436const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
437const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
438const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
439const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
440const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
441const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
442const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
443const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
444const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
445const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
446const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
447const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
448const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
449const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
450const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
451const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
452const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
453const UINT D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES = 8;
454const UINT D3D12_WORK_GRAPHS_MAX_NODE_DEPTH = 32;
455cpp_quote("#endif")
456
457
458// Forward declarations
459interface ID3D12CommandQueue;
460
461
462typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
463
464typedef enum D3D12_COMMAND_LIST_TYPE
465{
466 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
467 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
468 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
469 D3D12_COMMAND_LIST_TYPE_COPY = 3,
470 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
471 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
472 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
473
474 D3D12_COMMAND_LIST_TYPE_NONE = -1,
475
476} D3D12_COMMAND_LIST_TYPE;
477
478typedef enum D3D12_COMMAND_QUEUE_FLAGS
479{
480 D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
481 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
482 D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2,
483} D3D12_COMMAND_QUEUE_FLAGS;
484cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )" )
485
486typedef enum D3D12_COMMAND_QUEUE_PRIORITY
487{
488 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
489 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
490 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
491} D3D12_COMMAND_QUEUE_PRIORITY;
492
493typedef struct D3D12_COMMAND_QUEUE_DESC
494{
495 D3D12_COMMAND_LIST_TYPE Type;
496 INT Priority;
497 D3D12_COMMAND_QUEUE_FLAGS Flags;
498 UINT NodeMask;
499} D3D12_COMMAND_QUEUE_DESC;
500
501typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
502{
503 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
504 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
505 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
506 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
507 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
508} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
509
510typedef enum D3D12_INPUT_CLASSIFICATION
511{
512 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
513 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
514} D3D12_INPUT_CLASSIFICATION;
515
516typedef struct D3D12_INPUT_ELEMENT_DESC
517{
518 LPCSTR SemanticName;
519 UINT SemanticIndex;
520 DXGI_FORMAT Format;
521 UINT InputSlot;
522 UINT AlignedByteOffset;
523 D3D12_INPUT_CLASSIFICATION InputSlotClass;
524 UINT InstanceDataStepRate;
525} D3D12_INPUT_ELEMENT_DESC;
526
527// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
528typedef enum D3D12_FILL_MODE
529{
530 // 1 was POINT in D3D, unused in D3D12
531 D3D12_FILL_MODE_WIREFRAME = 2,
532 D3D12_FILL_MODE_SOLID = 3
533} D3D12_FILL_MODE;
534
535typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
536
537typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
538
539// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
540typedef enum D3D12_CULL_MODE
541{
542 D3D12_CULL_MODE_NONE = 1,
543 D3D12_CULL_MODE_FRONT = 2,
544 D3D12_CULL_MODE_BACK = 3
545} D3D12_CULL_MODE;
546
547typedef struct D3D12_SO_DECLARATION_ENTRY
548{
549 UINT Stream;
550 LPCSTR SemanticName;
551 UINT SemanticIndex;
552 BYTE StartComponent;
553 BYTE ComponentCount;
554 BYTE OutputSlot;
555} D3D12_SO_DECLARATION_ENTRY;
556
557typedef struct D3D12_VIEWPORT
558{
559 FLOAT TopLeftX;
560 FLOAT TopLeftY;
561 FLOAT Width;
562 FLOAT Height;
563 FLOAT MinDepth;
564 FLOAT MaxDepth;
565} D3D12_VIEWPORT;
566
567
568typedef RECT D3D12_RECT;
569
570
571typedef struct D3D12_BOX
572{
573 UINT left;
574 UINT top;
575 UINT front;
576 UINT right;
577 UINT bottom;
578 UINT back;
579} D3D12_BOX;
580
581//--------------------------------------------------------------------------------------------------------
582// The system LUID struct isn't defined in wtypes, so we repeat it here just
583// for the MIDL compiler.
584cpp_quote("#ifdef __midl")
585cpp_quote("#ifndef LUID_DEFINED")
586cpp_quote("#define LUID_DEFINED 1")
587typedef struct __LUID {
588 DWORD LowPart;
589 LONG HighPart;
590} LUID, * PLUID;
591cpp_quote("#endif")
592cpp_quote("#endif")
593
594
595////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
596//
597// Depth-Stencil State
598//
599////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
600
601// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
602typedef enum D3D12_COMPARISON_FUNC
603{
604 D3D12_COMPARISON_FUNC_NONE = 0,
605 D3D12_COMPARISON_FUNC_NEVER = 1,
606 D3D12_COMPARISON_FUNC_LESS = 2,
607 D3D12_COMPARISON_FUNC_EQUAL = 3,
608 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
609 D3D12_COMPARISON_FUNC_GREATER = 5,
610 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
611 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
612 D3D12_COMPARISON_FUNC_ALWAYS = 8
613} D3D12_COMPARISON_FUNC;
614
615typedef enum D3D12_DEPTH_WRITE_MASK
616{
617 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
618 D3D12_DEPTH_WRITE_MASK_ALL = 1
619} D3D12_DEPTH_WRITE_MASK;
620
621// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
622typedef enum D3D12_STENCIL_OP
623{
624 D3D12_STENCIL_OP_KEEP = 1,
625 D3D12_STENCIL_OP_ZERO = 2,
626 D3D12_STENCIL_OP_REPLACE = 3,
627 D3D12_STENCIL_OP_INCR_SAT = 4,
628 D3D12_STENCIL_OP_DECR_SAT = 5,
629 D3D12_STENCIL_OP_INVERT = 6,
630 D3D12_STENCIL_OP_INCR = 7,
631 D3D12_STENCIL_OP_DECR = 8
632} D3D12_STENCIL_OP;
633
634typedef struct D3D12_DEPTH_STENCILOP_DESC
635{
636 D3D12_STENCIL_OP StencilFailOp;
637 D3D12_STENCIL_OP StencilDepthFailOp;
638 D3D12_STENCIL_OP StencilPassOp;
639 D3D12_COMPARISON_FUNC StencilFunc;
640} D3D12_DEPTH_STENCILOP_DESC;
641
642typedef struct D3D12_DEPTH_STENCIL_DESC
643{
644 BOOL DepthEnable;
645 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
646 D3D12_COMPARISON_FUNC DepthFunc;
647 BOOL StencilEnable;
648 UINT8 StencilReadMask;
649 UINT8 StencilWriteMask;
650 D3D12_DEPTH_STENCILOP_DESC FrontFace;
651 D3D12_DEPTH_STENCILOP_DESC BackFace;
652} D3D12_DEPTH_STENCIL_DESC;
653
654typedef struct D3D12_DEPTH_STENCIL_DESC1
655{
656 BOOL DepthEnable;
657 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
658 D3D12_COMPARISON_FUNC DepthFunc;
659 BOOL StencilEnable;
660 UINT8 StencilReadMask;
661 UINT8 StencilWriteMask;
662 D3D12_DEPTH_STENCILOP_DESC FrontFace;
663 D3D12_DEPTH_STENCILOP_DESC BackFace;
664 BOOL DepthBoundsTestEnable;
665} D3D12_DEPTH_STENCIL_DESC1;
666
667// Front/back face independent stencil masks
668typedef struct D3D12_DEPTH_STENCILOP_DESC1
669{
670 D3D12_STENCIL_OP StencilFailOp;
671 D3D12_STENCIL_OP StencilDepthFailOp;
672 D3D12_STENCIL_OP StencilPassOp;
673 D3D12_COMPARISON_FUNC StencilFunc;
674 UINT8 StencilReadMask;
675 UINT8 StencilWriteMask;
676} D3D12_DEPTH_STENCILOP_DESC1;
677
678typedef struct D3D12_DEPTH_STENCIL_DESC2
679{
680 BOOL DepthEnable;
681 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
682 D3D12_COMPARISON_FUNC DepthFunc;
683 BOOL StencilEnable;
684 D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
685 D3D12_DEPTH_STENCILOP_DESC1 BackFace;
686 BOOL DepthBoundsTestEnable;
687} D3D12_DEPTH_STENCIL_DESC2;
688
689
690////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
691//
692// Blend State
693//
694////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
695
696// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
697typedef enum D3D12_BLEND
698{
699 D3D12_BLEND_ZERO = 1,
700 D3D12_BLEND_ONE = 2,
701 D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
702 D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
703 D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
704 D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
705 D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
706 D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
707 D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
708 D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
709 D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
710 // 12 reserved (was BOTHSRCALPHA)
711 // 13 reserved (was BOTHSRCALPHA)
712 D3D12_BLEND_BLEND_FACTOR = 14,
713 D3D12_BLEND_INV_BLEND_FACTOR = 15,
714 D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
715 D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
716 D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
717 D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
718 D3D12_BLEND_ALPHA_FACTOR = 20,
719 D3D12_BLEND_INV_ALPHA_FACTOR = 21
720} D3D12_BLEND;
721
722// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
723typedef enum D3D12_BLEND_OP
724{
725 D3D12_BLEND_OP_ADD = 1,
726 D3D12_BLEND_OP_SUBTRACT = 2,
727 D3D12_BLEND_OP_REV_SUBTRACT = 3,
728 D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
729 D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
730} D3D12_BLEND_OP;
731
732typedef enum D3D12_COLOR_WRITE_ENABLE
733{
734 D3D12_COLOR_WRITE_ENABLE_RED = 1,
735 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
736 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
737 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
738 D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
739 D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
740} D3D12_COLOR_WRITE_ENABLE;
741
742typedef enum D3D12_LOGIC_OP
743{
744 // Operation:
745 // (s == PS output, d = RTV contents)
746 D3D12_LOGIC_OP_CLEAR = 0, // 0
747 D3D12_LOGIC_OP_SET, // 1
748 D3D12_LOGIC_OP_COPY, // s
749 D3D12_LOGIC_OP_COPY_INVERTED, // ~s
750 D3D12_LOGIC_OP_NOOP, // d
751 D3D12_LOGIC_OP_INVERT, // ~d
752 D3D12_LOGIC_OP_AND, // s & d
753 D3D12_LOGIC_OP_NAND, // ~(s & d)
754 D3D12_LOGIC_OP_OR, // s | d
755 D3D12_LOGIC_OP_NOR, // ~(s | d)
756 D3D12_LOGIC_OP_XOR, // s ^ d
757 D3D12_LOGIC_OP_EQUIV, // ~(s ^ d)
758 D3D12_LOGIC_OP_AND_REVERSE, // s & ~d
759 D3D12_LOGIC_OP_AND_INVERTED, // ~s & d
760 D3D12_LOGIC_OP_OR_REVERSE, // s | ~d
761 D3D12_LOGIC_OP_OR_INVERTED, // ~s | d
762} D3D12_LOGIC_OP;
763
764typedef struct D3D12_RENDER_TARGET_BLEND_DESC
765{
766 BOOL BlendEnable;
767 BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
768 D3D12_BLEND SrcBlend;
769 D3D12_BLEND DestBlend;
770 D3D12_BLEND_OP BlendOp;
771 D3D12_BLEND SrcBlendAlpha;
772 D3D12_BLEND DestBlendAlpha;
773 D3D12_BLEND_OP BlendOpAlpha;
774 D3D12_LOGIC_OP LogicOp; // applies to RGBA
775 UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
776} D3D12_RENDER_TARGET_BLEND_DESC;
777
778typedef struct D3D12_BLEND_DESC
779{
780 BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
781 BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
782 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
783} D3D12_BLEND_DESC;
784
785cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
786cpp_quote( " IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" )
787
788
789////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
790//
791// Rasterizer State
792//
793////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
794
795typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
796{
797 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, // Default
798 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
799} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
800
801typedef struct D3D12_RASTERIZER_DESC
802{
803 D3D12_FILL_MODE FillMode;
804 D3D12_CULL_MODE CullMode;
805 BOOL FrontCounterClockwise;
806 INT DepthBias;
807 FLOAT DepthBiasClamp;
808 FLOAT SlopeScaledDepthBias;
809 BOOL DepthClipEnable;
810 BOOL MultisampleEnable;
811 BOOL AntialiasedLineEnable;
812 UINT ForcedSampleCount;
813 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
814} D3D12_RASTERIZER_DESC;
815
816typedef struct D3D12_RASTERIZER_DESC1
817{
818 D3D12_FILL_MODE FillMode;
819 D3D12_CULL_MODE CullMode;
820 BOOL FrontCounterClockwise;
821 FLOAT DepthBias;
822 FLOAT DepthBiasClamp;
823 FLOAT SlopeScaledDepthBias;
824 BOOL DepthClipEnable;
825 BOOL MultisampleEnable;
826 BOOL AntialiasedLineEnable;
827 UINT ForcedSampleCount;
828 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
829} D3D12_RASTERIZER_DESC1;
830
831typedef enum D3D12_LINE_RASTERIZATION_MODE
832{
833 D3D12_LINE_RASTERIZATION_MODE_ALIASED,
834 D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED,
835 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE,
836 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW,
837} D3D12_LINE_RASTERIZATION_MODE;
838
839typedef struct D3D12_RASTERIZER_DESC2
840{
841 D3D12_FILL_MODE FillMode;
842 D3D12_CULL_MODE CullMode;
843 BOOL FrontCounterClockwise;
844 FLOAT DepthBias;
845 FLOAT DepthBiasClamp;
846 FLOAT SlopeScaledDepthBias;
847 BOOL DepthClipEnable;
848 D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
849 UINT ForcedSampleCount;
850 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
851} D3D12_RASTERIZER_DESC2;
852
853////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
854//
855// Pipeline State v1
856//
857////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
858
859[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
860interface ID3D12RootSignature
861 : ID3D12DeviceChild
862{
863}
864
865typedef struct D3D12_SHADER_BYTECODE
866{
867 [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
868 SIZE_T BytecodeLength;
869} D3D12_SHADER_BYTECODE;
870
871typedef struct D3D12_STREAM_OUTPUT_DESC
872{
873 [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
874 UINT NumEntries;
875 [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
876 UINT NumStrides;
877 UINT RasterizedStream;
878} D3D12_STREAM_OUTPUT_DESC;
879
880typedef struct D3D12_INPUT_LAYOUT_DESC
881{
882 [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
883 UINT NumElements;
884} D3D12_INPUT_LAYOUT_DESC;
885
886typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
887{
888 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
889 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
890 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
891} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
892
893typedef enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
894{
895 D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
896 D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
897} D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
898
899typedef struct D3D12_CACHED_PIPELINE_STATE
900{
901 [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
902 SIZE_T CachedBlobSizeInBytes;
903} D3D12_CACHED_PIPELINE_STATE;
904
905typedef enum D3D12_PIPELINE_STATE_FLAGS
906{
907 D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
908 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
909 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
910 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8,
911
912} D3D12_PIPELINE_STATE_FLAGS;
913cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )" )
914
915typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
916{
917 ID3D12RootSignature* pRootSignature;
918 D3D12_SHADER_BYTECODE VS;
919 D3D12_SHADER_BYTECODE PS;
920 D3D12_SHADER_BYTECODE DS;
921 D3D12_SHADER_BYTECODE HS;
922 D3D12_SHADER_BYTECODE GS;
923 D3D12_STREAM_OUTPUT_DESC StreamOutput;
924 D3D12_BLEND_DESC BlendState;
925 UINT SampleMask;
926 D3D12_RASTERIZER_DESC RasterizerState;
927 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
928 D3D12_INPUT_LAYOUT_DESC InputLayout;
929 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
930 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
931 UINT NumRenderTargets;
932 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
933 DXGI_FORMAT DSVFormat;
934 DXGI_SAMPLE_DESC SampleDesc;
935 UINT NodeMask;
936 D3D12_CACHED_PIPELINE_STATE CachedPSO;
937 D3D12_PIPELINE_STATE_FLAGS Flags;
938} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
939
940typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
941{
942 ID3D12RootSignature* pRootSignature;
943 D3D12_SHADER_BYTECODE CS;
944 UINT NodeMask;
945 D3D12_CACHED_PIPELINE_STATE CachedPSO;
946 D3D12_PIPELINE_STATE_FLAGS Flags;
947} D3D12_COMPUTE_PIPELINE_STATE_DESC;
948
949////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
950//
951// Serialized Root Signature
952//
953////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
954typedef enum D3D_ROOT_SIGNATURE_VERSION
955{
956 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
957 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
958 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
959 D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3,
960} D3D_ROOT_SIGNATURE_VERSION;
961
962typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
963{
964 [annotation("_Field_size_bytes_full_(SerializedBlobSizeInBytes)")] const void* pSerializedBlob;
965 SIZE_T SerializedBlobSizeInBytes;
966} D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
967
968typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
969{
970 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
971} D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
972
973typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
974{
975 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
976} D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
977
978////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
979//
980// Pipeline State v2
981//
982////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
983
984struct D3D12_RT_FORMAT_ARRAY
985{
986 DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
987 UINT NumRenderTargets;
988};
989
990typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
991{
992 [annotation("_In_")] SIZE_T SizeInBytes;
993 [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
994} D3D12_PIPELINE_STATE_STREAM_DESC;
995
996typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
997{
998 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
999 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
1000 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
1001 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
1002 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
1003 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
1004 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
1005 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
1006 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
1007 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
1008 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
1009 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
1010 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
1011 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
1012 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
1013 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
1014 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
1015 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
1016 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
1017 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
1018 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
1019 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
1020 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
1021 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
1022 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
1023 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26, // D3D12_DEPTH_STENCIL_DESC2
1024 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27, // D3D12_RASTERIZER_DESC1
1025 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28, // D3D12_RASTERIZER_DESC2
1026 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29, // D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
1027 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
1028} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
1029
1030////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1031//
1032// D3D12 Caps
1033//
1034////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1035
1036typedef enum D3D12_FEATURE
1037{
1038 D3D12_FEATURE_D3D12_OPTIONS = 0,
1039 D3D12_FEATURE_ARCHITECTURE = 1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
1040 D3D12_FEATURE_FEATURE_LEVELS = 2,
1041 D3D12_FEATURE_FORMAT_SUPPORT = 3,
1042 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
1043 D3D12_FEATURE_FORMAT_INFO = 5,
1044 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
1045 D3D12_FEATURE_SHADER_MODEL = 7,
1046 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
1047 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
1048 D3D12_FEATURE_ROOT_SIGNATURE = 12,
1049 D3D12_FEATURE_ARCHITECTURE1 = 16,
1050 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
1051 D3D12_FEATURE_SHADER_CACHE = 19,
1052 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
1053 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
1054 D3D12_FEATURE_EXISTING_HEAPS = 22,
1055 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
1056 D3D12_FEATURE_SERIALIZATION = 24,
1057 D3D12_FEATURE_CROSS_NODE = 25,
1058 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
1059 D3D12_FEATURE_DISPLAYABLE = 28,
1060 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
1061 D3D12_FEATURE_QUERY_META_COMMAND = 31,
1062 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
1063 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
1064 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
1065 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
1066 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
1067 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
1068 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
1069 D3D12_FEATURE_D3D12_OPTIONS12 = 41,
1070 D3D12_FEATURE_D3D12_OPTIONS13 = 42,
1071 D3D12_FEATURE_D3D12_OPTIONS14 = 43,
1072 D3D12_FEATURE_D3D12_OPTIONS15 = 44,
1073 D3D12_FEATURE_D3D12_OPTIONS16 = 45,
1074 D3D12_FEATURE_D3D12_OPTIONS17 = 46,
1075 D3D12_FEATURE_D3D12_OPTIONS18 = 47,
1076 D3D12_FEATURE_D3D12_OPTIONS19 = 48,
1077 D3D12_FEATURE_D3D12_OPTIONS20 = 49,
1078 D3D12_FEATURE_PREDICATION = 50,
1079 D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
1080 D3D12_FEATURE_HARDWARE_COPY = 52,
1081 D3D12_FEATURE_D3D12_OPTIONS21 = 53,
1082 D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
1083 D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
1084 D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
1085 D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61,
1086
1087} D3D12_FEATURE;
1088
1089typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
1090{
1091 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
1092 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
1093 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
1094} D3D12_SHADER_MIN_PRECISION_SUPPORT;
1095cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )" )
1096
1097typedef enum D3D12_TILED_RESOURCES_TIER
1098{
1099 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
1100 D3D12_TILED_RESOURCES_TIER_1 = 1,
1101 D3D12_TILED_RESOURCES_TIER_2 = 2,
1102 D3D12_TILED_RESOURCES_TIER_3 = 3,
1103 D3D12_TILED_RESOURCES_TIER_4 = 4,
1104} D3D12_TILED_RESOURCES_TIER;
1105
1106typedef enum D3D12_RESOURCE_BINDING_TIER
1107{
1108 D3D12_RESOURCE_BINDING_TIER_1 = 1,
1109 D3D12_RESOURCE_BINDING_TIER_2 = 2,
1110 D3D12_RESOURCE_BINDING_TIER_3 = 3,
1111} D3D12_RESOURCE_BINDING_TIER;
1112
1113typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
1114 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
1115 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
1116 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
1117 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
1118} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
1119
1120
1121typedef enum D3D12_FORMAT_SUPPORT1
1122{
1123 D3D12_FORMAT_SUPPORT1_NONE = 0,
1124 D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
1125 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
1126 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
1127 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
1128 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
1129 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
1130 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
1131 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
1132 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
1133 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
1134 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
1135 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
1136 D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
1137 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
1138 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
1139 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
1140 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
1141 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
1142 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
1143 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
1144 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
1145 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
1146 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
1147 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
1148 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
1149 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
1150 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1151 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
1152 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
1153} D3D12_FORMAT_SUPPORT1;
1154cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )" )
1155
1156typedef enum D3D12_FORMAT_SUPPORT2
1157{
1158 D3D12_FORMAT_SUPPORT2_NONE = 0,
1159 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
1160 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
1161 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
1162 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
1163 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
1164 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
1165 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
1166 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
1167 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
1168 D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
1169 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
1170 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x00008000,
1171 D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x00010000,
1172} D3D12_FORMAT_SUPPORT2;
1173cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )" )
1174
1175typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
1176{
1177 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
1178 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
1179} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
1180cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )" )
1181
1182typedef enum D3D12_CROSS_NODE_SHARING_TIER
1183{
1184 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
1185 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
1186 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
1187 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
1188 D3D12_CROSS_NODE_SHARING_TIER_3 = 4,
1189} D3D12_CROSS_NODE_SHARING_TIER;
1190
1191typedef enum D3D12_RESOURCE_HEAP_TIER
1192{
1193 D3D12_RESOURCE_HEAP_TIER_1 = 1,
1194 D3D12_RESOURCE_HEAP_TIER_2 = 2,
1195} D3D12_RESOURCE_HEAP_TIER;
1196
1197typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
1198{
1199 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
1200 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
1201 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
1202} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
1203
1204typedef enum D3D12_VIEW_INSTANCING_TIER
1205{
1206 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
1207 D3D12_VIEW_INSTANCING_TIER_1 = 1,
1208 D3D12_VIEW_INSTANCING_TIER_2 = 2,
1209 D3D12_VIEW_INSTANCING_TIER_3 = 3,
1210} D3D12_VIEW_INSTANCING_TIER;
1211
1212
1213typedef enum D3D12_WORK_GRAPHS_TIER {
1214 D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
1215 D3D12_WORK_GRAPHS_TIER_1_0 = 10,
1216} D3D12_WORK_GRAPHS_TIER;
1217
1218
1219// D3D12_FEATURE_D3D12_OPTIONS
1220typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
1221{
1222 [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
1223 [annotation("_Out_")] BOOL OutputMergerLogicOp;
1224 [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
1225 [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
1226 [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
1227 [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
1228 [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
1229 [annotation("_Out_")] BOOL ROVsSupported;
1230 [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
1231 [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
1232 [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
1233 [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
1234 [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
1235 [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
1236 [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
1237} D3D12_FEATURE_DATA_D3D12_OPTIONS;
1238
1239// D3D12_FEATURE_D3D12_OPTIONS1
1240typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
1241{
1242 [annotation("_Out_")] BOOL WaveOps;
1243 [annotation("_Out_")] UINT WaveLaneCountMin;
1244 [annotation("_Out_")] UINT WaveLaneCountMax;
1245 [annotation("_Out_")] UINT TotalLaneCount;
1246 [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
1247 [annotation("_Out_")] BOOL Int64ShaderOps;
1248} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
1249
1250// D3D12_FEATURE_D3D12_OPTIONS2
1251typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
1252{
1253 [annotation("_Out_")] BOOL DepthBoundsTestSupported;
1254 [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
1255} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
1256
1257// D3D12_FEATURE_ROOT_SIGNATURE
1258typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
1259{
1260 [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
1261} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
1262
1263// D3D12_FEATURE_ARCHITECTURE
1264typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
1265{
1266 [annotation("_In_")] UINT NodeIndex;
1267 [annotation("_Out_")] BOOL TileBasedRenderer;
1268 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1269 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1270} D3D12_FEATURE_DATA_ARCHITECTURE;
1271
1272// D3D12_FEATURE_ARCHITECTURE1
1273typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
1274{
1275 [annotation("_In_")] UINT NodeIndex;
1276 [annotation("_Out_")] BOOL TileBasedRenderer;
1277 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1278 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1279 [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
1280} D3D12_FEATURE_DATA_ARCHITECTURE1;
1281
1282// D3D12_FEATURE_FEATURE_LEVELS
1283typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
1284{
1285 [annotation("_In_")] UINT NumFeatureLevels;
1286 [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
1287 [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
1288} D3D12_FEATURE_DATA_FEATURE_LEVELS;
1289
1290// D3D_SHADER_MODEL
1291typedef enum D3D_SHADER_MODEL
1292{
1293 D3D_SHADER_MODEL_NONE = 0x0, // e.g MCDM Generic devices
1294 D3D_SHADER_MODEL_5_1 = 0x51,
1295 D3D_SHADER_MODEL_6_0 = 0x60,
1296 D3D_SHADER_MODEL_6_1 = 0x61,
1297 D3D_SHADER_MODEL_6_2 = 0x62,
1298 D3D_SHADER_MODEL_6_3 = 0x63,
1299 D3D_SHADER_MODEL_6_4 = 0x64,
1300 D3D_SHADER_MODEL_6_5 = 0x65,
1301 D3D_SHADER_MODEL_6_6 = 0x66,
1302 D3D_SHADER_MODEL_6_7 = 0x67,
1303 D3D_SHADER_MODEL_6_8 = 0x68,
1304 D3D_SHADER_MODEL_6_9 = 0x69,
1305 D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
1306} D3D_SHADER_MODEL;
1307
1308typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
1309{
1310 [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
1311} D3D12_FEATURE_DATA_SHADER_MODEL;
1312
1313// D3D12_FEATURE_FORMAT_SUPPORT
1314typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
1315{
1316 [annotation("_In_")] DXGI_FORMAT Format;
1317 [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
1318 [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
1319} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
1320
1321// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
1322typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
1323{
1324 [annotation("_In_")] DXGI_FORMAT Format;
1325 [annotation("_In_")] UINT SampleCount;
1326 [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
1327 [annotation("_Out_")] UINT NumQualityLevels;
1328} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
1329
1330// D3D12_FEATURE_FORMAT_INFO
1331typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
1332{
1333 DXGI_FORMAT Format;
1334 UINT8 PlaneCount;
1335} D3D12_FEATURE_DATA_FORMAT_INFO;
1336
1337// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
1338typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
1339{
1340 UINT MaxGPUVirtualAddressBitsPerResource;
1341 UINT MaxGPUVirtualAddressBitsPerProcess;
1342} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
1343
1344
1345typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
1346{
1347 D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
1348 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, // Always supported
1349 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
1350 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
1351 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
1352 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
1353 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
1354 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
1355} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
1356cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )" )
1357
1358// D3D12_FEATURE_SHADER_CACHE
1359typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
1360{
1361 [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
1362} D3D12_FEATURE_DATA_SHADER_CACHE;
1363
1364// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
1365typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
1366{
1367 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
1368 [annotation("_In_")] UINT Priority;
1369 [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
1370} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
1371
1372typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
1373{
1374 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x00000000,
1375 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
1376 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
1377 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
1378 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
1379 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
1380 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
1381 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
1382
1383} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
1384cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )")
1385
1386// D3D12_FEATURE_D3D12_OPTIONS3
1387typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
1388{
1389 [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
1390 [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
1391 [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
1392 [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
1393 [annotation("_Out_")] BOOL BarycentricsSupported;
1394} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
1395
1396// D3D12_FEATURE_EXISTING_HEAPS
1397typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
1398{
1399 [annotation("_Out_")] BOOL Supported;
1400} D3D12_FEATURE_DATA_EXISTING_HEAPS;
1401
1402typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
1403{
1404 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0,
1405 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
1406 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
1407} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
1408
1409typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
1410{
1411 [annotation("_Out_")] BOOL DisplayableTexture;
1412 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1413} D3D12_FEATURE_DATA_DISPLAYABLE;
1414
1415// D3D12_FEATURE_D3D12_OPTIONS4
1416typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
1417{
1418 [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
1419 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1420 [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
1421} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
1422
1423typedef enum D3D12_HEAP_SERIALIZATION_TIER
1424{
1425 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
1426 D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
1427} D3D12_HEAP_SERIALIZATION_TIER;
1428
1429// D3D12_FEATURE_SERIALIZATION
1430typedef struct D3D12_FEATURE_DATA_SERIALIZATION
1431{
1432 [annotation("_In_")] UINT NodeIndex;
1433 [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
1434} D3D12_FEATURE_DATA_SERIALIZATION;
1435
1436// D3D12_FEATURE_CROSS_NODE
1437typedef struct D3D12_FEATURE_DATA_CROSS_NODE
1438{
1439 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
1440 BOOL AtomicShaderInstructions;
1441} D3D12_FEATURE_DATA_CROSS_NODE;
1442
1443
1444typedef enum D3D12_RENDER_PASS_TIER
1445{
1446 D3D12_RENDER_PASS_TIER_0 = 0,
1447 D3D12_RENDER_PASS_TIER_1 = 1,
1448 D3D12_RENDER_PASS_TIER_2 = 2,
1449
1450
1451} D3D12_RENDER_PASS_TIER;
1452
1453typedef enum D3D12_RAYTRACING_TIER
1454{
1455 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
1456 D3D12_RAYTRACING_TIER_1_0 = 10,
1457 D3D12_RAYTRACING_TIER_1_1 = 11,
1458 D3D12_RAYTRACING_TIER_1_2 = 12,
1459} D3D12_RAYTRACING_TIER;
1460
1461// D3D12_FEATURE_D3D12_OPTIONS5
1462typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
1463{
1464 [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
1465 [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
1466 [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
1467} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
1468
1469typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
1470{
1471 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
1472 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
1473 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
1474} D3D12_VARIABLE_SHADING_RATE_TIER;
1475
1476// D3D12_FEATURE_D3D12_OPTIONS6
1477typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
1478{
1479 [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
1480 [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
1481 [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
1482 [annotation("_Out_")] UINT ShadingRateImageTileSize;
1483 [annotation("_Out_")] BOOL BackgroundProcessingSupported;
1484} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
1485
1486typedef enum D3D12_MESH_SHADER_TIER
1487{
1488 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
1489 D3D12_MESH_SHADER_TIER_1 = 10,
1490} D3D12_MESH_SHADER_TIER;
1491
1492typedef enum D3D12_SAMPLER_FEEDBACK_TIER
1493{
1494 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
1495 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
1496 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
1497} D3D12_SAMPLER_FEEDBACK_TIER;
1498
1499// D3D12_FEATURE_D3D12_OPTIONS7
1500typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
1501{
1502 [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
1503 [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
1504
1505} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
1506
1507typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
1508{
1509 [annotation("_In_")] GUID CommandId;
1510 [annotation("_In_")] UINT NodeMask;
1511 [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
1512 [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
1513 [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
1514 [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
1515} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
1516
1517// D3D12_FEATURE_D3D12_OPTIONS8
1518typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
1519{
1520 [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
1521} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
1522
1523typedef enum D3D12_WAVE_MMA_TIER {
1524 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
1525 D3D12_WAVE_MMA_TIER_1_0 = 10,
1526} D3D12_WAVE_MMA_TIER;
1527
1528// D3D12_FEATURE_D3D12_OPTIONS9
1529typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
1530{
1531 [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
1532 [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
1533 [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
1534 [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
1535 [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
1536 [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
1537} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
1538
1539// D3D12_FEATURE_D3D12_OPTIONS10
1540typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
1541{
1542 [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
1543 [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
1544} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
1545
1546// D3D12_FEATURE_D3D12_OPTIONS11
1547typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
1548{
1549 [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
1550} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
1551
1552typedef enum D3D12_TRI_STATE {
1553 D3D12_TRI_STATE_UNKNOWN = -1,
1554 D3D12_TRI_STATE_FALSE = 0,
1555 D3D12_TRI_STATE_TRUE = 1,
1556} D3D12_TRI_STATE;
1557
1558// D3D12_FEATURE_D3D12_OPTIONS12
1559typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
1560{
1561 [annotation("_Out_")] D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
1562 [annotation("_Out_")] BOOL EnhancedBarriersSupported;
1563 [annotation("_Out_")] BOOL RelaxedFormatCastingSupported;
1564} D3D12_FEATURE_DATA_D3D12_OPTIONS12;
1565
1566// D3D12_FEATURE_D3D12_OPTIONS13
1567typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
1568{
1569 [annotation("_Out_")] BOOL UnrestrictedBufferTextureCopyPitchSupported;
1570 [annotation("_Out_")] BOOL UnrestrictedVertexElementAlignmentSupported;
1571 [annotation("_Out_")] BOOL InvertedViewportHeightFlipsYSupported;
1572 [annotation("_Out_")] BOOL InvertedViewportDepthFlipsZSupported;
1573 [annotation("_Out_")] BOOL TextureCopyBetweenDimensionsSupported;
1574 [annotation("_Out_")] BOOL AlphaBlendFactorSupported;
1575} D3D12_FEATURE_DATA_D3D12_OPTIONS13;
1576
1577// D3D12_FEATURE_D3D12_OPTIONS14
1578typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
1579{
1580 [annotation("_Out_")] BOOL AdvancedTextureOpsSupported;
1581 [annotation("_Out_")] BOOL WriteableMSAATexturesSupported;
1582 [annotation("_Out_")] BOOL IndependentFrontAndBackStencilRefMaskSupported;
1583} D3D12_FEATURE_DATA_D3D12_OPTIONS14;
1584
1585// D3D12_FEATURE_D3D12_OPTIONS15
1586typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
1587{
1588 [annotation("_Out_")] BOOL TriangleFanSupported;
1589 [annotation("_Out_")] BOOL DynamicIndexBufferStripCutSupported;
1590} D3D12_FEATURE_DATA_D3D12_OPTIONS15;
1591
1592// D3D12_FEATURE_D3D12_OPTIONS16
1593typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
1594{
1595 [annotation("_Out_")] BOOL DynamicDepthBiasSupported;
1596 [annotation("_Out_")] BOOL GPUUploadHeapSupported;
1597} D3D12_FEATURE_DATA_D3D12_OPTIONS16;
1598
1599// D3D12_FEATURE_D3D12_OPTIONS17
1600typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
1601{
1602 [annotation("_Out_")] BOOL NonNormalizedCoordinateSamplersSupported;
1603 [annotation("_Out_")] BOOL ManualWriteTrackingResourceSupported;
1604} D3D12_FEATURE_DATA_D3D12_OPTIONS17;
1605
1606// D3D12_FEATURE_D3D12_OPTIONS18
1607typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
1608{
1609 [annotation("_Out_")] BOOL RenderPassesValid;
1610} D3D12_FEATURE_DATA_D3D12_OPTIONS18;
1611
1612// D3D12_FEATURE_D3D12_OPTIONS19
1613typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
1614{
1615 BOOL MismatchingOutputDimensionsSupported;
1616 UINT SupportedSampleCountsWithNoOutputs;
1617 BOOL PointSamplingAddressesNeverRoundUp;
1618 BOOL RasterizerDesc2Supported;
1619 BOOL NarrowQuadrilateralLinesSupported;
1620 BOOL AnisoFilterWithPointMipSupported;
1621 UINT MaxSamplerDescriptorHeapSize;
1622 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
1623 UINT MaxViewDescriptorHeapSize;
1624 [annotation("_Out_")] BOOL ComputeOnlyCustomHeapSupported;
1625} D3D12_FEATURE_DATA_D3D12_OPTIONS19;
1626
1627
1628typedef enum D3D12_RECREATE_AT_TIER
1629{
1630 D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
1631
1632 // * Supports retrieving resource and heap allocation information
1633 // with ID3D12PageableTools::GetAllocationInfo
1634 // * Supports setting resource and heap virtual addresses with
1635 // ID3D12DeviceTools::SetNextAllocation
1636 D3D12_RECREATE_AT_TIER_1 = 1,
1637
1638} D3D12_RECREATE_AT_TIER;
1639
1640
1641// D3D12_FEATURE_D3D12_OPTIONS20
1642typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
1643{
1644 [annotation("_Out_")] BOOL ComputeOnlyWriteWatchSupported;
1645 D3D12_RECREATE_AT_TIER RecreateAtTier;
1646} D3D12_FEATURE_DATA_D3D12_OPTIONS20;
1647
1648typedef enum D3D12_EXECUTE_INDIRECT_TIER
1649{
1650 D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
1651 D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11,
1652} D3D12_EXECUTE_INDIRECT_TIER;
1653
1654typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
1655{
1656 [annotation("_Out_")] D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
1657 [annotation("_Out_")] D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
1658 [annotation("_Out_")] BOOL SampleCmpGradientAndBiasSupported;
1659 [annotation("_Out_")] BOOL ExtendedCommandInfoSupported;
1660} D3D12_FEATURE_DATA_D3D12_OPTIONS21;
1661
1662
1663typedef enum D3D12_TIGHT_ALIGNMENT_TIER
1664{
1665 D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED,
1666 D3D12_TIGHT_ALIGNMENT_TIER_1 // Tight alignment of buffers supported
1667} D3D12_TIGHT_ALIGNMENT_TIER;
1668
1669typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
1670{
1671 [annotation("_Out_")] D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
1672} D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
1673
1674
1675typedef struct D3D12_FEATURE_DATA_PREDICATION
1676{
1677 [annotation("_Out_")] BOOL Supported;
1678} D3D12_FEATURE_DATA_PREDICATION;
1679
1680typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
1681{
1682 [annotation("_Out_")] BOOL Supported;
1683} D3D12_FEATURE_DATA_HARDWARE_COPY;
1684
1685typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
1686{
1687 [annotation("_Out_")] BOOL Supported;
1688} D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
1689
1690typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
1691{
1692 [annotation("_Out_")] BOOL Supported;
1693} D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
1694
1695typedef struct D3D12_RESOURCE_ALLOCATION_INFO
1696{
1697 UINT64 SizeInBytes;
1698 UINT64 Alignment;
1699} D3D12_RESOURCE_ALLOCATION_INFO;
1700
1701typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
1702{
1703 UINT64 Offset;
1704 UINT64 Alignment;
1705 UINT64 SizeInBytes;
1706} D3D12_RESOURCE_ALLOCATION_INFO1;
1707
1708typedef enum D3D12_HEAP_TYPE
1709{
1710 D3D12_HEAP_TYPE_DEFAULT = 1,
1711 D3D12_HEAP_TYPE_UPLOAD = 2,
1712 D3D12_HEAP_TYPE_READBACK = 3,
1713 D3D12_HEAP_TYPE_CUSTOM = 4,
1714 D3D12_HEAP_TYPE_GPU_UPLOAD = 5,
1715} D3D12_HEAP_TYPE;
1716
1717typedef enum D3D12_CPU_PAGE_PROPERTY
1718{
1719 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
1720 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
1721 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
1722 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
1723} D3D12_CPU_PAGE_PROPERTY;
1724
1725typedef enum D3D12_MEMORY_POOL
1726{
1727 D3D12_MEMORY_POOL_UNKNOWN = 0,
1728 D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
1729 D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
1730} D3D12_MEMORY_POOL;
1731
1732typedef struct D3D12_HEAP_PROPERTIES
1733{
1734 D3D12_HEAP_TYPE Type;
1735 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
1736 D3D12_MEMORY_POOL MemoryPoolPreference;
1737 UINT CreationNodeMask;
1738 UINT VisibleNodeMask;
1739} D3D12_HEAP_PROPERTIES;
1740
1741typedef enum D3D12_HEAP_FLAGS
1742{
1743 D3D12_HEAP_FLAG_NONE = 0x0,
1744 D3D12_HEAP_FLAG_SHARED = 0x1,
1745 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
1746 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
1747 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
1748 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
1749 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
1750 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
1751 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
1752 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
1753 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
1754 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
1755 D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
1756
1757 // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
1758 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
1759 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
1760 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
1761 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
1762
1763
1764} D3D12_HEAP_FLAGS;
1765cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )" )
1766
1767typedef struct D3D12_HEAP_DESC
1768{
1769 UINT64 SizeInBytes;
1770 D3D12_HEAP_PROPERTIES Properties;
1771 UINT64 Alignment;
1772 D3D12_HEAP_FLAGS Flags;
1773} D3D12_HEAP_DESC;
1774
1775typedef enum D3D12_RESOURCE_DIMENSION
1776{
1777 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
1778 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
1779 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
1780 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
1781 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
1782} D3D12_RESOURCE_DIMENSION;
1783
1784typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
1785{
1786 [annotation("_In_")] DXGI_FORMAT Format;
1787 [annotation("_In_")] D3D12_RESOURCE_DIMENSION Dimension;
1788 [annotation("_In_")] D3D12_HEAP_PROPERTIES DestHeapProperties;
1789 [annotation("_Out_")] BOOL Supported;
1790} D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
1791
1792typedef enum D3D12_TEXTURE_LAYOUT
1793{
1794 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
1795 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers. Can be used with cross-adapter shared textures.
1796 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
1797 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
1798} D3D12_TEXTURE_LAYOUT;
1799
1800typedef enum D3D12_RESOURCE_FLAGS
1801{
1802 D3D12_RESOURCE_FLAG_NONE = 0x0,
1803 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
1804 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
1805 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
1806 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
1807 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
1808 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
1809 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
1810 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
1811 D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
1812 D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400,
1813
1814} D3D12_RESOURCE_FLAGS;
1815cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )" )
1816
1817typedef struct D3D12_MIP_REGION
1818{
1819 UINT Width;
1820 UINT Height;
1821 UINT Depth;
1822} D3D12_MIP_REGION;
1823
1824typedef struct D3D12_RESOURCE_DESC
1825{
1826 D3D12_RESOURCE_DIMENSION Dimension;
1827 UINT64 Alignment;
1828 UINT64 Width;
1829 UINT Height;
1830 UINT16 DepthOrArraySize;
1831 UINT16 MipLevels;
1832 DXGI_FORMAT Format;
1833 DXGI_SAMPLE_DESC SampleDesc;
1834 D3D12_TEXTURE_LAYOUT Layout;
1835 D3D12_RESOURCE_FLAGS Flags;
1836} D3D12_RESOURCE_DESC;
1837
1838typedef struct D3D12_RESOURCE_DESC1
1839{
1840 D3D12_RESOURCE_DIMENSION Dimension;
1841 UINT64 Alignment;
1842 UINT64 Width;
1843 UINT Height;
1844 UINT16 DepthOrArraySize;
1845 UINT16 MipLevels;
1846 DXGI_FORMAT Format;
1847 DXGI_SAMPLE_DESC SampleDesc;
1848 D3D12_TEXTURE_LAYOUT Layout;
1849 D3D12_RESOURCE_FLAGS Flags;
1850 D3D12_MIP_REGION SamplerFeedbackMipRegion;
1851} D3D12_RESOURCE_DESC1;
1852
1853
1854
1855typedef struct D3D12_DEPTH_STENCIL_VALUE
1856{
1857 FLOAT Depth;
1858 UINT8 Stencil;
1859} D3D12_DEPTH_STENCIL_VALUE;
1860
1861typedef struct D3D12_CLEAR_VALUE
1862{
1863 DXGI_FORMAT Format;
1864 union
1865 {
1866 FLOAT Color[4];
1867 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
1868 };
1869} D3D12_CLEAR_VALUE;
1870
1871typedef struct D3D12_RANGE
1872{
1873 SIZE_T Begin;
1874 SIZE_T End; // One past end, so (End - Begin) = Size
1875} D3D12_RANGE;
1876
1877typedef struct D3D12_RANGE_UINT64
1878{
1879 UINT64 Begin;
1880 UINT64 End; // One past end, so (End - Begin) = Size
1881} D3D12_RANGE_UINT64;
1882
1883typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
1884{
1885 UINT Subresource;
1886 D3D12_RANGE_UINT64 Range;
1887} D3D12_SUBRESOURCE_RANGE_UINT64;
1888
1889typedef struct D3D12_SUBRESOURCE_INFO
1890{
1891 UINT64 Offset;
1892 UINT RowPitch;
1893 UINT DepthPitch;
1894} D3D12_SUBRESOURCE_INFO;
1895
1896typedef struct D3D12_TILED_RESOURCE_COORDINATE
1897{
1898 UINT X;
1899 UINT Y;
1900 UINT Z;
1901 UINT Subresource;
1902} D3D12_TILED_RESOURCE_COORDINATE;
1903
1904typedef struct D3D12_TILE_REGION_SIZE
1905{
1906 UINT NumTiles;
1907 BOOL UseBox;
1908 UINT Width;
1909 UINT16 Height;
1910 UINT16 Depth;
1911} D3D12_TILE_REGION_SIZE;
1912
1913typedef enum D3D12_TILE_RANGE_FLAGS
1914{
1915 D3D12_TILE_RANGE_FLAG_NONE = 0,
1916 D3D12_TILE_RANGE_FLAG_NULL = 1,
1917 D3D12_TILE_RANGE_FLAG_SKIP = 2,
1918 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
1919
1920} D3D12_TILE_RANGE_FLAGS;
1921
1922typedef struct D3D12_SUBRESOURCE_TILING
1923{
1924 UINT WidthInTiles;
1925 UINT16 HeightInTiles;
1926 UINT16 DepthInTiles;
1927 UINT StartTileIndexInOverallResource;
1928} D3D12_SUBRESOURCE_TILING;
1929
1930typedef struct D3D12_TILE_SHAPE
1931{
1932 UINT WidthInTexels;
1933 UINT HeightInTexels;
1934 UINT DepthInTexels;
1935} D3D12_TILE_SHAPE;
1936
1937typedef struct D3D12_PACKED_MIP_INFO
1938{
1939 UINT8 NumStandardMips;
1940 UINT8 NumPackedMips;
1941 UINT NumTilesForPackedMips;
1942 UINT StartTileIndexInOverallResource;
1943} D3D12_PACKED_MIP_INFO;
1944
1945typedef enum D3D12_TILE_MAPPING_FLAGS
1946{
1947 D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
1948 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
1949} D3D12_TILE_MAPPING_FLAGS;
1950cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )" )
1951
1952typedef enum D3D12_TILE_COPY_FLAGS
1953{
1954 D3D12_TILE_COPY_FLAG_NONE = 0x0,
1955 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
1956 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
1957 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
1958} D3D12_TILE_COPY_FLAGS;
1959cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )")
1960
1961// Resource Barrier
1962typedef enum D3D12_RESOURCE_STATES
1963{
1964 D3D12_RESOURCE_STATE_COMMON = 0,
1965
1966 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
1967 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
1968 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
1969 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
1970 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
1971 D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
1972 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
1973 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
1974 D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
1975 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
1976 D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
1977 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
1978 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
1979 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
1980 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
1981 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
1982
1983 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
1984 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
1985 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
1986 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
1987 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
1988
1989 D3D12_RESOURCE_STATE_GENERIC_READ =
1990 /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
1991 /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/ 0x0002 |
1992 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x0040 |
1993 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x0080 |
1994 /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200 |
1995 /*D3D12_RESOURCE_STATE_COPY_SOURCE*/ 0x0800,
1996
1997 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
1998 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
1999 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x80,
2000
2001 D3D12_RESOURCE_STATE_PRESENT = 0,
2002 D3D12_RESOURCE_STATE_PREDICATION = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
2003
2004 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x00010000,
2005 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x00020000,
2006 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x00040000,
2007 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x00080000,
2008 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x00200000,
2009 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x00800000,
2010
2011} D3D12_RESOURCE_STATES;
2012cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )" )
2013
2014typedef enum D3D12_RESOURCE_BARRIER_TYPE
2015{
2016 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
2017 D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
2018 D3D12_RESOURCE_BARRIER_TYPE_UAV,
2019} D3D12_RESOURCE_BARRIER_TYPE;
2020
2021interface ID3D12Resource;
2022
2023typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
2024{
2025 ID3D12Resource* pResource;
2026 UINT Subresource;
2027 D3D12_RESOURCE_STATES StateBefore;
2028 D3D12_RESOURCE_STATES StateAfter;
2029} D3D12_RESOURCE_TRANSITION_BARRIER;
2030
2031typedef struct D3D12_RESOURCE_ALIASING_BARRIER
2032{
2033 ID3D12Resource* pResourceBefore;
2034 ID3D12Resource* pResourceAfter;
2035} D3D12_RESOURCE_ALIASING_BARRIER;
2036
2037typedef struct D3D12_RESOURCE_UAV_BARRIER
2038{
2039 ID3D12Resource* pResource;
2040} D3D12_RESOURCE_UAV_BARRIER;
2041
2042typedef enum D3D12_RESOURCE_BARRIER_FLAGS
2043{
2044 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
2045 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
2046 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
2047} D3D12_RESOURCE_BARRIER_FLAGS;
2048cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )" )
2049
2050typedef struct D3D12_RESOURCE_BARRIER
2051{
2052 D3D12_RESOURCE_BARRIER_TYPE Type;
2053 D3D12_RESOURCE_BARRIER_FLAGS Flags;
2054
2055 union
2056 {
2057 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
2058 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
2059 D3D12_RESOURCE_UAV_BARRIER UAV;
2060 };
2061} D3D12_RESOURCE_BARRIER;
2062
2063typedef struct D3D12_SUBRESOURCE_FOOTPRINT
2064{
2065 DXGI_FORMAT Format;
2066 UINT Width;
2067 UINT Height;
2068 UINT Depth;
2069 UINT RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
2070} D3D12_SUBRESOURCE_FOOTPRINT;
2071
2072typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
2073{
2074 UINT64 Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
2075 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
2076} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
2077
2078typedef enum D3D12_TEXTURE_COPY_TYPE
2079{
2080 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
2081 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
2082} D3D12_TEXTURE_COPY_TYPE;
2083
2084typedef struct D3D12_TEXTURE_COPY_LOCATION
2085{
2086 ID3D12Resource* pResource;
2087 D3D12_TEXTURE_COPY_TYPE Type;
2088 union
2089 {
2090 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
2091 UINT SubresourceIndex;
2092 };
2093} D3D12_TEXTURE_COPY_LOCATION;
2094
2095typedef enum D3D12_RESOLVE_MODE
2096{
2097 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
2098 D3D12_RESOLVE_MODE_MIN = 1,
2099 D3D12_RESOLVE_MODE_MAX = 2,
2100 D3D12_RESOLVE_MODE_AVERAGE = 3,
2101 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
2102 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
2103} D3D12_RESOLVE_MODE;
2104
2105typedef struct D3D12_SAMPLE_POSITION
2106{
2107 INT8 X;
2108 INT8 Y;
2109} D3D12_SAMPLE_POSITION;
2110
2111typedef struct D3D12_VIEW_INSTANCE_LOCATION
2112{
2113 UINT ViewportArrayIndex;
2114 UINT RenderTargetArrayIndex;
2115} D3D12_VIEW_INSTANCE_LOCATION;
2116
2117typedef enum D3D12_VIEW_INSTANCING_FLAGS
2118{
2119 D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
2120 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
2121} D3D12_VIEW_INSTANCING_FLAGS;
2122cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )")
2123
2124typedef struct D3D12_VIEW_INSTANCING_DESC
2125{
2126 UINT ViewInstanceCount;
2127 [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
2128 D3D12_VIEW_INSTANCING_FLAGS Flags;
2129} D3D12_VIEW_INSTANCING_DESC;
2130
2131// D3D12 view descriptions
2132typedef enum D3D12_SHADER_COMPONENT_MAPPING
2133{
2134 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
2135 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
2136 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
2137 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
2138 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
2139 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
2140} D3D12_SHADER_COMPONENT_MAPPING;
2141
2142cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
2143cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
2144cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
2145cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
2146cpp_quote( " (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
2147cpp_quote( " (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
2148cpp_quote( " (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
2149cpp_quote( " D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
2150cpp_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))")
2151cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
2152typedef enum D3D12_BUFFER_SRV_FLAGS
2153{
2154 D3D12_BUFFER_SRV_FLAG_NONE = 0,
2155 D3D12_BUFFER_SRV_FLAG_RAW = 0x00000001, // allow device multi-component reads with DWORD addressing
2156} D3D12_BUFFER_SRV_FLAGS;
2157cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )" )
2158
2159typedef struct D3D12_BUFFER_SRV
2160{
2161 UINT64 FirstElement;
2162 UINT NumElements;
2163 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2164 D3D12_BUFFER_SRV_FLAGS Flags;
2165} D3D12_BUFFER_SRV;
2166
2167typedef struct D3D12_TEX1D_SRV
2168{
2169 UINT MostDetailedMip;
2170 UINT MipLevels;
2171 FLOAT ResourceMinLODClamp;
2172} D3D12_TEX1D_SRV;
2173
2174typedef struct D3D12_TEX1D_ARRAY_SRV
2175{
2176 UINT MostDetailedMip;
2177 UINT MipLevels;
2178 UINT FirstArraySlice;
2179 UINT ArraySize;
2180 FLOAT ResourceMinLODClamp;
2181} D3D12_TEX1D_ARRAY_SRV;
2182
2183typedef struct D3D12_TEX2D_SRV
2184{
2185 UINT MostDetailedMip;
2186 UINT MipLevels;
2187 UINT PlaneSlice;
2188 FLOAT ResourceMinLODClamp;
2189} D3D12_TEX2D_SRV;
2190
2191typedef struct D3D12_TEX2D_ARRAY_SRV
2192{
2193 UINT MostDetailedMip;
2194 UINT MipLevels;
2195 UINT FirstArraySlice;
2196 UINT ArraySize;
2197 UINT PlaneSlice;
2198 FLOAT ResourceMinLODClamp;
2199} D3D12_TEX2D_ARRAY_SRV;
2200
2201typedef struct D3D12_TEX3D_SRV
2202{
2203 UINT MostDetailedMip;
2204 UINT MipLevels;
2205 FLOAT ResourceMinLODClamp;
2206} D3D12_TEX3D_SRV;
2207
2208typedef struct D3D12_TEXCUBE_SRV
2209{
2210 UINT MostDetailedMip;
2211 UINT MipLevels;
2212 FLOAT ResourceMinLODClamp;
2213} D3D12_TEXCUBE_SRV;
2214
2215typedef struct D3D12_TEXCUBE_ARRAY_SRV
2216{
2217 UINT MostDetailedMip;
2218 UINT MipLevels;
2219 UINT First2DArrayFace;
2220 UINT NumCubes;
2221 FLOAT ResourceMinLODClamp;
2222} D3D12_TEXCUBE_ARRAY_SRV;
2223
2224typedef struct D3D12_TEX2DMS_SRV
2225{
2226 // don't need to define anything specific for this view dimension
2227 UINT UnusedField_NothingToDefine;
2228} D3D12_TEX2DMS_SRV;
2229
2230typedef struct D3D12_TEX2DMS_ARRAY_SRV
2231{
2232 UINT FirstArraySlice;
2233 UINT ArraySize;
2234} D3D12_TEX2DMS_ARRAY_SRV;
2235
2236typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
2237{
2238 D3D12_GPU_VIRTUAL_ADDRESS Location;
2239} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
2240
2241typedef enum D3D12_SRV_DIMENSION {
2242 D3D12_SRV_DIMENSION_UNKNOWN = 0,
2243 D3D12_SRV_DIMENSION_BUFFER = 1,
2244 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
2245 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
2246 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
2247 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
2248 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
2249 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
2250 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
2251 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
2252 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
2253 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
2254} D3D12_SRV_DIMENSION;
2255
2256typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
2257{
2258 DXGI_FORMAT Format;
2259 D3D12_SRV_DIMENSION ViewDimension;
2260 UINT Shader4ComponentMapping;
2261
2262 union
2263 {
2264 D3D12_BUFFER_SRV Buffer;
2265 D3D12_TEX1D_SRV Texture1D;
2266 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
2267 D3D12_TEX2D_SRV Texture2D;
2268 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
2269 D3D12_TEX2DMS_SRV Texture2DMS;
2270 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
2271 D3D12_TEX3D_SRV Texture3D;
2272 D3D12_TEXCUBE_SRV TextureCube;
2273 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
2274 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
2275 };
2276} D3D12_SHADER_RESOURCE_VIEW_DESC;
2277
2278typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
2279{
2280 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2281 UINT SizeInBytes;
2282} D3D12_CONSTANT_BUFFER_VIEW_DESC;
2283
2284////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2285//
2286// Sampler
2287//
2288////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2289typedef enum D3D12_FILTER
2290{
2291 // Bits used in defining enumeration of valid filters:
2292 // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
2293 // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
2294 // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
2295 // bit [6] - aniso
2296 // bits [8:7] - reduction type:
2297 // 0 == standard filtering
2298 // 1 == comparison
2299 // 2 == min
2300 // 3 == max
2301 // bit [31] - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
2302
2303 D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00000000,
2304 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x00000001,
2305 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000004,
2306 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x00000005,
2307 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x00000010,
2308 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000011,
2309 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x00000014,
2310 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x00000015,
2311 D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000054,
2312 D3D12_FILTER_ANISOTROPIC = 0x00000055,
2313 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x00000080,
2314 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x00000081,
2315 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000084,
2316 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x00000085,
2317 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x00000090,
2318 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000091,
2319 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x00000094,
2320 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x00000095,
2321 D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000000d4,
2322 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0x000000d5,
2323 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x00000100,
2324 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000101,
2325 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000104,
2326 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000105,
2327 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000110,
2328 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000111,
2329 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000114,
2330 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x00000115,
2331 D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000154,
2332 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x00000155,
2333 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x00000180,
2334 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000181,
2335 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000184,
2336 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000185,
2337 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000190,
2338 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000191,
2339 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000194,
2340 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x00000195,
2341 D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000001d4,
2342 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x000001d5
2343} D3D12_FILTER;
2344
2345typedef enum D3D12_FILTER_TYPE
2346{
2347 D3D12_FILTER_TYPE_POINT = 0,
2348 D3D12_FILTER_TYPE_LINEAR = 1,
2349} D3D12_FILTER_TYPE;
2350
2351typedef enum D3D12_FILTER_REDUCTION_TYPE
2352{
2353 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
2354 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
2355 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
2356 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
2357} D3D12_FILTER_REDUCTION_TYPE;
2358
2359const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
2360const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
2361
2362const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
2363const UINT D3D12_MIN_FILTER_SHIFT = 4;
2364const UINT D3D12_MAG_FILTER_SHIFT = 2;
2365const UINT D3D12_MIP_FILTER_SHIFT = 0;
2366
2367const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
2368
2369// encode enum entry for most filters except anisotropic filtering
2370cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \\" )
2371cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2372cpp_quote( " ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \\" )
2373cpp_quote( " ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \\" )
2374cpp_quote( " ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \\" )
2375cpp_quote( " ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
2376
2377// encode enum entry for anisotropic filtering (with or without comparison filtering)
2378cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \\" )
2379cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2380cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2381cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2382cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2383cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2384cpp_quote( " reduction ) ) ) " )
2385cpp_quote( "#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \\" )
2386cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2387cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2388cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2389cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2390cpp_quote( " D3D12_FILTER_TYPE_POINT, \\" )
2391cpp_quote( " reduction ) ) ) " )
2392
2393cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \\" )
2394cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2395cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2396
2397cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \\" )
2398cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2399cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2400
2401cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \\" )
2402cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2403cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2404
2405cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \\" )
2406cpp_quote( " ( ( D3D12_FILTER_REDUCTION_TYPE ) \\" )
2407cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
2408
2409cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \\" )
2410cpp_quote( " ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
2411
2412cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \\" )
2413cpp_quote( " ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \\" )
2414cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \\" )
2415cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) ) " )
2416
2417typedef enum D3D12_TEXTURE_ADDRESS_MODE
2418{
2419 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
2420 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
2421 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
2422 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
2423 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
2424} D3D12_TEXTURE_ADDRESS_MODE;
2425
2426
2427
2428typedef struct D3D12_SAMPLER_DESC
2429{
2430 D3D12_FILTER Filter;
2431 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2432 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2433 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2434 FLOAT MipLODBias;
2435 UINT MaxAnisotropy;
2436 D3D12_COMPARISON_FUNC ComparisonFunc;
2437 FLOAT BorderColor[4]; // RGBA
2438 FLOAT MinLOD;
2439 FLOAT MaxLOD;
2440} D3D12_SAMPLER_DESC;
2441
2442
2443typedef enum D3D12_SAMPLER_FLAGS
2444{
2445 D3D12_SAMPLER_FLAG_NONE = 0x0,
2446 D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x01,
2447 D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x02,
2448} D3D12_SAMPLER_FLAGS;
2449cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )")
2450
2451typedef struct D3D12_SAMPLER_DESC2
2452{
2453 D3D12_FILTER Filter;
2454 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2455 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2456 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2457 FLOAT MipLODBias;
2458 UINT MaxAnisotropy;
2459 D3D12_COMPARISON_FUNC ComparisonFunc;
2460 union
2461 {
2462 FLOAT FloatBorderColor[4]; // RGBA
2463 UINT UintBorderColor[4];
2464 };
2465 FLOAT MinLOD;
2466 FLOAT MaxLOD;
2467 D3D12_SAMPLER_FLAGS Flags;
2468} D3D12_SAMPLER_DESC2;
2469
2470
2471
2472typedef enum D3D12_BUFFER_UAV_FLAGS
2473{
2474 D3D12_BUFFER_UAV_FLAG_NONE = 0,
2475 D3D12_BUFFER_UAV_FLAG_RAW = 0x00000001,
2476} D3D12_BUFFER_UAV_FLAGS;
2477cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )" )
2478
2479typedef struct D3D12_BUFFER_UAV
2480{
2481 UINT64 FirstElement;
2482 UINT NumElements;
2483 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2484 UINT64 CounterOffsetInBytes;
2485 D3D12_BUFFER_UAV_FLAGS Flags;
2486} D3D12_BUFFER_UAV;
2487
2488typedef struct D3D12_TEX1D_UAV
2489{
2490 UINT MipSlice;
2491} D3D12_TEX1D_UAV;
2492
2493typedef struct D3D12_TEX1D_ARRAY_UAV
2494{
2495 UINT MipSlice;
2496 UINT FirstArraySlice;
2497 UINT ArraySize;
2498} D3D12_TEX1D_ARRAY_UAV;
2499
2500typedef struct D3D12_TEX2D_UAV
2501{
2502 UINT MipSlice;
2503 UINT PlaneSlice;
2504} D3D12_TEX2D_UAV;
2505
2506typedef struct D3D12_TEX2D_ARRAY_UAV
2507{
2508 UINT MipSlice;
2509 UINT FirstArraySlice;
2510 UINT ArraySize;
2511 UINT PlaneSlice;
2512} D3D12_TEX2D_ARRAY_UAV;
2513
2514typedef struct D3D12_TEX2DMS_UAV
2515{
2516 // don't need to define anything specific for this view dimension
2517 UINT UnusedField_NothingToDefine;
2518} D3D12_TEX2DMS_UAV;
2519
2520typedef struct D3D12_TEX2DMS_ARRAY_UAV
2521{
2522 UINT FirstArraySlice;
2523 UINT ArraySize;
2524} D3D12_TEX2DMS_ARRAY_UAV;
2525
2526typedef struct D3D12_TEX3D_UAV
2527{
2528 UINT MipSlice;
2529 UINT FirstWSlice;
2530 UINT WSize;
2531} D3D12_TEX3D_UAV;
2532
2533typedef enum D3D12_UAV_DIMENSION
2534{
2535 D3D12_UAV_DIMENSION_UNKNOWN = 0,
2536 D3D12_UAV_DIMENSION_BUFFER = 1,
2537 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
2538 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
2539 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
2540 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
2541 D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
2542 D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
2543 D3D12_UAV_DIMENSION_TEXTURE3D = 8,
2544} D3D12_UAV_DIMENSION;
2545
2546typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
2547{
2548 DXGI_FORMAT Format;
2549 D3D12_UAV_DIMENSION ViewDimension;
2550
2551 union
2552 {
2553 D3D12_BUFFER_UAV Buffer;
2554 D3D12_TEX1D_UAV Texture1D;
2555 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
2556 D3D12_TEX2D_UAV Texture2D;
2557 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
2558 D3D12_TEX2DMS_UAV Texture2DMS;
2559 D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
2560 D3D12_TEX3D_UAV Texture3D;
2561 };
2562} D3D12_UNORDERED_ACCESS_VIEW_DESC;
2563
2564typedef struct D3D12_BUFFER_RTV
2565{
2566 UINT64 FirstElement;
2567 UINT NumElements;
2568} D3D12_BUFFER_RTV;
2569
2570typedef struct D3D12_TEX1D_RTV
2571{
2572 UINT MipSlice;
2573} D3D12_TEX1D_RTV;
2574
2575typedef struct D3D12_TEX1D_ARRAY_RTV
2576{
2577 UINT MipSlice;
2578 UINT FirstArraySlice;
2579 UINT ArraySize;
2580} D3D12_TEX1D_ARRAY_RTV;
2581
2582typedef struct D3D12_TEX2D_RTV
2583{
2584 UINT MipSlice;
2585 UINT PlaneSlice;
2586} D3D12_TEX2D_RTV;
2587
2588typedef struct D3D12_TEX2DMS_RTV
2589{
2590 UINT UnusedField_NothingToDefine;
2591} D3D12_TEX2DMS_RTV;
2592
2593typedef struct D3D12_TEX2D_ARRAY_RTV
2594{
2595 UINT MipSlice;
2596 UINT FirstArraySlice;
2597 UINT ArraySize;
2598 UINT PlaneSlice;
2599} D3D12_TEX2D_ARRAY_RTV;
2600
2601typedef struct D3D12_TEX2DMS_ARRAY_RTV
2602{
2603 UINT FirstArraySlice;
2604 UINT ArraySize;
2605} D3D12_TEX2DMS_ARRAY_RTV;
2606
2607typedef struct D3D12_TEX3D_RTV
2608{
2609 UINT MipSlice;
2610 UINT FirstWSlice;
2611 UINT WSize;
2612} D3D12_TEX3D_RTV;
2613
2614typedef enum D3D12_RTV_DIMENSION
2615{
2616 D3D12_RTV_DIMENSION_UNKNOWN = 0,
2617 D3D12_RTV_DIMENSION_BUFFER = 1,
2618 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
2619 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
2620 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
2621 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
2622 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
2623 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
2624 D3D12_RTV_DIMENSION_TEXTURE3D = 8,
2625} D3D12_RTV_DIMENSION;
2626
2627typedef struct D3D12_RENDER_TARGET_VIEW_DESC
2628{
2629 DXGI_FORMAT Format;
2630 D3D12_RTV_DIMENSION ViewDimension;
2631
2632 union
2633 {
2634 D3D12_BUFFER_RTV Buffer;
2635 D3D12_TEX1D_RTV Texture1D;
2636 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
2637 D3D12_TEX2D_RTV Texture2D;
2638 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
2639 D3D12_TEX2DMS_RTV Texture2DMS;
2640 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
2641 D3D12_TEX3D_RTV Texture3D;
2642 };
2643} D3D12_RENDER_TARGET_VIEW_DESC;
2644
2645typedef struct D3D12_TEX1D_DSV
2646{
2647 UINT MipSlice;
2648} D3D12_TEX1D_DSV;
2649
2650typedef struct D3D12_TEX1D_ARRAY_DSV
2651{
2652 UINT MipSlice;
2653 UINT FirstArraySlice;
2654 UINT ArraySize;
2655} D3D12_TEX1D_ARRAY_DSV;
2656
2657typedef struct D3D12_TEX2D_DSV
2658{
2659 UINT MipSlice;
2660} D3D12_TEX2D_DSV;
2661
2662typedef struct D3D12_TEX2D_ARRAY_DSV
2663{
2664 UINT MipSlice;
2665 UINT FirstArraySlice;
2666 UINT ArraySize;
2667} D3D12_TEX2D_ARRAY_DSV;
2668
2669typedef struct D3D12_TEX2DMS_DSV
2670{
2671 UINT UnusedField_NothingToDefine;
2672} D3D12_TEX2DMS_DSV;
2673
2674typedef struct D3D12_TEX2DMS_ARRAY_DSV
2675{
2676 UINT FirstArraySlice;
2677 UINT ArraySize;
2678} D3D12_TEX2DMS_ARRAY_DSV;
2679
2680typedef enum D3D12_DSV_FLAGS
2681{
2682 D3D12_DSV_FLAG_NONE = 0x0,
2683 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
2684 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
2685} D3D12_DSV_FLAGS;
2686cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )" )
2687
2688typedef enum D3D12_DSV_DIMENSION
2689{
2690 D3D12_DSV_DIMENSION_UNKNOWN = 0,
2691 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
2692 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
2693 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
2694 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
2695 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
2696 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
2697} D3D12_DSV_DIMENSION;
2698
2699typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
2700{
2701 DXGI_FORMAT Format;
2702 D3D12_DSV_DIMENSION ViewDimension;
2703 D3D12_DSV_FLAGS Flags;
2704
2705 union
2706 {
2707 D3D12_TEX1D_DSV Texture1D;
2708 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
2709 D3D12_TEX2D_DSV Texture2D;
2710 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
2711 D3D12_TEX2DMS_DSV Texture2DMS;
2712 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
2713 };
2714} D3D12_DEPTH_STENCIL_VIEW_DESC;
2715
2716typedef enum D3D12_CLEAR_FLAGS
2717{
2718 // Intentionally no flag for NONE
2719 D3D12_CLEAR_FLAG_DEPTH = 0x01,
2720 D3D12_CLEAR_FLAG_STENCIL = 0x02,
2721} D3D12_CLEAR_FLAGS;
2722cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )" )
2723
2724typedef enum D3D12_FENCE_FLAGS
2725{
2726 D3D12_FENCE_FLAG_NONE = 0x0,
2727 D3D12_FENCE_FLAG_SHARED = 0x1,
2728 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
2729 D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
2730} D3D12_FENCE_FLAGS;
2731cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )" )
2732
2733typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
2734{
2735 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
2736 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
2737 D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
2738 D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
2739 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
2740} D3D12_DESCRIPTOR_HEAP_TYPE;
2741
2742typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
2743{
2744 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
2745 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
2746} D3D12_DESCRIPTOR_HEAP_FLAGS;
2747cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )" )
2748
2749typedef struct D3D12_DESCRIPTOR_HEAP_DESC
2750{
2751 D3D12_DESCRIPTOR_HEAP_TYPE Type;
2752 UINT NumDescriptors;
2753 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
2754 UINT NodeMask;
2755} D3D12_DESCRIPTOR_HEAP_DESC;
2756
2757typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
2758{
2759 D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
2760 D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
2761 D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
2762 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
2763} D3D12_DESCRIPTOR_RANGE_TYPE;
2764
2765typedef struct D3D12_DESCRIPTOR_RANGE
2766{
2767 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2768 UINT NumDescriptors;
2769 UINT BaseShaderRegister;
2770 UINT RegisterSpace;
2771 UINT OffsetInDescriptorsFromTableStart;
2772} D3D12_DESCRIPTOR_RANGE;
2773
2774
2775typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
2776{
2777 UINT NumDescriptorRanges;
2778 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
2779} D3D12_ROOT_DESCRIPTOR_TABLE;
2780
2781
2782typedef struct D3D12_ROOT_CONSTANTS
2783{
2784 UINT ShaderRegister;
2785 UINT RegisterSpace;
2786 UINT Num32BitValues;
2787} D3D12_ROOT_CONSTANTS;
2788
2789typedef struct D3D12_ROOT_DESCRIPTOR
2790{
2791 UINT ShaderRegister;
2792 UINT RegisterSpace;
2793} D3D12_ROOT_DESCRIPTOR;
2794
2795typedef enum D3D12_SHADER_VISIBILITY
2796{
2797 D3D12_SHADER_VISIBILITY_ALL = 0,
2798 D3D12_SHADER_VISIBILITY_VERTEX = 1,
2799 D3D12_SHADER_VISIBILITY_HULL = 2,
2800 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
2801 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
2802 D3D12_SHADER_VISIBILITY_PIXEL = 5,
2803 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
2804 D3D12_SHADER_VISIBILITY_MESH = 7,
2805} D3D12_SHADER_VISIBILITY;
2806
2807typedef enum D3D12_ROOT_PARAMETER_TYPE
2808{
2809 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
2810 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
2811 D3D12_ROOT_PARAMETER_TYPE_CBV,
2812 D3D12_ROOT_PARAMETER_TYPE_SRV,
2813 D3D12_ROOT_PARAMETER_TYPE_UAV
2814} D3D12_ROOT_PARAMETER_TYPE;
2815
2816typedef struct D3D12_ROOT_PARAMETER
2817{
2818 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2819 union
2820 {
2821 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
2822 D3D12_ROOT_CONSTANTS Constants;
2823 D3D12_ROOT_DESCRIPTOR Descriptor;
2824 };
2825 D3D12_SHADER_VISIBILITY ShaderVisibility;
2826} D3D12_ROOT_PARAMETER;
2827
2828typedef enum D3D12_ROOT_SIGNATURE_FLAGS
2829{
2830 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
2831 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
2832 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
2833 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
2834 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
2835 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2836 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2837 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2838 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
2839 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
2840 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
2841 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
2842 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800,
2843} D3D12_ROOT_SIGNATURE_FLAGS;
2844cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )" )
2845
2846
2847typedef enum D3D12_STATIC_BORDER_COLOR
2848{
2849 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
2850 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
2851 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
2852 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT, // 0,0,0,1
2853 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT, // 1,1,1,1
2854
2855} D3D12_STATIC_BORDER_COLOR;
2856
2857typedef struct D3D12_STATIC_SAMPLER_DESC
2858{
2859 D3D12_FILTER Filter;
2860 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2861 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2862 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2863 FLOAT MipLODBias;
2864 UINT MaxAnisotropy;
2865 D3D12_COMPARISON_FUNC ComparisonFunc;
2866 D3D12_STATIC_BORDER_COLOR BorderColor;
2867 FLOAT MinLOD;
2868 FLOAT MaxLOD;
2869 UINT ShaderRegister;
2870 UINT RegisterSpace;
2871 D3D12_SHADER_VISIBILITY ShaderVisibility;
2872} D3D12_STATIC_SAMPLER_DESC;
2873
2874typedef struct D3D12_STATIC_SAMPLER_DESC1
2875{
2876 D3D12_FILTER Filter;
2877 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2878 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2879 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2880 FLOAT MipLODBias;
2881 UINT MaxAnisotropy;
2882 D3D12_COMPARISON_FUNC ComparisonFunc;
2883 D3D12_STATIC_BORDER_COLOR BorderColor;
2884 FLOAT MinLOD;
2885 FLOAT MaxLOD;
2886 UINT ShaderRegister;
2887 UINT RegisterSpace;
2888 D3D12_SHADER_VISIBILITY ShaderVisibility;
2889 D3D12_SAMPLER_FLAGS Flags;
2890} D3D12_STATIC_SAMPLER_DESC1;
2891
2892typedef struct D3D12_ROOT_SIGNATURE_DESC
2893{
2894 UINT NumParameters;
2895 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
2896 UINT NumStaticSamplers;
2897 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2898 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2899} D3D12_ROOT_SIGNATURE_DESC;
2900
2901typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
2902{
2903 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2904 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2905 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2906 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2907 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2908 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
2909} D3D12_DESCRIPTOR_RANGE_FLAGS;
2910cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )")
2911
2912typedef struct D3D12_DESCRIPTOR_RANGE1
2913{
2914 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2915 UINT NumDescriptors;
2916 UINT BaseShaderRegister;
2917 UINT RegisterSpace;
2918 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
2919 UINT OffsetInDescriptorsFromTableStart;
2920} D3D12_DESCRIPTOR_RANGE1;
2921
2922typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
2923{
2924 UINT NumDescriptorRanges;
2925 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
2926} D3D12_ROOT_DESCRIPTOR_TABLE1;
2927
2928typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
2929{
2930 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2931 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2932 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2933 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2934} D3D12_ROOT_DESCRIPTOR_FLAGS;
2935cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )")
2936
2937typedef struct D3D12_ROOT_DESCRIPTOR1
2938{
2939 UINT ShaderRegister;
2940 UINT RegisterSpace;
2941 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
2942} D3D12_ROOT_DESCRIPTOR1;
2943
2944typedef struct D3D12_ROOT_PARAMETER1
2945{
2946 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2947 union
2948 {
2949 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
2950 D3D12_ROOT_CONSTANTS Constants;
2951 D3D12_ROOT_DESCRIPTOR1 Descriptor;
2952 };
2953 D3D12_SHADER_VISIBILITY ShaderVisibility;
2954} D3D12_ROOT_PARAMETER1;
2955
2956typedef struct D3D12_ROOT_SIGNATURE_DESC1
2957{
2958 UINT NumParameters;
2959 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2960 UINT NumStaticSamplers;
2961 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2962 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2963} D3D12_ROOT_SIGNATURE_DESC1;
2964
2965typedef struct D3D12_ROOT_SIGNATURE_DESC2
2966{
2967 UINT NumParameters;
2968 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2969 UINT NumStaticSamplers;
2970 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC1* pStaticSamplers;
2971 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2972} D3D12_ROOT_SIGNATURE_DESC2;
2973
2974
2975typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
2976{
2977 D3D_ROOT_SIGNATURE_VERSION Version;
2978 union
2979 {
2980 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
2981 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
2982 D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
2983 };
2984} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
2985
2986[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
2987interface ID3D12RootSignatureDeserializer
2988 : IUnknown
2989{
2990 const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
2991};
2992
2993[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
2994interface ID3D12VersionedRootSignatureDeserializer
2995 : IUnknown
2996{
2997 HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
2998 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
2999};
3000
3001cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
3002cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
3003cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
3004cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3005cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3006cpp_quote( "" )
3007cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
3008cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
3009cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
3010cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3011cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3012cpp_quote( "" )
3013cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
3014cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3015cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3016cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3017cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3018cpp_quote( "" )
3019cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
3020cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3021cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3022cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3023cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3024cpp_quote( "" )
3025cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
3026cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
3027cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3028cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3029cpp_quote( "" )
3030cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
3031cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
3032cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3033cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3034cpp_quote( "" )
3035cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(" )
3036cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3037cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3038cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3039cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3040cpp_quote( "" )
3041cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
3042cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3043cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3044cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3045cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3046cpp_quote( "" )
3047cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(")
3048cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
3049cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
3050cpp_quote(" _In_ LPCWSTR RootSignatureSubobjectName,")
3051cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
3052cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
3053cpp_quote("")
3054cpp_quote("HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(")
3055cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
3056cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
3057cpp_quote(" _In_opt_ LPCWSTR RootSignatureSubobjectName,")
3058cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
3059cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
3060cpp_quote("")
3061
3062typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
3063{
3064 SIZE_T ptr;
3065} D3D12_CPU_DESCRIPTOR_HANDLE;
3066
3067
3068typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
3069{
3070 UINT64 ptr;
3071} D3D12_GPU_DESCRIPTOR_HANDLE;
3072
3073cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
3074cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
3075typedef struct D3D12_DISCARD_REGION
3076{
3077 UINT NumRects;
3078 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
3079 UINT FirstSubresource;
3080 UINT NumSubresources;
3081} D3D12_DISCARD_REGION;
3082
3083typedef enum D3D12_QUERY_HEAP_TYPE
3084{
3085 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
3086 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
3087 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
3088 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
3089 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
3090 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
3091 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7,
3092
3093} D3D12_QUERY_HEAP_TYPE;
3094
3095typedef struct D3D12_QUERY_HEAP_DESC
3096{
3097 D3D12_QUERY_HEAP_TYPE Type;
3098 UINT Count;
3099 UINT NodeMask;
3100} D3D12_QUERY_HEAP_DESC;
3101
3102typedef enum D3D12_QUERY_TYPE
3103{
3104 D3D12_QUERY_TYPE_OCCLUSION = 0,
3105 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
3106 D3D12_QUERY_TYPE_TIMESTAMP = 2,
3107 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
3108 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
3109 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
3110 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
3111 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
3112 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
3113 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10,
3114
3115} D3D12_QUERY_TYPE;
3116
3117typedef enum D3D12_PREDICATION_OP
3118{
3119 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
3120 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
3121} D3D12_PREDICATION_OP;
3122
3123typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
3124{
3125 UINT64 IAVertices;
3126 UINT64 IAPrimitives;
3127 UINT64 VSInvocations;
3128 UINT64 GSInvocations;
3129 UINT64 GSPrimitives;
3130 UINT64 CInvocations;
3131 UINT64 CPrimitives;
3132 UINT64 PSInvocations;
3133 UINT64 HSInvocations;
3134 UINT64 DSInvocations;
3135 UINT64 CSInvocations;
3136} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
3137
3138typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
3139{
3140 UINT64 IAVertices;
3141 UINT64 IAPrimitives;
3142 UINT64 VSInvocations;
3143 UINT64 GSInvocations;
3144 UINT64 GSPrimitives;
3145 UINT64 CInvocations;
3146 UINT64 CPrimitives;
3147 UINT64 PSInvocations;
3148 UINT64 HSInvocations;
3149 UINT64 DSInvocations;
3150 UINT64 CSInvocations;
3151 UINT64 ASInvocations;
3152 UINT64 MSInvocations;
3153 UINT64 MSPrimitives;
3154} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
3155
3156typedef struct D3D12_QUERY_DATA_SO_STATISTICS
3157{
3158 UINT64 NumPrimitivesWritten;
3159 UINT64 PrimitivesStorageNeeded;
3160} D3D12_QUERY_DATA_SO_STATISTICS;
3161
3162typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
3163{
3164 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3165 UINT64 SizeInBytes;
3166 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
3167} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
3168
3169typedef struct D3D12_DRAW_ARGUMENTS
3170{
3171 UINT VertexCountPerInstance;
3172 UINT InstanceCount;
3173 UINT StartVertexLocation;
3174 UINT StartInstanceLocation;
3175} D3D12_DRAW_ARGUMENTS;
3176
3177typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
3178{
3179 UINT IndexCountPerInstance;
3180 UINT InstanceCount;
3181 UINT StartIndexLocation;
3182 INT BaseVertexLocation;
3183 UINT StartInstanceLocation;
3184} D3D12_DRAW_INDEXED_ARGUMENTS;
3185
3186typedef struct D3D12_DISPATCH_ARGUMENTS
3187{
3188 UINT ThreadGroupCountX;
3189 UINT ThreadGroupCountY;
3190 UINT ThreadGroupCountZ;
3191} D3D12_DISPATCH_ARGUMENTS;
3192
3193typedef struct D3D12_VERTEX_BUFFER_VIEW
3194{
3195 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3196 UINT SizeInBytes;
3197 UINT StrideInBytes;
3198} D3D12_VERTEX_BUFFER_VIEW;
3199
3200typedef struct D3D12_INDEX_BUFFER_VIEW
3201{
3202 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3203 UINT SizeInBytes;
3204 DXGI_FORMAT Format;
3205} D3D12_INDEX_BUFFER_VIEW;
3206
3207typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
3208{
3209 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
3210 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
3211 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
3212 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
3213 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
3214 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
3215 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
3216 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
3217 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
3218 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
3219 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
3220 D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT,
3221} D3D12_INDIRECT_ARGUMENT_TYPE;
3222
3223typedef struct D3D12_INDIRECT_ARGUMENT_DESC
3224{
3225 D3D12_INDIRECT_ARGUMENT_TYPE Type;
3226
3227 union
3228 {
3229 struct
3230 {
3231 UINT Slot;
3232 } VertexBuffer;
3233
3234 struct
3235 {
3236 UINT RootParameterIndex;
3237 UINT DestOffsetIn32BitValues;
3238 UINT Num32BitValuesToSet;
3239 } Constant;
3240
3241 struct
3242 {
3243 UINT RootParameterIndex;
3244 } ConstantBufferView;
3245
3246 struct
3247 {
3248 UINT RootParameterIndex;
3249 } ShaderResourceView;
3250
3251 struct
3252 {
3253 UINT RootParameterIndex;
3254 } UnorderedAccessView;
3255
3256 // Tier 1.1 support
3257 struct
3258 {
3259 UINT RootParameterIndex;
3260 UINT DestOffsetIn32BitValues;
3261 } IncrementingConstant;
3262 };
3263} D3D12_INDIRECT_ARGUMENT_DESC;
3264
3265typedef struct D3D12_COMMAND_SIGNATURE_DESC
3266{
3267 // The number of bytes between each drawing structure
3268 UINT ByteStride;
3269 UINT NumArgumentDescs;
3270 [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
3271 UINT NodeMask;
3272} D3D12_COMMAND_SIGNATURE_DESC;
3273
3274interface ID3D12Device;
3275
3276[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
3277interface ID3D12Object
3278 : IUnknown
3279{
3280 HRESULT GetPrivateData(
3281 [annotation("_In_")] REFGUID guid,
3282 [annotation("_Inout_")] UINT* pDataSize,
3283 [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
3284 HRESULT SetPrivateData(
3285 [annotation("_In_")] REFGUID guid,
3286 [annotation("_In_")] UINT DataSize,
3287 [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
3288 HRESULT SetPrivateDataInterface(
3289 [annotation("_In_")] REFGUID guid,
3290 [annotation("_In_opt_")] const IUnknown* pData );
3291 HRESULT SetName(
3292 [annotation("_In_z_")] LPCWSTR Name );
3293}
3294
3295[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
3296interface ID3D12DeviceChild
3297 : ID3D12Object
3298{
3299 HRESULT GetDevice(
3300 [in] REFIID riid,
3301 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
3302 );
3303}
3304
3305[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
3306interface ID3D12Pageable
3307 : ID3D12DeviceChild
3308{
3309}
3310
3311[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
3312interface ID3D12Heap
3313 : ID3D12Pageable
3314{
3315 D3D12_HEAP_DESC GetDesc();
3316}
3317
3318[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
3319interface ID3D12Resource
3320 : ID3D12Pageable
3321{
3322 HRESULT Map(
3323 UINT Subresource,
3324 [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
3325 [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
3326
3327 void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
3328
3329 D3D12_RESOURCE_DESC GetDesc();
3330
3331 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
3332
3333 HRESULT WriteToSubresource(
3334 UINT DstSubresource,
3335 [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
3336 [annotation("_In_")] const void* pSrcData,
3337 UINT SrcRowPitch,
3338 UINT SrcDepthPitch );
3339
3340 HRESULT ReadFromSubresource(
3341 [annotation("_Out_")] void* pDstData,
3342 UINT DstRowPitch,
3343 UINT DstDepthPitch,
3344 UINT SrcSubresource,
3345 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
3346
3347 HRESULT GetHeapProperties(
3348 [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
3349 [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
3350 );
3351}
3352
3353[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
3354interface ID3D12CommandAllocator
3355 : ID3D12Pageable
3356{
3357 HRESULT Reset();
3358}
3359
3360[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
3361interface ID3D12Fence
3362 : ID3D12Pageable
3363{
3364 UINT64 GetCompletedValue();
3365 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
3366 HRESULT Signal(UINT64 Value);
3367};
3368
3369[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
3370interface ID3D12Fence1
3371 : ID3D12Fence
3372{
3373 D3D12_FENCE_FLAGS GetCreationFlags();
3374};
3375
3376
3377[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
3378interface ID3D12PipelineState
3379 : ID3D12Pageable
3380{
3381 HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
3382}
3383
3384[uuid(5646804c-9638-48f7-9182-b3ee5a6b60fb), object, local, pointer_default(unique)]
3385interface ID3D12PipelineState1
3386 : ID3D12PipelineState
3387{
3388 HRESULT GetRootSignature(
3389 [in] REFIID riid, // Expected ID3D12RootSignature
3390 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3391}
3392
3393[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
3394interface ID3D12DescriptorHeap
3395 : ID3D12Pageable
3396{
3397 D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
3398
3399 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
3400 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
3401}
3402
3403[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
3404interface ID3D12QueryHeap
3405 : ID3D12Pageable
3406{
3407};
3408
3409[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
3410interface ID3D12CommandSignature
3411 : ID3D12Pageable
3412{
3413};
3414
3415[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
3416interface ID3D12CommandList
3417 : ID3D12DeviceChild
3418{
3419 D3D12_COMMAND_LIST_TYPE GetType();
3420}
3421
3422// Superseded by ID3D12GraphicsCommandList1
3423[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
3424interface ID3D12GraphicsCommandList
3425 : ID3D12CommandList
3426{
3427 HRESULT Close();
3428
3429 HRESULT Reset(
3430 [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
3431 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
3432 );
3433
3434 void ClearState(
3435 [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
3436 );
3437
3438 void DrawInstanced(
3439 [annotation("_In_")] UINT VertexCountPerInstance,
3440 [annotation("_In_")] UINT InstanceCount,
3441 [annotation("_In_")] UINT StartVertexLocation,
3442 [annotation("_In_")] UINT StartInstanceLocation
3443 );
3444
3445 void DrawIndexedInstanced(
3446 [annotation("_In_")] UINT IndexCountPerInstance,
3447 [annotation("_In_")] UINT InstanceCount,
3448 [annotation("_In_")] UINT StartIndexLocation,
3449 [annotation("_In_")] INT BaseVertexLocation,
3450 [annotation("_In_")] UINT StartInstanceLocation
3451 );
3452
3453 void Dispatch(
3454 [annotation("_In_")] UINT ThreadGroupCountX,
3455 [annotation("_In_")] UINT ThreadGroupCountY,
3456 [annotation("_In_")] UINT ThreadGroupCountZ
3457 );
3458
3459 void CopyBufferRegion(
3460 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3461 UINT64 DstOffset,
3462 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3463 UINT64 SrcOffset,
3464 UINT64 NumBytes
3465 );
3466
3467 void CopyTextureRegion(
3468 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
3469 UINT DstX, UINT DstY, UINT DstZ,
3470 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
3471 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
3472 );
3473
3474 void CopyResource(
3475 [annotation("_In_")] ID3D12Resource* pDstResource,
3476 [annotation("_In_")] ID3D12Resource* pSrcResource
3477 );
3478
3479 void CopyTiles(
3480 [annotation("_In_")] ID3D12Resource* pTiledResource,
3481 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
3482 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
3483 [annotation("_In_")] ID3D12Resource* pBuffer,
3484 UINT64 BufferStartOffsetInBytes,
3485 D3D12_TILE_COPY_FLAGS Flags
3486 );
3487
3488 void ResolveSubresource(
3489 [annotation("_In_")] ID3D12Resource* pDstResource,
3490 [annotation("_In_")] UINT DstSubresource,
3491 [annotation("_In_")] ID3D12Resource* pSrcResource,
3492 [annotation("_In_")] UINT SrcSubresource,
3493 [annotation("_In_")] DXGI_FORMAT Format
3494 );
3495
3496 void IASetPrimitiveTopology(
3497 [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
3498 );
3499
3500 void RSSetViewports(
3501 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
3502 [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
3503 );
3504
3505 void RSSetScissorRects(
3506 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
3507 [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
3508 );
3509
3510 void OMSetBlendFactor(
3511 [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
3512 );
3513
3514 void OMSetStencilRef(
3515 [annotation("_In_")] UINT StencilRef
3516 );
3517
3518 void SetPipelineState(
3519 [annotation("_In_")] ID3D12PipelineState* pPipelineState
3520 );
3521
3522 void ResourceBarrier(
3523 [annotation("_In_")] UINT NumBarriers,
3524 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
3525 );
3526
3527 void ExecuteBundle(
3528 [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
3529 );
3530
3531 void SetDescriptorHeaps(
3532 [annotation("_In_")] UINT NumDescriptorHeaps,
3533 [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
3534 );
3535
3536 void SetComputeRootSignature(
3537 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3538 );
3539
3540 void SetGraphicsRootSignature(
3541 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3542 );
3543
3544 void SetComputeRootDescriptorTable(
3545 [annotation("_In_")] UINT RootParameterIndex,
3546 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3547 );
3548
3549 void SetGraphicsRootDescriptorTable(
3550 [annotation("_In_")] UINT RootParameterIndex,
3551 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3552 );
3553
3554 // Single constant
3555 void SetComputeRoot32BitConstant(
3556 [annotation("_In_")] UINT RootParameterIndex,
3557 [annotation("_In_")] UINT SrcData,
3558 [annotation("_In_")] UINT DestOffsetIn32BitValues
3559 );
3560
3561 void SetGraphicsRoot32BitConstant(
3562 [annotation("_In_")] UINT RootParameterIndex,
3563 [annotation("_In_")] UINT SrcData,
3564 [annotation("_In_")] UINT DestOffsetIn32BitValues
3565 );
3566
3567 // Group of constants
3568 void SetComputeRoot32BitConstants(
3569 [annotation("_In_")] UINT RootParameterIndex,
3570 [annotation("_In_")] UINT Num32BitValuesToSet,
3571 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3572 [annotation("_In_")] UINT DestOffsetIn32BitValues
3573 );
3574
3575 void SetGraphicsRoot32BitConstants(
3576 [annotation("_In_")] UINT RootParameterIndex,
3577 [annotation("_In_")] UINT Num32BitValuesToSet,
3578 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3579 [annotation("_In_")] UINT DestOffsetIn32BitValues
3580 );
3581
3582 // CBV
3583 void SetComputeRootConstantBufferView(
3584 [annotation("_In_")] UINT RootParameterIndex,
3585 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3586 );
3587
3588 void SetGraphicsRootConstantBufferView(
3589 [annotation("_In_")] UINT RootParameterIndex,
3590 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3591 );
3592
3593 // SRV
3594 void SetComputeRootShaderResourceView(
3595 [annotation("_In_")] UINT RootParameterIndex,
3596 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3597 );
3598
3599 void SetGraphicsRootShaderResourceView(
3600 [annotation("_In_")] UINT RootParameterIndex,
3601 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3602 );
3603
3604 // UAV
3605 void SetComputeRootUnorderedAccessView(
3606 [annotation("_In_")] UINT RootParameterIndex,
3607 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3608 );
3609
3610 void SetGraphicsRootUnorderedAccessView(
3611 [annotation("_In_")] UINT RootParameterIndex,
3612 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3613 );
3614
3615 void IASetIndexBuffer(
3616 [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
3617 );
3618
3619 void IASetVertexBuffers(
3620 [annotation("_In_")] UINT StartSlot,
3621 [annotation("_In_")] UINT NumViews,
3622 [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
3623 );
3624
3625 void SOSetTargets(
3626 [annotation("_In_")] UINT StartSlot,
3627 [annotation("_In_")] UINT NumViews,
3628 [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
3629 );
3630
3631 void OMSetRenderTargets(
3632 [annotation("_In_")] UINT NumRenderTargetDescriptors,
3633 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
3634 [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
3635 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
3636 );
3637
3638 void ClearDepthStencilView(
3639 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
3640 [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
3641 [annotation("_In_")] FLOAT Depth,
3642 [annotation("_In_")] UINT8 Stencil,
3643 [annotation("_In_")] UINT NumRects,
3644 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3645 );
3646
3647 void ClearRenderTargetView(
3648 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
3649 [annotation("_In_")] const FLOAT ColorRGBA[4],
3650 [annotation("_In_")] UINT NumRects,
3651 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3652 );
3653
3654 void ClearUnorderedAccessViewUint(
3655 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3656 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3657 [annotation("_In_")] ID3D12Resource* pResource,
3658 [annotation("_In_")] const UINT Values[4],
3659 [annotation("_In_")] UINT NumRects,
3660 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3661 );
3662
3663 void ClearUnorderedAccessViewFloat(
3664 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3665 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3666 [annotation("_In_")] ID3D12Resource* pResource,
3667 [annotation("_In_")] const FLOAT Values[4],
3668 [annotation("_In_")] UINT NumRects,
3669 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3670 );
3671
3672 void DiscardResource(
3673 [annotation("_In_")] ID3D12Resource* pResource,
3674 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
3675 );
3676
3677 void BeginQuery(
3678 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3679 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3680 [annotation("_In_")] UINT Index
3681 );
3682
3683 void EndQuery(
3684 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3685 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3686 [annotation("_In_")] UINT Index
3687 );
3688
3689 void ResolveQueryData(
3690 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3691 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3692 [annotation("_In_")] UINT StartIndex,
3693 [annotation("_In_")] UINT NumQueries,
3694 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
3695 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
3696 );
3697
3698 void SetPredication(
3699 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
3700 [annotation("_In_")] UINT64 AlignedBufferOffset,
3701 [annotation("_In_")] D3D12_PREDICATION_OP Operation
3702 );
3703
3704 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3705 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3706 void EndEvent();
3707
3708 void ExecuteIndirect(
3709 [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
3710 [annotation("_In_")] UINT MaxCommandCount,
3711 [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
3712 [annotation("_In_")] UINT64 ArgumentBufferOffset,
3713 [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
3714 [annotation("_In_")] UINT64 CountBufferOffset
3715 );
3716}
3717
3718[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
3719interface ID3D12GraphicsCommandList1
3720 : ID3D12GraphicsCommandList
3721{
3722 void AtomicCopyBufferUINT(
3723 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3724 UINT64 DstOffset,
3725 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3726 UINT64 SrcOffset,
3727 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3728 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3729 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3730 );
3731
3732 // UINT64 is only valid on UMA architectures
3733 void AtomicCopyBufferUINT64(
3734 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3735 UINT64 DstOffset,
3736 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3737 UINT64 SrcOffset,
3738 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3739 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3740 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3741 );
3742
3743 void OMSetDepthBounds(
3744 [annotation("_In_")] FLOAT Min,
3745 [annotation("_In_")] FLOAT Max
3746 );
3747
3748 void SetSamplePositions(
3749 [annotation("_In_")] UINT NumSamplesPerPixel,
3750 [annotation("_In_")] UINT NumPixels,
3751 [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
3752 );
3753
3754 void ResolveSubresourceRegion(
3755 [annotation("_In_")] ID3D12Resource* pDstResource,
3756 [annotation("_In_")] UINT DstSubresource,
3757 [annotation("_In_")] UINT DstX,
3758 [annotation("_In_")] UINT DstY,
3759 [annotation("_In_")] ID3D12Resource* pSrcResource,
3760 [annotation("_In_")] UINT SrcSubresource,
3761 [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
3762 [annotation("_In_")] DXGI_FORMAT Format,
3763 [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
3764 );
3765
3766 void SetViewInstanceMask(
3767 [annotation("_In_")] UINT Mask
3768 );
3769
3770}
3771
3772typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
3773{
3774 D3D12_GPU_VIRTUAL_ADDRESS Dest;
3775 UINT32 Value;
3776} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
3777
3778typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
3779{
3780 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
3781 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
3782 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
3783
3784} D3D12_WRITEBUFFERIMMEDIATE_MODE;
3785
3786[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
3787interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
3788{
3789 void WriteBufferImmediate(
3790 UINT Count,
3791 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3792 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
3793 );
3794}
3795
3796[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
3797interface ID3D12CommandQueue
3798 : ID3D12Pageable
3799{
3800 void UpdateTileMappings(
3801 [annotation("_In_")] ID3D12Resource* pResource,
3802 UINT NumResourceRegions,
3803 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
3804 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
3805 [annotation("_In_opt_")] ID3D12Heap* pHeap,
3806 UINT NumRanges,
3807 [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
3808 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
3809 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
3810 D3D12_TILE_MAPPING_FLAGS Flags );
3811
3812 void CopyTileMappings(
3813 [annotation("_In_")] ID3D12Resource* pDstResource,
3814 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
3815 [annotation("_In_")] ID3D12Resource* pSrcResource,
3816 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
3817 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
3818 D3D12_TILE_MAPPING_FLAGS Flags );
3819
3820 void ExecuteCommandLists(
3821 [annotation("_In_")] UINT NumCommandLists,
3822 [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
3823 );
3824
3825 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3826 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3827 void EndEvent();
3828
3829 HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
3830 HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
3831
3832 HRESULT GetTimestampFrequency(
3833 [annotation("_Out_")] UINT64* pFrequency
3834 );
3835
3836 HRESULT GetClockCalibration(
3837 [annotation("_Out_")] UINT64* pGpuTimestamp,
3838 [annotation("_Out_")] UINT64* pCpuTimestamp
3839 );
3840
3841 D3D12_COMMAND_QUEUE_DESC GetDesc();
3842}
3843
3844//
3845// Dynamic priority command queue features start
3846//
3847
3848typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
3849{
3850 [annotation("_Out_")] UINT ComputeQueuesPer3DQueue; // 0 means scheduling groups do not group multiple queues.
3851} D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
3852
3853typedef enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
3854{
3855 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
3856 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1,
3857} D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
3858
3859typedef enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
3860{
3861 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
3862 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
3863 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
3864
3865 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
3866 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
3867 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
3868 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
3869 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
3870 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
3871 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
3872 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
3873 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
3874 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
3875 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
3876 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
3877 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
3878 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
3879
3880 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32,
3881} D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
3882
3883[uuid(3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9), object, local, pointer_default(unique)]
3884interface ID3D12CommandQueue1
3885 : ID3D12CommandQueue
3886{
3887 HRESULT SetProcessPriority(D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
3888 HRESULT GetProcessPriority(D3D12_COMMAND_QUEUE_PROCESS_PRIORITY* pOutValue);
3889
3890 HRESULT SetGlobalPriority(D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
3891 HRESULT GetGlobalPriority(D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY* pOutValue);
3892}
3893
3894//
3895// Dynamic priority command queue features end
3896//
3897
3898
3899[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
3900interface ID3D12Device
3901 : ID3D12Object
3902{
3903 UINT GetNodeCount();
3904
3905 HRESULT CreateCommandQueue(
3906 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
3907 [in] REFIID riid, // Expected: ID3D12CommandQueue
3908 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
3909 );
3910
3911 HRESULT CreateCommandAllocator(
3912 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3913 [in] REFIID riid, // Expected: ID3D12CommandAllocator
3914 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
3915 );
3916
3917 HRESULT CreateGraphicsPipelineState(
3918 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3919 [in] REFIID riid, // Expected: ID3D12PipelineState
3920 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3921 );
3922
3923 HRESULT CreateComputePipelineState(
3924 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3925 [in] REFIID riid, // Expected: ID3D12PipelineState
3926 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3927 );
3928
3929 HRESULT CreateCommandList(
3930 [annotation("_In_")] UINT nodeMask,
3931 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3932 [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
3933 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
3934 [in] REFIID riid, // Expected: ID3D12CommandList
3935 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3936 );
3937
3938 HRESULT CheckFeatureSupport(
3939 D3D12_FEATURE Feature,
3940 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
3941 UINT FeatureSupportDataSize
3942 );
3943
3944 HRESULT CreateDescriptorHeap(
3945 [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
3946 [in] REFIID riid, // Expected ID3D12DescriptorHeap
3947 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
3948
3949 UINT GetDescriptorHandleIncrementSize(
3950 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
3951
3952 HRESULT CreateRootSignature(
3953 [annotation("_In_")] UINT nodeMask,
3954 [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
3955 [annotation("_In_")] SIZE_T blobLengthInBytes,
3956 [in] REFIID riid, // Expected ID3D12RootSignature
3957 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3958
3959 void CreateConstantBufferView(
3960 [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
3961 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3962
3963 void CreateShaderResourceView(
3964 [annotation("_In_opt_")] ID3D12Resource* pResource,
3965 [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
3966 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3967
3968 void CreateUnorderedAccessView(
3969 [annotation("_In_opt_")] ID3D12Resource* pResource,
3970 [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
3971 [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
3972 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3973
3974 void CreateRenderTargetView(
3975 [annotation("_In_opt_")] ID3D12Resource* pResource,
3976 [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
3977 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3978
3979 void CreateDepthStencilView(
3980 [annotation("_In_opt_")] ID3D12Resource* pResource,
3981 [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
3982 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3983
3984 void CreateSampler(
3985 [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
3986 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3987
3988 void CopyDescriptors(
3989 [annotation("_In_")] UINT NumDestDescriptorRanges,
3990 [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
3991 [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
3992 [annotation("_In_")] UINT NumSrcDescriptorRanges,
3993 [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
3994 [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
3995 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3996
3997 void CopyDescriptorsSimple(
3998 [annotation("_In_")] UINT NumDescriptors,
3999 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
4000 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
4001 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
4002
4003 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
4004 [annotation("_In_")] UINT visibleMask,
4005 [annotation("_In_")] UINT numResourceDescs,
4006 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
4007
4008 D3D12_HEAP_PROPERTIES GetCustomHeapProperties(
4009 [annotation("_In_")] UINT nodeMask,
4010 D3D12_HEAP_TYPE heapType
4011 );
4012
4013 HRESULT CreateCommittedResource(
4014 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4015 D3D12_HEAP_FLAGS HeapFlags,
4016 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4017 D3D12_RESOURCE_STATES InitialResourceState,
4018 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4019 [in] REFIID riidResource, // Expected: ID3D12Resource*
4020 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
4021
4022 HRESULT CreateHeap(
4023 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
4024 [in] REFIID riid, // Expected: ID3D12Heap*
4025 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
4026
4027 HRESULT CreatePlacedResource(
4028 [annotation("_In_")] ID3D12Heap* pHeap,
4029 UINT64 HeapOffset,
4030 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4031 D3D12_RESOURCE_STATES InitialState,
4032 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4033 [in] REFIID riid, // Expected: ID3D12Resource*
4034 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
4035
4036 HRESULT CreateReservedResource(
4037 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4038 D3D12_RESOURCE_STATES InitialState,
4039 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4040 [in] REFIID riid, // Expected: ID3D12Resource*
4041 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
4042
4043 HRESULT CreateSharedHandle(
4044 [annotation("_In_")] ID3D12DeviceChild* pObject,
4045 [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
4046 DWORD Access,
4047 [annotation("_In_opt_")] LPCWSTR Name,
4048 [annotation("_Out_")] HANDLE* pHandle );
4049
4050 HRESULT OpenSharedHandle(
4051 [annotation("_In_")] HANDLE NTHandle,
4052 [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
4053 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
4054
4055 HRESULT OpenSharedHandleByName(
4056 [annotation("_In_")] LPCWSTR Name,
4057 DWORD Access,
4058 [out, annotation("_Out_")] HANDLE* pNTHandle );
4059
4060 HRESULT MakeResident(
4061 UINT NumObjects,
4062 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
4063
4064 HRESULT Evict(
4065 UINT NumObjects,
4066 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
4067
4068 HRESULT CreateFence(
4069 UINT64 InitialValue,
4070 D3D12_FENCE_FLAGS Flags,
4071 [in] REFIID riid, // Expected: ID3D12Fence
4072 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);
4073
4074 HRESULT GetDeviceRemovedReason();
4075
4076 void GetCopyableFootprints(
4077 [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
4078 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
4079 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
4080 UINT64 BaseOffset,
4081 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
4082 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
4083 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
4084 [annotation("_Out_opt_")] UINT64* pTotalBytes );
4085
4086 HRESULT CreateQueryHeap(
4087 [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
4088 [in] REFIID riid, // Expected: ID3D12QueryHeap
4089 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
4090 );
4091
4092 HRESULT SetStablePowerState(BOOL Enable);
4093
4094 HRESULT CreateCommandSignature(
4095 [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
4096 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
4097 [in] REFIID riid, // Expected: ID3D12CommandSignature
4098 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
4099 );
4100
4101 void GetResourceTiling(
4102 [annotation("_In_")] ID3D12Resource* pTiledResource,
4103 [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource,
4104 [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc,
4105 [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips,
4106 [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings,
4107 [annotation("_In_")] UINT FirstSubresourceTilingToGet,
4108 [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
4109 );
4110
4111 LUID GetAdapterLuid();
4112}
4113
4114// D3D12 Revision 1
4115[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
4116interface ID3D12PipelineLibrary
4117 : ID3D12DeviceChild
4118{
4119 HRESULT StorePipeline(
4120 [annotation("_In_opt_")] LPCWSTR pName,
4121 [annotation("_In_")] ID3D12PipelineState *pPipeline
4122 );
4123
4124 HRESULT LoadGraphicsPipeline(
4125 [annotation("_In_")] LPCWSTR pName,
4126 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
4127 [in] REFIID riid, // Expected: ID3D12PipelineState
4128 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4129 );
4130
4131 HRESULT LoadComputePipeline(
4132 [annotation("_In_")] LPCWSTR pName,
4133 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
4134 [in] REFIID riid, // Expected: ID3D12PipelineState
4135 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4136 );
4137
4138 SIZE_T GetSerializedSize();
4139
4140 HRESULT Serialize(
4141 [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
4142 SIZE_T DataSizeInBytes
4143 );
4144}
4145
4146// Pipeline State v2
4147[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
4148interface ID3D12PipelineLibrary1
4149 : ID3D12PipelineLibrary
4150{
4151 HRESULT LoadPipeline(
4152 [annotation("_In_")] LPCWSTR pName,
4153 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
4154 [in] REFIID riid, // Expected: ID3D12PipelineState
4155 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4156 );
4157}
4158
4159typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
4160{
4161 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
4162 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
4163
4164 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
4165} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
4166cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )" )
4167
4168// Applications may use the whole value range of UINT for a priority.
4169// These names are merely semantic suggestions.
4170typedef enum D3D12_RESIDENCY_PRIORITY
4171{
4172 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
4173 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
4174 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
4175 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
4176 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
4177} D3D12_RESIDENCY_PRIORITY;
4178
4179[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
4180interface ID3D12Device1
4181 : ID3D12Device
4182{
4183 HRESULT CreatePipelineLibrary(
4184 [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
4185 SIZE_T BlobLength,
4186 [in] REFIID riid, // Expected: ID3D12PipelineLibrary
4187 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
4188 );
4189
4190 HRESULT SetEventOnMultipleFenceCompletion(
4191 [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
4192 [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
4193 UINT NumFences,
4194 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
4195 HANDLE hEvent
4196 );
4197
4198 HRESULT SetResidencyPriority(
4199 UINT NumObjects,
4200 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
4201 [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
4202}
4203
4204[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
4205interface ID3D12Device2
4206 : ID3D12Device1
4207{
4208 HRESULT CreatePipelineState(
4209 [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
4210 [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
4211 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4212 );
4213}
4214
4215typedef enum D3D12_RESIDENCY_FLAGS
4216{
4217 D3D12_RESIDENCY_FLAG_NONE = 0x0,
4218 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
4219} D3D12_RESIDENCY_FLAGS;
4220cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )" )
4221
4222[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
4223interface ID3D12Device3
4224 : ID3D12Device2
4225{
4226 HRESULT OpenExistingHeapFromAddress(
4227 [annotation("_In_")] const void* pAddress,
4228 [in] REFIID riid, // Expected: ID3D12Heap
4229 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
4230 );
4231 HRESULT OpenExistingHeapFromFileMapping(
4232 [annotation("_In_")] HANDLE hFileMapping,
4233 [in] REFIID riid, // Expected: ID3D12Heap
4234 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
4235 );
4236 HRESULT EnqueueMakeResident(
4237 D3D12_RESIDENCY_FLAGS Flags,
4238 UINT NumObjects,
4239 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
4240 [annotation("_In_")] ID3D12Fence* pFenceToSignal,
4241 UINT64 FenceValueToSignal
4242 );
4243}
4244
4245typedef enum D3D12_COMMAND_LIST_FLAGS
4246{
4247 D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
4248} D3D12_COMMAND_LIST_FLAGS;
4249cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )")
4250
4251
4252typedef enum D3D12_COMMAND_POOL_FLAGS
4253{
4254 D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
4255
4256} D3D12_COMMAND_POOL_FLAGS;
4257cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )")
4258
4259typedef enum D3D12_COMMAND_RECORDER_FLAGS
4260{
4261 D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
4262
4263} D3D12_COMMAND_RECORDER_FLAGS;
4264cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )")
4265
4266typedef enum D3D12_PROTECTED_SESSION_STATUS
4267{
4268 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
4269 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
4270} D3D12_PROTECTED_SESSION_STATUS;
4271
4272[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
4273interface ID3D12ProtectedSession
4274 : ID3D12DeviceChild
4275{
4276 HRESULT GetStatusFence(
4277 [in] REFIID riid,
4278 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
4279
4280 D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
4281}
4282
4283typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
4284{
4285 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
4286 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
4287
4288} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
4289cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )")
4290
4291typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
4292{
4293 UINT NodeIndex; // input
4294 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; // output
4295} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
4296
4297typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
4298{
4299 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
4300
4301} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
4302cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )")
4303
4304typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
4305{
4306 UINT NodeMask;
4307 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
4308} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
4309
4310[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
4311interface ID3D12ProtectedResourceSession
4312 : ID3D12ProtectedSession
4313{
4314 D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
4315}
4316
4317[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
4318interface ID3D12Device4
4319 : ID3D12Device3
4320{
4321 HRESULT CreateCommandList1(
4322 [annotation("_In_")] UINT nodeMask,
4323 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
4324 [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
4325 [in] REFIID riid, // Expected: ID3D12CommandList
4326 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
4327 );
4328
4329 HRESULT CreateProtectedResourceSession(
4330 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
4331 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession,
4332 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
4333 );
4334
4335 HRESULT CreateCommittedResource1(
4336 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4337 D3D12_HEAP_FLAGS HeapFlags,
4338 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4339 D3D12_RESOURCE_STATES InitialResourceState,
4340 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4341 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4342 [in] REFIID riidResource, // Expected: ID3D12Resource1*
4343 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
4344 );
4345
4346 HRESULT CreateHeap1(
4347 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
4348 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4349 [in] REFIID riid, // Expected: ID3D12Heap1*
4350 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
4351 );
4352
4353 HRESULT CreateReservedResource1(
4354 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4355 D3D12_RESOURCE_STATES InitialState,
4356 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4357 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4358 [in] REFIID riid, // Expected: ID3D12Resource1*
4359 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
4360 );
4361
4362 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
4363 UINT visibleMask,
4364 UINT numResourceDescs,
4365 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
4366 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
4367 );
4368}
4369
4370typedef enum D3D12_LIFETIME_STATE
4371{
4372 D3D12_LIFETIME_STATE_IN_USE,
4373 D3D12_LIFETIME_STATE_NOT_IN_USE,
4374} D3D12_LIFETIME_STATE;
4375
4376interface ID3D12LifetimeTracker;
4377
4378[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
4379interface ID3D12LifetimeOwner : IUnknown
4380{
4381 void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
4382}
4383
4384[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
4385interface ID3D12SwapChainAssistant
4386 : IUnknown
4387{
4388 LUID GetLUID();
4389 HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
4390 HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
4391 REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
4392 HRESULT InsertImplicitSync();
4393}
4394
4395[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
4396interface ID3D12LifetimeTracker
4397 : ID3D12DeviceChild
4398{
4399 HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
4400}
4401
4402typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
4403{
4404 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
4405 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
4406 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
4407 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
4408 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
4409} D3D12_META_COMMAND_PARAMETER_TYPE;
4410
4411typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
4412{
4413 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
4414 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
4415} D3D12_META_COMMAND_PARAMETER_FLAGS;
4416cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )")
4417
4418typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
4419{
4420 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
4421 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
4422 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
4423} D3D12_META_COMMAND_PARAMETER_STAGE;
4424
4425typedef struct D3D12_META_COMMAND_PARAMETER_DESC
4426{
4427 LPCWSTR Name;
4428 D3D12_META_COMMAND_PARAMETER_TYPE Type;
4429 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
4430 D3D12_RESOURCE_STATES RequiredResourceState;
4431 UINT StructureOffset;
4432} D3D12_META_COMMAND_PARAMETER_DESC;
4433
4434typedef enum D3D12_GRAPHICS_STATES
4435{
4436 D3D12_GRAPHICS_STATE_NONE = 0,
4437 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
4438 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
4439 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
4440 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
4441 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
4442 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
4443 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
4444 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
4445 D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
4446 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
4447 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
4448 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
4449 D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
4450 D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
4451 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
4452 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
4453 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
4454
4455} D3D12_GRAPHICS_STATES;
4456cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )")
4457
4458typedef struct D3D12_META_COMMAND_DESC
4459{
4460 GUID Id;
4461 LPCWSTR Name;
4462 D3D12_GRAPHICS_STATES InitializationDirtyState;
4463 D3D12_GRAPHICS_STATES ExecutionDirtyState;
4464} D3D12_META_COMMAND_DESC;
4465
4466[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
4467interface ID3D12StateObject
4468 : ID3D12Pageable
4469{
4470}
4471
4472[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
4473interface ID3D12StateObjectProperties
4474 : IUnknown
4475{
4476 void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
4477 UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
4478 UINT64 GetPipelineStackSize();
4479 void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
4480}
4481
4482typedef struct D3D12_PROGRAM_IDENTIFIER
4483{
4484 UINT64 OpaqueData[4];
4485} D3D12_PROGRAM_IDENTIFIER;
4486
4487[uuid(460caac7-1d24-446a-a184-ca67db494138), object, local, pointer_default(unique)]
4488interface ID3D12StateObjectProperties1
4489 : ID3D12StateObjectProperties
4490{
4491 D3D12_PROGRAM_IDENTIFIER GetProgramIdentifier(LPCWSTR pProgramName);
4492}
4493
4494[uuid(d5e82917-f0f1-44cf-ae5e-ce222dd0b884), object, local, pointer_default(unique)]
4495interface ID3D12StateObjectProperties2
4496 : ID3D12StateObjectProperties1
4497{
4498 HRESULT GetGlobalRootSignatureForProgram(
4499 [in] LPCWSTR pProgramName,
4500 [in] REFIID riid, // Expected ID3D12RootSignature
4501 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
4502
4503 HRESULT GetGlobalRootSignatureForShader(
4504 [in] LPCWSTR pExportName,
4505 [in] REFIID riid, // Expected ID3D12RootSignature
4506 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
4507}
4508
4509typedef struct D3D12_NODE_ID
4510{
4511 LPCWSTR Name;
4512 UINT ArrayIndex;
4513} D3D12_NODE_ID;
4514
4515typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
4516{
4517 UINT64 MinSizeInBytes;
4518 UINT64 MaxSizeInBytes;
4519 UINT SizeGranularityInBytes;
4520} D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
4521
4522[uuid(065acf71-f863-4b89-82f4-02e4d5886757), object, local, pointer_default(unique)]
4523interface ID3D12WorkGraphProperties : IUnknown
4524{
4525 UINT GetNumWorkGraphs();
4526 LPCWSTR GetProgramName(UINT WorkGraphIndex);
4527 UINT GetWorkGraphIndex(LPCWSTR pProgramName);
4528
4529 UINT GetNumNodes(UINT WorkGraphIndex);
4530 D3D12_NODE_ID GetNodeID(UINT WorkGraphIndex, UINT NodeIndex);
4531 UINT GetNodeIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
4532 UINT GetNodeLocalRootArgumentsTableIndex(UINT WorkGraphIndex, UINT NodeIndex);
4533
4534 UINT GetNumEntrypoints(UINT WorkGraphIndex);
4535 D3D12_NODE_ID GetEntrypointID(UINT WorkGraphIndex, UINT EntrypointIndex);
4536 UINT GetEntrypointIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
4537 UINT GetEntrypointRecordSizeInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
4538
4539 void GetWorkGraphMemoryRequirements(
4540 UINT WorkGraphIndex,
4541 [annotation("_Out_")] D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS* pWorkGraphMemoryRequirements);
4542
4543 UINT GetEntrypointRecordAlignmentInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
4544}
4545
4546
4547typedef enum D3D12_STATE_SUBOBJECT_TYPE
4548{
4549 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
4550 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
4551 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
4552 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
4553 // 4 unused
4554 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
4555 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
4556 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4557 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4558 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
4559 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, // D3D12_RAYTRACING_PIPELINE_CONFIG
4560 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, // D3D12_HIT_GROUP_DESC
4561 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12, // D3D12_RAYTRACING_PIPELINE_CONFIG1
4562 D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13, // D3D12_WORK_GRAPH_DESC
4563 D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14, // D3D12_STREAM_OUTPUT_DESC
4564 D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15, // D3D12_BLEND_DESC
4565 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16, // UINT
4566 D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17, // D3D12_RASTERIZER_DESC2
4567 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18, // D3D12_DEPTH_STENCIL_DESC
4568 D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19, // D3D12_INPUT_LAYOUT_DESC
4569 D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
4570 D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
4571 D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22, // D3D12_RT_FORMAT_ARRAY
4572 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23, // DXGI_FORMAT
4573 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24, // DXGI_SAMPLE_DESC
4574 // 25 is unused
4575 D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26, // D3D12_PIPELINE_STATE_FLAGS
4576 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27, // D3D12_DEPTH_STENCIL_DESC1
4577 D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28, // D3D12_VIEW_INSTANCING_DESC
4578 D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29, // D3D12_GENERIC_PROGRAM_DESC
4579 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30, // D3D12_DEPTH_STENCIL_DESC2
4580 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31, // D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_DESC
4581 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32, // D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE_DESC
4582 D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33, // D3D12_COMPILER_EXISTING_COLLECTION_DESC
4583 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36, // D3D12_EXISTING_COLLECTION_BY_KEY_DESC
4584 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
4585} D3D12_STATE_SUBOBJECT_TYPE;
4586
4587typedef struct D3D12_STATE_SUBOBJECT
4588{
4589 D3D12_STATE_SUBOBJECT_TYPE Type;
4590 const void* pDesc;
4591} D3D12_STATE_SUBOBJECT;
4592
4593typedef enum D3D12_STATE_OBJECT_FLAGS
4594{
4595 D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
4596 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
4597 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
4598 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
4599
4600} D3D12_STATE_OBJECT_FLAGS;
4601cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )")
4602
4603typedef struct D3D12_STATE_OBJECT_CONFIG
4604{
4605 D3D12_STATE_OBJECT_FLAGS Flags;
4606} D3D12_STATE_OBJECT_CONFIG;
4607
4608typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
4609{
4610 ID3D12RootSignature* pGlobalRootSignature;
4611} D3D12_GLOBAL_ROOT_SIGNATURE;
4612
4613typedef struct D3D12_LOCAL_ROOT_SIGNATURE
4614{
4615 ID3D12RootSignature* pLocalRootSignature;
4616} D3D12_LOCAL_ROOT_SIGNATURE;
4617
4618typedef struct D3D12_NODE_MASK
4619{
4620 UINT NodeMask;
4621} D3D12_NODE_MASK;
4622
4623typedef struct D3D12_SAMPLE_MASK
4624{
4625 UINT SampleMask;
4626} D3D12_SAMPLE_MASK;
4627
4628typedef struct D3D12_IB_STRIP_CUT_VALUE
4629{
4630 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
4631} D3D12_IB_STRIP_CUT_VALUE;
4632
4633typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
4634{
4635 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
4636} D3D12_PRIMITIVE_TOPOLOGY_DESC;
4637
4638typedef struct D3D12_DEPTH_STENCIL_FORMAT
4639{
4640 DXGI_FORMAT DepthStencilFormat;
4641} D3D12_DEPTH_STENCIL_FORMAT;
4642
4643typedef enum D3D12_EXPORT_FLAGS
4644{
4645 D3D12_EXPORT_FLAG_NONE = 0x0,
4646} D3D12_EXPORT_FLAGS;
4647cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )")
4648
4649typedef struct D3D12_EXPORT_DESC
4650{
4651 LPCWSTR Name;
4652 [annotation("_In_opt_")] LPCWSTR ExportToRename;
4653 D3D12_EXPORT_FLAGS Flags;
4654} D3D12_EXPORT_DESC;
4655
4656typedef struct D3D12_DXIL_LIBRARY_DESC
4657{
4658 D3D12_SHADER_BYTECODE DXILLibrary;
4659 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4660 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
4661} D3D12_DXIL_LIBRARY_DESC;
4662
4663
4664typedef struct D3D12_EXISTING_COLLECTION_DESC
4665{
4666 ID3D12StateObject* pExistingCollection;
4667 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4668 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
4669} D3D12_EXISTING_COLLECTION_DESC;
4670
4671typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4672{
4673 const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate;
4674 UINT NumExports;
4675 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4676} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4677
4678typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4679{
4680 LPCWSTR SubobjectToAssociate;
4681 UINT NumExports;
4682 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4683} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4684
4685typedef enum D3D12_HIT_GROUP_TYPE
4686{
4687 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
4688 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
4689} D3D12_HIT_GROUP_TYPE;
4690
4691typedef struct D3D12_HIT_GROUP_DESC
4692{
4693 LPCWSTR HitGroupExport;
4694 D3D12_HIT_GROUP_TYPE Type;
4695 [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
4696 [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
4697 [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
4698} D3D12_HIT_GROUP_DESC;
4699
4700typedef struct D3D12_RAYTRACING_SHADER_CONFIG
4701{
4702 UINT MaxPayloadSizeInBytes;
4703 UINT MaxAttributeSizeInBytes;
4704} D3D12_RAYTRACING_SHADER_CONFIG;
4705
4706typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
4707{
4708 UINT MaxTraceRecursionDepth;
4709} D3D12_RAYTRACING_PIPELINE_CONFIG;
4710
4711typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
4712{
4713 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
4714 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
4715 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4716 D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400,
4717} D3D12_RAYTRACING_PIPELINE_FLAGS;
4718cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )")
4719
4720typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
4721{
4722 UINT MaxTraceRecursionDepth;
4723 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
4724} D3D12_RAYTRACING_PIPELINE_CONFIG1;
4725
4726typedef struct D3D12_NODE_OUTPUT_OVERRIDES
4727{
4728 UINT OutputIndex;
4729 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4730 [annotation("_In_opt_")] const BOOL* pAllowSparseNodes;
4731 [annotation("_In_opt_")] const UINT* pMaxRecords;
4732 [annotation("_In_opt_")] const UINT* pMaxRecordsSharedWithOutputIndex;
4733} D3D12_NODE_OUTPUT_OVERRIDES;
4734
4735typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
4736{
4737 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4738 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4739 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4740 [annotation("_In_opt_ ")] const D3D12_NODE_ID* pShareInputOf;
4741 [annotation("_In_reads_opt_(3)")] const UINT* pDispatchGrid;
4742 [annotation("_In_reads_opt_(3)")] const UINT* pMaxDispatchGrid;
4743 UINT NumOutputOverrides;
4744 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4745} D3D12_BROADCASTING_LAUNCH_OVERRIDES;
4746
4747typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
4748{
4749 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4750 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4751 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4752 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4753 UINT NumOutputOverrides;
4754 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4755} D3D12_COALESCING_LAUNCH_OVERRIDES;
4756
4757typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
4758{
4759 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4760 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4761 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4762 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4763 UINT NumOutputOverrides;
4764 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4765} D3D12_THREAD_LAUNCH_OVERRIDES;
4766
4767typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
4768{
4769 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4770 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4771 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4772 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4773 UINT NumOutputOverrides;
4774 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4775} D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
4776
4777typedef enum D3D12_NODE_OVERRIDES_TYPE
4778{
4779 D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
4780 D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
4781 D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
4782 D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
4783 D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4,
4784} D3D12_NODE_OVERRIDES_TYPE;
4785
4786typedef struct D3D12_SHADER_NODE
4787{
4788 LPCWSTR Shader;
4789 D3D12_NODE_OVERRIDES_TYPE OverridesType;
4790 union
4791 {
4792 const D3D12_BROADCASTING_LAUNCH_OVERRIDES* pBroadcastingLaunchOverrides;
4793 const D3D12_COALESCING_LAUNCH_OVERRIDES* pCoalescingLaunchOverrides;
4794 const D3D12_THREAD_LAUNCH_OVERRIDES* pThreadLaunchOverrides;
4795 const D3D12_COMMON_COMPUTE_NODE_OVERRIDES* pCommonComputeNodeOverrides;
4796 };
4797} D3D12_SHADER_NODE;
4798
4799
4800typedef enum D3D12_NODE_TYPE
4801{
4802 D3D12_NODE_TYPE_SHADER = 0x0,
4803} D3D12_NODE_TYPE;
4804
4805typedef struct D3D12_NODE
4806{
4807 D3D12_NODE_TYPE NodeType;
4808 union
4809 {
4810 D3D12_SHADER_NODE Shader; // D3D12_NODE_TYPE_SHADER
4811 };
4812} D3D12_NODE;
4813
4814typedef enum D3D12_WORK_GRAPH_FLAGS
4815{
4816 D3D12_WORK_GRAPH_FLAG_NONE = 0x0,
4817 D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1,
4818} D3D12_WORK_GRAPH_FLAGS;
4819cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )")
4820
4821typedef struct D3D12_WORK_GRAPH_DESC
4822{
4823 LPCWSTR ProgramName;
4824 D3D12_WORK_GRAPH_FLAGS Flags;
4825 UINT NumEntrypoints;
4826 [annotation("_In_reads_opt_(NumEntrypoints)")] const D3D12_NODE_ID* pEntrypoints;
4827 UINT NumExplicitlyDefinedNodes;
4828 [annotation("_In_reads_opt_(NumExplicitlyDefinedNodes)")] const D3D12_NODE* pExplicitlyDefinedNodes;
4829} D3D12_WORK_GRAPH_DESC;
4830
4831typedef struct D3D12_GENERIC_PROGRAM_DESC
4832{
4833 LPCWSTR ProgramName;
4834 UINT NumExports;
4835 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4836 UINT NumSubobjects;
4837 [annotation("_In_reads_opt_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* const* ppSubobjects;
4838} D3D12_GENERIC_PROGRAM_DESC;
4839
4840typedef enum D3D12_STATE_OBJECT_TYPE
4841{
4842 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
4843 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
4844 D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
4845} D3D12_STATE_OBJECT_TYPE;
4846
4847typedef struct D3D12_STATE_OBJECT_DESC
4848{
4849 D3D12_STATE_OBJECT_TYPE Type;
4850 UINT NumSubobjects;
4851 [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects;
4852} D3D12_STATE_OBJECT_DESC;
4853
4854typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
4855{
4856 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
4857 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
4858 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
4859} D3D12_RAYTRACING_GEOMETRY_FLAGS;
4860cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )")
4861
4862typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
4863{
4864 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
4865 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
4866 D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES
4867} D3D12_RAYTRACING_GEOMETRY_TYPE;
4868
4869typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
4870{
4871 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
4872 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
4873 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
4874 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
4875 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
4876 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
4877 D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
4878} D3D12_RAYTRACING_INSTANCE_FLAGS;
4879cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )")
4880
4881typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
4882{
4883 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4884 UINT64 StrideInBytes;
4885} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
4886
4887typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
4888{
4889 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4890 UINT64 SizeInBytes;
4891} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
4892
4893typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
4894{
4895 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4896 UINT64 SizeInBytes;
4897 UINT64 StrideInBytes;
4898} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
4899
4900typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
4901{
4902 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
4903 DXGI_FORMAT IndexFormat;
4904 DXGI_FORMAT VertexFormat;
4905 UINT IndexCount;
4906 UINT VertexCount;
4907 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
4908 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
4909} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
4910
4911typedef struct D3D12_RAYTRACING_AABB
4912{
4913 FLOAT MinX;
4914 FLOAT MinY;
4915 FLOAT MinZ;
4916 FLOAT MaxX;
4917 FLOAT MaxY;
4918 FLOAT MaxZ;
4919} D3D12_RAYTRACING_AABB;
4920
4921typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
4922{
4923 UINT64 AABBCount;
4924 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
4925} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
4926
4927typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
4928{
4929 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
4930 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
4931 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
4932 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4,
4933} D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
4934
4935typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
4936{
4937 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
4938 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
4939 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
4940 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3,
4941} D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
4942
4943typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
4944{
4945 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
4946 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2,
4947} D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
4948
4949cpp_quote("typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC")
4950cpp_quote("{")
4951cpp_quote(" UINT ByteOffset;")
4952cpp_quote(" UINT SubdivisionLevel : 16;")
4953cpp_quote(" D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;")
4954cpp_quote("} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;")
4955
4956typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
4957{
4958 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
4959 DXGI_FORMAT OpacityMicromapIndexFormat;
4960 UINT OpacityMicromapBaseLocation;
4961 D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
4962} D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
4963
4964typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
4965{
4966 const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC* pTriangles;
4967 const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC* pOmmLinkage;
4968} D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
4969
4970typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
4971{
4972 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
4973 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
4974 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
4975 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
4976 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
4977 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
4978 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
4979 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
4980 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80,
4981
4982} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
4983cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )")
4984
4985typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
4986{
4987 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
4988 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
4989 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
4990 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
4991 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
4992} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
4993
4994typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
4995{
4996 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
4997 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
4998 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2,
4999} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
5000
5001typedef enum D3D12_ELEMENTS_LAYOUT
5002{
5003 D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
5004 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
5005} D3D12_ELEMENTS_LAYOUT;
5006
5007typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
5008{
5009 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
5010 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
5011 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
5012 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
5013} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
5014
5015typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
5016{
5017 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
5018 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
5019} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
5020
5021typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
5022{
5023 UINT64 CompactedSizeInBytes;
5024} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
5025
5026typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
5027{
5028 UINT64 DecodedSizeInBytes;
5029} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
5030
5031typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
5032{
5033 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
5034 UINT NumDescs;
5035} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
5036cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
5037cpp_quote("// depending on Type field, NumDescs above is followed by either:")
5038cpp_quote("// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
5039cpp_quote("// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
5040cpp_quote("// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).")
5041cpp_quote("//")
5042cpp_quote("// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer")
5043cpp_quote("//")
5044cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
5045cpp_quote("")
5046
5047typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
5048{
5049 UINT64 SerializedSizeInBytes;
5050 union
5051 {
5052 UINT64 NumBottomLevelAccelerationStructurePointers;
5053 UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
5054 };
5055} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
5056
5057typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
5058{
5059 GUID DriverOpaqueGUID;
5060 BYTE DriverOpaqueVersioningData[16];
5061} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
5062
5063typedef enum D3D12_SERIALIZED_DATA_TYPE
5064{
5065 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
5066 D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1,
5067} D3D12_SERIALIZED_DATA_TYPE;
5068
5069typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
5070{
5071 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
5072 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
5073 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
5074 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
5075 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
5076} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
5077
5078typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
5079{
5080 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
5081 UINT64 SerializedSizeInBytesIncludingHeader;
5082 UINT64 DeserializedSizeInBytes;
5083 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
5084} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
5085
5086typedef enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
5087{
5088 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
5089 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
5090 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
5091} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
5092
5093typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
5094{
5095 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
5096 UINT64 SerializedSizeInBytesIncludingHeader;
5097 UINT64 DeserializedSizeInBytes;
5098 union
5099 {
5100 UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
5101 UINT NumBlocks;
5102 };
5103 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
5104} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
5105
5106typedef enum D3D12_SERIALIZED_BLOCK_TYPE
5107{
5108 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0x0,
5109} D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
5110
5111typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
5112{
5113 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
5114 UINT64 NumBlockPointersAfterHeader;
5115} D3D12_RAYTRACING_SERIALIZED_BLOCK;
5116
5117typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
5118{
5119 UINT64 CurrentSizeInBytes;
5120} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
5121
5122typedef struct D3D12_RAYTRACING_INSTANCE_DESC
5123{
5124 FLOAT Transform[3][4];
5125 UINT InstanceID : 24;
5126 UINT InstanceMask : 8;
5127 UINT InstanceContributionToHitGroupIndex : 24;
5128 UINT Flags : 8;
5129 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
5130} D3D12_RAYTRACING_INSTANCE_DESC;
5131
5132typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
5133{
5134 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
5135 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
5136 union
5137 {
5138 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
5139 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
5140 D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
5141 };
5142} D3D12_RAYTRACING_GEOMETRY_DESC;
5143
5144typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
5145{
5146 UINT Count;
5147 UINT SubdivisionLevel;
5148 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
5149} D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
5150
5151typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
5152{
5153 UINT NumOmmHistogramEntries;
5154 const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY* pOmmHistogram;
5155 D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
5156 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
5157} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
5158
5159typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
5160{
5161 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
5162 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
5163 UINT NumDescs;
5164 D3D12_ELEMENTS_LAYOUT DescsLayout;
5165 union
5166 {
5167 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
5168 const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
5169 const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
5170 const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC* pOpacityMicromapArrayDesc;
5171 };
5172} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
5173
5174typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
5175{
5176 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
5177 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
5178 [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
5179 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
5180} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
5181
5182typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
5183{
5184 UINT64 ResultDataMaxSizeInBytes;
5185 UINT64 ScratchDataSizeInBytes;
5186 UINT64 UpdateScratchDataSizeInBytes;
5187} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
5188
5189typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
5190{
5191 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0x0,
5192 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
5193} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
5194
5195typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
5196{
5197 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
5198 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
5199} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
5200
5201typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
5202{
5203 UINT64 CurrentSizeInBytes;
5204} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
5205
5206typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
5207{
5208 UINT64 DecodedSizeInBytes;
5209} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
5210
5211typedef enum D3D12_RAY_FLAGS
5212{
5213 D3D12_RAY_FLAG_NONE = 0x00,
5214 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
5215 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
5216 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
5217 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
5218 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
5219 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
5220 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
5221 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
5222 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
5223 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
5224 D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400,
5225} D3D12_RAY_FLAGS;
5226cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )" )
5227
5228typedef enum D3D12_HIT_KIND
5229{
5230 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
5231 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff,
5232} D3D12_HIT_KIND;
5233
5234[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
5235interface ID3D12Device5
5236 : ID3D12Device4
5237{
5238 HRESULT CreateLifetimeTracker(
5239 [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
5240 [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
5241 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
5242 );
5243
5244 void RemoveDevice();
5245
5246 HRESULT EnumerateMetaCommands(
5247 [annotation("_Inout_")] UINT* pNumMetaCommands,
5248 [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
5249 );
5250
5251 HRESULT EnumerateMetaCommandParameters(
5252 [annotation("_In_")] REFGUID CommandId,
5253 [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
5254 [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
5255 [annotation("_Inout_")] UINT* pParameterCount,
5256 [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
5257 );
5258
5259 HRESULT CreateMetaCommand(
5260 [annotation("_In_")] REFGUID CommandId,
5261 [annotation("_In_")] UINT NodeMask,
5262 [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
5263 [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
5264 [in] REFIID riid,
5265 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
5266 );
5267
5268 HRESULT CreateStateObject(
5269 [in] const D3D12_STATE_OBJECT_DESC* pDesc,
5270 [in] REFIID riid, // ID3D12StateObject
5271 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
5272 );
5273
5274 void GetRaytracingAccelerationStructurePrebuildInfo(
5275 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
5276 [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
5277 );
5278
5279 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
5280 [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
5281 [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
5282}
5283
5284#include "D3D12MarkerApiEnums.idl"
5285
5286typedef struct D3D12_AUTO_BREADCRUMB_NODE
5287{
5288 const char *pCommandListDebugNameA;
5289 const wchar_t *pCommandListDebugNameW;
5290 const char *pCommandQueueDebugNameA;
5291 const wchar_t *pCommandQueueDebugNameW;
5292 ID3D12GraphicsCommandList *pCommandList;
5293 ID3D12CommandQueue *pCommandQueue;
5294 UINT32 BreadcrumbCount;
5295 const UINT32 *pLastBreadcrumbValue;
5296 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
5297 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
5298} D3D12_AUTO_BREADCRUMB_NODE;
5299
5300typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
5301{
5302 UINT BreadcrumbIndex;
5303 const wchar_t *pContextString;
5304} D3D12_DRED_BREADCRUMB_CONTEXT;
5305
5306// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
5307typedef struct D3D12_AUTO_BREADCRUMB_NODE1
5308{
5309 const char *pCommandListDebugNameA;
5310 const wchar_t *pCommandListDebugNameW;
5311 const char *pCommandQueueDebugNameA;
5312 const wchar_t *pCommandQueueDebugNameW;
5313 ID3D12GraphicsCommandList *pCommandList;
5314 ID3D12CommandQueue *pCommandQueue;
5315 UINT BreadcrumbCount;
5316 const UINT *pLastBreadcrumbValue;
5317 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
5318 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
5319 UINT BreadcrumbContextsCount;
5320 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
5321} D3D12_AUTO_BREADCRUMB_NODE1;
5322
5323// D3D12_DRED_VERSION
5324typedef enum D3D12_DRED_VERSION
5325{
5326 D3D12_DRED_VERSION_1_0 = 0x1,
5327 D3D12_DRED_VERSION_1_1 = 0x2,
5328 D3D12_DRED_VERSION_1_2 = 0x3,
5329 D3D12_DRED_VERSION_1_3 = 0x4,
5330} D3D12_DRED_VERSION;
5331
5332typedef enum D3D12_DRED_FLAGS
5333{
5334 D3D12_DRED_FLAG_NONE = 0,
5335 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
5336 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
5337} D3D12_DRED_FLAGS;
5338cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )")
5339
5340typedef enum D3D12_DRED_ENABLEMENT
5341{
5342 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
5343 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
5344 D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
5345} D3D12_DRED_ENABLEMENT;
5346
5347typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
5348{
5349 [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
5350 [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
5351} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
5352
5353typedef enum D3D12_DRED_ALLOCATION_TYPE
5354{
5355 // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
5356 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
5357 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
5358 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
5359 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
5360 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
5361 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
5362 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
5363 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
5364 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
5365 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
5366 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
5367 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
5368 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
5369 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
5370 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
5371 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
5372 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
5373 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
5374 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
5375 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
5376 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
5377 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
5378 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
5379 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
5380 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
5381 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
5382 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
5383 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
5384
5385
5386 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
5387} D3D12_DRED_ALLOCATION_TYPE;
5388
5389typedef struct D3D12_DRED_ALLOCATION_NODE
5390{
5391 const char *ObjectNameA;
5392 const wchar_t *ObjectNameW;
5393 D3D12_DRED_ALLOCATION_TYPE AllocationType;
5394 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
5395} D3D12_DRED_ALLOCATION_NODE;
5396
5397typedef struct D3D12_DRED_ALLOCATION_NODE1
5398{
5399 const char *ObjectNameA;
5400 const wchar_t *ObjectNameW;
5401 D3D12_DRED_ALLOCATION_TYPE AllocationType;
5402 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
5403 const IUnknown *pObject;
5404} D3D12_DRED_ALLOCATION_NODE1;
5405
5406typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
5407{
5408 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
5409} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
5410
5411typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
5412{
5413 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
5414} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
5415
5416typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
5417{
5418 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5419 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
5420 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
5421} D3D12_DRED_PAGE_FAULT_OUTPUT;
5422
5423typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
5424{
5425 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5426 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
5427 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
5428} D3D12_DRED_PAGE_FAULT_OUTPUT1;
5429
5430typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
5431{
5432 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
5433} D3D12_DRED_PAGE_FAULT_FLAGS;
5434cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )")
5435
5436typedef enum D3D12_DRED_DEVICE_STATE
5437{
5438 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, // Only known if DRED event occurred
5439 D3D12_DRED_DEVICE_STATE_HUNG = 3,
5440 D3D12_DRED_DEVICE_STATE_FAULT = 6,
5441 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7,
5442} D3D12_DRED_DEVICE_STATE;
5443
5444typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
5445{
5446 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5447 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
5448 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
5449 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
5450
5451} D3D12_DRED_PAGE_FAULT_OUTPUT2;
5452
5453typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
5454{
5455 HRESULT DeviceRemovedReason;
5456 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
5457 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
5458} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
5459
5460typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
5461{
5462 HRESULT DeviceRemovedReason;
5463 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
5464 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
5465} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
5466
5467typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
5468{
5469 HRESULT DeviceRemovedReason;
5470 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
5471 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
5472 D3D12_DRED_DEVICE_STATE DeviceState;
5473} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
5474
5475typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
5476{
5477 D3D12_DRED_VERSION Version; // Version of the DRED data
5478 union
5479 {
5480 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
5481 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
5482 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
5483 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
5484 };
5485} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
5486
5487[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
5488interface ID3D12DeviceRemovedExtendedDataSettings
5489 : IUnknown
5490{
5491 void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
5492 void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
5493 void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
5494};
5495
5496[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
5497interface ID3D12DeviceRemovedExtendedDataSettings1
5498 : ID3D12DeviceRemovedExtendedDataSettings
5499{
5500 void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
5501};
5502
5503[uuid(61552388-01ab-4008-a436-83db189566ea), object, local, pointer_default(unique)]
5504interface ID3D12DeviceRemovedExtendedDataSettings2
5505 : ID3D12DeviceRemovedExtendedDataSettings1
5506{
5507 void UseMarkersOnlyAutoBreadcrumbs(BOOL MarkersOnly);
5508};
5509
5510
5511[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
5512interface ID3D12DeviceRemovedExtendedData
5513 : IUnknown
5514{
5515 HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
5516 HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
5517};
5518
5519[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
5520interface ID3D12DeviceRemovedExtendedData1
5521 : ID3D12DeviceRemovedExtendedData
5522{
5523 HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
5524 HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
5525};
5526
5527[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
5528interface ID3D12DeviceRemovedExtendedData2
5529 : ID3D12DeviceRemovedExtendedData1
5530{
5531 HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
5532 D3D12_DRED_DEVICE_STATE GetDeviceState();
5533};
5534
5535typedef enum D3D12_BACKGROUND_PROCESSING_MODE
5536{
5537 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
5538 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
5539 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
5540 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
5541} D3D12_BACKGROUND_PROCESSING_MODE;
5542
5543typedef enum D3D12_MEASUREMENTS_ACTION
5544{
5545 D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
5546 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
5547 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
5548 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
5549} D3D12_MEASUREMENTS_ACTION;
5550
5551[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
5552interface ID3D12Device6 : ID3D12Device5
5553{
5554 HRESULT SetBackgroundProcessingMode(
5555 D3D12_BACKGROUND_PROCESSING_MODE Mode,
5556 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
5557 [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
5558 [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
5559};
5560
5561cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
5562
5563// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
5564typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
5565{
5566 UINT NodeIndex; // input
5567 UINT Count; // output
5568} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
5569
5570// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
5571typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
5572{
5573 UINT NodeIndex; // input
5574 UINT Count; // input
5575 GUID* pTypes; // output
5576} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
5577
5578typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
5579{
5580 UINT NodeMask;
5581 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
5582 GUID ProtectionType;
5583} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
5584
5585[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
5586interface ID3D12ProtectedResourceSession1
5587 : ID3D12ProtectedResourceSession
5588{
5589 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
5590};
5591
5592[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
5593interface ID3D12Device7 : ID3D12Device6
5594{
5595 HRESULT AddToStateObject(
5596 [in] const D3D12_STATE_OBJECT_DESC* pAddition,
5597 [in] ID3D12StateObject* pStateObjectToGrowFrom,
5598 [in] REFIID riid, // ID3D12StateObject
5599 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
5600 );
5601
5602 HRESULT CreateProtectedResourceSession1(
5603 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
5604 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1,
5605 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
5606 );
5607};
5608
5609[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
5610interface ID3D12Device8 : ID3D12Device7
5611{
5612 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
5613 UINT visibleMask,
5614 UINT numResourceDescs,
5615 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
5616 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
5617
5618 HRESULT CreateCommittedResource2(
5619 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
5620 D3D12_HEAP_FLAGS HeapFlags,
5621 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
5622 D3D12_RESOURCE_STATES InitialResourceState,
5623 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
5624 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
5625 [in] REFIID riidResource, // Expected: ID3D12Resource1*
5626 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
5627
5628 HRESULT CreatePlacedResource1(
5629 [annotation("_In_")] ID3D12Heap* pHeap,
5630 UINT64 HeapOffset,
5631 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
5632 D3D12_RESOURCE_STATES InitialState,
5633 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
5634 [in] REFIID riid, // Expected: ID3D12Resource*
5635 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
5636
5637 void CreateSamplerFeedbackUnorderedAccessView(
5638 [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
5639 [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
5640 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
5641
5642 void GetCopyableFootprints1(
5643 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
5644 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
5645 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
5646 UINT64 BaseOffset,
5647 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
5648 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
5649 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
5650 [annotation("_Out_opt_")] UINT64* pTotalBytes);
5651};
5652
5653
5654[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
5655interface ID3D12Resource1
5656 : ID3D12Resource
5657{
5658 HRESULT GetProtectedResourceSession(
5659 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
5660 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
5661}
5662
5663[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
5664interface ID3D12Resource2
5665 : ID3D12Resource1
5666{
5667 D3D12_RESOURCE_DESC1 GetDesc1();
5668}
5669
5670
5671
5672[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
5673interface ID3D12Heap1
5674 : ID3D12Heap
5675{
5676 HRESULT GetProtectedResourceSession(
5677 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
5678 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
5679}
5680
5681
5682[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
5683interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
5684{
5685 void SetProtectedResourceSession(
5686 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
5687 );
5688}
5689
5690// Beginning Access
5691typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
5692{
5693 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
5694 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
5695 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
5696 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS,
5697 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
5698 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
5699 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
5700} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
5701
5702typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
5703{
5704 D3D12_CLEAR_VALUE ClearValue;
5705} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
5706
5707typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
5708{
5709 UINT AdditionalWidth;
5710 UINT AdditionalHeight;
5711} D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
5712
5713typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
5714{
5715 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
5716
5717 union
5718 {
5719 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
5720 D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
5721 };
5722} D3D12_RENDER_PASS_BEGINNING_ACCESS;
5723
5724// Ending Access
5725typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
5726{
5727 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
5728 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
5729 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
5730 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS,
5731 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
5732 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
5733 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
5734} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
5735
5736typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
5737{
5738 UINT SrcSubresource;
5739 UINT DstSubresource;
5740
5741 UINT DstX;
5742 UINT DstY;
5743 D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
5744
5745} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
5746
5747typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
5748{
5749 ID3D12Resource* pSrcResource;
5750 ID3D12Resource* pDstResource;
5751
5752 // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
5753 UINT SubresourceCount;
5754 [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
5755
5756 DXGI_FORMAT Format;
5757 D3D12_RESOLVE_MODE ResolveMode;
5758
5759 BOOL PreserveResolveSource;
5760
5761} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
5762
5763typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
5764{
5765 UINT AdditionalWidth;
5766 UINT AdditionalHeight;
5767} D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
5768
5769typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
5770{
5771 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
5772
5773 union
5774 {
5775 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
5776 D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
5777 };
5778} D3D12_RENDER_PASS_ENDING_ACCESS;
5779
5780// Render Target Desc
5781typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
5782{
5783 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
5784
5785 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
5786 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
5787
5788} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
5789
5790// Depth-Stencil Desc
5791typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
5792{
5793 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
5794
5795 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
5796 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
5797
5798 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
5799 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
5800
5801} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
5802
5803typedef enum D3D12_RENDER_PASS_FLAGS
5804{
5805 D3D12_RENDER_PASS_FLAG_NONE = 0x0,
5806 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
5807 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
5808 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
5809 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
5810 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
5811} D3D12_RENDER_PASS_FLAGS;
5812cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )")
5813
5814[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
5815interface ID3D12MetaCommand : ID3D12Pageable
5816{
5817 UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")] UINT ParameterIndex);
5818}
5819
5820typedef struct D3D12_DISPATCH_RAYS_DESC
5821{
5822 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
5823 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
5824 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
5825 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
5826 UINT Width;
5827 UINT Height;
5828 UINT Depth;
5829} D3D12_DISPATCH_RAYS_DESC;
5830
5831typedef enum D3D12_SET_WORK_GRAPH_FLAGS
5832{
5833 D3D12_SET_WORK_GRAPH_FLAG_NONE = 0x0,
5834 D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1,
5835} D3D12_SET_WORK_GRAPH_FLAGS;
5836cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )" )
5837
5838typedef struct D3D12_SET_WORK_GRAPH_DESC
5839{
5840 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5841 D3D12_SET_WORK_GRAPH_FLAGS Flags;
5842 D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
5843 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
5844} D3D12_SET_WORK_GRAPH_DESC;
5845
5846typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
5847{
5848 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5849} D3D12_SET_RAYTRACING_PIPELINE_DESC;
5850
5851typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
5852{
5853 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5854} D3D12_SET_GENERIC_PIPELINE_DESC;
5855
5856typedef enum D3D12_PROGRAM_TYPE
5857{
5858 D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
5859 D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
5860 D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
5861} D3D12_PROGRAM_TYPE;
5862
5863typedef struct D3D12_SET_PROGRAM_DESC
5864{
5865 D3D12_PROGRAM_TYPE Type;
5866 union
5867 {
5868 D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
5869 D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
5870 D3D12_SET_WORK_GRAPH_DESC WorkGraph;
5871 };
5872} D3D12_SET_PROGRAM_DESC;
5873
5874typedef enum D3D12_DISPATCH_MODE
5875{
5876 D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0, // D3D12_NODE_CPU_INPUT
5877 D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1, // D3D12_NODE_GPU_INPUT in GPU memory
5878 D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2, // D3D12_MULTI_NODE_CPU_INPUT
5879 D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3 // D3D12_MULTI_NODE_GPU_INPUT in GPU memory
5880} D3D12_DISPATCH_MODE;
5881
5882typedef struct D3D12_NODE_CPU_INPUT
5883{
5884 UINT EntrypointIndex;
5885 UINT NumRecords;
5886 const void* pRecords;
5887 UINT64 RecordStrideInBytes;
5888} D3D12_NODE_CPU_INPUT;
5889
5890typedef struct D3D12_NODE_GPU_INPUT
5891{
5892 UINT EntrypointIndex;
5893 UINT NumRecords;
5894 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
5895} D3D12_NODE_GPU_INPUT;
5896
5897typedef struct D3D12_MULTI_NODE_CPU_INPUT
5898{
5899 UINT NumNodeInputs;
5900 const D3D12_NODE_CPU_INPUT* pNodeInputs;
5901 UINT64 NodeInputStrideInBytes;
5902} D3D12_MULTI_NODE_CPU_INPUT;
5903
5904typedef struct D3D12_MULTI_NODE_GPU_INPUT
5905{
5906 UINT NumNodeInputs;
5907 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs; // D3D12_GPU_NODE_INPUT array
5908} D3D12_MULTI_NODE_GPU_INPUT;
5909
5910typedef struct D3D12_DISPATCH_GRAPH_DESC
5911{
5912 D3D12_DISPATCH_MODE Mode;
5913 union
5914 {
5915 D3D12_NODE_CPU_INPUT NodeCPUInput;
5916 D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
5917 D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
5918 D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
5919 };
5920} D3D12_DISPATCH_GRAPH_DESC;
5921
5922[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
5923interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
5924{
5925 void BeginRenderPass(
5926 [annotation("_In_")] UINT NumRenderTargets,
5927 [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
5928 [annotation("_In_opt_")] const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
5929 D3D12_RENDER_PASS_FLAGS Flags
5930 );
5931
5932 void EndRenderPass();
5933
5934 void InitializeMetaCommand(
5935 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5936 [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
5937 [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
5938 );
5939
5940 void ExecuteMetaCommand(
5941 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5942 [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
5943 [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
5944 );
5945
5946 void BuildRaytracingAccelerationStructure(
5947 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
5948 [annotation("_In_")] UINT NumPostbuildInfoDescs,
5949 [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
5950 );
5951
5952 void EmitRaytracingAccelerationStructurePostbuildInfo(
5953 [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
5954 [annotation("_In_")] UINT NumSourceAccelerationStructures,
5955 [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
5956
5957 void CopyRaytracingAccelerationStructure(
5958 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
5959 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
5960 [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
5961
5962 void SetPipelineState1(
5963 [annotation("_In_")] ID3D12StateObject* pStateObject);
5964
5965 void DispatchRays(
5966 [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
5967}
5968
5969typedef enum D3D12_SHADER_CACHE_MODE
5970{
5971 D3D12_SHADER_CACHE_MODE_MEMORY,
5972 D3D12_SHADER_CACHE_MODE_DISK,
5973} D3D12_SHADER_CACHE_MODE;
5974
5975typedef enum D3D12_SHADER_CACHE_FLAGS
5976{
5977 D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
5978 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
5979 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
5980} D3D12_SHADER_CACHE_FLAGS;
5981cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )")
5982
5983typedef struct D3D12_SHADER_CACHE_SESSION_DESC
5984{
5985 GUID Identifier;
5986 D3D12_SHADER_CACHE_MODE Mode;
5987 D3D12_SHADER_CACHE_FLAGS Flags;
5988
5989 UINT MaximumInMemoryCacheSizeBytes;
5990 UINT MaximumInMemoryCacheEntries;
5991
5992 UINT MaximumValueFileSizeBytes;
5993
5994 UINT64 Version;
5995} D3D12_SHADER_CACHE_SESSION_DESC;
5996
5997typedef enum D3D12_BARRIER_LAYOUT
5998{
5999 D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
6000 D3D12_BARRIER_LAYOUT_COMMON = 0,
6001 D3D12_BARRIER_LAYOUT_PRESENT = 0,
6002 D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
6003 D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
6004 D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
6005 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
6006 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
6007 D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
6008 D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
6009 D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
6010 D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
6011 D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
6012 D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
6013 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
6014 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
6015 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
6016 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
6017 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
6018 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
6019 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
6020 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
6021 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
6022 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
6023 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
6024 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
6025 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
6026 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
6027 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
6028 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
6029 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
6030 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
6031 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31,
6032
6033} D3D12_BARRIER_LAYOUT;
6034
6035typedef enum D3D12_BARRIER_SYNC
6036{
6037 D3D12_BARRIER_SYNC_NONE = 0x0,
6038 D3D12_BARRIER_SYNC_ALL = 0x1,
6039 D3D12_BARRIER_SYNC_DRAW = 0x2,
6040 D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
6041 D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
6042 D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
6043 D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
6044 D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
6045 D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
6046 D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
6047 D3D12_BARRIER_SYNC_COPY = 0x200,
6048 D3D12_BARRIER_SYNC_RESOLVE = 0x400,
6049 D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
6050 D3D12_BARRIER_SYNC_PREDICATION = 0x800, // Aliased with SYNC_EXECUTE_INDIRECT
6051 D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
6052 D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
6053 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
6054 D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
6055 D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
6056 D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
6057 D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
6058 D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
6059 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
6060 D3D12_BARRIER_SYNC_SPLIT = 0x80000000,
6061} D3D12_BARRIER_SYNC;
6062cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )" )
6063
6064typedef enum D3D12_BARRIER_ACCESS
6065{
6066 D3D12_BARRIER_ACCESS_COMMON = 0,
6067 D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
6068 D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
6069 D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
6070 D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
6071 D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
6072 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
6073 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
6074 D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
6075 D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
6076 D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
6077 D3D12_BARRIER_ACCESS_PREDICATION = 0x200, // Aliased with ACCESS_INDIRECT_ARGUMENT
6078 D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
6079 D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
6080 D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
6081 D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
6082 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
6083 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
6084 D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
6085 D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
6086 D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
6087 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
6088 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
6089 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
6090 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
6091 D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000,
6092} D3D12_BARRIER_ACCESS;
6093cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )" )
6094
6095typedef enum D3D12_BARRIER_TYPE
6096{
6097 D3D12_BARRIER_TYPE_GLOBAL,
6098 D3D12_BARRIER_TYPE_TEXTURE,
6099 D3D12_BARRIER_TYPE_BUFFER,
6100} D3D12_BARRIER_TYPE;
6101
6102typedef enum D3D12_TEXTURE_BARRIER_FLAGS
6103{
6104 D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
6105 D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1,
6106} D3D12_TEXTURE_BARRIER_FLAGS;
6107cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )")
6108
6109typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
6110{
6111 UINT IndexOrFirstMipLevel;
6112 UINT NumMipLevels;
6113 UINT FirstArraySlice;
6114 UINT NumArraySlices;
6115 UINT FirstPlane;
6116 UINT NumPlanes;
6117} D3D12_BARRIER_SUBRESOURCE_RANGE;
6118
6119typedef struct D3D12_GLOBAL_BARRIER
6120{
6121 D3D12_BARRIER_SYNC SyncBefore;
6122 D3D12_BARRIER_SYNC SyncAfter;
6123 D3D12_BARRIER_ACCESS AccessBefore;
6124 D3D12_BARRIER_ACCESS AccessAfter;
6125} D3D12_GLOBAL_BARRIER;
6126
6127typedef struct D3D12_TEXTURE_BARRIER
6128{
6129 D3D12_BARRIER_SYNC SyncBefore;
6130 D3D12_BARRIER_SYNC SyncAfter;
6131 D3D12_BARRIER_ACCESS AccessBefore;
6132 D3D12_BARRIER_ACCESS AccessAfter;
6133 D3D12_BARRIER_LAYOUT LayoutBefore;
6134 D3D12_BARRIER_LAYOUT LayoutAfter;
6135 [annotation("_In_")] ID3D12Resource *pResource;
6136 D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
6137 D3D12_TEXTURE_BARRIER_FLAGS Flags;
6138} D3D12_TEXTURE_BARRIER;
6139
6140typedef struct D3D12_BUFFER_BARRIER
6141{
6142 D3D12_BARRIER_SYNC SyncBefore;
6143 D3D12_BARRIER_SYNC SyncAfter;
6144 D3D12_BARRIER_ACCESS AccessBefore;
6145 D3D12_BARRIER_ACCESS AccessAfter;
6146 [annotation("_In_")] ID3D12Resource *pResource;
6147 UINT64 Offset;
6148 UINT64 Size;
6149} D3D12_BUFFER_BARRIER;
6150
6151typedef struct D3D12_BARRIER_GROUP
6152{
6153 D3D12_BARRIER_TYPE Type;
6154 UINT32 NumBarriers;
6155 union
6156 {
6157 [annotation("_In_reads_(NumBarriers)")] const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
6158 [annotation("_In_reads_(NumBarriers)")] const D3D12_TEXTURE_BARRIER *pTextureBarriers;
6159 [annotation("_In_reads_(NumBarriers)")] const D3D12_BUFFER_BARRIER *pBufferBarriers;
6160 };
6161} D3D12_BARRIER_GROUP;
6162
6163[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
6164interface ID3D12ShaderCacheSession
6165 : ID3D12DeviceChild
6166{
6167 HRESULT FindValue(
6168 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6169 UINT KeySize,
6170 [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
6171 [annotation("_Inout_")] UINT* pValueSize);
6172 HRESULT StoreValue(
6173 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6174 UINT KeySize,
6175 [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
6176 UINT ValueSize);
6177
6178 void SetDeleteOnDestroy();
6179 D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
6180};
6181
6182typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
6183{
6184 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
6185 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
6186 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
6187 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
6188} D3D12_SHADER_CACHE_KIND_FLAGS;
6189cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )")
6190
6191typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
6192{
6193 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
6194 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
6195 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
6196} D3D12_SHADER_CACHE_CONTROL_FLAGS;
6197cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )")
6198
6199[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
6200interface ID3D12Device9
6201 : ID3D12Device8
6202{
6203 HRESULT CreateShaderCacheSession(
6204 [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
6205 REFIID riid,
6206 [annotation("_COM_Outptr_opt_")] void** ppvSession);
6207
6208 HRESULT ShaderCacheControl(
6209 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
6210 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
6211
6212 HRESULT CreateCommandQueue1(
6213 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
6214 REFIID CreatorID,
6215 [in] REFIID riid, // Expected: ID3D12CommandQueue
6216 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
6217 );
6218};
6219
6220[uuid(517f8718-aa66-49f9-b02b-a7ab89c06031), object, local, pointer_default(unique)]
6221interface ID3D12Device10
6222 : ID3D12Device9
6223{
6224 HRESULT CreateCommittedResource3(
6225 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
6226 D3D12_HEAP_FLAGS HeapFlags,
6227 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
6228 D3D12_BARRIER_LAYOUT InitialLayout,
6229 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6230 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
6231 UINT32 NumCastableFormats,
6232 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6233 [in] REFIID riidResource, // Expected: ID3D12Resource1*
6234 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
6235
6236 HRESULT CreatePlacedResource2(
6237 [annotation("_In_")] ID3D12Heap* pHeap,
6238 UINT64 HeapOffset,
6239 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
6240 D3D12_BARRIER_LAYOUT InitialLayout,
6241 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6242 UINT32 NumCastableFormats,
6243 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6244 [in] REFIID riid, // Expected: ID3D12Resource*
6245 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
6246
6247 HRESULT CreateReservedResource2(
6248 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
6249 D3D12_BARRIER_LAYOUT InitialLayout,
6250 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6251 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
6252 UINT32 NumCastableFormats,
6253 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6254 [in] REFIID riid, // Expected: ID3D12Resource1*
6255 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
6256 );
6257};
6258
6259[uuid(5405c344-d457-444e-b4dd-2366e45aee39), object, local, pointer_default(unique)]
6260interface ID3D12Device11
6261 : ID3D12Device10
6262{
6263 void CreateSampler2(
6264 [annotation("_In_")] const D3D12_SAMPLER_DESC2* pDesc,
6265 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
6266};
6267
6268[uuid(5af5c532-4c91-4cd0-b541-15a405395fc5), object, local, pointer_default(unique)]
6269interface ID3D12Device12
6270 : ID3D12Device11
6271{
6272 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo3(
6273 UINT visibleMask,
6274 UINT numResourceDescs,
6275 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
6276 [annotation("_In_opt_count_(numResourceDescs)")] const UINT32* pNumCastableFormats,
6277 [annotation("_In_opt_count_(numResourceDescs)")] const DXGI_FORMAT *const *ppCastableFormats,
6278 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
6279};
6280
6281[uuid(14eecffc-4df8-40f7-a118-5c816f45695e), object, local, pointer_default(unique)]
6282interface ID3D12Device13
6283 : ID3D12Device12
6284{
6285 HRESULT OpenExistingHeapFromAddress1(
6286 [annotation("_In_")] const void* pAddress,
6287 SIZE_T size,
6288 [in] REFIID riid, // Expected: ID3D12Heap
6289 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
6290 );
6291};
6292
6293[uuid(5f6e592d-d895-44c2-8e4a-88ad4926d323), object, local, pointer_default(unique)]
6294interface ID3D12Device14 : ID3D12Device13
6295{
6296 HRESULT CreateRootSignatureFromSubobjectInLibrary(
6297 [annotation("_In_")] UINT nodeMask,
6298 [annotation("_In_reads_(blobLengthInBytes)")] const void* pLibraryBlob,
6299 [annotation("_In_")] SIZE_T blobLengthInBytes,
6300 [annotation("_In_opt_")] LPCWSTR subobjectName,
6301 [in] REFIID riid, // Expected ID3D12RootSignature
6302 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
6303};
6304
6305typedef union D3D12_VERSION_NUMBER
6306{
6307 UINT64 Version;
6308 UINT16 VersionParts[4];
6309} D3D12_VERSION_NUMBER;
6310
6311// D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT
6312typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
6313{
6314 WCHAR szAdapterFamily[128];
6315 UINT64 MinimumABISupportVersion;
6316 UINT64 MaximumABISupportVersion;
6317 D3D12_VERSION_NUMBER CompilerVersion;
6318 D3D12_VERSION_NUMBER ApplicationProfileVersion;
6319} D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
6320
6321
6322typedef void(__stdcall* D3D12PipelineStateFunc) (
6323 [annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6324 UINT KeySize,
6325 UINT Version,
6326 const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
6327 [annotation("_Inout_opt_")] void* pContext
6328 );
6329
6330typedef void(__stdcall* D3D12StateObjectFunc) (
6331 [annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6332 UINT KeySize,
6333 UINT Version,
6334 const D3D12_STATE_OBJECT_DESC* pDesc,
6335 [annotation("_In_reads_bytes_(ParentKeySize)")] const void* pParentKey,
6336 UINT ParentKeySize,
6337 [annotation("_Inout_opt_")] void* pContext
6338 );
6339
6340
6341typedef struct D3D12_APPLICATION_DESC
6342{
6343 LPCWSTR pExeFilename;
6344 LPCWSTR pName;
6345 D3D12_VERSION_NUMBER Version;
6346 LPCWSTR pEngineName;
6347 D3D12_VERSION_NUMBER EngineVersion;
6348} D3D12_APPLICATION_DESC;
6349
6350typedef void(__stdcall* D3D12ApplicationDescFunc) (
6351 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
6352 [annotation("_Inout_opt_")] void* pContext
6353 );
6354
6355typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
6356{
6357 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
6358 UINT KeySize;
6359 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
6360 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
6361} D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
6362
6363[uuid(c56060b7-b5fc-4135-98e0-a1e9997eace0), object, local, pointer_default(unique)]
6364interface ID3D12StateObjectDatabase
6365 : IUnknown
6366{
6367 HRESULT SetApplicationDesc(
6368 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc);
6369
6370 HRESULT GetApplicationDesc(
6371 [annotation("_In_")] D3D12ApplicationDescFunc CallbackFunc,
6372 [annotation("_Inout_opt_")] void* pContext);
6373
6374 HRESULT StorePipelineStateDesc(
6375 [annotation("_In_reads_(KeySize)")] const void* pKey,
6376 UINT KeySize,
6377 UINT Version,
6378 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc);
6379
6380 HRESULT FindPipelineStateDesc(
6381 [annotation("_In_reads_(KeySize)")] const void* pKey,
6382 UINT KeySize,
6383 [annotation("_In_")] D3D12PipelineStateFunc CallbackFunc,
6384 [annotation("_Inout_opt_")] void* pContext);
6385
6386 HRESULT StoreStateObjectDesc(
6387 [annotation("_In_reads_(KeySize)")] const void* pKey,
6388 UINT KeySize,
6389 UINT Version,
6390 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pDesc,
6391 [annotation("_In_reads_opt_(StateObjectToGrowFromKeySize)")] const void* pStateObjectToGrowFromKey,
6392 UINT StateObjectToGrowFromKeySize);
6393
6394 HRESULT FindStateObjectDesc(
6395 [annotation("_In_reads_(keySize)")] const void* pKey,
6396 UINT KeySize,
6397 D3D12StateObjectFunc CallbackFunc,
6398 [annotation("_Inout_opt_")] void* pContext);
6399
6400 HRESULT FindObjectVersion(
6401 [annotation("_In_reads_(keySize)")] const void* pKey,
6402 UINT KeySize,
6403 [annotation("_Out_")] UINT* pVersion);
6404};
6405
6406
6407
6408[uuid(bc66d368-7373-4943-8757-fc87dc79e476), object, local, pointer_default(unique)]
6409interface ID3D12VirtualizationGuestDevice
6410 : IUnknown
6411{
6412 HRESULT ShareWithHost(
6413 [annotation("_In_")] ID3D12DeviceChild* pObject,
6414 [annotation("_Out_")] HANDLE* pHandle
6415 );
6416
6417 HRESULT CreateFenceFd(
6418 [annotation("_In_")] ID3D12Fence *pFence,
6419 UINT64 FenceValue,
6420 [annotation("_Out_")] int *pFenceFd
6421 );
6422};
6423
6424
6425
6426[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
6427interface ID3D12Tools
6428 : IUnknown
6429{
6430 void EnableShaderInstrumentation(BOOL bEnable);
6431 BOOL ShaderInstrumentationEnabled();
6432}
6433
6434[uuid(e4fbc019-dd3c-43e1-8f32-7f649575f0a0), object, local, pointer_default(unique)]
6435interface ID3D12Tools1
6436 : ID3D12Tools
6437{
6438 HRESULT ReserveGPUVARangesAtCreate(
6439 [annotation("_In_reads_(uiNumRanges)")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pRanges,
6440 [annotation("_In_")] UINT uiNumRanges);
6441 void ClearReservedGPUVARangesList();
6442}
6443
6444[uuid(01d393c5-c9b0-42a1-958c-c26b02d4d097), object, local, pointer_default(unique)]
6445interface ID3D12Tools2
6446 : ID3D12Tools1
6447{
6448 HRESULT SetApplicationSpecificDriverState(
6449 [annotation("_In_")] IUnknown* pAdapter,
6450 [annotation("_In_opt_")] ID3DBlob* pBlob);
6451};
6452
6453
6454[uuid(8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d), object, local, pointer_default(unique)]
6455interface ID3D12PageableTools
6456 : IUnknown
6457{
6458 HRESULT GetAllocation(
6459 [annotation("_Inout_")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pAllocation);
6460}
6461
6462[uuid(2ea68e9c-19c3-4e47-a109-6cdadff0aca9), object, local, pointer_default(unique)]
6463interface ID3D12DeviceTools
6464 : IUnknown
6465{
6466 void SetNextAllocationAddress(
6467 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
6468}
6469
6470typedef enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
6471{
6472 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
6473 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
6474 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
6475 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4,
6476} D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
6477
6478[uuid(e30e9fc7-e641-4d6e-8a81-9dd9206ec47a), object, local, pointer_default(unique)]
6479interface ID3D12DeviceTools1
6480 : ID3D12DeviceTools
6481{
6482 HRESULT GetApplicationSpecificDriverState(
6483 [annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
6484 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS GetApplicationSpecificDriverBlobStatus();
6485}
6486
6487typedef struct D3D12_SUBRESOURCE_DATA
6488{
6489 const void* pData;
6490 LONG_PTR RowPitch;
6491 LONG_PTR SlicePitch;
6492} D3D12_SUBRESOURCE_DATA;
6493
6494typedef struct D3D12_MEMCPY_DEST
6495{
6496 void* pData;
6497 SIZE_T RowPitch;
6498 SIZE_T SlicePitch;
6499} D3D12_MEMCPY_DEST;
6500
6501
6502
6503cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
6504cpp_quote( "#include \"d3d12sdklayers.h\" ")
6505cpp_quote( "#endif ")
6506
6507
6508cpp_quote("")
6509cpp_quote("///////////////////////////////////////////////////////////////////////////")
6510cpp_quote("// D3D12CreateDevice")
6511cpp_quote("// ------------------")
6512cpp_quote("//")
6513cpp_quote("// pAdapter")
6514cpp_quote("// If NULL, D3D12CreateDevice will choose the primary adapter.")
6515cpp_quote("// If non-NULL, D3D12CreateDevice will use the provided adapter.")
6516cpp_quote("// MinimumFeatureLevel")
6517cpp_quote("// The minimum feature level required for successful device creation.")
6518cpp_quote("// riid")
6519cpp_quote("// The interface IID of the device to be returned. Expected: ID3D12Device.")
6520cpp_quote("// ppDevice")
6521cpp_quote("// Pointer to returned interface. May be NULL.")
6522cpp_quote("//")
6523cpp_quote("// Return Values")
6524cpp_quote("// Any of those documented for ")
6525cpp_quote("// CreateDXGIFactory1")
6526cpp_quote("// IDXGIFactory::EnumAdapters")
6527cpp_quote("// D3D12CreateDevice")
6528cpp_quote("//")
6529cpp_quote("///////////////////////////////////////////////////////////////////////////")
6530cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
6531cpp_quote(" D3D_FEATURE_LEVEL, ")
6532cpp_quote(" _In_ REFIID, _COM_Outptr_opt_ void** );")
6533cpp_quote("")
6534cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
6535cpp_quote(" _In_opt_ IUnknown* pAdapter,")
6536cpp_quote(" D3D_FEATURE_LEVEL MinimumFeatureLevel,")
6537cpp_quote(" _In_ REFIID riid, // Expected: ID3D12Device")
6538cpp_quote(" _COM_Outptr_opt_ void** ppDevice );")
6539cpp_quote("")
6540
6541cpp_quote("")
6542cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
6543cpp_quote("")
6544cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
6545cpp_quote("")
6546
6547cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6548cpp_quote("// D3D12EnableExperimentalFeatures")
6549cpp_quote("//")
6550cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
6551cpp_quote("// ")
6552cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
6553cpp_quote("// a configuration struct that can be passed alongside the GUID.")
6554cpp_quote("// ")
6555cpp_quote("// Some features might use an interface IID as the GUID. For these, once the feature is enabled via")
6556cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
6557cpp_quote("// for manipulating the feature. This allows for control that might not cleanly be expressed by just ")
6558cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
6559cpp_quote("//")
6560cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
6561cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
6562cpp_quote("// singleton device for a process. Removing the devices when configuration changes prevents")
6563cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
6564cpp_quote("//")
6565cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
6566cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
6567cpp_quote("// in are known to be incompatible with each other, or other errors.")
6568cpp_quote("// Returns S_OK otherwise.")
6569cpp_quote("//")
6570cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6571cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
6572cpp_quote(" UINT NumFeatures,")
6573cpp_quote(" _In_count_(NumFeatures) const IID* pIIDs,")
6574cpp_quote(" _In_opt_count_(NumFeatures) void* pConfigurationStructs,")
6575cpp_quote(" _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);")
6576cpp_quote("")
6577cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6578cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
6579cpp_quote("//")
6580cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
6581cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
6582cpp_quote("//")
6583cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6584cpp_quote("//")
6585cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6586cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
6587cpp_quote(" 0x76f5573e,")
6588cpp_quote(" 0xf13a,")
6589cpp_quote(" 0x40f5,")
6590cpp_quote(" { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
6591cpp_quote("};")
6592cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6593cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
6594cpp_quote("//")
6595cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
6596cpp_quote("// meaning texture tile data-inheritance is allowed.")
6597cpp_quote("//")
6598cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6599cpp_quote("//")
6600cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6601cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
6602cpp_quote(" 0xc9c4725f,")
6603cpp_quote(" 0xa81a,")
6604cpp_quote(" 0x4f56,")
6605cpp_quote(" { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
6606cpp_quote("};")
6607cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6608cpp_quote("// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS")
6609cpp_quote("//")
6610cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS, ")
6611cpp_quote("// driver support is still required for this feature.")
6612cpp_quote("//")
6613cpp_quote("// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6614cpp_quote("//")
6615cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6616cpp_quote("static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */")
6617cpp_quote(" 0x45dc51f3,")
6618cpp_quote(" 0x767f,")
6619cpp_quote(" 0x4588,")
6620cpp_quote(" { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }")
6621cpp_quote("};")
6622cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6623cpp_quote("// D3D12GetInterface")
6624cpp_quote("//")
6625cpp_quote("// Retrieve Global D3D12 Interface.")
6626cpp_quote("//")
6627cpp_quote("")
6628cpp_quote("DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
6629cpp_quote("DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
6630cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
6631cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
6632cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);")
6633cpp_quote("DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);")
6634cpp_quote("DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);")
6635cpp_quote("")
6636cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
6637cpp_quote("")
6638cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
6639cpp_quote("")
6640
6641//==================================================================================================================================
6642//
6643// SDK Configuration
6644//
6645//==================================================================================================================================
6646
6647[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
6648interface ID3D12SDKConfiguration
6649 : IUnknown
6650{
6651 HRESULT SetSDKVersion(
6652 UINT SDKVersion,
6653 [annotation("_In_z_")] LPCSTR SDKPath
6654 );
6655}
6656
6657[uuid(8aaf9303-ad25-48b9-9a57-d9c37e009d9f), object, local, pointer_default(unique)]
6658interface ID3D12SDKConfiguration1
6659 : ID3D12SDKConfiguration
6660{
6661 HRESULT CreateDeviceFactory(
6662 UINT SDKVersion,
6663 [annotation("_In_")] LPCSTR SDKPath,
6664 REFIID riid, // Expected: ID3D12DeviceFactory
6665 [annotation("_COM_Outptr_")] void **ppvFactory
6666 );
6667 void FreeUnusedSDKs();
6668}
6669
6670typedef enum D3D12_DEVICE_FACTORY_FLAGS
6671{
6672 D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
6673 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
6674 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
6675 D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4,
6676} D3D12_DEVICE_FACTORY_FLAGS;
6677cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )")
6678
6679[uuid(61f307d3-d34e-4e7c-8374-3ba4de23cccb), object, local, pointer_default(unique)]
6680interface ID3D12DeviceFactory
6681 : IUnknown
6682{
6683 HRESULT InitializeFromGlobalState();
6684 HRESULT ApplyToGlobalState();
6685
6686 HRESULT SetFlags(D3D12_DEVICE_FACTORY_FLAGS flags);
6687 D3D12_DEVICE_FACTORY_FLAGS GetFlags();
6688
6689 HRESULT GetConfigurationInterface(
6690 REFCLSID clsid,
6691 REFIID iid,
6692 [annotation("_COM_Outptr_")] void **ppv);
6693
6694 HRESULT EnableExperimentalFeatures(
6695 UINT NumFeatures,
6696 [annotation("_In_reads_(NumFeatures)")] const IID *pIIDs,
6697 [annotation("_In_reads_opt_(NumFeatures)")] void *pConfigurationStructs,
6698 [annotation("_In_reads_opt_(NumFeatures)")] UINT *pConfigurationStructSizes);
6699
6700 HRESULT CreateDevice(
6701 [annotation("_In_opt_")] IUnknown *adapter,
6702 D3D_FEATURE_LEVEL FeatureLevel,
6703 REFIID riid,
6704 [annotation("_COM_Outptr_opt_")] void **ppvDevice);
6705};
6706
6707typedef enum D3D12_DEVICE_FLAGS
6708{
6709 D3D12_DEVICE_FLAG_NONE = 0,
6710 D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
6711 D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
6712 D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
6713 D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
6714 D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
6715 D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
6716 D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
6717 D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
6718 D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
6719 D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
6720 D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400,
6721} D3D12_DEVICE_FLAGS;
6722cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )")
6723
6724typedef struct D3D12_DEVICE_CONFIGURATION_DESC
6725{
6726 D3D12_DEVICE_FLAGS Flags;
6727 UINT GpuBasedValidationFlags; // D3D12_GPU_BASED_VALIDATION_FLAGS from d3d12sdklayers.h
6728 UINT SDKVersion;
6729 UINT NumEnabledExperimentalFeatures;
6730} D3D12_DEVICE_CONFIGURATION_DESC;
6731
6732[uuid(78dbf87b-f766-422b-a61c-c8c446bdb9ad), object, local, pointer_default(unique)]
6733interface ID3D12DeviceConfiguration
6734 : IUnknown
6735{
6736 D3D12_DEVICE_CONFIGURATION_DESC GetDesc();
6737 HRESULT GetEnabledExperimentalFeatures([annotation("_Out_writes_(NumGuids)")] GUID *pGuids, UINT NumGuids);
6738
6739 HRESULT SerializeVersionedRootSignature(
6740 [annotation("_In_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
6741 [annotation("_COM_Outptr_")] ID3DBlob **ppResult,
6742 [annotation("_Always_(_Outptr_opt_result_maybenull_)")] ID3DBlob **ppError);
6743
6744 HRESULT CreateVersionedRootSignatureDeserializer(
6745 [annotation("_In_reads_bytes_(Size)")] const void *pBlob,
6746 SIZE_T Size,
6747 REFIID riid,
6748 [annotation("_COM_Outptr_")] void **ppvDeserializer);
6749};
6750
6751[uuid(ed342442-6343-4e16-bb82-a3a577874e56), object, local, pointer_default(unique)]
6752interface ID3D12DeviceConfiguration1
6753 : ID3D12DeviceConfiguration
6754{
6755 HRESULT CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
6756 [annotation("_In_reads_bytes_(Size)")] const void* pLibraryBlob,
6757 SIZE_T Size,
6758 LPCWSTR RootSignatureSubobjectName,
6759 REFIID riid,
6760 [annotation("_COM_Outptr_")] void** ppvDeserializer);
6761};
6762
6763
6764typedef enum D3D12_STATE_OBJECT_DATABASE_FLAGS
6765{
6766 D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0x0,
6767 D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1,
6768} D3D12_STATE_OBJECT_DATABASE_FLAGS;
6769cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )")
6770
6771[uuid(f5b066f0-648a-4611-bd41-27fd0948b9eb), object, local, pointer_default(unique)]
6772interface ID3D12StateObjectDatabaseFactory
6773 : IUnknown
6774{
6775 HRESULT CreateStateObjectDatabaseFromFile(
6776 LPCWSTR pDatabaseFile,
6777 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
6778 REFIID riid,
6779 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvStateObjectDatabase
6780 );
6781};
6782
6783
6784typedef enum D3D12_AXIS_SHADING_RATE
6785{
6786 D3D12_AXIS_SHADING_RATE_1X = 0x0,
6787 D3D12_AXIS_SHADING_RATE_2X = 0x1,
6788 D3D12_AXIS_SHADING_RATE_4X = 0x2
6789} D3D12_AXIS_SHADING_RATE;
6790
6791
6792cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
6793cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
6794
6795cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
6796
6797cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
6798cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
6799
6800typedef enum D3D12_SHADING_RATE
6801{
6802 D3D12_SHADING_RATE_1X1 = 0x0,
6803 D3D12_SHADING_RATE_1X2 = 0x1,
6804 D3D12_SHADING_RATE_2X1 = 0x4,
6805 D3D12_SHADING_RATE_2X2 = 0x5,
6806 D3D12_SHADING_RATE_2X4 = 0x6,
6807 D3D12_SHADING_RATE_4X2 = 0x9,
6808 D3D12_SHADING_RATE_4X4 = 0xA
6809} D3D12_SHADING_RATE;
6810
6811typedef enum D3D12_SHADING_RATE_COMBINER
6812{
6813 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
6814 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
6815 D3D12_SHADING_RATE_COMBINER_MIN = 2,
6816 D3D12_SHADING_RATE_COMBINER_MAX = 3,
6817 D3D12_SHADING_RATE_COMBINER_SUM = 4,
6818} D3D12_SHADING_RATE_COMBINER;
6819
6820[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
6821interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
6822{
6823 void RSSetShadingRate(
6824 [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
6825 [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
6826
6827 void RSSetShadingRateImage(
6828 [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
6829}
6830
6831typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
6832{
6833 UINT ThreadGroupCountX;
6834 UINT ThreadGroupCountY;
6835 UINT ThreadGroupCountZ;
6836} D3D12_DISPATCH_MESH_ARGUMENTS;
6837
6838[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
6839interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
6840{
6841 void DispatchMesh(
6842 [annotation("_In_")] UINT ThreadGroupCountX,
6843 [annotation("_In_")] UINT ThreadGroupCountY,
6844 [annotation("_In_")] UINT ThreadGroupCountZ
6845 );
6846}
6847
6848[uuid(dd171223-8b61-4769-90e3-160ccde4e2c1), object, local, pointer_default(unique)]
6849interface ID3D12GraphicsCommandList7 : ID3D12GraphicsCommandList6
6850{
6851 void Barrier(
6852 UINT32 NumBarrierGroups,
6853 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
6854 );
6855};
6856
6857[uuid(ee936ef9-599d-4d28-938e-23c4ad05ce51), object, local, pointer_default(unique)]
6858interface ID3D12GraphicsCommandList8 : ID3D12GraphicsCommandList7
6859{
6860 void OMSetFrontAndBackStencilRef(
6861 [annotation("_In_")] UINT FrontStencilRef,
6862 [annotation("_In_")] UINT BackStencilRef
6863 );
6864};
6865
6866[uuid(34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1), object, local, pointer_default(unique)]
6867interface ID3D12GraphicsCommandList9 : ID3D12GraphicsCommandList8
6868{
6869 void RSSetDepthBias(
6870 [annotation("_In_")] FLOAT DepthBias,
6871 [annotation("_In_")] FLOAT DepthBiasClamp,
6872 [annotation("_In_")] FLOAT SlopeScaledDepthBias
6873 );
6874
6875 void IASetIndexBufferStripCutValue(
6876 [annotation("_In_")] D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue
6877 );
6878};
6879
6880[uuid(7013c015-d161-4b63-a08c-238552dd8acc), object, local, pointer_default(unique)]
6881interface ID3D12GraphicsCommandList10 : ID3D12GraphicsCommandList9
6882{
6883 void SetProgram([annotation("_In_")] const D3D12_SET_PROGRAM_DESC* pDesc);
6884 void DispatchGraph([annotation("_In_")] const D3D12_DISPATCH_GRAPH_DESC* pDesc);
6885};
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895[uuid(f343d1a0-afe3-439f-b13d-cd87a43b70ca), object, local, pointer_default(unique)]
6896interface ID3D12DSRDeviceFactory : IUnknown
6897{
6898 HRESULT CreateDSRDevice(
6899 [in] ID3D12Device *pD3D12Device,
6900 [in] UINT NodeMask,
6901 [in] REFIID riid, // Expected IDSRDevice
6902 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvDSRDevice);
6903}
6904
6905[uuid(597985ab-9b75-4dbb-be23-0761195bebee), object, local, pointer_default(unique)]
6906interface ID3D12GBVDiagnostics
6907 : IUnknown
6908{
6909 HRESULT GetGBVEntireSubresourceStatesData( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_writes_bytes_(DataSize)")] int *pData, UINT DataSize );
6910 HRESULT GetGBVSubresourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_Out_")] int *pData );
6911 HRESULT GetGBVResourceUniformState( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_")] int *pData );
6912 HRESULT GetGBVResourceInfo( [annotation("_In_")] ID3D12Resource* pResource,
6913 [annotation("_In_opt_")] D3D12_RESOURCE_DESC* pResourceDesc,
6914 [annotation("_In_opt_")] UINT32* pResourceHash,
6915 [annotation("_In_opt_")] UINT32* pSubresourceStatesByteOffset );
6916
6917 void GBVReserved0();
6918
6919 void GBVReserved1();
6920}
6921
6922
6923//----------------------------------------------------------------------------------------------------------
6924// Old types which are still supported by the runtime for app-compat
6925
6926cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
6927#pragma endregion
6928
6929
6930cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
6931cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
6932cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
6933cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
6934cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
6935cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
6936cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
6937cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
6938cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
6939cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
6940cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
6941cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
6942cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);" )
6943cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
6944cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
6945cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
6946cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
6947cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
6948cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
6949cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
6950cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
6951cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);" )
6952cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
6953cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
6954cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
6955cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
6956cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
6957cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
6958cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
6959cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
6960cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
6961cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
6962cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
6963cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
6964cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
6965cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
6966cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);" )
6967cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);" )
6968cpp_quote( "DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);" )
6969cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
6970cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
6971cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
6972cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);" )
6973cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
6974cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
6975cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
6976cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
6977cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
6978cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
6979cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
6980cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
6981cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
6982cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
6983cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
6984cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
6985cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
6986cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
6987cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
6988cpp_quote( "DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);" )
6989cpp_quote( "DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);" )
6990cpp_quote( "DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);" )
6991cpp_quote( "DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);" )
6992cpp_quote( "DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);" )
6993cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);" )
6994cpp_quote( "DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);" )
6995cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
6996cpp_quote( "DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);" )
6997cpp_quote( "DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);" )
6998cpp_quote( "DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);" )
6999cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);" )
7000cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);" )
7001cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
7002cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);" )
7003cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);" )
7004cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);" )
7005cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);" )
7006cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);" )
7007cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
7008cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
7009cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);" )
7010cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);" )
7011cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);" )
7012cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);" )
7013cpp_quote( "DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);" )
7014cpp_quote( "DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.h
new file mode 100644
index 0000000..ec9ff5f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.h
@@ -0,0 +1,899 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compatibility_h__
39#define __d3d12compatibility_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompatibilityDevice_FWD_DEFINED__
56#define __ID3D12CompatibilityDevice_FWD_DEFINED__
57typedef interface ID3D12CompatibilityDevice ID3D12CompatibilityDevice;
58
59#endif /* __ID3D12CompatibilityDevice_FWD_DEFINED__ */
60
61
62#ifndef __D3D11On12CreatorID_FWD_DEFINED__
63#define __D3D11On12CreatorID_FWD_DEFINED__
64typedef interface D3D11On12CreatorID D3D11On12CreatorID;
65
66#endif /* __D3D11On12CreatorID_FWD_DEFINED__ */
67
68
69#ifndef __D3D9On12CreatorID_FWD_DEFINED__
70#define __D3D9On12CreatorID_FWD_DEFINED__
71typedef interface D3D9On12CreatorID D3D9On12CreatorID;
72
73#endif /* __D3D9On12CreatorID_FWD_DEFINED__ */
74
75
76#ifndef __OpenGLOn12CreatorID_FWD_DEFINED__
77#define __OpenGLOn12CreatorID_FWD_DEFINED__
78typedef interface OpenGLOn12CreatorID OpenGLOn12CreatorID;
79
80#endif /* __OpenGLOn12CreatorID_FWD_DEFINED__ */
81
82
83#ifndef __OpenCLOn12CreatorID_FWD_DEFINED__
84#define __OpenCLOn12CreatorID_FWD_DEFINED__
85typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
86
87#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
88
89
90#ifndef __VulkanOn12CreatorID_FWD_DEFINED__
91#define __VulkanOn12CreatorID_FWD_DEFINED__
92typedef interface VulkanOn12CreatorID VulkanOn12CreatorID;
93
94#endif /* __VulkanOn12CreatorID_FWD_DEFINED__ */
95
96
97#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
98#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
99typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
100
101#endif /* __DirectMLTensorFlowCreatorID_FWD_DEFINED__ */
102
103
104#ifndef __DirectMLPyTorchCreatorID_FWD_DEFINED__
105#define __DirectMLPyTorchCreatorID_FWD_DEFINED__
106typedef interface DirectMLPyTorchCreatorID DirectMLPyTorchCreatorID;
107
108#endif /* __DirectMLPyTorchCreatorID_FWD_DEFINED__ */
109
110
111#ifndef __DirectMLWebNNCreatorID_FWD_DEFINED__
112#define __DirectMLWebNNCreatorID_FWD_DEFINED__
113typedef interface DirectMLWebNNCreatorID DirectMLWebNNCreatorID;
114
115#endif /* __DirectMLWebNNCreatorID_FWD_DEFINED__ */
116
117
118/* header files for imported files */
119#include "oaidl.h"
120#include "ocidl.h"
121#include "d3d11on12.h"
122
123#ifdef __cplusplus
124extern "C"{
125#endif
126
127
128/* interface __MIDL_itf_d3d12compatibility_0000_0000 */
129/* [local] */
130
131#include <winapifamily.h>
132#pragma region Desktop Family
133#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
134typedef
135enum D3D12_COMPATIBILITY_SHARED_FLAGS
136 {
137 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
138 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
139 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
140 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
141 } D3D12_COMPATIBILITY_SHARED_FLAGS;
142
143DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )
144typedef
145enum D3D12_REFLECT_SHARED_PROPERTY
146 {
147 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS = 0,
148 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS = ( D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS + 1 ) ,
149 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE = ( D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS + 1 )
150 } D3D12_REFLECT_SHARED_PROPERTY;
151
152
153
154extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_c_ifspec;
155extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_s_ifspec;
156
157#ifndef __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
158#define __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
159
160/* interface ID3D12CompatibilityDevice */
161/* [unique][local][object][uuid] */
162
163
164EXTERN_C const IID IID_ID3D12CompatibilityDevice;
165
166#if defined(__cplusplus) && !defined(CINTERFACE)
167
168 MIDL_INTERFACE("8f1c0e3c-fae3-4a82-b098-bfe1708207ff")
169 ID3D12CompatibilityDevice : public IUnknown
170 {
171 public:
172 virtual HRESULT STDMETHODCALLTYPE CreateSharedResource(
173 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
174 D3D12_HEAP_FLAGS HeapFlags,
175 _In_ const D3D12_RESOURCE_DESC *pDesc,
176 D3D12_RESOURCE_STATES InitialResourceState,
177 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
178 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
179 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
180 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
181 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
182 REFIID riid,
183 _COM_Outptr_opt_ void **ppResource) = 0;
184
185 virtual HRESULT STDMETHODCALLTYPE CreateSharedHeap(
186 _In_ const D3D12_HEAP_DESC *pHeapDesc,
187 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
188 REFIID riid,
189 _COM_Outptr_opt_ void **ppHeap) = 0;
190
191 virtual HRESULT STDMETHODCALLTYPE ReflectSharedProperties(
192 _In_ ID3D12Object *pHeapOrResource,
193 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
194 _Out_writes_bytes_(DataSize) void *pData,
195 UINT DataSize) = 0;
196
197 };
198
199
200#else /* C style interface */
201
202 typedef struct ID3D12CompatibilityDeviceVtbl
203 {
204 BEGIN_INTERFACE
205
206 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
207 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
208 ID3D12CompatibilityDevice * This,
209 REFIID riid,
210 _COM_Outptr_ void **ppvObject);
211
212 DECLSPEC_XFGVIRT(IUnknown, AddRef)
213 ULONG ( STDMETHODCALLTYPE *AddRef )(
214 ID3D12CompatibilityDevice * This);
215
216 DECLSPEC_XFGVIRT(IUnknown, Release)
217 ULONG ( STDMETHODCALLTYPE *Release )(
218 ID3D12CompatibilityDevice * This);
219
220 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedResource)
221 HRESULT ( STDMETHODCALLTYPE *CreateSharedResource )(
222 ID3D12CompatibilityDevice * This,
223 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
224 D3D12_HEAP_FLAGS HeapFlags,
225 _In_ const D3D12_RESOURCE_DESC *pDesc,
226 D3D12_RESOURCE_STATES InitialResourceState,
227 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
228 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
229 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
230 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
231 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
232 REFIID riid,
233 _COM_Outptr_opt_ void **ppResource);
234
235 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedHeap)
236 HRESULT ( STDMETHODCALLTYPE *CreateSharedHeap )(
237 ID3D12CompatibilityDevice * This,
238 _In_ const D3D12_HEAP_DESC *pHeapDesc,
239 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
240 REFIID riid,
241 _COM_Outptr_opt_ void **ppHeap);
242
243 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, ReflectSharedProperties)
244 HRESULT ( STDMETHODCALLTYPE *ReflectSharedProperties )(
245 ID3D12CompatibilityDevice * This,
246 _In_ ID3D12Object *pHeapOrResource,
247 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
248 _Out_writes_bytes_(DataSize) void *pData,
249 UINT DataSize);
250
251 END_INTERFACE
252 } ID3D12CompatibilityDeviceVtbl;
253
254 interface ID3D12CompatibilityDevice
255 {
256 CONST_VTBL struct ID3D12CompatibilityDeviceVtbl *lpVtbl;
257 };
258
259
260
261#ifdef COBJMACROS
262
263
264#define ID3D12CompatibilityDevice_QueryInterface(This,riid,ppvObject) \
265 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
266
267#define ID3D12CompatibilityDevice_AddRef(This) \
268 ( (This)->lpVtbl -> AddRef(This) )
269
270#define ID3D12CompatibilityDevice_Release(This) \
271 ( (This)->lpVtbl -> Release(This) )
272
273
274#define ID3D12CompatibilityDevice_CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) \
275 ( (This)->lpVtbl -> CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) )
276
277#define ID3D12CompatibilityDevice_CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) \
278 ( (This)->lpVtbl -> CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) )
279
280#define ID3D12CompatibilityDevice_ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) \
281 ( (This)->lpVtbl -> ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) )
282
283#endif /* COBJMACROS */
284
285
286#endif /* C style interface */
287
288
289
290
291#endif /* __ID3D12CompatibilityDevice_INTERFACE_DEFINED__ */
292
293
294#ifndef __D3D11On12CreatorID_INTERFACE_DEFINED__
295#define __D3D11On12CreatorID_INTERFACE_DEFINED__
296
297/* interface D3D11On12CreatorID */
298/* [unique][local][object][uuid] */
299
300
301EXTERN_C const IID IID_D3D11On12CreatorID;
302
303#if defined(__cplusplus) && !defined(CINTERFACE)
304
305 MIDL_INTERFACE("edbf5678-2960-4e81-8429-99d4b2630c4e")
306 D3D11On12CreatorID : public IUnknown
307 {
308 public:
309 };
310
311
312#else /* C style interface */
313
314 typedef struct D3D11On12CreatorIDVtbl
315 {
316 BEGIN_INTERFACE
317
318 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
319 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
320 D3D11On12CreatorID * This,
321 REFIID riid,
322 _COM_Outptr_ void **ppvObject);
323
324 DECLSPEC_XFGVIRT(IUnknown, AddRef)
325 ULONG ( STDMETHODCALLTYPE *AddRef )(
326 D3D11On12CreatorID * This);
327
328 DECLSPEC_XFGVIRT(IUnknown, Release)
329 ULONG ( STDMETHODCALLTYPE *Release )(
330 D3D11On12CreatorID * This);
331
332 END_INTERFACE
333 } D3D11On12CreatorIDVtbl;
334
335 interface D3D11On12CreatorID
336 {
337 CONST_VTBL struct D3D11On12CreatorIDVtbl *lpVtbl;
338 };
339
340
341
342#ifdef COBJMACROS
343
344
345#define D3D11On12CreatorID_QueryInterface(This,riid,ppvObject) \
346 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
347
348#define D3D11On12CreatorID_AddRef(This) \
349 ( (This)->lpVtbl -> AddRef(This) )
350
351#define D3D11On12CreatorID_Release(This) \
352 ( (This)->lpVtbl -> Release(This) )
353
354
355#endif /* COBJMACROS */
356
357
358#endif /* C style interface */
359
360
361
362
363#endif /* __D3D11On12CreatorID_INTERFACE_DEFINED__ */
364
365
366#ifndef __D3D9On12CreatorID_INTERFACE_DEFINED__
367#define __D3D9On12CreatorID_INTERFACE_DEFINED__
368
369/* interface D3D9On12CreatorID */
370/* [unique][local][object][uuid] */
371
372
373EXTERN_C const IID IID_D3D9On12CreatorID;
374
375#if defined(__cplusplus) && !defined(CINTERFACE)
376
377 MIDL_INTERFACE("fffcbb7f-15d3-42a2-841e-9d8d32f37ddd")
378 D3D9On12CreatorID : public IUnknown
379 {
380 public:
381 };
382
383
384#else /* C style interface */
385
386 typedef struct D3D9On12CreatorIDVtbl
387 {
388 BEGIN_INTERFACE
389
390 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
391 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
392 D3D9On12CreatorID * This,
393 REFIID riid,
394 _COM_Outptr_ void **ppvObject);
395
396 DECLSPEC_XFGVIRT(IUnknown, AddRef)
397 ULONG ( STDMETHODCALLTYPE *AddRef )(
398 D3D9On12CreatorID * This);
399
400 DECLSPEC_XFGVIRT(IUnknown, Release)
401 ULONG ( STDMETHODCALLTYPE *Release )(
402 D3D9On12CreatorID * This);
403
404 END_INTERFACE
405 } D3D9On12CreatorIDVtbl;
406
407 interface D3D9On12CreatorID
408 {
409 CONST_VTBL struct D3D9On12CreatorIDVtbl *lpVtbl;
410 };
411
412
413
414#ifdef COBJMACROS
415
416
417#define D3D9On12CreatorID_QueryInterface(This,riid,ppvObject) \
418 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
419
420#define D3D9On12CreatorID_AddRef(This) \
421 ( (This)->lpVtbl -> AddRef(This) )
422
423#define D3D9On12CreatorID_Release(This) \
424 ( (This)->lpVtbl -> Release(This) )
425
426
427#endif /* COBJMACROS */
428
429
430#endif /* C style interface */
431
432
433
434
435#endif /* __D3D9On12CreatorID_INTERFACE_DEFINED__ */
436
437
438#ifndef __OpenGLOn12CreatorID_INTERFACE_DEFINED__
439#define __OpenGLOn12CreatorID_INTERFACE_DEFINED__
440
441/* interface OpenGLOn12CreatorID */
442/* [unique][local][object][uuid] */
443
444
445EXTERN_C const IID IID_OpenGLOn12CreatorID;
446
447#if defined(__cplusplus) && !defined(CINTERFACE)
448
449 MIDL_INTERFACE("6bb3cd34-0d19-45ab-97ed-d720ba3dfc80")
450 OpenGLOn12CreatorID : public IUnknown
451 {
452 public:
453 };
454
455
456#else /* C style interface */
457
458 typedef struct OpenGLOn12CreatorIDVtbl
459 {
460 BEGIN_INTERFACE
461
462 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
463 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
464 OpenGLOn12CreatorID * This,
465 REFIID riid,
466 _COM_Outptr_ void **ppvObject);
467
468 DECLSPEC_XFGVIRT(IUnknown, AddRef)
469 ULONG ( STDMETHODCALLTYPE *AddRef )(
470 OpenGLOn12CreatorID * This);
471
472 DECLSPEC_XFGVIRT(IUnknown, Release)
473 ULONG ( STDMETHODCALLTYPE *Release )(
474 OpenGLOn12CreatorID * This);
475
476 END_INTERFACE
477 } OpenGLOn12CreatorIDVtbl;
478
479 interface OpenGLOn12CreatorID
480 {
481 CONST_VTBL struct OpenGLOn12CreatorIDVtbl *lpVtbl;
482 };
483
484
485
486#ifdef COBJMACROS
487
488
489#define OpenGLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
491
492#define OpenGLOn12CreatorID_AddRef(This) \
493 ( (This)->lpVtbl -> AddRef(This) )
494
495#define OpenGLOn12CreatorID_Release(This) \
496 ( (This)->lpVtbl -> Release(This) )
497
498
499#endif /* COBJMACROS */
500
501
502#endif /* C style interface */
503
504
505
506
507#endif /* __OpenGLOn12CreatorID_INTERFACE_DEFINED__ */
508
509
510#ifndef __OpenCLOn12CreatorID_INTERFACE_DEFINED__
511#define __OpenCLOn12CreatorID_INTERFACE_DEFINED__
512
513/* interface OpenCLOn12CreatorID */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_OpenCLOn12CreatorID;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("3f76bb74-91b5-4a88-b126-20ca0331cd60")
522 OpenCLOn12CreatorID : public IUnknown
523 {
524 public:
525 };
526
527
528#else /* C style interface */
529
530 typedef struct OpenCLOn12CreatorIDVtbl
531 {
532 BEGIN_INTERFACE
533
534 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
535 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
536 OpenCLOn12CreatorID * This,
537 REFIID riid,
538 _COM_Outptr_ void **ppvObject);
539
540 DECLSPEC_XFGVIRT(IUnknown, AddRef)
541 ULONG ( STDMETHODCALLTYPE *AddRef )(
542 OpenCLOn12CreatorID * This);
543
544 DECLSPEC_XFGVIRT(IUnknown, Release)
545 ULONG ( STDMETHODCALLTYPE *Release )(
546 OpenCLOn12CreatorID * This);
547
548 END_INTERFACE
549 } OpenCLOn12CreatorIDVtbl;
550
551 interface OpenCLOn12CreatorID
552 {
553 CONST_VTBL struct OpenCLOn12CreatorIDVtbl *lpVtbl;
554 };
555
556
557
558#ifdef COBJMACROS
559
560
561#define OpenCLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
562 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
563
564#define OpenCLOn12CreatorID_AddRef(This) \
565 ( (This)->lpVtbl -> AddRef(This) )
566
567#define OpenCLOn12CreatorID_Release(This) \
568 ( (This)->lpVtbl -> Release(This) )
569
570
571#endif /* COBJMACROS */
572
573
574#endif /* C style interface */
575
576
577
578
579#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
580
581
582#ifndef __VulkanOn12CreatorID_INTERFACE_DEFINED__
583#define __VulkanOn12CreatorID_INTERFACE_DEFINED__
584
585/* interface VulkanOn12CreatorID */
586/* [unique][local][object][uuid] */
587
588
589EXTERN_C const IID IID_VulkanOn12CreatorID;
590
591#if defined(__cplusplus) && !defined(CINTERFACE)
592
593 MIDL_INTERFACE("bc806e01-3052-406c-a3e8-9fc07f048f98")
594 VulkanOn12CreatorID : public IUnknown
595 {
596 public:
597 };
598
599
600#else /* C style interface */
601
602 typedef struct VulkanOn12CreatorIDVtbl
603 {
604 BEGIN_INTERFACE
605
606 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
607 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
608 VulkanOn12CreatorID * This,
609 REFIID riid,
610 _COM_Outptr_ void **ppvObject);
611
612 DECLSPEC_XFGVIRT(IUnknown, AddRef)
613 ULONG ( STDMETHODCALLTYPE *AddRef )(
614 VulkanOn12CreatorID * This);
615
616 DECLSPEC_XFGVIRT(IUnknown, Release)
617 ULONG ( STDMETHODCALLTYPE *Release )(
618 VulkanOn12CreatorID * This);
619
620 END_INTERFACE
621 } VulkanOn12CreatorIDVtbl;
622
623 interface VulkanOn12CreatorID
624 {
625 CONST_VTBL struct VulkanOn12CreatorIDVtbl *lpVtbl;
626 };
627
628
629
630#ifdef COBJMACROS
631
632
633#define VulkanOn12CreatorID_QueryInterface(This,riid,ppvObject) \
634 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
635
636#define VulkanOn12CreatorID_AddRef(This) \
637 ( (This)->lpVtbl -> AddRef(This) )
638
639#define VulkanOn12CreatorID_Release(This) \
640 ( (This)->lpVtbl -> Release(This) )
641
642
643#endif /* COBJMACROS */
644
645
646#endif /* C style interface */
647
648
649
650
651#endif /* __VulkanOn12CreatorID_INTERFACE_DEFINED__ */
652
653
654#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
655#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
656
657/* interface DirectMLTensorFlowCreatorID */
658/* [unique][local][object][uuid] */
659
660
661EXTERN_C const IID IID_DirectMLTensorFlowCreatorID;
662
663#if defined(__cplusplus) && !defined(CINTERFACE)
664
665 MIDL_INTERFACE("cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab")
666 DirectMLTensorFlowCreatorID : public IUnknown
667 {
668 public:
669 };
670
671
672#else /* C style interface */
673
674 typedef struct DirectMLTensorFlowCreatorIDVtbl
675 {
676 BEGIN_INTERFACE
677
678 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
679 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
680 DirectMLTensorFlowCreatorID * This,
681 REFIID riid,
682 _COM_Outptr_ void **ppvObject);
683
684 DECLSPEC_XFGVIRT(IUnknown, AddRef)
685 ULONG ( STDMETHODCALLTYPE *AddRef )(
686 DirectMLTensorFlowCreatorID * This);
687
688 DECLSPEC_XFGVIRT(IUnknown, Release)
689 ULONG ( STDMETHODCALLTYPE *Release )(
690 DirectMLTensorFlowCreatorID * This);
691
692 END_INTERFACE
693 } DirectMLTensorFlowCreatorIDVtbl;
694
695 interface DirectMLTensorFlowCreatorID
696 {
697 CONST_VTBL struct DirectMLTensorFlowCreatorIDVtbl *lpVtbl;
698 };
699
700
701
702#ifdef COBJMACROS
703
704
705#define DirectMLTensorFlowCreatorID_QueryInterface(This,riid,ppvObject) \
706 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
707
708#define DirectMLTensorFlowCreatorID_AddRef(This) \
709 ( (This)->lpVtbl -> AddRef(This) )
710
711#define DirectMLTensorFlowCreatorID_Release(This) \
712 ( (This)->lpVtbl -> Release(This) )
713
714
715#endif /* COBJMACROS */
716
717
718#endif /* C style interface */
719
720
721
722
723#endif /* __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ */
724
725
726#ifndef __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
727#define __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
728
729/* interface DirectMLPyTorchCreatorID */
730/* [unique][local][object][uuid] */
731
732
733EXTERN_C const IID IID_DirectMLPyTorchCreatorID;
734
735#if defined(__cplusplus) && !defined(CINTERFACE)
736
737 MIDL_INTERFACE("af029192-fba1-4b05-9116-235e06560354")
738 DirectMLPyTorchCreatorID : public IUnknown
739 {
740 public:
741 };
742
743
744#else /* C style interface */
745
746 typedef struct DirectMLPyTorchCreatorIDVtbl
747 {
748 BEGIN_INTERFACE
749
750 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
751 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
752 DirectMLPyTorchCreatorID * This,
753 REFIID riid,
754 _COM_Outptr_ void **ppvObject);
755
756 DECLSPEC_XFGVIRT(IUnknown, AddRef)
757 ULONG ( STDMETHODCALLTYPE *AddRef )(
758 DirectMLPyTorchCreatorID * This);
759
760 DECLSPEC_XFGVIRT(IUnknown, Release)
761 ULONG ( STDMETHODCALLTYPE *Release )(
762 DirectMLPyTorchCreatorID * This);
763
764 END_INTERFACE
765 } DirectMLPyTorchCreatorIDVtbl;
766
767 interface DirectMLPyTorchCreatorID
768 {
769 CONST_VTBL struct DirectMLPyTorchCreatorIDVtbl *lpVtbl;
770 };
771
772
773
774#ifdef COBJMACROS
775
776
777#define DirectMLPyTorchCreatorID_QueryInterface(This,riid,ppvObject) \
778 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
779
780#define DirectMLPyTorchCreatorID_AddRef(This) \
781 ( (This)->lpVtbl -> AddRef(This) )
782
783#define DirectMLPyTorchCreatorID_Release(This) \
784 ( (This)->lpVtbl -> Release(This) )
785
786
787#endif /* COBJMACROS */
788
789
790#endif /* C style interface */
791
792
793
794
795#endif /* __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__ */
796
797
798#ifndef __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
799#define __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
800
801/* interface DirectMLWebNNCreatorID */
802/* [unique][local][object][uuid] */
803
804
805EXTERN_C const IID IID_DirectMLWebNNCreatorID;
806
807#if defined(__cplusplus) && !defined(CINTERFACE)
808
809 MIDL_INTERFACE("fdf01a76-1e11-450f-902b-74f04ea08094")
810 DirectMLWebNNCreatorID : public IUnknown
811 {
812 public:
813 };
814
815
816#else /* C style interface */
817
818 typedef struct DirectMLWebNNCreatorIDVtbl
819 {
820 BEGIN_INTERFACE
821
822 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
823 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
824 DirectMLWebNNCreatorID * This,
825 REFIID riid,
826 _COM_Outptr_ void **ppvObject);
827
828 DECLSPEC_XFGVIRT(IUnknown, AddRef)
829 ULONG ( STDMETHODCALLTYPE *AddRef )(
830 DirectMLWebNNCreatorID * This);
831
832 DECLSPEC_XFGVIRT(IUnknown, Release)
833 ULONG ( STDMETHODCALLTYPE *Release )(
834 DirectMLWebNNCreatorID * This);
835
836 END_INTERFACE
837 } DirectMLWebNNCreatorIDVtbl;
838
839 interface DirectMLWebNNCreatorID
840 {
841 CONST_VTBL struct DirectMLWebNNCreatorIDVtbl *lpVtbl;
842 };
843
844
845
846#ifdef COBJMACROS
847
848
849#define DirectMLWebNNCreatorID_QueryInterface(This,riid,ppvObject) \
850 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
851
852#define DirectMLWebNNCreatorID_AddRef(This) \
853 ( (This)->lpVtbl -> AddRef(This) )
854
855#define DirectMLWebNNCreatorID_Release(This) \
856 ( (This)->lpVtbl -> Release(This) )
857
858
859#endif /* COBJMACROS */
860
861
862#endif /* C style interface */
863
864
865
866
867#endif /* __DirectMLWebNNCreatorID_INTERFACE_DEFINED__ */
868
869
870/* interface __MIDL_itf_d3d12compatibility_0000_0009 */
871/* [local] */
872
873#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
874#pragma endregion
875DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);
876DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);
877DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
878DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
879DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
880DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);
881DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
882DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);
883DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);
884
885
886extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_c_ifspec;
887extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_s_ifspec;
888
889/* Additional Prototypes for ALL interfaces */
890
891/* end of Additional Prototypes */
892
893#ifdef __cplusplus
894}
895#endif
896
897#endif
898
899
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.idl
new file mode 100644
index 0000000..019afc9
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.idl
@@ -0,0 +1,101 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "d3d11on12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region Desktop Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17typedef enum D3D12_COMPATIBILITY_SHARED_FLAGS
18{
19 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
20 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
21 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
22 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4,
23
24} D3D12_COMPATIBILITY_SHARED_FLAGS;
25cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )" )
26
27typedef enum D3D12_REFLECT_SHARED_PROPERTY
28{
29 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS, // D3D11_RESOURCE_FLAGS
30 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS, // D3D12_COMPATIBILITY_SHARED_FLAGS
31 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE, // HANDLE
32} D3D12_REFLECT_SHARED_PROPERTY;
33
34[ uuid( 8f1c0e3c-fae3-4a82-b098-bfe1708207ff ), object, local, pointer_default( unique ) ]
35interface ID3D12CompatibilityDevice
36 : IUnknown
37{
38 HRESULT CreateSharedResource(
39 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
40 D3D12_HEAP_FLAGS HeapFlags,
41 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
42 D3D12_RESOURCE_STATES InitialResourceState,
43 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
44 [annotation("_In_opt_")] const D3D11_RESOURCE_FLAGS* pFlags11,
45 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
46 [annotation("_In_opt_")] ID3D12LifetimeTracker* pLifetimeTracker,
47 [annotation("_In_opt_")] ID3D12SwapChainAssistant* pOwningSwapchain,
48 REFIID riid,
49 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppResource);
50
51 HRESULT CreateSharedHeap(
52 [annotation("_In_")] const D3D12_HEAP_DESC* pHeapDesc,
53 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
54 REFIID riid,
55 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppHeap);
56
57 HRESULT ReflectSharedProperties(
58 [annotation("_In_")] ID3D12Object* pHeapOrResource,
59 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
60 [annotation("_Out_writes_bytes_(DataSize)")] void* pData,
61 UINT DataSize);
62}
63
64[uuid(edbf5678-2960-4e81-8429-99d4b2630c4e), object, local, pointer_default(unique)]
65interface D3D11On12CreatorID : IUnknown { };
66
67[uuid(fffcbb7f-15d3-42a2-841e-9d8d32f37ddd), object, local, pointer_default(unique)]
68interface D3D9On12CreatorID : IUnknown { };
69
70[uuid(6bb3cd34-0d19-45ab-97ed-d720ba3dfc80), object, local, pointer_default(unique)]
71interface OpenGLOn12CreatorID : IUnknown { };
72
73[uuid(3f76bb74-91b5-4a88-b126-20ca0331cd60), object, local, pointer_default(unique)]
74interface OpenCLOn12CreatorID : IUnknown { };
75
76[uuid(bc806e01-3052-406c-a3e8-9fc07f048f98), object, local, pointer_default(unique)]
77interface VulkanOn12CreatorID : IUnknown { };
78
79[uuid(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
80interface DirectMLTensorFlowCreatorID : IUnknown { };
81
82[uuid(af029192-fba1-4b05-9116-235e06560354), object, local, pointer_default(unique)]
83interface DirectMLPyTorchCreatorID : IUnknown { };
84
85[uuid(fdf01a76-1e11-450f-902b-74f04ea08094), object, local, pointer_default(unique)]
86interface DirectMLWebNNCreatorID : IUnknown { };
87
88
89cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
90#pragma endregion
91
92
93cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
94cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
95cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
96cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
97cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
98cpp_quote( "DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);" )
99cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
100cpp_quote( "DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);" )
101cpp_quote( "DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.h
new file mode 100644
index 0000000..1d8fe3b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.h
@@ -0,0 +1,977 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compiler_h__
39#define __d3d12compiler_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompilerFactoryChild_FWD_DEFINED__
56#define __ID3D12CompilerFactoryChild_FWD_DEFINED__
57typedef interface ID3D12CompilerFactoryChild ID3D12CompilerFactoryChild;
58
59#endif /* __ID3D12CompilerFactoryChild_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12CompilerCacheSession_FWD_DEFINED__
63#define __ID3D12CompilerCacheSession_FWD_DEFINED__
64typedef interface ID3D12CompilerCacheSession ID3D12CompilerCacheSession;
65
66#endif /* __ID3D12CompilerCacheSession_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12CompilerStateObject_FWD_DEFINED__
70#define __ID3D12CompilerStateObject_FWD_DEFINED__
71typedef interface ID3D12CompilerStateObject ID3D12CompilerStateObject;
72
73#endif /* __ID3D12CompilerStateObject_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Compiler_FWD_DEFINED__
77#define __ID3D12Compiler_FWD_DEFINED__
78typedef interface ID3D12Compiler ID3D12Compiler;
79
80#endif /* __ID3D12Compiler_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12CompilerFactory_FWD_DEFINED__
84#define __ID3D12CompilerFactory_FWD_DEFINED__
85typedef interface ID3D12CompilerFactory ID3D12CompilerFactory;
86
87#endif /* __ID3D12CompilerFactory_FWD_DEFINED__ */
88
89
90/* header files for imported files */
91#include "oaidl.h"
92#include "ocidl.h"
93#include "dxgicommon.h"
94#include "d3d12.h"
95
96#ifdef __cplusplus
97extern "C"{
98#endif
99
100
101/* interface __MIDL_itf_d3d12compiler_0000_0000 */
102/* [local] */
103
104#include <winapifamily.h>
105#pragma region App Family
106#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
107typedef struct D3D12_ADAPTER_FAMILY
108 {
109 WCHAR szAdapterFamily[ 128 ];
110 } D3D12_ADAPTER_FAMILY;
111
112typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)(
113 _In_ LPCWSTR pPluginCompilerDllPath,
114 _In_ REFIID riid,
115 _COM_Outptr_opt_ void** ppFactory );
116
117HRESULT WINAPI D3D12CompilerCreateFactory(
118 _In_ LPCWSTR pPluginCompilerDllPath,
119 _In_ REFIID riid, // Expected: ID3D12CompilerFactory
120 _COM_Outptr_opt_ void** ppFactory );
121
122typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
123 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
124 _Out_ ID3DBlob** ppBlob,
125 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
126
127HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(
128 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
129 _Out_ ID3DBlob** ppBlob,
130 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
131
132
133
134extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_c_ifspec;
135extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_s_ifspec;
136
137#ifndef __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
138#define __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
139
140/* interface ID3D12CompilerFactoryChild */
141/* [unique][local][object][uuid] */
142
143
144EXTERN_C const IID IID_ID3D12CompilerFactoryChild;
145
146#if defined(__cplusplus) && !defined(CINTERFACE)
147
148 MIDL_INTERFACE("e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc")
149 ID3D12CompilerFactoryChild : public IUnknown
150 {
151 public:
152 virtual HRESULT STDMETHODCALLTYPE GetFactory(
153 _In_ REFIID riid,
154 _COM_Outptr_ void **ppCompilerFactory) = 0;
155
156 };
157
158
159#else /* C style interface */
160
161 typedef struct ID3D12CompilerFactoryChildVtbl
162 {
163 BEGIN_INTERFACE
164
165 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
166 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
167 ID3D12CompilerFactoryChild * This,
168 REFIID riid,
169 _COM_Outptr_ void **ppvObject);
170
171 DECLSPEC_XFGVIRT(IUnknown, AddRef)
172 ULONG ( STDMETHODCALLTYPE *AddRef )(
173 ID3D12CompilerFactoryChild * This);
174
175 DECLSPEC_XFGVIRT(IUnknown, Release)
176 ULONG ( STDMETHODCALLTYPE *Release )(
177 ID3D12CompilerFactoryChild * This);
178
179 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
180 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
181 ID3D12CompilerFactoryChild * This,
182 _In_ REFIID riid,
183 _COM_Outptr_ void **ppCompilerFactory);
184
185 END_INTERFACE
186 } ID3D12CompilerFactoryChildVtbl;
187
188 interface ID3D12CompilerFactoryChild
189 {
190 CONST_VTBL struct ID3D12CompilerFactoryChildVtbl *lpVtbl;
191 };
192
193
194
195#ifdef COBJMACROS
196
197
198#define ID3D12CompilerFactoryChild_QueryInterface(This,riid,ppvObject) \
199 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
200
201#define ID3D12CompilerFactoryChild_AddRef(This) \
202 ( (This)->lpVtbl -> AddRef(This) )
203
204#define ID3D12CompilerFactoryChild_Release(This) \
205 ( (This)->lpVtbl -> Release(This) )
206
207
208#define ID3D12CompilerFactoryChild_GetFactory(This,riid,ppCompilerFactory) \
209 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
210
211#endif /* COBJMACROS */
212
213
214#endif /* C style interface */
215
216
217
218
219#endif /* __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__ */
220
221
222/* interface __MIDL_itf_d3d12compiler_0000_0001 */
223/* [local] */
224
225typedef
226enum D3D12_COMPILER_VALUE_TYPE
227 {
228 D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
229 D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
230 D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
231 D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3
232 } D3D12_COMPILER_VALUE_TYPE;
233
234typedef
235enum D3D12_COMPILER_VALUE_TYPE_FLAGS
236 {
237 D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0,
238 D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = ( 1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE ) ,
239 D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_METADATA ) ,
240 D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = ( 1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB ) ,
241 D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA )
242 } D3D12_COMPILER_VALUE_TYPE_FLAGS;
243
244DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )
245typedef struct D3D12_COMPILER_DATABASE_PATH
246 {
247 D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
248 LPCWSTR pPath;
249 } D3D12_COMPILER_DATABASE_PATH;
250
251typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
252 {
253 _Field_size_bytes_full_(KeySize) const void *pKey;
254 UINT KeySize;
255 } D3D12_COMPILER_CACHE_GROUP_KEY;
256
257typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
258 {
259 _Field_size_bytes_full_(KeySize) const void *pKey;
260 UINT KeySize;
261 } D3D12_COMPILER_CACHE_VALUE_KEY;
262
263typedef struct D3D12_COMPILER_CACHE_VALUE
264 {
265 _Field_size_bytes_full_(ValueSize) void *pValue;
266 UINT ValueSize;
267 } D3D12_COMPILER_CACHE_VALUE;
268
269typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
270 {
271 D3D12_COMPILER_VALUE_TYPE Type;
272 D3D12_COMPILER_CACHE_VALUE Value;
273 } D3D12_COMPILER_CACHE_TYPED_VALUE;
274
275typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
276 {
277 _Field_size_bytes_full_(ValueSize) const void *pValue;
278 UINT ValueSize;
279 } D3D12_COMPILER_CACHE_CONST_VALUE;
280
281typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
282 {
283 D3D12_COMPILER_VALUE_TYPE Type;
284 D3D12_COMPILER_CACHE_CONST_VALUE Value;
285 } D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
286
287typedef struct D3D12_COMPILER_TARGET
288 {
289 UINT AdapterFamilyIndex;
290 UINT64 ABIVersion;
291 } D3D12_COMPILER_TARGET;
292
293typedef void *( __stdcall *D3D12CompilerCacheSessionAllocationFunc )(
294 SIZE_T SizeInBytes,
295 _Inout_opt_ void *pContext);
296
297typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValueKeysFunc )(
298 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
299 _Inout_opt_ void *pContext);
300
301typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValuesFunc )(
302 UINT ValueKeyIndex,
303 _In_ const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValue,
304 _Inout_opt_ void *pContext);
305
306
307
308extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_c_ifspec;
309extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_s_ifspec;
310
311#ifndef __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
312#define __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
313
314/* interface ID3D12CompilerCacheSession */
315/* [unique][local][object][uuid] */
316
317
318EXTERN_C const IID IID_ID3D12CompilerCacheSession;
319
320#if defined(__cplusplus) && !defined(CINTERFACE)
321
322 MIDL_INTERFACE("5704e5e6-054b-4738-b661-7b0d68d8dde2")
323 ID3D12CompilerCacheSession : public ID3D12CompilerFactoryChild
324 {
325 public:
326 virtual HRESULT STDMETHODCALLTYPE FindGroup(
327 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
328 _Out_opt_ UINT *pGroupVersion) = 0;
329
330 virtual HRESULT STDMETHODCALLTYPE FindGroupValueKeys(
331 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
332 _In_opt_ const UINT *pExpectedGroupVersion,
333 _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
334 _Inout_opt_ void *pContext) = 0;
335
336 virtual HRESULT STDMETHODCALLTYPE FindGroupValues(
337 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
338 _In_opt_ const UINT *pExpectedGroupVersion,
339 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
340 _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
341 _Inout_opt_ void *pContext) = 0;
342
343 virtual HRESULT STDMETHODCALLTYPE FindValue(
344 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
345 _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
346 UINT NumTypedValues,
347 _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
348 _Inout_opt_ void *pContext) = 0;
349
350 virtual const D3D12_APPLICATION_DESC *STDMETHODCALLTYPE GetApplicationDesc( void) = 0;
351
352#if defined(_MSC_VER) || !defined(_WIN32)
353 virtual D3D12_COMPILER_TARGET STDMETHODCALLTYPE GetCompilerTarget( void) = 0;
354#else
355 virtual D3D12_COMPILER_TARGET *STDMETHODCALLTYPE GetCompilerTarget(
356 D3D12_COMPILER_TARGET * RetVal) = 0;
357#endif
358
359 virtual D3D12_COMPILER_VALUE_TYPE_FLAGS STDMETHODCALLTYPE GetValueTypes( void) = 0;
360
361 virtual HRESULT STDMETHODCALLTYPE StoreGroupValueKeys(
362 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
363 UINT GroupVersion,
364 _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
365 UINT NumValueKeys) = 0;
366
367 virtual HRESULT STDMETHODCALLTYPE StoreValue(
368 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
369 _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
370 UINT NumTypedValues) = 0;
371
372 };
373
374
375#else /* C style interface */
376
377 typedef struct ID3D12CompilerCacheSessionVtbl
378 {
379 BEGIN_INTERFACE
380
381 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
382 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
383 ID3D12CompilerCacheSession * This,
384 REFIID riid,
385 _COM_Outptr_ void **ppvObject);
386
387 DECLSPEC_XFGVIRT(IUnknown, AddRef)
388 ULONG ( STDMETHODCALLTYPE *AddRef )(
389 ID3D12CompilerCacheSession * This);
390
391 DECLSPEC_XFGVIRT(IUnknown, Release)
392 ULONG ( STDMETHODCALLTYPE *Release )(
393 ID3D12CompilerCacheSession * This);
394
395 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
396 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
397 ID3D12CompilerCacheSession * This,
398 _In_ REFIID riid,
399 _COM_Outptr_ void **ppCompilerFactory);
400
401 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroup)
402 HRESULT ( STDMETHODCALLTYPE *FindGroup )(
403 ID3D12CompilerCacheSession * This,
404 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
405 _Out_opt_ UINT *pGroupVersion);
406
407 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValueKeys)
408 HRESULT ( STDMETHODCALLTYPE *FindGroupValueKeys )(
409 ID3D12CompilerCacheSession * This,
410 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
411 _In_opt_ const UINT *pExpectedGroupVersion,
412 _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
413 _Inout_opt_ void *pContext);
414
415 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValues)
416 HRESULT ( STDMETHODCALLTYPE *FindGroupValues )(
417 ID3D12CompilerCacheSession * This,
418 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
419 _In_opt_ const UINT *pExpectedGroupVersion,
420 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
421 _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
422 _Inout_opt_ void *pContext);
423
424 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindValue)
425 HRESULT ( STDMETHODCALLTYPE *FindValue )(
426 ID3D12CompilerCacheSession * This,
427 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
428 _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
429 UINT NumTypedValues,
430 _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
431 _Inout_opt_ void *pContext);
432
433 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetApplicationDesc)
434 const D3D12_APPLICATION_DESC *( STDMETHODCALLTYPE *GetApplicationDesc )(
435 ID3D12CompilerCacheSession * This);
436
437 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetCompilerTarget)
438#if !defined(_WIN32)
439 D3D12_COMPILER_TARGET ( STDMETHODCALLTYPE *GetCompilerTarget )(
440 ID3D12CompilerCacheSession * This);
441
442#else
443 D3D12_COMPILER_TARGET *( STDMETHODCALLTYPE *GetCompilerTarget )(
444 ID3D12CompilerCacheSession * This,
445 D3D12_COMPILER_TARGET * RetVal);
446
447#endif
448
449 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetValueTypes)
450 D3D12_COMPILER_VALUE_TYPE_FLAGS ( STDMETHODCALLTYPE *GetValueTypes )(
451 ID3D12CompilerCacheSession * This);
452
453 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreGroupValueKeys)
454 HRESULT ( STDMETHODCALLTYPE *StoreGroupValueKeys )(
455 ID3D12CompilerCacheSession * This,
456 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
457 UINT GroupVersion,
458 _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
459 UINT NumValueKeys);
460
461 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreValue)
462 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
463 ID3D12CompilerCacheSession * This,
464 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
465 _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
466 UINT NumTypedValues);
467
468 END_INTERFACE
469 } ID3D12CompilerCacheSessionVtbl;
470
471 interface ID3D12CompilerCacheSession
472 {
473 CONST_VTBL struct ID3D12CompilerCacheSessionVtbl *lpVtbl;
474 };
475
476
477
478#ifdef COBJMACROS
479
480
481#define ID3D12CompilerCacheSession_QueryInterface(This,riid,ppvObject) \
482 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
483
484#define ID3D12CompilerCacheSession_AddRef(This) \
485 ( (This)->lpVtbl -> AddRef(This) )
486
487#define ID3D12CompilerCacheSession_Release(This) \
488 ( (This)->lpVtbl -> Release(This) )
489
490
491#define ID3D12CompilerCacheSession_GetFactory(This,riid,ppCompilerFactory) \
492 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
493
494
495#define ID3D12CompilerCacheSession_FindGroup(This,pGroupKey,pGroupVersion) \
496 ( (This)->lpVtbl -> FindGroup(This,pGroupKey,pGroupVersion) )
497
498#define ID3D12CompilerCacheSession_FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) \
499 ( (This)->lpVtbl -> FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) )
500
501#define ID3D12CompilerCacheSession_FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) \
502 ( (This)->lpVtbl -> FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) )
503
504#define ID3D12CompilerCacheSession_FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) \
505 ( (This)->lpVtbl -> FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) )
506
507#define ID3D12CompilerCacheSession_GetApplicationDesc(This) \
508 ( (This)->lpVtbl -> GetApplicationDesc(This) )
509#if !defined(_WIN32)
510
511#define ID3D12CompilerCacheSession_GetCompilerTarget(This) \
512 ( (This)->lpVtbl -> GetCompilerTarget(This) )
513#else
514#define ID3D12CompilerCacheSession_GetCompilerTarget(This,RetVal) \
515 ( (This)->lpVtbl -> GetCompilerTarget(This,RetVal) )
516#endif
517
518#define ID3D12CompilerCacheSession_GetValueTypes(This) \
519 ( (This)->lpVtbl -> GetValueTypes(This) )
520
521#define ID3D12CompilerCacheSession_StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) \
522 ( (This)->lpVtbl -> StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) )
523
524#define ID3D12CompilerCacheSession_StoreValue(This,pValueKey,pTypedValues,NumTypedValues) \
525 ( (This)->lpVtbl -> StoreValue(This,pValueKey,pTypedValues,NumTypedValues) )
526
527#endif /* COBJMACROS */
528
529
530#endif /* C style interface */
531
532
533
534
535#endif /* __ID3D12CompilerCacheSession_INTERFACE_DEFINED__ */
536
537
538#ifndef __ID3D12CompilerStateObject_INTERFACE_DEFINED__
539#define __ID3D12CompilerStateObject_INTERFACE_DEFINED__
540
541/* interface ID3D12CompilerStateObject */
542/* [unique][local][object][uuid] */
543
544
545EXTERN_C const IID IID_ID3D12CompilerStateObject;
546
547#if defined(__cplusplus) && !defined(CINTERFACE)
548
549 MIDL_INTERFACE("5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a")
550 ID3D12CompilerStateObject : public IUnknown
551 {
552 public:
553 virtual HRESULT STDMETHODCALLTYPE GetCompiler(
554 _In_ REFIID riid,
555 _COM_Outptr_ void **ppCompiler) = 0;
556
557 };
558
559
560#else /* C style interface */
561
562 typedef struct ID3D12CompilerStateObjectVtbl
563 {
564 BEGIN_INTERFACE
565
566 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
567 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
568 ID3D12CompilerStateObject * This,
569 REFIID riid,
570 _COM_Outptr_ void **ppvObject);
571
572 DECLSPEC_XFGVIRT(IUnknown, AddRef)
573 ULONG ( STDMETHODCALLTYPE *AddRef )(
574 ID3D12CompilerStateObject * This);
575
576 DECLSPEC_XFGVIRT(IUnknown, Release)
577 ULONG ( STDMETHODCALLTYPE *Release )(
578 ID3D12CompilerStateObject * This);
579
580 DECLSPEC_XFGVIRT(ID3D12CompilerStateObject, GetCompiler)
581 HRESULT ( STDMETHODCALLTYPE *GetCompiler )(
582 ID3D12CompilerStateObject * This,
583 _In_ REFIID riid,
584 _COM_Outptr_ void **ppCompiler);
585
586 END_INTERFACE
587 } ID3D12CompilerStateObjectVtbl;
588
589 interface ID3D12CompilerStateObject
590 {
591 CONST_VTBL struct ID3D12CompilerStateObjectVtbl *lpVtbl;
592 };
593
594
595
596#ifdef COBJMACROS
597
598
599#define ID3D12CompilerStateObject_QueryInterface(This,riid,ppvObject) \
600 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
601
602#define ID3D12CompilerStateObject_AddRef(This) \
603 ( (This)->lpVtbl -> AddRef(This) )
604
605#define ID3D12CompilerStateObject_Release(This) \
606 ( (This)->lpVtbl -> Release(This) )
607
608
609#define ID3D12CompilerStateObject_GetCompiler(This,riid,ppCompiler) \
610 ( (This)->lpVtbl -> GetCompiler(This,riid,ppCompiler) )
611
612#endif /* COBJMACROS */
613
614
615#endif /* C style interface */
616
617
618
619
620#endif /* __ID3D12CompilerStateObject_INTERFACE_DEFINED__ */
621
622
623/* interface __MIDL_itf_d3d12compiler_0000_0003 */
624/* [local] */
625
626typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
627 {
628 ID3D12CompilerStateObject *pExistingCollection;
629 UINT NumExports;
630 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
631 } D3D12_COMPILER_EXISTING_COLLECTION_DESC;
632
633
634
635extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_c_ifspec;
636extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_s_ifspec;
637
638#ifndef __ID3D12Compiler_INTERFACE_DEFINED__
639#define __ID3D12Compiler_INTERFACE_DEFINED__
640
641/* interface ID3D12Compiler */
642/* [unique][local][object][uuid] */
643
644
645EXTERN_C const IID IID_ID3D12Compiler;
646
647#if defined(__cplusplus) && !defined(CINTERFACE)
648
649 MIDL_INTERFACE("8c403c12-993b-4583-80f1-6824138fa68e")
650 ID3D12Compiler : public ID3D12CompilerFactoryChild
651 {
652 public:
653 virtual HRESULT STDMETHODCALLTYPE CompilePipelineState(
654 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
655 UINT GroupVersion,
656 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
657
658 virtual HRESULT STDMETHODCALLTYPE CompileStateObject(
659 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
660 UINT GroupVersion,
661 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
662 _In_ REFIID riid,
663 _COM_Outptr_ void **ppCompilerStateObject) = 0;
664
665 virtual HRESULT STDMETHODCALLTYPE CompileAddToStateObject(
666 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
667 UINT GroupVersion,
668 _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
669 _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
670 _In_ REFIID riid,
671 _COM_Outptr_ void **ppNewCompilerStateObject) = 0;
672
673 virtual HRESULT STDMETHODCALLTYPE GetCacheSession(
674 _In_ REFIID riid,
675 _COM_Outptr_ void **ppCompilerCacheSession) = 0;
676
677 };
678
679
680#else /* C style interface */
681
682 typedef struct ID3D12CompilerVtbl
683 {
684 BEGIN_INTERFACE
685
686 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
687 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
688 ID3D12Compiler * This,
689 REFIID riid,
690 _COM_Outptr_ void **ppvObject);
691
692 DECLSPEC_XFGVIRT(IUnknown, AddRef)
693 ULONG ( STDMETHODCALLTYPE *AddRef )(
694 ID3D12Compiler * This);
695
696 DECLSPEC_XFGVIRT(IUnknown, Release)
697 ULONG ( STDMETHODCALLTYPE *Release )(
698 ID3D12Compiler * This);
699
700 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
701 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
702 ID3D12Compiler * This,
703 _In_ REFIID riid,
704 _COM_Outptr_ void **ppCompilerFactory);
705
706 DECLSPEC_XFGVIRT(ID3D12Compiler, CompilePipelineState)
707 HRESULT ( STDMETHODCALLTYPE *CompilePipelineState )(
708 ID3D12Compiler * This,
709 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
710 UINT GroupVersion,
711 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
712
713 DECLSPEC_XFGVIRT(ID3D12Compiler, CompileStateObject)
714 HRESULT ( STDMETHODCALLTYPE *CompileStateObject )(
715 ID3D12Compiler * This,
716 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
717 UINT GroupVersion,
718 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
719 _In_ REFIID riid,
720 _COM_Outptr_ void **ppCompilerStateObject);
721
722 DECLSPEC_XFGVIRT(ID3D12Compiler, CompileAddToStateObject)
723 HRESULT ( STDMETHODCALLTYPE *CompileAddToStateObject )(
724 ID3D12Compiler * This,
725 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
726 UINT GroupVersion,
727 _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
728 _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
729 _In_ REFIID riid,
730 _COM_Outptr_ void **ppNewCompilerStateObject);
731
732 DECLSPEC_XFGVIRT(ID3D12Compiler, GetCacheSession)
733 HRESULT ( STDMETHODCALLTYPE *GetCacheSession )(
734 ID3D12Compiler * This,
735 _In_ REFIID riid,
736 _COM_Outptr_ void **ppCompilerCacheSession);
737
738 END_INTERFACE
739 } ID3D12CompilerVtbl;
740
741 interface ID3D12Compiler
742 {
743 CONST_VTBL struct ID3D12CompilerVtbl *lpVtbl;
744 };
745
746
747
748#ifdef COBJMACROS
749
750
751#define ID3D12Compiler_QueryInterface(This,riid,ppvObject) \
752 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
753
754#define ID3D12Compiler_AddRef(This) \
755 ( (This)->lpVtbl -> AddRef(This) )
756
757#define ID3D12Compiler_Release(This) \
758 ( (This)->lpVtbl -> Release(This) )
759
760
761#define ID3D12Compiler_GetFactory(This,riid,ppCompilerFactory) \
762 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
763
764
765#define ID3D12Compiler_CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) \
766 ( (This)->lpVtbl -> CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) )
767
768#define ID3D12Compiler_CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) \
769 ( (This)->lpVtbl -> CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) )
770
771#define ID3D12Compiler_CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) \
772 ( (This)->lpVtbl -> CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) )
773
774#define ID3D12Compiler_GetCacheSession(This,riid,ppCompilerCacheSession) \
775 ( (This)->lpVtbl -> GetCacheSession(This,riid,ppCompilerCacheSession) )
776
777#endif /* COBJMACROS */
778
779
780#endif /* C style interface */
781
782
783
784
785#endif /* __ID3D12Compiler_INTERFACE_DEFINED__ */
786
787
788#ifndef __ID3D12CompilerFactory_INTERFACE_DEFINED__
789#define __ID3D12CompilerFactory_INTERFACE_DEFINED__
790
791/* interface ID3D12CompilerFactory */
792/* [unique][local][object][uuid] */
793
794
795EXTERN_C const IID IID_ID3D12CompilerFactory;
796
797#if defined(__cplusplus) && !defined(CINTERFACE)
798
799 MIDL_INTERFACE("c1ee4b59-3f59-47a5-9b4e-a855c858a878")
800 ID3D12CompilerFactory : public IUnknown
801 {
802 public:
803 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilies(
804 UINT AdapterFamilyIndex,
805 _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily) = 0;
806
807 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyABIVersions(
808 UINT AdapterFamilyIndex,
809 _Inout_ UINT32 *pNumABIVersions,
810 _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions) = 0;
811
812 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyCompilerVersion(
813 UINT AdapterFamilyIndex,
814 _Out_ D3D12_VERSION_NUMBER *pCompilerVersion) = 0;
815
816 virtual HRESULT STDMETHODCALLTYPE GetApplicationProfileVersion(
817 _In_ const D3D12_COMPILER_TARGET *pTarget,
818 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
819 _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion) = 0;
820
821 virtual HRESULT STDMETHODCALLTYPE CreateCompilerCacheSession(
822 _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
823 UINT NumPaths,
824 _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
825 _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
826 _In_ REFIID riid,
827 _COM_Outptr_ void **ppCompilerCacheSession) = 0;
828
829 virtual HRESULT STDMETHODCALLTYPE CreateCompiler(
830 _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
831 _In_ REFIID riid,
832 _COM_Outptr_ void **ppCompiler) = 0;
833
834 };
835
836
837#else /* C style interface */
838
839 typedef struct ID3D12CompilerFactoryVtbl
840 {
841 BEGIN_INTERFACE
842
843 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
844 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
845 ID3D12CompilerFactory * This,
846 REFIID riid,
847 _COM_Outptr_ void **ppvObject);
848
849 DECLSPEC_XFGVIRT(IUnknown, AddRef)
850 ULONG ( STDMETHODCALLTYPE *AddRef )(
851 ID3D12CompilerFactory * This);
852
853 DECLSPEC_XFGVIRT(IUnknown, Release)
854 ULONG ( STDMETHODCALLTYPE *Release )(
855 ID3D12CompilerFactory * This);
856
857 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilies)
858 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilies )(
859 ID3D12CompilerFactory * This,
860 UINT AdapterFamilyIndex,
861 _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily);
862
863 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyABIVersions)
864 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyABIVersions )(
865 ID3D12CompilerFactory * This,
866 UINT AdapterFamilyIndex,
867 _Inout_ UINT32 *pNumABIVersions,
868 _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions);
869
870 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyCompilerVersion)
871 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyCompilerVersion )(
872 ID3D12CompilerFactory * This,
873 UINT AdapterFamilyIndex,
874 _Out_ D3D12_VERSION_NUMBER *pCompilerVersion);
875
876 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, GetApplicationProfileVersion)
877 HRESULT ( STDMETHODCALLTYPE *GetApplicationProfileVersion )(
878 ID3D12CompilerFactory * This,
879 _In_ const D3D12_COMPILER_TARGET *pTarget,
880 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
881 _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion);
882
883 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompilerCacheSession)
884 HRESULT ( STDMETHODCALLTYPE *CreateCompilerCacheSession )(
885 ID3D12CompilerFactory * This,
886 _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
887 UINT NumPaths,
888 _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
889 _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
890 _In_ REFIID riid,
891 _COM_Outptr_ void **ppCompilerCacheSession);
892
893 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompiler)
894 HRESULT ( STDMETHODCALLTYPE *CreateCompiler )(
895 ID3D12CompilerFactory * This,
896 _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
897 _In_ REFIID riid,
898 _COM_Outptr_ void **ppCompiler);
899
900 END_INTERFACE
901 } ID3D12CompilerFactoryVtbl;
902
903 interface ID3D12CompilerFactory
904 {
905 CONST_VTBL struct ID3D12CompilerFactoryVtbl *lpVtbl;
906 };
907
908
909
910#ifdef COBJMACROS
911
912
913#define ID3D12CompilerFactory_QueryInterface(This,riid,ppvObject) \
914 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
915
916#define ID3D12CompilerFactory_AddRef(This) \
917 ( (This)->lpVtbl -> AddRef(This) )
918
919#define ID3D12CompilerFactory_Release(This) \
920 ( (This)->lpVtbl -> Release(This) )
921
922
923#define ID3D12CompilerFactory_EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) \
924 ( (This)->lpVtbl -> EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) )
925
926#define ID3D12CompilerFactory_EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) \
927 ( (This)->lpVtbl -> EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) )
928
929#define ID3D12CompilerFactory_EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) \
930 ( (This)->lpVtbl -> EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) )
931
932#define ID3D12CompilerFactory_GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) \
933 ( (This)->lpVtbl -> GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) )
934
935#define ID3D12CompilerFactory_CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) \
936 ( (This)->lpVtbl -> CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) )
937
938#define ID3D12CompilerFactory_CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) \
939 ( (This)->lpVtbl -> CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) )
940
941#endif /* COBJMACROS */
942
943
944#endif /* C style interface */
945
946
947
948
949#endif /* __ID3D12CompilerFactory_INTERFACE_DEFINED__ */
950
951
952/* interface __MIDL_itf_d3d12compiler_0000_0005 */
953/* [local] */
954
955#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
956#pragma endregion
957DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);
958DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);
959DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);
960DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);
961DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);
962
963
964extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_c_ifspec;
965extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_s_ifspec;
966
967/* Additional Prototypes for ALL interfaces */
968
969/* end of Additional Prototypes */
970
971#ifdef __cplusplus
972}
973#endif
974
975#endif
976
977
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.idl
new file mode 100644
index 0000000..c8ae4b4
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.idl
@@ -0,0 +1,291 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18
19typedef struct D3D12_ADAPTER_FAMILY
20{
21 WCHAR szAdapterFamily[128];
22} D3D12_ADAPTER_FAMILY;
23
24cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)( ")
25cpp_quote(" _In_ LPCWSTR pPluginCompilerDllPath,")
26cpp_quote(" _In_ REFIID riid,")
27cpp_quote(" _COM_Outptr_opt_ void** ppFactory );")
28cpp_quote("")
29cpp_quote("HRESULT WINAPI D3D12CompilerCreateFactory(")
30cpp_quote(" _In_ LPCWSTR pPluginCompilerDllPath,")
31cpp_quote(" _In_ REFIID riid, // Expected: ID3D12CompilerFactory")
32cpp_quote(" _COM_Outptr_opt_ void** ppFactory );")
33cpp_quote("")
34cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(")
35cpp_quote(" _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,")
36cpp_quote(" _Out_ ID3DBlob** ppBlob,")
37cpp_quote(" _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);")
38cpp_quote("")
39cpp_quote("HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(")
40cpp_quote(" _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,")
41cpp_quote(" _Out_ ID3DBlob** ppBlob,")
42cpp_quote(" _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);")
43cpp_quote("")
44
45[uuid(e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc), object, local, pointer_default(unique)]
46interface ID3D12CompilerFactoryChild
47 : IUnknown
48{
49 HRESULT GetFactory(
50 [annotation("_In_")] REFIID riid, // ID3D12CompilerFactory
51 [annotation("_COM_Outptr_")] void** ppCompilerFactory
52 );
53};
54
55typedef enum D3D12_COMPILER_VALUE_TYPE
56{
57 D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
58 D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
59 D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
60 D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3,
61
62} D3D12_COMPILER_VALUE_TYPE;
63
64typedef enum D3D12_COMPILER_VALUE_TYPE_FLAGS
65{
66 D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0x00000000,
67 D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = (1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE),
68 D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = (1 << D3D12_COMPILER_VALUE_TYPE_METADATA),
69 D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = (1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB),
70 D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = (1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA),
71
72
73} D3D12_COMPILER_VALUE_TYPE_FLAGS;
74cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )")
75
76typedef struct D3D12_COMPILER_DATABASE_PATH
77{
78 D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
79 LPCWSTR pPath;
80} D3D12_COMPILER_DATABASE_PATH;
81
82typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
83{
84 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
85 UINT KeySize;
86} D3D12_COMPILER_CACHE_GROUP_KEY;
87
88typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
89{
90 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
91 UINT KeySize;
92} D3D12_COMPILER_CACHE_VALUE_KEY;
93
94typedef struct D3D12_COMPILER_CACHE_VALUE
95{
96 [annotation("_Field_size_bytes_full_(ValueSize)")] void* pValue;
97 UINT ValueSize;
98} D3D12_COMPILER_CACHE_VALUE;
99
100typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
101{
102 D3D12_COMPILER_VALUE_TYPE Type;
103 D3D12_COMPILER_CACHE_VALUE Value;
104} D3D12_COMPILER_CACHE_TYPED_VALUE;
105
106typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
107{
108 [annotation("_Field_size_bytes_full_(ValueSize)")] const void* pValue;
109 UINT ValueSize;
110} D3D12_COMPILER_CACHE_CONST_VALUE;
111
112typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
113{
114 D3D12_COMPILER_VALUE_TYPE Type;
115 D3D12_COMPILER_CACHE_CONST_VALUE Value;
116} D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
117
118typedef struct D3D12_COMPILER_TARGET
119{
120 UINT AdapterFamilyIndex;
121 UINT64 ABIVersion;
122} D3D12_COMPILER_TARGET;
123
124typedef void* (__stdcall* D3D12CompilerCacheSessionAllocationFunc) (
125 SIZE_T SizeInBytes,
126 [annotation("_Inout_opt_")] void* pContext
127 );
128
129typedef void(__stdcall* D3D12CompilerCacheSessionGroupValueKeysFunc) (
130 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
131 [annotation("_Inout_opt_")] void* pContext
132 );
133
134typedef void(__stdcall* D3D12CompilerCacheSessionGroupValuesFunc) (
135 UINT ValueKeyIndex,
136 [annotation("_In_")] const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE* pTypedValue,
137 [annotation("_Inout_opt_")] void* pContext
138 );
139
140[uuid(5704e5e6-054b-4738-b661-7b0d68d8dde2), object, local, pointer_default(unique)]
141interface ID3D12CompilerCacheSession
142 : ID3D12CompilerFactoryChild
143{
144 HRESULT FindGroup(
145 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
146 [annotation("_Out_opt_")] UINT* pGroupVersion
147 );
148
149 HRESULT FindGroupValueKeys(
150 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
151 [annotation("_In_opt_")] const UINT* pExpectedGroupVersion,
152 [annotation("_In_")] D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
153 [annotation("_Inout_opt_")] void* pContext
154 );
155
156 HRESULT FindGroupValues(
157 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
158 [annotation("_In_opt_")] const UINT* pExpectedGroupVersion,
159 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
160 [annotation("_In_opt_")] D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
161 [annotation("_Inout_opt_")] void* pContext
162 );
163
164 HRESULT FindValue(
165 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
166 [annotation("_Inout_count_(NumTypedValues)")] D3D12_COMPILER_CACHE_TYPED_VALUE* pTypedValues,
167 UINT NumTypedValues,
168 [annotation("_In_opt_")] D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
169 [annotation("_Inout_opt_")] void* pContext
170 );
171
172 const D3D12_APPLICATION_DESC* GetApplicationDesc();
173
174 D3D12_COMPILER_TARGET GetCompilerTarget();
175
176 D3D12_COMPILER_VALUE_TYPE_FLAGS GetValueTypes();
177
178 HRESULT StoreGroupValueKeys(
179 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
180 UINT GroupVersion,
181 [annotation("_In_reads_(NumValueKeys)")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKeys,
182 UINT NumValueKeys
183 );
184
185 HRESULT StoreValue(
186 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
187 [annotation("_In_reads_(NumTypedValues)")] const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE* pTypedValues,
188 UINT NumTypedValues
189 );
190};
191
192[uuid(5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a), object, local, pointer_default(unique)]
193interface ID3D12CompilerStateObject
194 : IUnknown
195{
196 HRESULT GetCompiler(
197 [annotation("_In_")] REFIID riid, // ID3D12Compiler
198 [annotation("_COM_Outptr_")] void** ppCompiler
199 );
200};
201
202typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
203{
204 ID3D12CompilerStateObject* pExistingCollection;
205 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
206 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
207} D3D12_COMPILER_EXISTING_COLLECTION_DESC;
208
209[uuid(8c403c12-993b-4583-80f1-6824138fa68e), object, local, pointer_default(unique)]
210interface ID3D12Compiler
211 : ID3D12CompilerFactoryChild
212{
213 HRESULT CompilePipelineState(
214 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
215 UINT GroupVersion,
216 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc
217 );
218
219 HRESULT CompileStateObject(
220 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
221 UINT GroupVersion,
222 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pDesc,
223 [annotation("_In_")] REFIID riid, // ID3D12CompilerStateObject
224 [annotation("_COM_Outptr_")] void** ppCompilerStateObject
225 );
226
227 HRESULT CompileAddToStateObject(
228 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
229 UINT GroupVersion,
230 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pAddition,
231 [annotation("_In_")] ID3D12CompilerStateObject* pCompilerStateObjectToGrowFrom,
232 [annotation("_In_")] REFIID riid, // ID3D12CompilerStateObject
233 [annotation("_COM_Outptr_")] void** ppNewCompilerStateObject
234 );
235
236 HRESULT GetCacheSession(
237 [annotation("_In_")] REFIID riid, // ID3D12CompilerCacheSession
238 [annotation("_COM_Outptr_")] void** ppCompilerCacheSession
239 );
240};
241
242[uuid(c1ee4b59-3f59-47a5-9b4e-a855c858a878), object, local, pointer_default(unique)]
243interface ID3D12CompilerFactory
244 : IUnknown
245{
246 HRESULT EnumerateAdapterFamilies(
247 UINT AdapterFamilyIndex,
248 [annotation("_Out_")] D3D12_ADAPTER_FAMILY* pAdapterFamily
249 );
250
251 HRESULT EnumerateAdapterFamilyABIVersions(
252 UINT AdapterFamilyIndex,
253 [annotation("_Inout_")] UINT32* pNumABIVersions,
254 [annotation("_Out_writes_opt_(*pNumABIVersions)")] UINT64 * pABIVersions
255 );
256
257 HRESULT EnumerateAdapterFamilyCompilerVersion(
258 UINT AdapterFamilyIndex,
259 [annotation("_Out_")] D3D12_VERSION_NUMBER* pCompilerVersion
260 );
261
262 HRESULT GetApplicationProfileVersion(
263 [annotation("_In_")] const D3D12_COMPILER_TARGET* pTarget,
264 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
265 [annotation("_Out_")] D3D12_VERSION_NUMBER* pApplicationProfileVersion
266 );
267
268 HRESULT CreateCompilerCacheSession(
269 [annotation("_In_reads_(NumPaths)")] const D3D12_COMPILER_DATABASE_PATH* pPaths,
270 UINT NumPaths,
271 [annotation("_In_opt_")] const D3D12_COMPILER_TARGET* pTarget,
272 [annotation("_In_opt_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
273 [annotation("_In_")] REFIID riid, // ID3D12CompilerCacheSession
274 [annotation("_COM_Outptr_")] void** ppCompilerCacheSession
275 );
276
277 HRESULT CreateCompiler(
278 [annotation("_In_")] ID3D12CompilerCacheSession* pCompilerCacheSession,
279 [annotation("_In_")] REFIID riid, // ID3D12Compiler
280 [annotation("_COM_Outptr_")] void** ppCompiler
281 );
282};
283
284cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
285#pragma endregion
286
287cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);" )
288cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);" )
289cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);" )
290cpp_quote( "DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);" )
291cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.h
new file mode 100644
index 0000000..96c812b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.h
@@ -0,0 +1,4280 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12sdklayers_h__
39#define __d3d12sdklayers_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Debug_FWD_DEFINED__
56#define __ID3D12Debug_FWD_DEFINED__
57typedef interface ID3D12Debug ID3D12Debug;
58
59#endif /* __ID3D12Debug_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12Debug1_FWD_DEFINED__
63#define __ID3D12Debug1_FWD_DEFINED__
64typedef interface ID3D12Debug1 ID3D12Debug1;
65
66#endif /* __ID3D12Debug1_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12Debug2_FWD_DEFINED__
70#define __ID3D12Debug2_FWD_DEFINED__
71typedef interface ID3D12Debug2 ID3D12Debug2;
72
73#endif /* __ID3D12Debug2_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Debug3_FWD_DEFINED__
77#define __ID3D12Debug3_FWD_DEFINED__
78typedef interface ID3D12Debug3 ID3D12Debug3;
79
80#endif /* __ID3D12Debug3_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12Debug4_FWD_DEFINED__
84#define __ID3D12Debug4_FWD_DEFINED__
85typedef interface ID3D12Debug4 ID3D12Debug4;
86
87#endif /* __ID3D12Debug4_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Debug5_FWD_DEFINED__
91#define __ID3D12Debug5_FWD_DEFINED__
92typedef interface ID3D12Debug5 ID3D12Debug5;
93
94#endif /* __ID3D12Debug5_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Debug6_FWD_DEFINED__
98#define __ID3D12Debug6_FWD_DEFINED__
99typedef interface ID3D12Debug6 ID3D12Debug6;
100
101#endif /* __ID3D12Debug6_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12DebugDevice1_FWD_DEFINED__
105#define __ID3D12DebugDevice1_FWD_DEFINED__
106typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1;
107
108#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12DebugDevice_FWD_DEFINED__
112#define __ID3D12DebugDevice_FWD_DEFINED__
113typedef interface ID3D12DebugDevice ID3D12DebugDevice;
114
115#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12DebugDevice2_FWD_DEFINED__
119#define __ID3D12DebugDevice2_FWD_DEFINED__
120typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2;
121
122#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__
126#define __ID3D12DebugCommandQueue_FWD_DEFINED__
127typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue;
128
129#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12DebugCommandQueue1_FWD_DEFINED__
133#define __ID3D12DebugCommandQueue1_FWD_DEFINED__
134typedef interface ID3D12DebugCommandQueue1 ID3D12DebugCommandQueue1;
135
136#endif /* __ID3D12DebugCommandQueue1_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__
140#define __ID3D12DebugCommandList1_FWD_DEFINED__
141typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1;
142
143#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12DebugCommandList_FWD_DEFINED__
147#define __ID3D12DebugCommandList_FWD_DEFINED__
148typedef interface ID3D12DebugCommandList ID3D12DebugCommandList;
149
150#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__
154#define __ID3D12DebugCommandList2_FWD_DEFINED__
155typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2;
156
157#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12DebugCommandList3_FWD_DEFINED__
161#define __ID3D12DebugCommandList3_FWD_DEFINED__
162typedef interface ID3D12DebugCommandList3 ID3D12DebugCommandList3;
163
164#endif /* __ID3D12DebugCommandList3_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12SharingContract_FWD_DEFINED__
168#define __ID3D12SharingContract_FWD_DEFINED__
169typedef interface ID3D12SharingContract ID3D12SharingContract;
170
171#endif /* __ID3D12SharingContract_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
175#define __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
176typedef interface ID3D12ManualWriteTrackingResource ID3D12ManualWriteTrackingResource;
177
178#endif /* __ID3D12ManualWriteTrackingResource_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12InfoQueue_FWD_DEFINED__
182#define __ID3D12InfoQueue_FWD_DEFINED__
183typedef interface ID3D12InfoQueue ID3D12InfoQueue;
184
185#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12InfoQueue1_FWD_DEFINED__
189#define __ID3D12InfoQueue1_FWD_DEFINED__
190typedef interface ID3D12InfoQueue1 ID3D12InfoQueue1;
191
192#endif /* __ID3D12InfoQueue1_FWD_DEFINED__ */
193
194
195/* header files for imported files */
196#include "oaidl.h"
197#include "ocidl.h"
198#include "d3d12.h"
199
200#ifdef __cplusplus
201extern "C"{
202#endif
203
204
205/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */
206/* [local] */
207
208#include <winapifamily.h>
209#pragma region App Family
210#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
211
212
213extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec;
214extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec;
215
216#ifndef __ID3D12Debug_INTERFACE_DEFINED__
217#define __ID3D12Debug_INTERFACE_DEFINED__
218
219/* interface ID3D12Debug */
220/* [unique][local][object][uuid] */
221
222
223EXTERN_C const IID IID_ID3D12Debug;
224
225#if defined(__cplusplus) && !defined(CINTERFACE)
226
227 MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0")
228 ID3D12Debug : public IUnknown
229 {
230 public:
231 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
232
233 };
234
235
236#else /* C style interface */
237
238 typedef struct ID3D12DebugVtbl
239 {
240 BEGIN_INTERFACE
241
242 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
243 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
244 ID3D12Debug * This,
245 REFIID riid,
246 _COM_Outptr_ void **ppvObject);
247
248 DECLSPEC_XFGVIRT(IUnknown, AddRef)
249 ULONG ( STDMETHODCALLTYPE *AddRef )(
250 ID3D12Debug * This);
251
252 DECLSPEC_XFGVIRT(IUnknown, Release)
253 ULONG ( STDMETHODCALLTYPE *Release )(
254 ID3D12Debug * This);
255
256 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
257 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
258 ID3D12Debug * This);
259
260 END_INTERFACE
261 } ID3D12DebugVtbl;
262
263 interface ID3D12Debug
264 {
265 CONST_VTBL struct ID3D12DebugVtbl *lpVtbl;
266 };
267
268
269
270#ifdef COBJMACROS
271
272
273#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \
274 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
275
276#define ID3D12Debug_AddRef(This) \
277 ( (This)->lpVtbl -> AddRef(This) )
278
279#define ID3D12Debug_Release(This) \
280 ( (This)->lpVtbl -> Release(This) )
281
282
283#define ID3D12Debug_EnableDebugLayer(This) \
284 ( (This)->lpVtbl -> EnableDebugLayer(This) )
285
286#endif /* COBJMACROS */
287
288
289#endif /* C style interface */
290
291
292
293
294#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */
295
296
297/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */
298/* [local] */
299
300typedef
301enum D3D12_GPU_BASED_VALIDATION_FLAGS
302 {
303 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0,
304 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1
305 } D3D12_GPU_BASED_VALIDATION_FLAGS;
306
307DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)
308
309
310extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec;
311extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec;
312
313#ifndef __ID3D12Debug1_INTERFACE_DEFINED__
314#define __ID3D12Debug1_INTERFACE_DEFINED__
315
316/* interface ID3D12Debug1 */
317/* [unique][local][object][uuid] */
318
319
320EXTERN_C const IID IID_ID3D12Debug1;
321
322#if defined(__cplusplus) && !defined(CINTERFACE)
323
324 MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304")
325 ID3D12Debug1 : public IUnknown
326 {
327 public:
328 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
329
330 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
331 BOOL Enable) = 0;
332
333 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
334 BOOL Enable) = 0;
335
336 };
337
338
339#else /* C style interface */
340
341 typedef struct ID3D12Debug1Vtbl
342 {
343 BEGIN_INTERFACE
344
345 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
346 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
347 ID3D12Debug1 * This,
348 REFIID riid,
349 _COM_Outptr_ void **ppvObject);
350
351 DECLSPEC_XFGVIRT(IUnknown, AddRef)
352 ULONG ( STDMETHODCALLTYPE *AddRef )(
353 ID3D12Debug1 * This);
354
355 DECLSPEC_XFGVIRT(IUnknown, Release)
356 ULONG ( STDMETHODCALLTYPE *Release )(
357 ID3D12Debug1 * This);
358
359 DECLSPEC_XFGVIRT(ID3D12Debug1, EnableDebugLayer)
360 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
361 ID3D12Debug1 * This);
362
363 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableGPUBasedValidation)
364 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
365 ID3D12Debug1 * This,
366 BOOL Enable);
367
368 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableSynchronizedCommandQueueValidation)
369 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
370 ID3D12Debug1 * This,
371 BOOL Enable);
372
373 END_INTERFACE
374 } ID3D12Debug1Vtbl;
375
376 interface ID3D12Debug1
377 {
378 CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl;
379 };
380
381
382
383#ifdef COBJMACROS
384
385
386#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \
387 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
388
389#define ID3D12Debug1_AddRef(This) \
390 ( (This)->lpVtbl -> AddRef(This) )
391
392#define ID3D12Debug1_Release(This) \
393 ( (This)->lpVtbl -> Release(This) )
394
395
396#define ID3D12Debug1_EnableDebugLayer(This) \
397 ( (This)->lpVtbl -> EnableDebugLayer(This) )
398
399#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \
400 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
401
402#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
403 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
404
405#endif /* COBJMACROS */
406
407
408#endif /* C style interface */
409
410
411
412
413#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */
414
415
416#ifndef __ID3D12Debug2_INTERFACE_DEFINED__
417#define __ID3D12Debug2_INTERFACE_DEFINED__
418
419/* interface ID3D12Debug2 */
420/* [unique][local][object][uuid] */
421
422
423EXTERN_C const IID IID_ID3D12Debug2;
424
425#if defined(__cplusplus) && !defined(CINTERFACE)
426
427 MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374")
428 ID3D12Debug2 : public IUnknown
429 {
430 public:
431 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
432 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
433
434 };
435
436
437#else /* C style interface */
438
439 typedef struct ID3D12Debug2Vtbl
440 {
441 BEGIN_INTERFACE
442
443 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
444 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
445 ID3D12Debug2 * This,
446 REFIID riid,
447 _COM_Outptr_ void **ppvObject);
448
449 DECLSPEC_XFGVIRT(IUnknown, AddRef)
450 ULONG ( STDMETHODCALLTYPE *AddRef )(
451 ID3D12Debug2 * This);
452
453 DECLSPEC_XFGVIRT(IUnknown, Release)
454 ULONG ( STDMETHODCALLTYPE *Release )(
455 ID3D12Debug2 * This);
456
457 DECLSPEC_XFGVIRT(ID3D12Debug2, SetGPUBasedValidationFlags)
458 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
459 ID3D12Debug2 * This,
460 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
461
462 END_INTERFACE
463 } ID3D12Debug2Vtbl;
464
465 interface ID3D12Debug2
466 {
467 CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl;
468 };
469
470
471
472#ifdef COBJMACROS
473
474
475#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \
476 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
477
478#define ID3D12Debug2_AddRef(This) \
479 ( (This)->lpVtbl -> AddRef(This) )
480
481#define ID3D12Debug2_Release(This) \
482 ( (This)->lpVtbl -> Release(This) )
483
484
485#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \
486 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
487
488#endif /* COBJMACROS */
489
490
491#endif /* C style interface */
492
493
494
495
496#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */
497
498
499#ifndef __ID3D12Debug3_INTERFACE_DEFINED__
500#define __ID3D12Debug3_INTERFACE_DEFINED__
501
502/* interface ID3D12Debug3 */
503/* [unique][local][object][uuid] */
504
505
506EXTERN_C const IID IID_ID3D12Debug3;
507
508#if defined(__cplusplus) && !defined(CINTERFACE)
509
510 MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1")
511 ID3D12Debug3 : public ID3D12Debug
512 {
513 public:
514 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
515 BOOL Enable) = 0;
516
517 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
518 BOOL Enable) = 0;
519
520 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
521 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
522
523 };
524
525
526#else /* C style interface */
527
528 typedef struct ID3D12Debug3Vtbl
529 {
530 BEGIN_INTERFACE
531
532 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
533 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
534 ID3D12Debug3 * This,
535 REFIID riid,
536 _COM_Outptr_ void **ppvObject);
537
538 DECLSPEC_XFGVIRT(IUnknown, AddRef)
539 ULONG ( STDMETHODCALLTYPE *AddRef )(
540 ID3D12Debug3 * This);
541
542 DECLSPEC_XFGVIRT(IUnknown, Release)
543 ULONG ( STDMETHODCALLTYPE *Release )(
544 ID3D12Debug3 * This);
545
546 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
547 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
548 ID3D12Debug3 * This);
549
550 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
551 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
552 ID3D12Debug3 * This,
553 BOOL Enable);
554
555 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
556 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
557 ID3D12Debug3 * This,
558 BOOL Enable);
559
560 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
561 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
562 ID3D12Debug3 * This,
563 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
564
565 END_INTERFACE
566 } ID3D12Debug3Vtbl;
567
568 interface ID3D12Debug3
569 {
570 CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl;
571 };
572
573
574
575#ifdef COBJMACROS
576
577
578#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \
579 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
580
581#define ID3D12Debug3_AddRef(This) \
582 ( (This)->lpVtbl -> AddRef(This) )
583
584#define ID3D12Debug3_Release(This) \
585 ( (This)->lpVtbl -> Release(This) )
586
587
588#define ID3D12Debug3_EnableDebugLayer(This) \
589 ( (This)->lpVtbl -> EnableDebugLayer(This) )
590
591
592#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \
593 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
594
595#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
596 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
597
598#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \
599 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
600
601#endif /* COBJMACROS */
602
603
604#endif /* C style interface */
605
606
607
608
609#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */
610
611
612#ifndef __ID3D12Debug4_INTERFACE_DEFINED__
613#define __ID3D12Debug4_INTERFACE_DEFINED__
614
615/* interface ID3D12Debug4 */
616/* [unique][local][object][uuid] */
617
618
619EXTERN_C const IID IID_ID3D12Debug4;
620
621#if defined(__cplusplus) && !defined(CINTERFACE)
622
623 MIDL_INTERFACE("014b816e-9ec5-4a2f-a845-ffbe441ce13a")
624 ID3D12Debug4 : public ID3D12Debug3
625 {
626 public:
627 virtual void STDMETHODCALLTYPE DisableDebugLayer( void) = 0;
628
629 };
630
631
632#else /* C style interface */
633
634 typedef struct ID3D12Debug4Vtbl
635 {
636 BEGIN_INTERFACE
637
638 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
639 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
640 ID3D12Debug4 * This,
641 REFIID riid,
642 _COM_Outptr_ void **ppvObject);
643
644 DECLSPEC_XFGVIRT(IUnknown, AddRef)
645 ULONG ( STDMETHODCALLTYPE *AddRef )(
646 ID3D12Debug4 * This);
647
648 DECLSPEC_XFGVIRT(IUnknown, Release)
649 ULONG ( STDMETHODCALLTYPE *Release )(
650 ID3D12Debug4 * This);
651
652 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
653 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
654 ID3D12Debug4 * This);
655
656 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
657 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
658 ID3D12Debug4 * This,
659 BOOL Enable);
660
661 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
662 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
663 ID3D12Debug4 * This,
664 BOOL Enable);
665
666 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
667 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
668 ID3D12Debug4 * This,
669 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
670
671 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
672 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
673 ID3D12Debug4 * This);
674
675 END_INTERFACE
676 } ID3D12Debug4Vtbl;
677
678 interface ID3D12Debug4
679 {
680 CONST_VTBL struct ID3D12Debug4Vtbl *lpVtbl;
681 };
682
683
684
685#ifdef COBJMACROS
686
687
688#define ID3D12Debug4_QueryInterface(This,riid,ppvObject) \
689 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
690
691#define ID3D12Debug4_AddRef(This) \
692 ( (This)->lpVtbl -> AddRef(This) )
693
694#define ID3D12Debug4_Release(This) \
695 ( (This)->lpVtbl -> Release(This) )
696
697
698#define ID3D12Debug4_EnableDebugLayer(This) \
699 ( (This)->lpVtbl -> EnableDebugLayer(This) )
700
701
702#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable) \
703 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
704
705#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
706 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
707
708#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags) \
709 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
710
711
712#define ID3D12Debug4_DisableDebugLayer(This) \
713 ( (This)->lpVtbl -> DisableDebugLayer(This) )
714
715#endif /* COBJMACROS */
716
717
718#endif /* C style interface */
719
720
721
722
723#endif /* __ID3D12Debug4_INTERFACE_DEFINED__ */
724
725
726#ifndef __ID3D12Debug5_INTERFACE_DEFINED__
727#define __ID3D12Debug5_INTERFACE_DEFINED__
728
729/* interface ID3D12Debug5 */
730/* [unique][local][object][uuid] */
731
732
733EXTERN_C const IID IID_ID3D12Debug5;
734
735#if defined(__cplusplus) && !defined(CINTERFACE)
736
737 MIDL_INTERFACE("548d6b12-09fa-40e0-9069-5dcd589a52c9")
738 ID3D12Debug5 : public ID3D12Debug4
739 {
740 public:
741 virtual void STDMETHODCALLTYPE SetEnableAutoName(
742 BOOL Enable) = 0;
743
744 };
745
746
747#else /* C style interface */
748
749 typedef struct ID3D12Debug5Vtbl
750 {
751 BEGIN_INTERFACE
752
753 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
754 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
755 ID3D12Debug5 * This,
756 REFIID riid,
757 _COM_Outptr_ void **ppvObject);
758
759 DECLSPEC_XFGVIRT(IUnknown, AddRef)
760 ULONG ( STDMETHODCALLTYPE *AddRef )(
761 ID3D12Debug5 * This);
762
763 DECLSPEC_XFGVIRT(IUnknown, Release)
764 ULONG ( STDMETHODCALLTYPE *Release )(
765 ID3D12Debug5 * This);
766
767 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
768 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
769 ID3D12Debug5 * This);
770
771 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
772 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
773 ID3D12Debug5 * This,
774 BOOL Enable);
775
776 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
777 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
778 ID3D12Debug5 * This,
779 BOOL Enable);
780
781 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
782 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
783 ID3D12Debug5 * This,
784 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
785
786 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
787 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
788 ID3D12Debug5 * This);
789
790 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
791 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
792 ID3D12Debug5 * This,
793 BOOL Enable);
794
795 END_INTERFACE
796 } ID3D12Debug5Vtbl;
797
798 interface ID3D12Debug5
799 {
800 CONST_VTBL struct ID3D12Debug5Vtbl *lpVtbl;
801 };
802
803
804
805#ifdef COBJMACROS
806
807
808#define ID3D12Debug5_QueryInterface(This,riid,ppvObject) \
809 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
810
811#define ID3D12Debug5_AddRef(This) \
812 ( (This)->lpVtbl -> AddRef(This) )
813
814#define ID3D12Debug5_Release(This) \
815 ( (This)->lpVtbl -> Release(This) )
816
817
818#define ID3D12Debug5_EnableDebugLayer(This) \
819 ( (This)->lpVtbl -> EnableDebugLayer(This) )
820
821
822#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable) \
823 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
824
825#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
826 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
827
828#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags) \
829 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
830
831
832#define ID3D12Debug5_DisableDebugLayer(This) \
833 ( (This)->lpVtbl -> DisableDebugLayer(This) )
834
835
836#define ID3D12Debug5_SetEnableAutoName(This,Enable) \
837 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
838
839#endif /* COBJMACROS */
840
841
842#endif /* C style interface */
843
844
845
846
847#endif /* __ID3D12Debug5_INTERFACE_DEFINED__ */
848
849
850#ifndef __ID3D12Debug6_INTERFACE_DEFINED__
851#define __ID3D12Debug6_INTERFACE_DEFINED__
852
853/* interface ID3D12Debug6 */
854/* [unique][local][object][uuid] */
855
856
857EXTERN_C const IID IID_ID3D12Debug6;
858
859#if defined(__cplusplus) && !defined(CINTERFACE)
860
861 MIDL_INTERFACE("82a816d6-5d01-4157-97d0-4975463fd1ed")
862 ID3D12Debug6 : public ID3D12Debug5
863 {
864 public:
865 virtual void STDMETHODCALLTYPE SetForceLegacyBarrierValidation(
866 BOOL Enable) = 0;
867
868 };
869
870
871#else /* C style interface */
872
873 typedef struct ID3D12Debug6Vtbl
874 {
875 BEGIN_INTERFACE
876
877 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
878 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
879 ID3D12Debug6 * This,
880 REFIID riid,
881 _COM_Outptr_ void **ppvObject);
882
883 DECLSPEC_XFGVIRT(IUnknown, AddRef)
884 ULONG ( STDMETHODCALLTYPE *AddRef )(
885 ID3D12Debug6 * This);
886
887 DECLSPEC_XFGVIRT(IUnknown, Release)
888 ULONG ( STDMETHODCALLTYPE *Release )(
889 ID3D12Debug6 * This);
890
891 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
892 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
893 ID3D12Debug6 * This);
894
895 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
896 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
897 ID3D12Debug6 * This,
898 BOOL Enable);
899
900 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
901 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
902 ID3D12Debug6 * This,
903 BOOL Enable);
904
905 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
906 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
907 ID3D12Debug6 * This,
908 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
909
910 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
911 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
912 ID3D12Debug6 * This);
913
914 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
915 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
916 ID3D12Debug6 * This,
917 BOOL Enable);
918
919 DECLSPEC_XFGVIRT(ID3D12Debug6, SetForceLegacyBarrierValidation)
920 void ( STDMETHODCALLTYPE *SetForceLegacyBarrierValidation )(
921 ID3D12Debug6 * This,
922 BOOL Enable);
923
924 END_INTERFACE
925 } ID3D12Debug6Vtbl;
926
927 interface ID3D12Debug6
928 {
929 CONST_VTBL struct ID3D12Debug6Vtbl *lpVtbl;
930 };
931
932
933
934#ifdef COBJMACROS
935
936
937#define ID3D12Debug6_QueryInterface(This,riid,ppvObject) \
938 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
939
940#define ID3D12Debug6_AddRef(This) \
941 ( (This)->lpVtbl -> AddRef(This) )
942
943#define ID3D12Debug6_Release(This) \
944 ( (This)->lpVtbl -> Release(This) )
945
946
947#define ID3D12Debug6_EnableDebugLayer(This) \
948 ( (This)->lpVtbl -> EnableDebugLayer(This) )
949
950
951#define ID3D12Debug6_SetEnableGPUBasedValidation(This,Enable) \
952 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
953
954#define ID3D12Debug6_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
955 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
956
957#define ID3D12Debug6_SetGPUBasedValidationFlags(This,Flags) \
958 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
959
960
961#define ID3D12Debug6_DisableDebugLayer(This) \
962 ( (This)->lpVtbl -> DisableDebugLayer(This) )
963
964
965#define ID3D12Debug6_SetEnableAutoName(This,Enable) \
966 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
967
968
969#define ID3D12Debug6_SetForceLegacyBarrierValidation(This,Enable) \
970 ( (This)->lpVtbl -> SetForceLegacyBarrierValidation(This,Enable) )
971
972#endif /* COBJMACROS */
973
974
975#endif /* C style interface */
976
977
978
979
980#endif /* __ID3D12Debug6_INTERFACE_DEFINED__ */
981
982
983/* interface __MIDL_itf_d3d12sdklayers_0000_0007 */
984/* [local] */
985
986DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);
987typedef
988enum D3D12_RLDO_FLAGS
989 {
990 D3D12_RLDO_NONE = 0,
991 D3D12_RLDO_SUMMARY = 0x1,
992 D3D12_RLDO_DETAIL = 0x2,
993 D3D12_RLDO_IGNORE_INTERNAL = 0x4
994 } D3D12_RLDO_FLAGS;
995
996DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)
997typedef
998enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
999 {
1000 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
1001 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
1002 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) ,
1003 D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR + 1 )
1004 } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
1005
1006typedef
1007enum D3D12_DEBUG_FEATURE
1008 {
1009 D3D12_DEBUG_FEATURE_NONE = 0,
1010 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1,
1011 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2,
1012 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4,
1013 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8
1014 } D3D12_DEBUG_FEATURE;
1015
1016DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)
1017typedef
1018enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
1019 {
1020 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0,
1021 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) ,
1022 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) ,
1023 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) ,
1024 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 )
1025 } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
1026
1027typedef
1028enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
1029 {
1030 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0,
1031 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1,
1032 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2,
1033 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4,
1034 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7
1035 } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
1036
1037DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)
1038typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
1039 {
1040 UINT MaxMessagesPerCommandList;
1041 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
1042 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
1043 } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
1044
1045typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
1046 {
1047 FLOAT SlowdownFactor;
1048 } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
1049
1050typedef
1051enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
1052 {
1053 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED = 0,
1054 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED + 1 ) ,
1055 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED + 1 ) ,
1056 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT = D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
1057 } D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
1058
1059
1060
1061extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_c_ifspec;
1062extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_s_ifspec;
1063
1064#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__
1065#define __ID3D12DebugDevice1_INTERFACE_DEFINED__
1066
1067/* interface ID3D12DebugDevice1 */
1068/* [unique][local][object][uuid] */
1069
1070
1071EXTERN_C const IID IID_ID3D12DebugDevice1;
1072
1073#if defined(__cplusplus) && !defined(CINTERFACE)
1074
1075 MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88")
1076 ID3D12DebugDevice1 : public IUnknown
1077 {
1078 public:
1079 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1080 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1081 _In_reads_bytes_(DataSize) const void *pData,
1082 UINT DataSize) = 0;
1083
1084 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1085 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1086 _Out_writes_bytes_(DataSize) void *pData,
1087 UINT DataSize) = 0;
1088
1089 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1090 D3D12_RLDO_FLAGS Flags) = 0;
1091
1092 };
1093
1094
1095#else /* C style interface */
1096
1097 typedef struct ID3D12DebugDevice1Vtbl
1098 {
1099 BEGIN_INTERFACE
1100
1101 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1102 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1103 ID3D12DebugDevice1 * This,
1104 REFIID riid,
1105 _COM_Outptr_ void **ppvObject);
1106
1107 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1108 ULONG ( STDMETHODCALLTYPE *AddRef )(
1109 ID3D12DebugDevice1 * This);
1110
1111 DECLSPEC_XFGVIRT(IUnknown, Release)
1112 ULONG ( STDMETHODCALLTYPE *Release )(
1113 ID3D12DebugDevice1 * This);
1114
1115 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, SetDebugParameter)
1116 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1117 ID3D12DebugDevice1 * This,
1118 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1119 _In_reads_bytes_(DataSize) const void *pData,
1120 UINT DataSize);
1121
1122 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, GetDebugParameter)
1123 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1124 ID3D12DebugDevice1 * This,
1125 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1126 _Out_writes_bytes_(DataSize) void *pData,
1127 UINT DataSize);
1128
1129 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, ReportLiveDeviceObjects)
1130 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1131 ID3D12DebugDevice1 * This,
1132 D3D12_RLDO_FLAGS Flags);
1133
1134 END_INTERFACE
1135 } ID3D12DebugDevice1Vtbl;
1136
1137 interface ID3D12DebugDevice1
1138 {
1139 CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl;
1140 };
1141
1142
1143
1144#ifdef COBJMACROS
1145
1146
1147#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \
1148 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1149
1150#define ID3D12DebugDevice1_AddRef(This) \
1151 ( (This)->lpVtbl -> AddRef(This) )
1152
1153#define ID3D12DebugDevice1_Release(This) \
1154 ( (This)->lpVtbl -> Release(This) )
1155
1156
1157#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \
1158 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1159
1160#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \
1161 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1162
1163#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \
1164 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1165
1166#endif /* COBJMACROS */
1167
1168
1169#endif /* C style interface */
1170
1171
1172
1173
1174#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */
1175
1176
1177#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__
1178#define __ID3D12DebugDevice_INTERFACE_DEFINED__
1179
1180/* interface ID3D12DebugDevice */
1181/* [unique][local][object][uuid] */
1182
1183
1184EXTERN_C const IID IID_ID3D12DebugDevice;
1185
1186#if defined(__cplusplus) && !defined(CINTERFACE)
1187
1188 MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e")
1189 ID3D12DebugDevice : public IUnknown
1190 {
1191 public:
1192 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1193 D3D12_DEBUG_FEATURE Mask) = 0;
1194
1195 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1196
1197 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1198 D3D12_RLDO_FLAGS Flags) = 0;
1199
1200 };
1201
1202
1203#else /* C style interface */
1204
1205 typedef struct ID3D12DebugDeviceVtbl
1206 {
1207 BEGIN_INTERFACE
1208
1209 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1210 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1211 ID3D12DebugDevice * This,
1212 REFIID riid,
1213 _COM_Outptr_ void **ppvObject);
1214
1215 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1216 ULONG ( STDMETHODCALLTYPE *AddRef )(
1217 ID3D12DebugDevice * This);
1218
1219 DECLSPEC_XFGVIRT(IUnknown, Release)
1220 ULONG ( STDMETHODCALLTYPE *Release )(
1221 ID3D12DebugDevice * This);
1222
1223 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1224 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1225 ID3D12DebugDevice * This,
1226 D3D12_DEBUG_FEATURE Mask);
1227
1228 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1229 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1230 ID3D12DebugDevice * This);
1231
1232 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1233 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1234 ID3D12DebugDevice * This,
1235 D3D12_RLDO_FLAGS Flags);
1236
1237 END_INTERFACE
1238 } ID3D12DebugDeviceVtbl;
1239
1240 interface ID3D12DebugDevice
1241 {
1242 CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl;
1243 };
1244
1245
1246
1247#ifdef COBJMACROS
1248
1249
1250#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \
1251 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1252
1253#define ID3D12DebugDevice_AddRef(This) \
1254 ( (This)->lpVtbl -> AddRef(This) )
1255
1256#define ID3D12DebugDevice_Release(This) \
1257 ( (This)->lpVtbl -> Release(This) )
1258
1259
1260#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \
1261 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1262
1263#define ID3D12DebugDevice_GetFeatureMask(This) \
1264 ( (This)->lpVtbl -> GetFeatureMask(This) )
1265
1266#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \
1267 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1268
1269#endif /* COBJMACROS */
1270
1271
1272#endif /* C style interface */
1273
1274
1275
1276
1277#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */
1278
1279
1280#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__
1281#define __ID3D12DebugDevice2_INTERFACE_DEFINED__
1282
1283/* interface ID3D12DebugDevice2 */
1284/* [unique][local][object][uuid] */
1285
1286
1287EXTERN_C const IID IID_ID3D12DebugDevice2;
1288
1289#if defined(__cplusplus) && !defined(CINTERFACE)
1290
1291 MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd")
1292 ID3D12DebugDevice2 : public ID3D12DebugDevice
1293 {
1294 public:
1295 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1296 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1297 _In_reads_bytes_(DataSize) const void *pData,
1298 UINT DataSize) = 0;
1299
1300 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1301 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1302 _Out_writes_bytes_(DataSize) void *pData,
1303 UINT DataSize) = 0;
1304
1305 };
1306
1307
1308#else /* C style interface */
1309
1310 typedef struct ID3D12DebugDevice2Vtbl
1311 {
1312 BEGIN_INTERFACE
1313
1314 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1315 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1316 ID3D12DebugDevice2 * This,
1317 REFIID riid,
1318 _COM_Outptr_ void **ppvObject);
1319
1320 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1321 ULONG ( STDMETHODCALLTYPE *AddRef )(
1322 ID3D12DebugDevice2 * This);
1323
1324 DECLSPEC_XFGVIRT(IUnknown, Release)
1325 ULONG ( STDMETHODCALLTYPE *Release )(
1326 ID3D12DebugDevice2 * This);
1327
1328 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1329 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1330 ID3D12DebugDevice2 * This,
1331 D3D12_DEBUG_FEATURE Mask);
1332
1333 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1334 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1335 ID3D12DebugDevice2 * This);
1336
1337 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1338 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1339 ID3D12DebugDevice2 * This,
1340 D3D12_RLDO_FLAGS Flags);
1341
1342 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, SetDebugParameter)
1343 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1344 ID3D12DebugDevice2 * This,
1345 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1346 _In_reads_bytes_(DataSize) const void *pData,
1347 UINT DataSize);
1348
1349 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, GetDebugParameter)
1350 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1351 ID3D12DebugDevice2 * This,
1352 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1353 _Out_writes_bytes_(DataSize) void *pData,
1354 UINT DataSize);
1355
1356 END_INTERFACE
1357 } ID3D12DebugDevice2Vtbl;
1358
1359 interface ID3D12DebugDevice2
1360 {
1361 CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl;
1362 };
1363
1364
1365
1366#ifdef COBJMACROS
1367
1368
1369#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \
1370 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1371
1372#define ID3D12DebugDevice2_AddRef(This) \
1373 ( (This)->lpVtbl -> AddRef(This) )
1374
1375#define ID3D12DebugDevice2_Release(This) \
1376 ( (This)->lpVtbl -> Release(This) )
1377
1378
1379#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \
1380 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1381
1382#define ID3D12DebugDevice2_GetFeatureMask(This) \
1383 ( (This)->lpVtbl -> GetFeatureMask(This) )
1384
1385#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \
1386 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1387
1388
1389#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \
1390 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1391
1392#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \
1393 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1394
1395#endif /* COBJMACROS */
1396
1397
1398#endif /* C style interface */
1399
1400
1401
1402
1403#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */
1404
1405
1406/* interface __MIDL_itf_d3d12sdklayers_0000_0010 */
1407/* [local] */
1408
1409DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);
1410
1411
1412extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_c_ifspec;
1413extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_s_ifspec;
1414
1415#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1416#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1417
1418/* interface ID3D12DebugCommandQueue */
1419/* [unique][local][object][uuid] */
1420
1421
1422EXTERN_C const IID IID_ID3D12DebugCommandQueue;
1423
1424#if defined(__cplusplus) && !defined(CINTERFACE)
1425
1426 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a")
1427 ID3D12DebugCommandQueue : public IUnknown
1428 {
1429 public:
1430 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1431 _In_ ID3D12Resource *pResource,
1432 UINT Subresource,
1433 UINT State) = 0;
1434
1435 };
1436
1437
1438#else /* C style interface */
1439
1440 typedef struct ID3D12DebugCommandQueueVtbl
1441 {
1442 BEGIN_INTERFACE
1443
1444 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1445 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1446 ID3D12DebugCommandQueue * This,
1447 REFIID riid,
1448 _COM_Outptr_ void **ppvObject);
1449
1450 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1451 ULONG ( STDMETHODCALLTYPE *AddRef )(
1452 ID3D12DebugCommandQueue * This);
1453
1454 DECLSPEC_XFGVIRT(IUnknown, Release)
1455 ULONG ( STDMETHODCALLTYPE *Release )(
1456 ID3D12DebugCommandQueue * This);
1457
1458 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1459 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1460 ID3D12DebugCommandQueue * This,
1461 _In_ ID3D12Resource *pResource,
1462 UINT Subresource,
1463 UINT State);
1464
1465 END_INTERFACE
1466 } ID3D12DebugCommandQueueVtbl;
1467
1468 interface ID3D12DebugCommandQueue
1469 {
1470 CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl;
1471 };
1472
1473
1474
1475#ifdef COBJMACROS
1476
1477
1478#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \
1479 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1480
1481#define ID3D12DebugCommandQueue_AddRef(This) \
1482 ( (This)->lpVtbl -> AddRef(This) )
1483
1484#define ID3D12DebugCommandQueue_Release(This) \
1485 ( (This)->lpVtbl -> Release(This) )
1486
1487
1488#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \
1489 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1490
1491#endif /* COBJMACROS */
1492
1493
1494#endif /* C style interface */
1495
1496
1497
1498
1499#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */
1500
1501
1502#ifndef __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
1503#define __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
1504
1505/* interface ID3D12DebugCommandQueue1 */
1506/* [unique][local][object][uuid] */
1507
1508
1509EXTERN_C const IID IID_ID3D12DebugCommandQueue1;
1510
1511#if defined(__cplusplus) && !defined(CINTERFACE)
1512
1513 MIDL_INTERFACE("16be35a2-bfd6-49f2-bcae-eaae4aff862d")
1514 ID3D12DebugCommandQueue1 : public ID3D12DebugCommandQueue
1515 {
1516 public:
1517 virtual void STDMETHODCALLTYPE AssertResourceAccess(
1518 _In_ ID3D12Resource *pResource,
1519 UINT Subresource,
1520 D3D12_BARRIER_ACCESS Access) = 0;
1521
1522 virtual void STDMETHODCALLTYPE AssertTextureLayout(
1523 _In_ ID3D12Resource *pResource,
1524 UINT Subresource,
1525 D3D12_BARRIER_LAYOUT Layout) = 0;
1526
1527 };
1528
1529
1530#else /* C style interface */
1531
1532 typedef struct ID3D12DebugCommandQueue1Vtbl
1533 {
1534 BEGIN_INTERFACE
1535
1536 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1537 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1538 ID3D12DebugCommandQueue1 * This,
1539 REFIID riid,
1540 _COM_Outptr_ void **ppvObject);
1541
1542 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1543 ULONG ( STDMETHODCALLTYPE *AddRef )(
1544 ID3D12DebugCommandQueue1 * This);
1545
1546 DECLSPEC_XFGVIRT(IUnknown, Release)
1547 ULONG ( STDMETHODCALLTYPE *Release )(
1548 ID3D12DebugCommandQueue1 * This);
1549
1550 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1551 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1552 ID3D12DebugCommandQueue1 * This,
1553 _In_ ID3D12Resource *pResource,
1554 UINT Subresource,
1555 UINT State);
1556
1557 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertResourceAccess)
1558 void ( STDMETHODCALLTYPE *AssertResourceAccess )(
1559 ID3D12DebugCommandQueue1 * This,
1560 _In_ ID3D12Resource *pResource,
1561 UINT Subresource,
1562 D3D12_BARRIER_ACCESS Access);
1563
1564 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertTextureLayout)
1565 void ( STDMETHODCALLTYPE *AssertTextureLayout )(
1566 ID3D12DebugCommandQueue1 * This,
1567 _In_ ID3D12Resource *pResource,
1568 UINT Subresource,
1569 D3D12_BARRIER_LAYOUT Layout);
1570
1571 END_INTERFACE
1572 } ID3D12DebugCommandQueue1Vtbl;
1573
1574 interface ID3D12DebugCommandQueue1
1575 {
1576 CONST_VTBL struct ID3D12DebugCommandQueue1Vtbl *lpVtbl;
1577 };
1578
1579
1580
1581#ifdef COBJMACROS
1582
1583
1584#define ID3D12DebugCommandQueue1_QueryInterface(This,riid,ppvObject) \
1585 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1586
1587#define ID3D12DebugCommandQueue1_AddRef(This) \
1588 ( (This)->lpVtbl -> AddRef(This) )
1589
1590#define ID3D12DebugCommandQueue1_Release(This) \
1591 ( (This)->lpVtbl -> Release(This) )
1592
1593
1594#define ID3D12DebugCommandQueue1_AssertResourceState(This,pResource,Subresource,State) \
1595 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1596
1597
1598#define ID3D12DebugCommandQueue1_AssertResourceAccess(This,pResource,Subresource,Access) \
1599 ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
1600
1601#define ID3D12DebugCommandQueue1_AssertTextureLayout(This,pResource,Subresource,Layout) \
1602 ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
1603
1604#endif /* COBJMACROS */
1605
1606
1607#endif /* C style interface */
1608
1609
1610
1611
1612#endif /* __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__ */
1613
1614
1615/* interface __MIDL_itf_d3d12sdklayers_0000_0012 */
1616/* [local] */
1617
1618typedef
1619enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
1620 {
1621 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0
1622 } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
1623
1624typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
1625 {
1626 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
1627 } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
1628
1629
1630
1631extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_c_ifspec;
1632extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_s_ifspec;
1633
1634#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1635#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1636
1637/* interface ID3D12DebugCommandList1 */
1638/* [unique][local][object][uuid] */
1639
1640
1641EXTERN_C const IID IID_ID3D12DebugCommandList1;
1642
1643#if defined(__cplusplus) && !defined(CINTERFACE)
1644
1645 MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37")
1646 ID3D12DebugCommandList1 : public IUnknown
1647 {
1648 public:
1649 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1650 _In_ ID3D12Resource *pResource,
1651 UINT Subresource,
1652 UINT State) = 0;
1653
1654 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1655 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1656 _In_reads_bytes_(DataSize) const void *pData,
1657 UINT DataSize) = 0;
1658
1659 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1660 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1661 _Out_writes_bytes_(DataSize) void *pData,
1662 UINT DataSize) = 0;
1663
1664 };
1665
1666
1667#else /* C style interface */
1668
1669 typedef struct ID3D12DebugCommandList1Vtbl
1670 {
1671 BEGIN_INTERFACE
1672
1673 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1674 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1675 ID3D12DebugCommandList1 * This,
1676 REFIID riid,
1677 _COM_Outptr_ void **ppvObject);
1678
1679 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1680 ULONG ( STDMETHODCALLTYPE *AddRef )(
1681 ID3D12DebugCommandList1 * This);
1682
1683 DECLSPEC_XFGVIRT(IUnknown, Release)
1684 ULONG ( STDMETHODCALLTYPE *Release )(
1685 ID3D12DebugCommandList1 * This);
1686
1687 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, AssertResourceState)
1688 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1689 ID3D12DebugCommandList1 * This,
1690 _In_ ID3D12Resource *pResource,
1691 UINT Subresource,
1692 UINT State);
1693
1694 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, SetDebugParameter)
1695 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1696 ID3D12DebugCommandList1 * This,
1697 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1698 _In_reads_bytes_(DataSize) const void *pData,
1699 UINT DataSize);
1700
1701 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, GetDebugParameter)
1702 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1703 ID3D12DebugCommandList1 * This,
1704 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1705 _Out_writes_bytes_(DataSize) void *pData,
1706 UINT DataSize);
1707
1708 END_INTERFACE
1709 } ID3D12DebugCommandList1Vtbl;
1710
1711 interface ID3D12DebugCommandList1
1712 {
1713 CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl;
1714 };
1715
1716
1717
1718#ifdef COBJMACROS
1719
1720
1721#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \
1722 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1723
1724#define ID3D12DebugCommandList1_AddRef(This) \
1725 ( (This)->lpVtbl -> AddRef(This) )
1726
1727#define ID3D12DebugCommandList1_Release(This) \
1728 ( (This)->lpVtbl -> Release(This) )
1729
1730
1731#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \
1732 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1733
1734#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \
1735 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1736
1737#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \
1738 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1739
1740#endif /* COBJMACROS */
1741
1742
1743#endif /* C style interface */
1744
1745
1746
1747
1748#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */
1749
1750
1751#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__
1752#define __ID3D12DebugCommandList_INTERFACE_DEFINED__
1753
1754/* interface ID3D12DebugCommandList */
1755/* [unique][local][object][uuid] */
1756
1757
1758EXTERN_C const IID IID_ID3D12DebugCommandList;
1759
1760#if defined(__cplusplus) && !defined(CINTERFACE)
1761
1762 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f")
1763 ID3D12DebugCommandList : public IUnknown
1764 {
1765 public:
1766 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1767 _In_ ID3D12Resource *pResource,
1768 UINT Subresource,
1769 UINT State) = 0;
1770
1771 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1772 D3D12_DEBUG_FEATURE Mask) = 0;
1773
1774 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1775
1776 };
1777
1778
1779#else /* C style interface */
1780
1781 typedef struct ID3D12DebugCommandListVtbl
1782 {
1783 BEGIN_INTERFACE
1784
1785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1787 ID3D12DebugCommandList * This,
1788 REFIID riid,
1789 _COM_Outptr_ void **ppvObject);
1790
1791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1792 ULONG ( STDMETHODCALLTYPE *AddRef )(
1793 ID3D12DebugCommandList * This);
1794
1795 DECLSPEC_XFGVIRT(IUnknown, Release)
1796 ULONG ( STDMETHODCALLTYPE *Release )(
1797 ID3D12DebugCommandList * This);
1798
1799 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1800 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1801 ID3D12DebugCommandList * This,
1802 _In_ ID3D12Resource *pResource,
1803 UINT Subresource,
1804 UINT State);
1805
1806 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1807 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1808 ID3D12DebugCommandList * This,
1809 D3D12_DEBUG_FEATURE Mask);
1810
1811 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1812 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1813 ID3D12DebugCommandList * This);
1814
1815 END_INTERFACE
1816 } ID3D12DebugCommandListVtbl;
1817
1818 interface ID3D12DebugCommandList
1819 {
1820 CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl;
1821 };
1822
1823
1824
1825#ifdef COBJMACROS
1826
1827
1828#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \
1829 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1830
1831#define ID3D12DebugCommandList_AddRef(This) \
1832 ( (This)->lpVtbl -> AddRef(This) )
1833
1834#define ID3D12DebugCommandList_Release(This) \
1835 ( (This)->lpVtbl -> Release(This) )
1836
1837
1838#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \
1839 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1840
1841#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \
1842 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1843
1844#define ID3D12DebugCommandList_GetFeatureMask(This) \
1845 ( (This)->lpVtbl -> GetFeatureMask(This) )
1846
1847#endif /* COBJMACROS */
1848
1849
1850#endif /* C style interface */
1851
1852
1853
1854
1855#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */
1856
1857
1858#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1859#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1860
1861/* interface ID3D12DebugCommandList2 */
1862/* [unique][local][object][uuid] */
1863
1864
1865EXTERN_C const IID IID_ID3D12DebugCommandList2;
1866
1867#if defined(__cplusplus) && !defined(CINTERFACE)
1868
1869 MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e")
1870 ID3D12DebugCommandList2 : public ID3D12DebugCommandList
1871 {
1872 public:
1873 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1874 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1875 _In_reads_bytes_(DataSize) const void *pData,
1876 UINT DataSize) = 0;
1877
1878 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1879 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1880 _Out_writes_bytes_(DataSize) void *pData,
1881 UINT DataSize) = 0;
1882
1883 };
1884
1885
1886#else /* C style interface */
1887
1888 typedef struct ID3D12DebugCommandList2Vtbl
1889 {
1890 BEGIN_INTERFACE
1891
1892 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1893 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1894 ID3D12DebugCommandList2 * This,
1895 REFIID riid,
1896 _COM_Outptr_ void **ppvObject);
1897
1898 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1899 ULONG ( STDMETHODCALLTYPE *AddRef )(
1900 ID3D12DebugCommandList2 * This);
1901
1902 DECLSPEC_XFGVIRT(IUnknown, Release)
1903 ULONG ( STDMETHODCALLTYPE *Release )(
1904 ID3D12DebugCommandList2 * This);
1905
1906 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1907 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1908 ID3D12DebugCommandList2 * This,
1909 _In_ ID3D12Resource *pResource,
1910 UINT Subresource,
1911 UINT State);
1912
1913 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1914 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1915 ID3D12DebugCommandList2 * This,
1916 D3D12_DEBUG_FEATURE Mask);
1917
1918 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1919 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1920 ID3D12DebugCommandList2 * This);
1921
1922 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
1923 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1924 ID3D12DebugCommandList2 * This,
1925 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1926 _In_reads_bytes_(DataSize) const void *pData,
1927 UINT DataSize);
1928
1929 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
1930 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1931 ID3D12DebugCommandList2 * This,
1932 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1933 _Out_writes_bytes_(DataSize) void *pData,
1934 UINT DataSize);
1935
1936 END_INTERFACE
1937 } ID3D12DebugCommandList2Vtbl;
1938
1939 interface ID3D12DebugCommandList2
1940 {
1941 CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl;
1942 };
1943
1944
1945
1946#ifdef COBJMACROS
1947
1948
1949#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \
1950 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1951
1952#define ID3D12DebugCommandList2_AddRef(This) \
1953 ( (This)->lpVtbl -> AddRef(This) )
1954
1955#define ID3D12DebugCommandList2_Release(This) \
1956 ( (This)->lpVtbl -> Release(This) )
1957
1958
1959#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \
1960 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1961
1962#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \
1963 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1964
1965#define ID3D12DebugCommandList2_GetFeatureMask(This) \
1966 ( (This)->lpVtbl -> GetFeatureMask(This) )
1967
1968
1969#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \
1970 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1971
1972#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \
1973 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1974
1975#endif /* COBJMACROS */
1976
1977
1978#endif /* C style interface */
1979
1980
1981
1982
1983#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */
1984
1985
1986#ifndef __ID3D12DebugCommandList3_INTERFACE_DEFINED__
1987#define __ID3D12DebugCommandList3_INTERFACE_DEFINED__
1988
1989/* interface ID3D12DebugCommandList3 */
1990/* [unique][local][object][uuid] */
1991
1992
1993EXTERN_C const IID IID_ID3D12DebugCommandList3;
1994
1995#if defined(__cplusplus) && !defined(CINTERFACE)
1996
1997 MIDL_INTERFACE("197d5e15-4d37-4d34-af78-724cd70fdb1f")
1998 ID3D12DebugCommandList3 : public ID3D12DebugCommandList2
1999 {
2000 public:
2001 virtual void STDMETHODCALLTYPE AssertResourceAccess(
2002 _In_ ID3D12Resource *pResource,
2003 UINT Subresource,
2004 D3D12_BARRIER_ACCESS Access) = 0;
2005
2006 virtual void STDMETHODCALLTYPE AssertTextureLayout(
2007 _In_ ID3D12Resource *pResource,
2008 UINT Subresource,
2009 D3D12_BARRIER_LAYOUT Layout) = 0;
2010
2011 };
2012
2013
2014#else /* C style interface */
2015
2016 typedef struct ID3D12DebugCommandList3Vtbl
2017 {
2018 BEGIN_INTERFACE
2019
2020 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2021 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2022 ID3D12DebugCommandList3 * This,
2023 REFIID riid,
2024 _COM_Outptr_ void **ppvObject);
2025
2026 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2027 ULONG ( STDMETHODCALLTYPE *AddRef )(
2028 ID3D12DebugCommandList3 * This);
2029
2030 DECLSPEC_XFGVIRT(IUnknown, Release)
2031 ULONG ( STDMETHODCALLTYPE *Release )(
2032 ID3D12DebugCommandList3 * This);
2033
2034 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
2035 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
2036 ID3D12DebugCommandList3 * This,
2037 _In_ ID3D12Resource *pResource,
2038 UINT Subresource,
2039 UINT State);
2040
2041 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
2042 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
2043 ID3D12DebugCommandList3 * This,
2044 D3D12_DEBUG_FEATURE Mask);
2045
2046 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
2047 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
2048 ID3D12DebugCommandList3 * This);
2049
2050 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
2051 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
2052 ID3D12DebugCommandList3 * This,
2053 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
2054 _In_reads_bytes_(DataSize) const void *pData,
2055 UINT DataSize);
2056
2057 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
2058 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
2059 ID3D12DebugCommandList3 * This,
2060 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
2061 _Out_writes_bytes_(DataSize) void *pData,
2062 UINT DataSize);
2063
2064 DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertResourceAccess)
2065 void ( STDMETHODCALLTYPE *AssertResourceAccess )(
2066 ID3D12DebugCommandList3 * This,
2067 _In_ ID3D12Resource *pResource,
2068 UINT Subresource,
2069 D3D12_BARRIER_ACCESS Access);
2070
2071 DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertTextureLayout)
2072 void ( STDMETHODCALLTYPE *AssertTextureLayout )(
2073 ID3D12DebugCommandList3 * This,
2074 _In_ ID3D12Resource *pResource,
2075 UINT Subresource,
2076 D3D12_BARRIER_LAYOUT Layout);
2077
2078 END_INTERFACE
2079 } ID3D12DebugCommandList3Vtbl;
2080
2081 interface ID3D12DebugCommandList3
2082 {
2083 CONST_VTBL struct ID3D12DebugCommandList3Vtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12DebugCommandList3_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12DebugCommandList3_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12DebugCommandList3_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12DebugCommandList3_AssertResourceState(This,pResource,Subresource,State) \
2102 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
2103
2104#define ID3D12DebugCommandList3_SetFeatureMask(This,Mask) \
2105 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
2106
2107#define ID3D12DebugCommandList3_GetFeatureMask(This) \
2108 ( (This)->lpVtbl -> GetFeatureMask(This) )
2109
2110
2111#define ID3D12DebugCommandList3_SetDebugParameter(This,Type,pData,DataSize) \
2112 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
2113
2114#define ID3D12DebugCommandList3_GetDebugParameter(This,Type,pData,DataSize) \
2115 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
2116
2117
2118#define ID3D12DebugCommandList3_AssertResourceAccess(This,pResource,Subresource,Access) \
2119 ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
2120
2121#define ID3D12DebugCommandList3_AssertTextureLayout(This,pResource,Subresource,Layout) \
2122 ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
2123
2124#endif /* COBJMACROS */
2125
2126
2127#endif /* C style interface */
2128
2129
2130
2131
2132#endif /* __ID3D12DebugCommandList3_INTERFACE_DEFINED__ */
2133
2134
2135#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__
2136#define __ID3D12SharingContract_INTERFACE_DEFINED__
2137
2138/* interface ID3D12SharingContract */
2139/* [unique][local][object][uuid] */
2140
2141
2142EXTERN_C const IID IID_ID3D12SharingContract;
2143
2144#if defined(__cplusplus) && !defined(CINTERFACE)
2145
2146 MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef")
2147 ID3D12SharingContract : public IUnknown
2148 {
2149 public:
2150 virtual void STDMETHODCALLTYPE Present(
2151 _In_ ID3D12Resource *pResource,
2152 UINT Subresource,
2153 _In_ HWND window) = 0;
2154
2155 virtual void STDMETHODCALLTYPE SharedFenceSignal(
2156 _In_ ID3D12Fence *pFence,
2157 UINT64 FenceValue) = 0;
2158
2159 virtual void STDMETHODCALLTYPE BeginCapturableWork(
2160 _In_ REFGUID guid) = 0;
2161
2162 virtual void STDMETHODCALLTYPE EndCapturableWork(
2163 _In_ REFGUID guid) = 0;
2164
2165 };
2166
2167
2168#else /* C style interface */
2169
2170 typedef struct ID3D12SharingContractVtbl
2171 {
2172 BEGIN_INTERFACE
2173
2174 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2175 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2176 ID3D12SharingContract * This,
2177 REFIID riid,
2178 _COM_Outptr_ void **ppvObject);
2179
2180 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2181 ULONG ( STDMETHODCALLTYPE *AddRef )(
2182 ID3D12SharingContract * This);
2183
2184 DECLSPEC_XFGVIRT(IUnknown, Release)
2185 ULONG ( STDMETHODCALLTYPE *Release )(
2186 ID3D12SharingContract * This);
2187
2188 DECLSPEC_XFGVIRT(ID3D12SharingContract, Present)
2189 void ( STDMETHODCALLTYPE *Present )(
2190 ID3D12SharingContract * This,
2191 _In_ ID3D12Resource *pResource,
2192 UINT Subresource,
2193 _In_ HWND window);
2194
2195 DECLSPEC_XFGVIRT(ID3D12SharingContract, SharedFenceSignal)
2196 void ( STDMETHODCALLTYPE *SharedFenceSignal )(
2197 ID3D12SharingContract * This,
2198 _In_ ID3D12Fence *pFence,
2199 UINT64 FenceValue);
2200
2201 DECLSPEC_XFGVIRT(ID3D12SharingContract, BeginCapturableWork)
2202 void ( STDMETHODCALLTYPE *BeginCapturableWork )(
2203 ID3D12SharingContract * This,
2204 _In_ REFGUID guid);
2205
2206 DECLSPEC_XFGVIRT(ID3D12SharingContract, EndCapturableWork)
2207 void ( STDMETHODCALLTYPE *EndCapturableWork )(
2208 ID3D12SharingContract * This,
2209 _In_ REFGUID guid);
2210
2211 END_INTERFACE
2212 } ID3D12SharingContractVtbl;
2213
2214 interface ID3D12SharingContract
2215 {
2216 CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl;
2217 };
2218
2219
2220
2221#ifdef COBJMACROS
2222
2223
2224#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \
2225 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2226
2227#define ID3D12SharingContract_AddRef(This) \
2228 ( (This)->lpVtbl -> AddRef(This) )
2229
2230#define ID3D12SharingContract_Release(This) \
2231 ( (This)->lpVtbl -> Release(This) )
2232
2233
2234#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \
2235 ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) )
2236
2237#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \
2238 ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) )
2239
2240#define ID3D12SharingContract_BeginCapturableWork(This,guid) \
2241 ( (This)->lpVtbl -> BeginCapturableWork(This,guid) )
2242
2243#define ID3D12SharingContract_EndCapturableWork(This,guid) \
2244 ( (This)->lpVtbl -> EndCapturableWork(This,guid) )
2245
2246#endif /* COBJMACROS */
2247
2248
2249#endif /* C style interface */
2250
2251
2252
2253
2254#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */
2255
2256
2257#ifndef __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
2258#define __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
2259
2260/* interface ID3D12ManualWriteTrackingResource */
2261/* [unique][local][object][uuid] */
2262
2263
2264EXTERN_C const IID IID_ID3D12ManualWriteTrackingResource;
2265
2266#if defined(__cplusplus) && !defined(CINTERFACE)
2267
2268 MIDL_INTERFACE("86ca3b85-49ad-4b6e-aed5-eddb18540f41")
2269 ID3D12ManualWriteTrackingResource : public IUnknown
2270 {
2271 public:
2272 virtual void STDMETHODCALLTYPE TrackWrite(
2273 UINT Subresource,
2274 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
2275
2276 };
2277
2278
2279#else /* C style interface */
2280
2281 typedef struct ID3D12ManualWriteTrackingResourceVtbl
2282 {
2283 BEGIN_INTERFACE
2284
2285 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2286 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2287 ID3D12ManualWriteTrackingResource * This,
2288 REFIID riid,
2289 _COM_Outptr_ void **ppvObject);
2290
2291 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2292 ULONG ( STDMETHODCALLTYPE *AddRef )(
2293 ID3D12ManualWriteTrackingResource * This);
2294
2295 DECLSPEC_XFGVIRT(IUnknown, Release)
2296 ULONG ( STDMETHODCALLTYPE *Release )(
2297 ID3D12ManualWriteTrackingResource * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12ManualWriteTrackingResource, TrackWrite)
2300 void ( STDMETHODCALLTYPE *TrackWrite )(
2301 ID3D12ManualWriteTrackingResource * This,
2302 UINT Subresource,
2303 _In_opt_ const D3D12_RANGE *pWrittenRange);
2304
2305 END_INTERFACE
2306 } ID3D12ManualWriteTrackingResourceVtbl;
2307
2308 interface ID3D12ManualWriteTrackingResource
2309 {
2310 CONST_VTBL struct ID3D12ManualWriteTrackingResourceVtbl *lpVtbl;
2311 };
2312
2313
2314
2315#ifdef COBJMACROS
2316
2317
2318#define ID3D12ManualWriteTrackingResource_QueryInterface(This,riid,ppvObject) \
2319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2320
2321#define ID3D12ManualWriteTrackingResource_AddRef(This) \
2322 ( (This)->lpVtbl -> AddRef(This) )
2323
2324#define ID3D12ManualWriteTrackingResource_Release(This) \
2325 ( (This)->lpVtbl -> Release(This) )
2326
2327
2328#define ID3D12ManualWriteTrackingResource_TrackWrite(This,Subresource,pWrittenRange) \
2329 ( (This)->lpVtbl -> TrackWrite(This,Subresource,pWrittenRange) )
2330
2331#endif /* COBJMACROS */
2332
2333
2334#endif /* C style interface */
2335
2336
2337
2338
2339#endif /* __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__ */
2340
2341
2342/* interface __MIDL_itf_d3d12sdklayers_0000_0018 */
2343/* [local] */
2344
2345typedef
2346enum D3D12_MESSAGE_CATEGORY
2347 {
2348 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
2349 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
2350 D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
2351 D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
2352 D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
2353 D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
2354 D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
2355 D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
2356 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
2357 D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) ,
2358 D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 )
2359 } D3D12_MESSAGE_CATEGORY;
2360
2361typedef
2362enum D3D12_MESSAGE_SEVERITY
2363 {
2364 D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
2365 D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
2366 D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) ,
2367 D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) ,
2368 D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 )
2369 } D3D12_MESSAGE_SEVERITY;
2370
2371typedef
2372enum D3D12_MESSAGE_ID
2373 {
2374 D3D12_MESSAGE_ID_UNKNOWN = 0,
2375 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
2376 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
2377 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
2378 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
2379 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
2380 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
2381 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
2382 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
2383 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
2384 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
2385 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
2386 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
2387 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
2388 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
2389 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
2390 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
2391 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
2392 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
2393 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
2394 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
2395 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
2396 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
2397 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
2398 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
2399 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
2400 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
2401 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
2402 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
2403 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
2404 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
2405 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
2406 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
2407 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
2408 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
2409 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
2410 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
2411 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
2412 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
2413 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
2414 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
2415 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
2416 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
2417 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
2418 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
2419 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
2420 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
2421 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
2422 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
2423 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
2424 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
2425 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
2426 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
2427 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
2428 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
2429 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
2430 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
2431 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
2432 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
2433 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
2434 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
2435 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
2436 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
2437 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
2438 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
2439 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
2440 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
2441 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
2442 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
2443 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
2444 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
2445 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
2446 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
2447 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
2448 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
2449 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
2450 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
2451 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
2452 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
2453 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
2454 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
2455 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
2456 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
2457 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
2458 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
2459 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
2460 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
2461 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
2462 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
2463 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
2464 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
2465 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
2466 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
2467 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
2468 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
2469 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
2470 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
2471 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
2472 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
2473 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
2474 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
2475 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
2476 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
2477 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
2478 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
2479 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
2480 D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
2481 D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
2482 D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
2483 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
2484 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
2485 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
2486 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
2487 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
2488 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
2489 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
2490 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
2491 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
2492 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
2493 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
2494 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
2495 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
2496 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
2497 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
2498 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
2499 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
2500 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
2501 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
2502 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
2503 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
2504 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
2505 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
2506 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
2507 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
2508 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
2509 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
2510 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
2511 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
2512 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
2513 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
2514 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
2515 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
2516 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
2517 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
2518 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
2519 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
2520 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
2521 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
2522 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
2523 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
2524 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
2525 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
2526 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
2527 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
2528 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
2529 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
2530 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
2531 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
2532 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
2533 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
2534 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
2535 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
2536 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
2537 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
2538 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
2539 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
2540 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
2541 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
2542 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
2543 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
2544 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
2545 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
2546 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
2547 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
2548 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
2549 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
2550 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
2551 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
2552 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
2553 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
2554 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
2555 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
2556 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
2557 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
2558 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
2559 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
2560 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
2561 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
2562 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
2563 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
2564 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
2565 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
2566 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
2567 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
2568 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
2569 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
2570 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
2571 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
2572 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
2573 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
2574 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
2575 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
2576 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
2577 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
2578 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
2579 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
2580 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
2581 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
2582 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
2583 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
2584 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
2585 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
2586 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
2587 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
2588 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
2589 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
2590 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
2591 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
2592 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
2593 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
2594 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
2595 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
2596 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
2597 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
2598 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
2599 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
2600 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
2601 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
2602 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
2603 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
2604 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
2605 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
2606 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
2607 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
2608 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
2609 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
2610 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
2611 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
2612 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
2613 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
2614 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
2615 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
2616 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
2617 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
2618 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
2619 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
2620 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
2621 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
2622 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
2623 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
2624 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
2625 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
2626 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
2627 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
2628 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
2629 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
2630 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
2631 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
2632 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
2633 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
2634 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
2635 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
2636 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
2637 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
2638 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
2639 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
2640 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
2641 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
2642 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
2643 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
2644 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
2645 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
2646 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
2647 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
2648 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
2649 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
2650 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
2651 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
2652 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
2653 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
2654 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
2655 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
2656 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
2657 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
2658 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
2659 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
2660 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
2661 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
2662 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
2663 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
2664 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
2665 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
2666 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
2667 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
2668 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
2669 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
2670 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
2671 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
2672 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
2673 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
2674 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
2675 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
2676 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
2677 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
2678 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
2679 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
2680 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
2681 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
2682 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
2683 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
2684 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
2685 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
2686 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
2687 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
2688 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
2689 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
2690 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
2691 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
2692 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
2693 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
2694 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
2695 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
2696 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
2697 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
2698 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
2699 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
2700 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
2701 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
2702 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
2703 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
2704 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
2705 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
2706 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
2707 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
2708 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
2709 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
2710 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
2711 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
2712 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
2713 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
2714 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
2715 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
2716 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
2717 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
2718 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
2719 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
2720 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
2721 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
2722 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
2723 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
2724 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
2725 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
2726 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
2727 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
2728 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
2729 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
2730 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
2731 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
2732 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
2733 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
2734 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
2735 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
2736 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
2737 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
2738 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
2739 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
2740 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
2741 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
2742 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
2743 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
2744 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
2745 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
2746 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
2747 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
2748 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
2749 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
2750 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
2751 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
2752 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
2753 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
2754 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
2755 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
2756 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
2757 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
2758 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
2759 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
2760 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
2761 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
2762 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
2763 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
2764 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
2765 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
2766 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
2767 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
2768 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
2769 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
2770 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
2771 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
2772 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
2773 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
2774 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
2775 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
2776 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
2777 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
2778 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
2779 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
2780 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
2781 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
2782 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
2783 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
2784 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
2785 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
2786 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
2787 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
2788 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
2789 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
2790 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
2791 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
2792 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
2793 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
2794 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
2795 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
2796 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
2797 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
2798 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
2799 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
2800 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
2801 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
2802 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
2803 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
2804 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
2805 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
2806 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
2807 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
2808 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
2809 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
2810 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
2811 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
2812 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
2813 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
2814 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
2815 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
2816 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
2817 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
2818 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
2819 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
2820 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
2821 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
2822 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
2823 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
2824 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
2825 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
2826 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
2827 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
2828 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
2829 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
2830 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
2831 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
2832 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
2833 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
2834 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
2835 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
2836 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
2837 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
2838 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
2839 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
2840 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
2841 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
2842 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
2843 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
2844 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
2845 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
2846 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
2847 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
2848 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
2849 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
2850 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
2851 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
2852 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
2853 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
2854 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
2855 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
2856 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
2857 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
2858 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
2859 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
2860 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
2861 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
2862 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
2863 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
2864 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
2865 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
2866 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
2867 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
2868 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
2869 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
2870 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
2871 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
2872 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
2873 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
2874 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
2875 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
2876 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
2877 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
2878 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
2879 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
2880 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
2881 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
2882 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
2883 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
2884 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
2885 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
2886 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
2887 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
2888 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
2889 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
2890 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
2891 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
2892 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
2893 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
2894 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
2895 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
2896 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
2897 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
2898 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
2899 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
2900 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
2901 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
2902 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
2903 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
2904 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
2905 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
2906 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
2907 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
2908 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
2909 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
2910 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
2911 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
2912 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
2913 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
2914 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
2915 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
2916 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
2917 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
2918 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
2919 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
2920 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
2921 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
2922 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
2923 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
2924 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
2925 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
2926 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
2927 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
2928 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
2929 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
2930 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
2931 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
2932 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
2933 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
2934 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
2935 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
2936 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
2937 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
2938 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
2939 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
2940 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
2941 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
2942 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
2943 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
2944 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
2945 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
2946 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
2947 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
2948 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
2949 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
2950 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
2951 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
2952 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
2953 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
2954 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
2955 D3D12_MESSAGE_ID_END_EVENT = 1015,
2956 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
2957 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
2958 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
2959 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
2960 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
2961 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
2962 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
2963 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
2964 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
2965 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
2966 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
2967 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
2968 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
2969 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
2970 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
2971 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
2972 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
2973 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
2974 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
2975 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
2976 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
2977 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
2978 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
2979 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
2980 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
2981 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
2982 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
2983 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
2984 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
2985 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
2986 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
2987 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
2988 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
2989 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
2990 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
2991 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
2992 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
2993 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
2994 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
2995 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
2996 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
2997 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
2998 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
2999 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
3000 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
3001 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
3002 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
3003 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
3004 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
3005 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
3006 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
3007 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
3008 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
3009 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
3010 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
3011 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
3012 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
3013 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
3014 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
3015 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
3016 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
3017 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
3018 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
3019 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
3020 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
3021 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
3022 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
3023 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
3024 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
3025 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
3026 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
3027 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
3028 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
3029 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
3030 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
3031 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
3032 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
3033 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
3034 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
3035 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
3036 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
3037 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
3038 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
3039 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
3040 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
3041 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
3042 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
3043 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
3044 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
3045 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
3046 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
3047 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
3048 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
3049 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
3050 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
3051 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
3052 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
3053 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
3054 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
3055 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
3056 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
3057 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
3058 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
3059 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
3060 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
3061 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
3062 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
3063 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
3064 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
3065 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
3066 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
3067 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
3068 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
3069 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
3070 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
3071 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
3072 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
3073 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
3074 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
3075 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
3076 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
3077 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
3078 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
3079 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
3080 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
3081 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
3082 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
3083 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
3084 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
3085 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
3086 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
3087 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
3088 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
3089 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
3090 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
3091 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
3092 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
3093 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
3094 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
3095 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
3096 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
3097 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
3098 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
3099 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
3100 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
3101 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
3102 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
3103 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
3104 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
3105 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
3106 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
3107 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
3108 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
3109 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
3110 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
3111 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
3112 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
3113 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
3114 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
3115 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
3116 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
3117 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
3118 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
3119 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
3120 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
3121 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
3122 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
3123 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
3124 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
3125 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
3126 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
3127 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
3128 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
3129 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
3130 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
3131 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
3132 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
3133 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
3134 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
3135 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
3136 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
3137 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
3138 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
3139 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
3140 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
3141 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
3142 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
3143 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
3144 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
3145 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
3146 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
3147 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
3148 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
3149 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
3150 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
3151 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
3152 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
3153 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
3154 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
3155 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
3156 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
3157 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
3158 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
3159 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
3160 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
3161 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
3162 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
3163 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
3164 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
3165 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
3166 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
3167 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
3168 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
3169 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
3170 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
3171 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
3172 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
3173 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
3174 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
3175 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
3176 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
3177 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
3178 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
3179 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
3180 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
3181 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
3182 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
3183 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
3184 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
3185 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
3186 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
3187 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
3188 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
3189 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
3190 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
3191 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
3192 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
3193 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
3194 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
3195 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
3196 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
3197 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
3198 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
3199 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
3200 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
3201 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
3202 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
3203 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
3204 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
3205 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
3206 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
3207 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
3208 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
3209 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
3210 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
3211 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
3212 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
3213 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
3214 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
3215 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
3216 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
3217 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
3218 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
3219 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
3220 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
3221 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
3222 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
3223 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
3224 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
3225 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
3226 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
3227 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
3228 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
3229 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
3230 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
3231 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
3232 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
3233 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
3234 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
3235 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
3236 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
3237 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
3238 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
3239 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
3240 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
3241 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
3242 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
3243 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
3244 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
3245 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
3246 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
3247 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
3248 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
3249 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
3250 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
3251 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
3252 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
3253 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
3254 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
3255 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
3256 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
3257 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
3258 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
3259 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
3260 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
3261 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
3262 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
3263 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
3264 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
3265 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
3266 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
3267 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
3268 D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
3269 D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
3270 D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
3271 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
3272 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
3273 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
3274 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
3275 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
3276 D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
3277 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
3278 D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
3279 D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
3280 D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
3281 D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
3282 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
3283 D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
3284 D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
3285 D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
3286 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
3287 D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
3288 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
3289 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
3290 D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
3291 D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
3292 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
3293 D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
3294 D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
3295 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
3296 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
3297 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
3298 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
3299 D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
3300 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
3301 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
3302 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
3303 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
3304 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
3305 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
3306 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
3307 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
3308 D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
3309 D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
3310 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
3311 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
3312 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
3313 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
3314 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
3315 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
3316 D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
3317 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
3318 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
3319 D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
3320 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
3321 D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
3322 D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
3323 D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
3324 D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
3325 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
3326 D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
3327 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
3328 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
3329 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
3330 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
3331 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
3332 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
3333 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
3334 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
3335 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
3336 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
3337 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
3338 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
3339 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
3340 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
3341 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
3342 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
3343 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
3344 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
3345 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
3346 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
3347 D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
3348 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
3349 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
3350 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
3351 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
3352 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
3353 D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
3354 D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
3355 D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
3356 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
3357 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
3358 D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
3359 D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
3360 D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
3361 D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
3362 D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
3363 D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
3364 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
3365 D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
3366 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442
3367 } D3D12_MESSAGE_ID;
3368
3369typedef struct D3D12_MESSAGE
3370 {
3371 D3D12_MESSAGE_CATEGORY Category;
3372 D3D12_MESSAGE_SEVERITY Severity;
3373 D3D12_MESSAGE_ID ID;
3374 _Field_size_(DescriptionByteLength) const char *pDescription;
3375 SIZE_T DescriptionByteLength;
3376 } D3D12_MESSAGE;
3377
3378typedef struct D3D12_INFO_QUEUE_FILTER_DESC
3379 {
3380 UINT NumCategories;
3381 _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList;
3382 UINT NumSeverities;
3383 _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList;
3384 UINT NumIDs;
3385 _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList;
3386 } D3D12_INFO_QUEUE_FILTER_DESC;
3387
3388typedef struct D3D12_INFO_QUEUE_FILTER
3389 {
3390 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
3391 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
3392 } D3D12_INFO_QUEUE_FILTER;
3393
3394#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
3395
3396
3397extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_c_ifspec;
3398extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_s_ifspec;
3399
3400#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__
3401#define __ID3D12InfoQueue_INTERFACE_DEFINED__
3402
3403/* interface ID3D12InfoQueue */
3404/* [unique][local][object][uuid] */
3405
3406
3407EXTERN_C const IID IID_ID3D12InfoQueue;
3408
3409#if defined(__cplusplus) && !defined(CINTERFACE)
3410
3411 MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458")
3412 ID3D12InfoQueue : public IUnknown
3413 {
3414 public:
3415 virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
3416 _In_ UINT64 MessageCountLimit) = 0;
3417
3418 virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
3419
3420 virtual HRESULT STDMETHODCALLTYPE GetMessage(
3421 _In_ UINT64 MessageIndex,
3422 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3423 _Inout_ SIZE_T *pMessageByteLength) = 0;
3424
3425 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
3426
3427 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
3428
3429 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
3430
3431 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
3432
3433 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
3434
3435 virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
3436
3437 virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
3438 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3439
3440 virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
3441 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3442 _Inout_ SIZE_T *pFilterByteLength) = 0;
3443
3444 virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
3445
3446 virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
3447
3448 virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
3449
3450 virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
3451 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3452
3453 virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
3454
3455 virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
3456
3457 virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
3458 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3459
3460 virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
3461 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3462 _Inout_ SIZE_T *pFilterByteLength) = 0;
3463
3464 virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
3465
3466 virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
3467
3468 virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
3469
3470 virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
3471 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3472
3473 virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
3474
3475 virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
3476
3477 virtual HRESULT STDMETHODCALLTYPE AddMessage(
3478 _In_ D3D12_MESSAGE_CATEGORY Category,
3479 _In_ D3D12_MESSAGE_SEVERITY Severity,
3480 _In_ D3D12_MESSAGE_ID ID,
3481 _In_ LPCSTR pDescription) = 0;
3482
3483 virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
3484 _In_ D3D12_MESSAGE_SEVERITY Severity,
3485 _In_ LPCSTR pDescription) = 0;
3486
3487 virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory(
3488 _In_ D3D12_MESSAGE_CATEGORY Category,
3489 _In_ BOOL bEnable) = 0;
3490
3491 virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity(
3492 _In_ D3D12_MESSAGE_SEVERITY Severity,
3493 _In_ BOOL bEnable) = 0;
3494
3495 virtual HRESULT STDMETHODCALLTYPE SetBreakOnID(
3496 _In_ D3D12_MESSAGE_ID ID,
3497 _In_ BOOL bEnable) = 0;
3498
3499 virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory(
3500 _In_ D3D12_MESSAGE_CATEGORY Category) = 0;
3501
3502 virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity(
3503 _In_ D3D12_MESSAGE_SEVERITY Severity) = 0;
3504
3505 virtual BOOL STDMETHODCALLTYPE GetBreakOnID(
3506 _In_ D3D12_MESSAGE_ID ID) = 0;
3507
3508 virtual void STDMETHODCALLTYPE SetMuteDebugOutput(
3509 _In_ BOOL bMute) = 0;
3510
3511 virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0;
3512
3513 };
3514
3515
3516#else /* C style interface */
3517
3518 typedef struct ID3D12InfoQueueVtbl
3519 {
3520 BEGIN_INTERFACE
3521
3522 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3523 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3524 ID3D12InfoQueue * This,
3525 REFIID riid,
3526 _COM_Outptr_ void **ppvObject);
3527
3528 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3529 ULONG ( STDMETHODCALLTYPE *AddRef )(
3530 ID3D12InfoQueue * This);
3531
3532 DECLSPEC_XFGVIRT(IUnknown, Release)
3533 ULONG ( STDMETHODCALLTYPE *Release )(
3534 ID3D12InfoQueue * This);
3535
3536 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3537 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3538 ID3D12InfoQueue * This,
3539 _In_ UINT64 MessageCountLimit);
3540
3541 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3542 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3543 ID3D12InfoQueue * This);
3544
3545 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3546 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3547 ID3D12InfoQueue * This,
3548 _In_ UINT64 MessageIndex,
3549 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3550 _Inout_ SIZE_T *pMessageByteLength);
3551
3552 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3553 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3554 ID3D12InfoQueue * This);
3555
3556 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3557 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3558 ID3D12InfoQueue * This);
3559
3560 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3561 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3562 ID3D12InfoQueue * This);
3563
3564 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3565 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3566 ID3D12InfoQueue * This);
3567
3568 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3569 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3570 ID3D12InfoQueue * This);
3571
3572 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3573 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3574 ID3D12InfoQueue * This);
3575
3576 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3577 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3578 ID3D12InfoQueue * This,
3579 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3580
3581 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3582 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3583 ID3D12InfoQueue * This,
3584 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3585 _Inout_ SIZE_T *pFilterByteLength);
3586
3587 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3588 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3589 ID3D12InfoQueue * This);
3590
3591 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3592 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3593 ID3D12InfoQueue * This);
3594
3595 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3596 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3597 ID3D12InfoQueue * This);
3598
3599 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3600 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3601 ID3D12InfoQueue * This,
3602 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3603
3604 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3605 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3606 ID3D12InfoQueue * This);
3607
3608 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3609 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3610 ID3D12InfoQueue * This);
3611
3612 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3613 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3614 ID3D12InfoQueue * This,
3615 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3616
3617 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3618 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3619 ID3D12InfoQueue * This,
3620 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3621 _Inout_ SIZE_T *pFilterByteLength);
3622
3623 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3624 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3625 ID3D12InfoQueue * This);
3626
3627 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3628 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3629 ID3D12InfoQueue * This);
3630
3631 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3632 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3633 ID3D12InfoQueue * This);
3634
3635 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3636 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3637 ID3D12InfoQueue * This,
3638 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3639
3640 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3641 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3642 ID3D12InfoQueue * This);
3643
3644 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3645 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3646 ID3D12InfoQueue * This);
3647
3648 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3649 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3650 ID3D12InfoQueue * This,
3651 _In_ D3D12_MESSAGE_CATEGORY Category,
3652 _In_ D3D12_MESSAGE_SEVERITY Severity,
3653 _In_ D3D12_MESSAGE_ID ID,
3654 _In_ LPCSTR pDescription);
3655
3656 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3657 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3658 ID3D12InfoQueue * This,
3659 _In_ D3D12_MESSAGE_SEVERITY Severity,
3660 _In_ LPCSTR pDescription);
3661
3662 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3663 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3664 ID3D12InfoQueue * This,
3665 _In_ D3D12_MESSAGE_CATEGORY Category,
3666 _In_ BOOL bEnable);
3667
3668 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3669 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3670 ID3D12InfoQueue * This,
3671 _In_ D3D12_MESSAGE_SEVERITY Severity,
3672 _In_ BOOL bEnable);
3673
3674 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3675 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3676 ID3D12InfoQueue * This,
3677 _In_ D3D12_MESSAGE_ID ID,
3678 _In_ BOOL bEnable);
3679
3680 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3681 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3682 ID3D12InfoQueue * This,
3683 _In_ D3D12_MESSAGE_CATEGORY Category);
3684
3685 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3686 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3687 ID3D12InfoQueue * This,
3688 _In_ D3D12_MESSAGE_SEVERITY Severity);
3689
3690 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3691 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3692 ID3D12InfoQueue * This,
3693 _In_ D3D12_MESSAGE_ID ID);
3694
3695 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3696 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3697 ID3D12InfoQueue * This,
3698 _In_ BOOL bMute);
3699
3700 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3701 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3702 ID3D12InfoQueue * This);
3703
3704 END_INTERFACE
3705 } ID3D12InfoQueueVtbl;
3706
3707 interface ID3D12InfoQueue
3708 {
3709 CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl;
3710 };
3711
3712
3713
3714#ifdef COBJMACROS
3715
3716
3717#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \
3718 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3719
3720#define ID3D12InfoQueue_AddRef(This) \
3721 ( (This)->lpVtbl -> AddRef(This) )
3722
3723#define ID3D12InfoQueue_Release(This) \
3724 ( (This)->lpVtbl -> Release(This) )
3725
3726
3727#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
3728 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3729
3730#define ID3D12InfoQueue_ClearStoredMessages(This) \
3731 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3732
3733#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3734 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3735
3736#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
3737 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3738
3739#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
3740 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3741
3742#define ID3D12InfoQueue_GetNumStoredMessages(This) \
3743 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3744
3745#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3746 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3747
3748#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
3749 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3750
3751#define ID3D12InfoQueue_GetMessageCountLimit(This) \
3752 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3753
3754#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \
3755 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3756
3757#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
3758 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3759
3760#define ID3D12InfoQueue_ClearStorageFilter(This) \
3761 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3762
3763#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \
3764 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3765
3766#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \
3767 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3768
3769#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \
3770 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3771
3772#define ID3D12InfoQueue_PopStorageFilter(This) \
3773 ( (This)->lpVtbl -> PopStorageFilter(This) )
3774
3775#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \
3776 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3777
3778#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
3779 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3780
3781#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3782 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3783
3784#define ID3D12InfoQueue_ClearRetrievalFilter(This) \
3785 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3786
3787#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \
3788 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3789
3790#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \
3791 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3792
3793#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \
3794 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3795
3796#define ID3D12InfoQueue_PopRetrievalFilter(This) \
3797 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3798
3799#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \
3800 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3801
3802#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
3803 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3804
3805#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
3806 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3807
3808#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \
3809 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3810
3811#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \
3812 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3813
3814#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \
3815 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3816
3817#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \
3818 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3819
3820#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \
3821 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3822
3823#define ID3D12InfoQueue_GetBreakOnID(This,ID) \
3824 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3825
3826#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \
3827 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3828
3829#define ID3D12InfoQueue_GetMuteDebugOutput(This) \
3830 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3831
3832#endif /* COBJMACROS */
3833
3834
3835#endif /* C style interface */
3836
3837
3838
3839
3840#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */
3841
3842
3843/* interface __MIDL_itf_d3d12sdklayers_0000_0019 */
3844/* [local] */
3845
3846typedef
3847enum D3D12_MESSAGE_CALLBACK_FLAGS
3848 {
3849 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0,
3850 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x1
3851 } D3D12_MESSAGE_CALLBACK_FLAGS;
3852
3853DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)
3854typedef void ( __stdcall *D3D12MessageFunc )(
3855 D3D12_MESSAGE_CATEGORY Category,
3856 D3D12_MESSAGE_SEVERITY Severity,
3857 D3D12_MESSAGE_ID ID,
3858 LPCSTR pDescription,
3859 void *pContext);
3860
3861
3862
3863extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_c_ifspec;
3864extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_s_ifspec;
3865
3866#ifndef __ID3D12InfoQueue1_INTERFACE_DEFINED__
3867#define __ID3D12InfoQueue1_INTERFACE_DEFINED__
3868
3869/* interface ID3D12InfoQueue1 */
3870/* [unique][local][object][uuid] */
3871
3872
3873EXTERN_C const IID IID_ID3D12InfoQueue1;
3874
3875#if defined(__cplusplus) && !defined(CINTERFACE)
3876
3877 MIDL_INTERFACE("2852dd88-b484-4c0c-b6b1-67168500e600")
3878 ID3D12InfoQueue1 : public ID3D12InfoQueue
3879 {
3880 public:
3881 virtual HRESULT STDMETHODCALLTYPE RegisterMessageCallback(
3882 _In_ D3D12MessageFunc CallbackFunc,
3883 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3884 _Inout_ void *pContext,
3885 _Inout_ DWORD *pCallbackCookie) = 0;
3886
3887 virtual HRESULT STDMETHODCALLTYPE UnregisterMessageCallback(
3888 _In_ DWORD CallbackCookie) = 0;
3889
3890 };
3891
3892
3893#else /* C style interface */
3894
3895 typedef struct ID3D12InfoQueue1Vtbl
3896 {
3897 BEGIN_INTERFACE
3898
3899 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3900 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3901 ID3D12InfoQueue1 * This,
3902 REFIID riid,
3903 _COM_Outptr_ void **ppvObject);
3904
3905 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3906 ULONG ( STDMETHODCALLTYPE *AddRef )(
3907 ID3D12InfoQueue1 * This);
3908
3909 DECLSPEC_XFGVIRT(IUnknown, Release)
3910 ULONG ( STDMETHODCALLTYPE *Release )(
3911 ID3D12InfoQueue1 * This);
3912
3913 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3914 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3915 ID3D12InfoQueue1 * This,
3916 _In_ UINT64 MessageCountLimit);
3917
3918 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3919 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3920 ID3D12InfoQueue1 * This);
3921
3922 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3923 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3924 ID3D12InfoQueue1 * This,
3925 _In_ UINT64 MessageIndex,
3926 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3927 _Inout_ SIZE_T *pMessageByteLength);
3928
3929 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3930 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3931 ID3D12InfoQueue1 * This);
3932
3933 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3934 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3935 ID3D12InfoQueue1 * This);
3936
3937 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3938 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3939 ID3D12InfoQueue1 * This);
3940
3941 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3942 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3943 ID3D12InfoQueue1 * This);
3944
3945 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3946 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3947 ID3D12InfoQueue1 * This);
3948
3949 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3950 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3951 ID3D12InfoQueue1 * This);
3952
3953 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3954 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3955 ID3D12InfoQueue1 * This,
3956 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3957
3958 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3959 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3960 ID3D12InfoQueue1 * This,
3961 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3962 _Inout_ SIZE_T *pFilterByteLength);
3963
3964 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3965 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3966 ID3D12InfoQueue1 * This);
3967
3968 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3969 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3970 ID3D12InfoQueue1 * This);
3971
3972 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3973 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3974 ID3D12InfoQueue1 * This);
3975
3976 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3977 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3978 ID3D12InfoQueue1 * This,
3979 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3980
3981 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3982 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3983 ID3D12InfoQueue1 * This);
3984
3985 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3986 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3987 ID3D12InfoQueue1 * This);
3988
3989 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3990 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3991 ID3D12InfoQueue1 * This,
3992 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3993
3994 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3995 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3996 ID3D12InfoQueue1 * This,
3997 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3998 _Inout_ SIZE_T *pFilterByteLength);
3999
4000 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
4001 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
4002 ID3D12InfoQueue1 * This);
4003
4004 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
4005 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
4006 ID3D12InfoQueue1 * This);
4007
4008 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
4009 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
4010 ID3D12InfoQueue1 * This);
4011
4012 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
4013 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
4014 ID3D12InfoQueue1 * This,
4015 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
4016
4017 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
4018 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
4019 ID3D12InfoQueue1 * This);
4020
4021 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
4022 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
4023 ID3D12InfoQueue1 * This);
4024
4025 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
4026 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
4027 ID3D12InfoQueue1 * This,
4028 _In_ D3D12_MESSAGE_CATEGORY Category,
4029 _In_ D3D12_MESSAGE_SEVERITY Severity,
4030 _In_ D3D12_MESSAGE_ID ID,
4031 _In_ LPCSTR pDescription);
4032
4033 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
4034 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
4035 ID3D12InfoQueue1 * This,
4036 _In_ D3D12_MESSAGE_SEVERITY Severity,
4037 _In_ LPCSTR pDescription);
4038
4039 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
4040 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
4041 ID3D12InfoQueue1 * This,
4042 _In_ D3D12_MESSAGE_CATEGORY Category,
4043 _In_ BOOL bEnable);
4044
4045 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
4046 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
4047 ID3D12InfoQueue1 * This,
4048 _In_ D3D12_MESSAGE_SEVERITY Severity,
4049 _In_ BOOL bEnable);
4050
4051 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
4052 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
4053 ID3D12InfoQueue1 * This,
4054 _In_ D3D12_MESSAGE_ID ID,
4055 _In_ BOOL bEnable);
4056
4057 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
4058 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
4059 ID3D12InfoQueue1 * This,
4060 _In_ D3D12_MESSAGE_CATEGORY Category);
4061
4062 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
4063 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
4064 ID3D12InfoQueue1 * This,
4065 _In_ D3D12_MESSAGE_SEVERITY Severity);
4066
4067 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
4068 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
4069 ID3D12InfoQueue1 * This,
4070 _In_ D3D12_MESSAGE_ID ID);
4071
4072 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
4073 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
4074 ID3D12InfoQueue1 * This,
4075 _In_ BOOL bMute);
4076
4077 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
4078 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
4079 ID3D12InfoQueue1 * This);
4080
4081 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, RegisterMessageCallback)
4082 HRESULT ( STDMETHODCALLTYPE *RegisterMessageCallback )(
4083 ID3D12InfoQueue1 * This,
4084 _In_ D3D12MessageFunc CallbackFunc,
4085 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
4086 _Inout_ void *pContext,
4087 _Inout_ DWORD *pCallbackCookie);
4088
4089 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, UnregisterMessageCallback)
4090 HRESULT ( STDMETHODCALLTYPE *UnregisterMessageCallback )(
4091 ID3D12InfoQueue1 * This,
4092 _In_ DWORD CallbackCookie);
4093
4094 END_INTERFACE
4095 } ID3D12InfoQueue1Vtbl;
4096
4097 interface ID3D12InfoQueue1
4098 {
4099 CONST_VTBL struct ID3D12InfoQueue1Vtbl *lpVtbl;
4100 };
4101
4102
4103
4104#ifdef COBJMACROS
4105
4106
4107#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject) \
4108 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4109
4110#define ID3D12InfoQueue1_AddRef(This) \
4111 ( (This)->lpVtbl -> AddRef(This) )
4112
4113#define ID3D12InfoQueue1_Release(This) \
4114 ( (This)->lpVtbl -> Release(This) )
4115
4116
4117#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit) \
4118 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
4119
4120#define ID3D12InfoQueue1_ClearStoredMessages(This) \
4121 ( (This)->lpVtbl -> ClearStoredMessages(This) )
4122
4123#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
4124 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
4125
4126#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This) \
4127 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
4128
4129#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This) \
4130 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
4131
4132#define ID3D12InfoQueue1_GetNumStoredMessages(This) \
4133 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
4134
4135#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
4136 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
4137
4138#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This) \
4139 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
4140
4141#define ID3D12InfoQueue1_GetMessageCountLimit(This) \
4142 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
4143
4144#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter) \
4145 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
4146
4147#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength) \
4148 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
4149
4150#define ID3D12InfoQueue1_ClearStorageFilter(This) \
4151 ( (This)->lpVtbl -> ClearStorageFilter(This) )
4152
4153#define ID3D12InfoQueue1_PushEmptyStorageFilter(This) \
4154 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
4155
4156#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This) \
4157 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
4158
4159#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter) \
4160 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
4161
4162#define ID3D12InfoQueue1_PopStorageFilter(This) \
4163 ( (This)->lpVtbl -> PopStorageFilter(This) )
4164
4165#define ID3D12InfoQueue1_GetStorageFilterStackSize(This) \
4166 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
4167
4168#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter) \
4169 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
4170
4171#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
4172 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
4173
4174#define ID3D12InfoQueue1_ClearRetrievalFilter(This) \
4175 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
4176
4177#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This) \
4178 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
4179
4180#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This) \
4181 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
4182
4183#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter) \
4184 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
4185
4186#define ID3D12InfoQueue1_PopRetrievalFilter(This) \
4187 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
4188
4189#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This) \
4190 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
4191
4192#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription) \
4193 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
4194
4195#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription) \
4196 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
4197
4198#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable) \
4199 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
4200
4201#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable) \
4202 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
4203
4204#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable) \
4205 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
4206
4207#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category) \
4208 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
4209
4210#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity) \
4211 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
4212
4213#define ID3D12InfoQueue1_GetBreakOnID(This,ID) \
4214 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
4215
4216#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute) \
4217 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
4218
4219#define ID3D12InfoQueue1_GetMuteDebugOutput(This) \
4220 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
4221
4222
4223#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) \
4224 ( (This)->lpVtbl -> RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) )
4225
4226#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie) \
4227 ( (This)->lpVtbl -> UnregisterMessageCallback(This,CallbackCookie) )
4228
4229#endif /* COBJMACROS */
4230
4231
4232#endif /* C style interface */
4233
4234
4235
4236
4237#endif /* __ID3D12InfoQueue1_INTERFACE_DEFINED__ */
4238
4239
4240/* interface __MIDL_itf_d3d12sdklayers_0000_0020 */
4241/* [local] */
4242
4243#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
4244#pragma endregion
4245DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);
4246DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);
4247DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);
4248DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);
4249DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);
4250DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);
4251DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);
4252DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);
4253DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);
4254DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);
4255DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);
4256DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);
4257DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);
4258DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);
4259DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);
4260DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);
4261DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);
4262DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);
4263DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);
4264DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);
4265
4266
4267extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_c_ifspec;
4268extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_s_ifspec;
4269
4270/* Additional Prototypes for ALL interfaces */
4271
4272/* end of Additional Prototypes */
4273
4274#ifdef __cplusplus
4275}
4276#endif
4277
4278#endif
4279
4280
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.idl
new file mode 100644
index 0000000..082565d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.idl
@@ -0,0 +1,1860 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "d3d12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region App Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17//==================================================================================================================================
18//
19// Debugging Layer
20//
21//==================================================================================================================================
22
23[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
24interface ID3D12Debug
25 : IUnknown
26{
27 void EnableDebugLayer();
28}
29
30typedef enum D3D12_GPU_BASED_VALIDATION_FLAGS
31{
32 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0x00,
33 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x01,
34
35} D3D12_GPU_BASED_VALIDATION_FLAGS;
36cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)")
37
38
39[uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304), object, local, pointer_default(unique)]
40interface ID3D12Debug1
41 : IUnknown
42{
43 void EnableDebugLayer();
44 void SetEnableGPUBasedValidation(BOOL Enable);
45 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
46}
47
48[uuid(93a665c4-a3b2-4e5d-b692-a26ae14e3374), object, local, pointer_default(unique)]
49interface ID3D12Debug2
50 : IUnknown
51{
52 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
53}
54
55[uuid(5cf4e58f-f671-4ff1-a542-3686e3d153d1), object, local, pointer_default(unique)]
56interface ID3D12Debug3
57 : ID3D12Debug
58{
59 void SetEnableGPUBasedValidation(BOOL Enable);
60 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
61 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
62}
63
64[uuid(014b816e-9ec5-4a2f-a845-ffbe441ce13a), object, local, pointer_default(unique)]
65interface ID3D12Debug4
66 : ID3D12Debug3
67{
68 void DisableDebugLayer();
69}
70
71[uuid(548d6b12-09fa-40e0-9069-5dcd589a52c9), object, local, pointer_default(unique)]
72interface ID3D12Debug5
73 : ID3D12Debug4
74{
75 void SetEnableAutoName(BOOL Enable);
76}
77
78[uuid(82a816d6-5d01-4157-97d0-4975463fd1ed), object, local, pointer_default(unique)]
79interface ID3D12Debug6
80 : ID3D12Debug5
81{
82 void SetForceLegacyBarrierValidation(BOOL Enable);
83}
84
85cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
86
87typedef enum D3D12_RLDO_FLAGS
88{
89 D3D12_RLDO_NONE = 0x0,
90 D3D12_RLDO_SUMMARY = 0x1,
91 D3D12_RLDO_DETAIL = 0x2,
92 D3D12_RLDO_IGNORE_INTERNAL = 0x4,
93
94} D3D12_RLDO_FLAGS;
95
96cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
97
98typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
99{
100 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
101 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
102 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
103 D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE
104} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
105
106typedef enum D3D12_DEBUG_FEATURE
107{
108 D3D12_DEBUG_FEATURE_NONE = 0x00,
109 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
110 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
111 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
112 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
113} D3D12_DEBUG_FEATURE;
114
115cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
116
117typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
118{
119 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
120 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
121 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
122 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
123 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
124} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
125
126typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
127{
128 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
129 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
130 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
131 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
132 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
133} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
134
135cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
136
137typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
138{
139 UINT MaxMessagesPerCommandList;
140 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
141 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
142} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
143
144typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
145{
146 FLOAT SlowdownFactor;
147} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
148
149typedef enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
150{
151 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED,
152 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED,
153 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE,
154 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT =
155 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
156} D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
157
158[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
159interface ID3D12DebugDevice1
160 : IUnknown
161{
162 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
163 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
164 HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
165}
166
167[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
168interface ID3D12DebugDevice
169 : IUnknown
170{
171 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
172 D3D12_DEBUG_FEATURE GetFeatureMask();
173 HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
174}
175
176[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
177interface ID3D12DebugDevice2
178 : ID3D12DebugDevice
179{
180 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
181 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
182}
183
184cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
185
186
187[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
188interface ID3D12DebugCommandQueue
189 : IUnknown
190{
191 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
192// TODO: Stale BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
193};
194
195[ uuid( 16be35a2-bfd6-49f2-bcae-eaae4aff862d ), object, local, pointer_default( unique ) ]
196interface ID3D12DebugCommandQueue1
197 : ID3D12DebugCommandQueue
198{
199 void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
200 void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
201};
202
203typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
204{
205 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
206} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
207
208typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
209{
210 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
211} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
212
213[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
214interface ID3D12DebugCommandList1
215 : IUnknown
216{
217 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
218 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
219 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
220};
221
222[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
223interface ID3D12DebugCommandList
224 : IUnknown
225{
226 BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
227 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
228 D3D12_DEBUG_FEATURE GetFeatureMask();
229};
230
231[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
232interface ID3D12DebugCommandList2
233 : ID3D12DebugCommandList
234{
235 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
236 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
237};
238
239[ uuid(197d5e15-4d37-4d34-af78-724cd70fdb1f), object, local, pointer_default( unique ) ]
240interface ID3D12DebugCommandList3
241 : ID3D12DebugCommandList2
242{
243 void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
244 void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
245};
246
247[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
248interface ID3D12SharingContract
249 : IUnknown
250{
251 void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
252 void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
253 void BeginCapturableWork([annotation("_In_")] REFGUID guid);
254 void EndCapturableWork([annotation("_In_")] REFGUID guid);
255};
256
257[uuid(86ca3b85-49ad-4b6e-aed5-eddb18540f41), object, local, pointer_default(unique)]
258interface ID3D12ManualWriteTrackingResource
259 : IUnknown
260{
261 void TrackWrite(
262 UINT Subresource,
263 [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange);
264};
265
266
267//==================================================================================================================================
268//
269// Info Queue
270//
271//==================================================================================================================================
272typedef enum D3D12_MESSAGE_CATEGORY {
273 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
274 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
275 D3D12_MESSAGE_CATEGORY_INITIALIZATION,
276 D3D12_MESSAGE_CATEGORY_CLEANUP,
277 D3D12_MESSAGE_CATEGORY_COMPILATION,
278 D3D12_MESSAGE_CATEGORY_STATE_CREATION,
279 D3D12_MESSAGE_CATEGORY_STATE_SETTING,
280 D3D12_MESSAGE_CATEGORY_STATE_GETTING,
281 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
282 D3D12_MESSAGE_CATEGORY_EXECUTION,
283 D3D12_MESSAGE_CATEGORY_SHADER,
284} D3D12_MESSAGE_CATEGORY;
285
286typedef enum D3D12_MESSAGE_SEVERITY {
287 D3D12_MESSAGE_SEVERITY_CORRUPTION,
288 D3D12_MESSAGE_SEVERITY_ERROR,
289 D3D12_MESSAGE_SEVERITY_WARNING,
290 D3D12_MESSAGE_SEVERITY_INFO,
291 D3D12_MESSAGE_SEVERITY_MESSAGE
292} D3D12_MESSAGE_SEVERITY;
293
294// Unique ID for every error
295// CAUTION: New enum values should be appended to the list only. Inserting
296// new enum values into the middle of the list results in changing the numeric
297// values of some ID's from one SDK release to the next. This in-turn breaks
298// PIX and customer tools/filters.
299typedef enum D3D12_MESSAGE_ID {
300 D3D12_MESSAGE_ID_UNKNOWN = 0,
301
302 //--------------------------------------------------------------------------
303 // Messages Used by Core
304 // Message IDs generated from core are at the beginning
305 // since the core changes less frequently than the debug layer.
306
307 // End of Messages used by Core
308 // ------------------------------------------------------------------------
309 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
310 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
311 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
312 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
313 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
314 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
315 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
316 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
317 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
318 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
319 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
320 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
321 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
322 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
323 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
324 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
325 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
326 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
327 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
328
329 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
330 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
331 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
332 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
333
334 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
335 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
336 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
337 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
338 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
339 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
340 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
341
342 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
343 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
344 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
345 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
346 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
347 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
348 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
349 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
350
351 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
352 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
353 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
354 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
355 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
356
357 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
358 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
359 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
360 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
361 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
362 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
363 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
364 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
365 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
366 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
367 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
368 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
369 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
370 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
371
372 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
373 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
374 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
375
376 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
377 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
378 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
379
380 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
381 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
382 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
383 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
384 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
385 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
386 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
387 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
388 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
389 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
390 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
391 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
392 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
393 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
394 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
395 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
396 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
397 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
398
399 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
400 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
401 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
402
403 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
404 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
405 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
406 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
407
408 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
409 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
410 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
411 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
412 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
413 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
414 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
415 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
416 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
417 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
418
419 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
420 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
421 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
422 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
423 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
424 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
425 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
426
427 D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
428 D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
429 D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
430
431 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
432
433 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
434 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
435 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
436 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
437 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
438 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
439 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
440 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
441 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
442 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
443 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
444 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
445 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
446 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
447
448 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
449 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
450 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
451
452 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
453
454 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
455 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
456 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
457
458 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
459 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
460 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
461 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
462 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
463
464 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
465 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
466 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
467 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
468
469 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
470 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
471 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
472 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
473
474 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
475 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
476 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
477 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
478
479 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
480
481 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
482
483 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
484 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
485 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
486
487 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
488 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
489 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
490 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
491 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
492 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
493 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
494
495 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
496 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
497 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
498 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
499 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
500 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
501 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
502 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
503
504 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
505
506 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
507
508 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
509 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
510 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
511 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
512 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
513 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
514 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
515
516 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
517 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
518 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
519 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
520 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
521 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
522 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
523
524 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
525 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
526
527 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
528 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
529
530 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
531 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
532
533 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
534 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
535 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
536 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
537 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
538 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
539 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
540 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
541 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
542 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
543 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
544 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
545 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
546 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
547 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
548 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
549 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
550 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
551 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
552 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
553 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
554 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
555 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
556 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
557 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
558 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
559 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
560 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
561 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
562 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
563 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
564
565 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
566 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
567 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
568 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
569 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
570 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
571 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
572 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
573 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
574 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
575 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
576 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
577
578 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
579 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
580 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
581 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
582 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
583 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
584 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
585 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
586 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
587 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
588 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
589 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
590
591 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
592 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
593 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
594 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
595 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
596 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
597 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
598 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
599 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
600 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
601 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
602 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
603
604 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
605 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
606 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
607 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
608 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
609 // This was shipped, but is no longer used. Do not reuse.
610 //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
611 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
612 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
613 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
614 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
615 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
616 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
617 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
618 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
619 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
620 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
621 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
622 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
623 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
624 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
625 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
626 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
627 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
628 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
629 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
630 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
631 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
632 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
633 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
634 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
635 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
636 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
637 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
638 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
639 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
640 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
641 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
642 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
643 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
644 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
645 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
646 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
647 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
648 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
649 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
650 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
651 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
652 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
653 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
654 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
655 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
656 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
657 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
658 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
659 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
660 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
661 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
662 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
663 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
664 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
665 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
666 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
667 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
668 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
669 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
670 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
671 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
672 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
673 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
674 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
675 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
676 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
677 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
678 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
679 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
680 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
681 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
682 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
683 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
684 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
685 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
686 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
687 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
688 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
689 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
690 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
691 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
692 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
693 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
694 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
695 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
696 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
697 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
698 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
699 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
700 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
701 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
702 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
703 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
704 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
705 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
706 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
707 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
708 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
709 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
710 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
711 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
712 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
713 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
714 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
715 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
716 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
717 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
718 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
719 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
720 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
721 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
722 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
723 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
724 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
725 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
726 // This was shipped, but is no longer used. Do not reuse.
727 //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
728 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
729 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
730 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
731 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
732 // Note: These are the same as the above two, with the original (incorrect) name
733 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
734 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
735 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
736 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
737 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
738 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
739 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
740
741 // These values shipped, but are no longer used. Do not reuse.
742 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
743 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
744 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
745 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
746 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
747 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
748 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
749 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
750 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
751 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
752 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
753 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
754 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
755 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
756 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
757 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
758 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
759 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
760 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
761 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
762 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
763 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
764 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
765 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
766 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
767 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
768 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
769 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
770 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
771 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
772 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
773 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
774 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
775 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
776 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
777 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
778 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
779 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
780 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
781 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
782 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
783 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
784 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
785 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
786 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
787 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
788 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
789 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
790 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
791 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
792 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
793 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
794 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
795 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
796 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
797 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
798 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
799 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
800 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
801 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
802 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
803 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
804
805 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
806 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
807 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
808 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
809
810 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
811 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
812 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
813
814 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
815 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
816 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
817 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
818 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
819 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
820 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
821 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
822 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
823 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
824 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
825 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
826 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
827 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
828 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
829
830 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
831 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
832
833 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
834 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
835 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
836 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
837 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
838 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
839 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
840 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
841 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
842 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
843
844 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
845 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
846 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
847 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
848 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
849 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
850 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
851 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
852 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
853 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
854
855 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
856 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
857
858 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
859
860 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
861
862 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
863
864 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
865
866 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
867 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
868 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
869 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
870
871 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
872 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
873
874 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
875
876 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
877 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
878 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
879 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
880 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
881 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
882 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
883 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
884
885 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
886 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
887 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
888 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
889
890 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
891 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
892 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
893 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
894
895 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
896 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
897 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
898
899 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
900
901 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
902
903 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
904
905 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
906
907 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
908
909 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
910
911 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
912
913 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
914
915 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
916 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
917 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
918 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
919 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
920 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
921 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
922
923 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
924 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
925 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
926 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
927 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
928
929 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
930
931 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
932
933 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
934 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
935 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
936 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
937 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
938 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
939 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
940 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
941 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
942 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
943 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
944 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
945 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
946
947 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
948
949 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
950
951 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
952 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
953 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
954 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
955
956 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
957 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
958 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
959
960 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
961
962 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
963
964 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
965
966 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
967 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
968 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
969 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
970
971 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
972 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
973
974 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
975
976 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
977 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
978 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
979
980 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
981 D3D12_MESSAGE_ID_END_EVENT = 1015,
982
983 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
984
985 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
986
987 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
988 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
989 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
990 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
991 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
992
993 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
994
995 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
996 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
997
998 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
999 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
1000 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
1001 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
1002 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
1003 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
1004 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
1005 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
1006 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
1007 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
1008 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
1009 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
1010 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
1011 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
1012 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
1013
1014 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
1015
1016 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
1017
1018 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
1019
1020 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
1021
1022 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
1023
1024 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
1025
1026 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
1027
1028 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
1029
1030 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
1031
1032 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
1033
1034 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
1035 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
1036 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
1037 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
1038 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
1039 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
1040 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
1041 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
1042 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
1043 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
1044 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
1045 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
1046 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
1047 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
1048 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
1049
1050 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
1051
1052 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
1053
1054 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
1055 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
1056 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
1057 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
1058 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
1059 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
1060 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
1061 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
1062 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
1063 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
1064
1065 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
1066
1067 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
1068
1069 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
1070 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
1071 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
1072
1073 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
1074 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
1075 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
1076
1077 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
1078 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
1079 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
1080 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
1081
1082 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
1083 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
1084 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
1085 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
1086
1087 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
1088 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
1089 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
1090
1091 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
1092 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
1093
1094 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
1095 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
1096 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
1097 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
1098
1099 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
1100 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
1101 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
1102
1103 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
1104
1105 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
1106 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
1107 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
1108
1109 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
1110
1111 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
1112 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
1113
1114 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
1115
1116 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
1117
1118 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
1119 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
1120 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
1121 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
1122 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
1123 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
1124 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
1125
1126 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
1127 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
1128 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
1129 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
1130
1131 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
1132
1133 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
1134 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
1135
1136 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
1137 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
1138 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
1139
1140 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
1141 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
1142 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
1143 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
1144
1145 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
1146
1147 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
1148 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
1149 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
1150 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
1151 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
1152 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
1153 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
1154 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
1155 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
1156 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
1157 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
1158 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
1159 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
1160 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
1161 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
1162 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
1163
1164 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
1165 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
1166
1167 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
1168
1169 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
1170
1171 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
1172
1173 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
1174 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
1175 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
1176 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
1177 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
1178
1179 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
1180 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
1181 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
1182 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
1183
1184 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
1185 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
1186 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
1187
1188 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
1189
1190 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
1191 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
1192 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
1193 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
1194 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
1195 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
1196
1197 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
1198 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
1199 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
1200
1201 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
1202 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
1203 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
1204
1205 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
1206 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
1207 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
1208
1209 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
1210 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
1211 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
1212
1213 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
1214 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
1215 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
1216 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
1217 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
1218 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
1219 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
1220 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
1221 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
1222 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
1223 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
1224 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
1225 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
1226
1227 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
1228 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
1229 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
1230 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
1231 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
1232 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
1233 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
1234 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
1235 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
1236
1237 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
1238 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
1239
1240 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
1241 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
1242
1243 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
1244
1245 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
1246 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
1247
1248 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
1249 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
1250 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
1251 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
1252
1253 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
1254 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
1255 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
1256
1257 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
1258 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
1259 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
1260 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
1261 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
1262
1263 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
1264
1265 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
1266 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
1267 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
1268 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
1269 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
1270 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
1271 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
1272 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
1273 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
1274 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
1275 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
1276 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
1277
1278 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
1279
1280 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
1281 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
1282
1283 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
1284
1285 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
1286
1287 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
1288 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
1289 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
1290 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
1291 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
1292 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
1293
1294 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
1295
1296
1297 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
1298 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
1299 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
1300 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
1301 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
1302 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
1303 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
1304 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
1305 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
1306 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
1307
1308 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
1309 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
1310 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
1311
1312 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
1313 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
1314 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
1315
1316 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
1317
1318 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
1319 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
1320
1321 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
1322 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
1323 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
1324
1325 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
1326
1327 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
1328 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
1329
1330 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
1331 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
1332 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
1333
1334 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
1335 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
1336 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
1337
1338 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
1339 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
1340 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
1341 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
1342
1343 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
1344 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
1345 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
1346 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
1347 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
1348 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
1349
1350 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
1351 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
1352 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
1353 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
1354 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
1355 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
1356 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
1357
1358 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
1359 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
1360 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
1361 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
1362 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
1363 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
1364 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
1365 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
1366 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
1367 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
1368 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
1369 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
1370 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
1371 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
1372 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
1373 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
1374 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
1375 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
1376 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
1377 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
1378 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
1379 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
1380 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
1381 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
1382 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
1383 D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
1384 D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
1385 D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
1386
1387 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
1388 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
1389 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
1390 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
1391 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
1392 D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
1393 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
1394
1395 D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
1396
1397 D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
1398
1399 D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
1400
1401 D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
1402
1403 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
1404
1405 D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
1406
1407 D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
1408
1409 D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
1410
1411 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
1412
1413 D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
1414
1415 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
1416 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
1417
1418 D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
1419
1420 D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
1421 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
1422
1423 D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
1424
1425 D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
1426
1427 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
1428
1429 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
1430
1431 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
1432 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
1433
1434 D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
1435
1436 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
1437 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
1438 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
1439 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
1440
1441 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
1442 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
1443 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
1444 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
1445
1446 D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
1447
1448 D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
1449
1450 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
1451 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
1452 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
1453 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
1454 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
1455 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
1456
1457 D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
1458 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
1459
1460 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
1461 D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
1462
1463 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
1464
1465 D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
1466 D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
1467
1468 D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
1469 D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
1470
1471 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
1472
1473 D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
1474
1475 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
1476 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
1477 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
1478 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
1479 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
1480 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
1481 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
1482 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
1483 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
1484 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
1485 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
1486 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
1487 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
1488 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
1489 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
1490 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
1491 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
1492 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
1493 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
1494 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
1495 D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
1496 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
1497 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
1498 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
1499 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
1500 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
1501 D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
1502 D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
1503 D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
1504 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
1505 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
1506 D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
1507 D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
1508 D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
1509 D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
1510 D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
1511 D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
1512 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
1513 D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
1514 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442, // This must be the last entry in the enum.
1515} D3D12_MESSAGE_ID;
1516
1517typedef struct D3D12_MESSAGE
1518{
1519 D3D12_MESSAGE_CATEGORY Category;
1520 D3D12_MESSAGE_SEVERITY Severity;
1521 D3D12_MESSAGE_ID ID;
1522 [annotation("_Field_size_(DescriptionByteLength)")] const char* pDescription;
1523 SIZE_T DescriptionByteLength;
1524} D3D12_MESSAGE;
1525
1526typedef struct D3D12_INFO_QUEUE_FILTER_DESC
1527{
1528 UINT NumCategories;
1529 [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
1530 UINT NumSeverities;
1531 [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
1532 UINT NumIDs;
1533 [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID* pIDList;
1534} D3D12_INFO_QUEUE_FILTER_DESC;
1535
1536// To use, memset to 0, then fill in what you need.
1537typedef struct D3D12_INFO_QUEUE_FILTER
1538{
1539 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
1540 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
1541} D3D12_INFO_QUEUE_FILTER;
1542
1543//=============================================================================
1544// ID3D12InfoQueue
1545//
1546// Logs D3D12 Messages.
1547// This interface can be queried from ID3D12Device, as long as the device
1548// was created with the debug layer.
1549//
1550//
1551cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
1552[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
1553interface ID3D12InfoQueue
1554 : IUnknown
1555{
1556 //=========================================================================
1557 // Methods for configuring how much data is stored in the queue.
1558
1559 // SetMessageCountLimit()
1560 // This sets how many messages are stored. When the queue is full,
1561 // new messages coming in push old messages out.
1562 // Passing -1 to SetMessageCountLimit means the queue has
1563 // unlimited size (go until out of memory or ClearStoredMessages()).
1564 // The default message count size is
1565 // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
1566 // Returns S_OK or E_INVALIDARG.
1567 HRESULT SetMessageCountLimit([annotation("_In_")] UINT64 MessageCountLimit);
1568
1569 // ClearStoredMessages
1570 void ClearStoredMessages();
1571
1572 //=========================================================================
1573 // Methods for retrieving data or statistics from the queue.
1574
1575 // GetMessage()
1576 // Retrieves messages, one at a time, from the queue which pass any
1577 // retrieval filter currently defined. If there is no retrieval filter,
1578 // all messages can be retrieved.
1579 // The MessageIndex parameter is a 0 based index into the results passing
1580 // the filter. The number of results is returned by
1581 // GetNumStoredMessagesAllowedByRetrievalFilter().
1582 //
1583 // Note this does not remove the message from the queue.
1584 //
1585 // pMessageByteLength inputs the size of the buffer passed in via
1586 // pMessage, and outputs the size of the message. pMessage can be NULL
1587 // when the size of the required buffer is being queried (return S_FALSE).
1588 //
1589 // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
1590 // it includes extra memory after the D3D12_MESSAGE for storing the string
1591 // description, which is pointed to from within D3D12_MESSAGE. Therefore
1592 // applications should check the size needed for pMessage as described above.
1593 //
1594 // Watch out for thread safety when making consecutive calls first to
1595 // determine the buffer size required and then to pass in the buffer and
1596 // retrieve the message, and also between calling
1597 // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
1598 // the results via GetMessagE().
1599 //
1600 // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
1601 HRESULT GetMessage(
1602 [annotation("_In_")] UINT64 MessageIndex,
1603 [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
1604 [annotation("_Inout_")] SIZE_T* pMessageByteLength);
1605
1606 // GetNumMessagesAllowedByStorageFilter()
1607 // Returns how many messages sent to the queue passed
1608 // whatever storage filter was active upon receipt of
1609 // the message.
1610 // This can be a larger value than the message count limit,
1611 // returned by GetMessageCountLimit(), since old messages are discarded
1612 // when the queue is full to prevent overflow.
1613 UINT64 GetNumMessagesAllowedByStorageFilter();
1614
1615 // GetNumMessagesDeniedByStorageFilter()
1616 UINT64 GetNumMessagesDeniedByStorageFilter();
1617
1618 // GetNumStoredMessages()
1619 // Returns how many messages are currently stored in the queue.
1620 UINT64 GetNumStoredMessages();
1621
1622 // GetNumStoredMessagesAllowedByRetrievalFilter()
1623 // Returns how many messages that are currently in the queue
1624 // pass any retrieval filter that is currently set.
1625 // The MessageIndex parameter to GetMessage() indexes
1626 // an array of this many results.
1627 UINT64 GetNumStoredMessagesAllowedByRetrievalFilter();
1628
1629 // GetNumMessagesDiscardedByMessageCountLimit()
1630 UINT64 GetNumMessagesDiscardedByMessageCountLimit();
1631
1632 // GetMessageCountLimit
1633 // This is how many messages can be stored in the queue.
1634 // When the queue is full, new messages coming in push old messages out.
1635 // -1 means there is no limit.
1636 UINT64 GetMessageCountLimit();
1637
1638 //=========================================================================
1639 // Methods for filtering what gets stored in the queue
1640
1641 // AddStorageFilterEntries()
1642 // Adds to the existing entries at top of stack
1643 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1644 HRESULT AddStorageFilterEntries(
1645 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1646
1647 // GetStorageFilter()
1648 // Gets all entries at top of stack.
1649 // The application must allocate the output buffer. The size required can be
1650 // queried by passing null for pFilter and looking at the returned
1651 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1652 // pointers - these will point to locations within the same
1653 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1654 // data. So the application needs to only allocate/free the memory for pFilter.
1655 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1656 HRESULT GetStorageFilter(
1657 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1658 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1659
1660 // ClearStorageFilter()
1661 // Clears filter at the top of the stack (if there is one)
1662 void ClearStorageFilter();
1663
1664 // PushEmptyStorageFilter()
1665 // Push an empty storage filter on the stack to allow local filtering changes.
1666 // For convenience, this is automatically called by SetStorageFilter()
1667 // if the stack is empty. Thus if the stack is not needed, filters can be
1668 // defined without ever bothering to push or pop.
1669 // Returns S_OK or E_OUTOFMEMORY
1670 HRESULT PushEmptyStorageFilter();
1671
1672 // PushCopyOfStorageFilter()
1673 // Push a copy of the current filter so that local modifications can be made
1674 // starting from what currently exists.
1675 // Returns S_OK or E_OUTOFMEMORY
1676 HRESULT PushCopyOfStorageFilter();
1677
1678 // PushStorageFilter()
1679 // Push a filter passed as a parameter onto the stack. This is
1680 // just a helper for calling PushEmptyStorageFilter() followed
1681 // by AddStorageFilterEntries()
1682 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1683 HRESULT PushStorageFilter(
1684 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1685
1686 // PopStorageFilter()
1687 // Pop the current storage filter off the stack (if there is one)
1688 void PopStorageFilter();
1689
1690 // GetStorageFilterStackSize()
1691 UINT GetStorageFilterStackSize();
1692
1693 //=========================================================================
1694 // Methods for filtering what gets read out of the queue by GetMessage().
1695
1696 // AddRetrievalFilterEntries()
1697 // Adds to the existing entries at top of stack
1698 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1699 HRESULT AddRetrievalFilterEntries(
1700 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1701
1702 // GetRetrievalFilter()
1703 // Gets all entries at top of stack.
1704 // The application must allocate the output buffer. The size required can be
1705 // queried by passing null for pFilter and looking at the returned
1706 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1707 // pointers - these will point to locations within the same
1708 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1709 // data. So the application needs to only allocate/free the memory for pFilter.
1710 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1711 HRESULT GetRetrievalFilter(
1712 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1713 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1714
1715 // ClearRetrievalFilter()
1716 // Clears filter at the top of the stack (if there is one)
1717 void ClearRetrievalFilter();
1718
1719 // PushEmptyRetrievalFilter()
1720 // Push an empty storage filter on the stack to allow local filtering changes.
1721 // For convenience, this is automatically called by SetRetrievalFilter()
1722 // if the stack is empty. Thus if the stack is not needed, filters can be
1723 // defined without ever bothering to push or pop.
1724 // Returns S_OK or E_OUTOFMEMORY
1725 HRESULT PushEmptyRetrievalFilter();
1726
1727 // PushCopyOfRetrievalFilter()
1728 // Push a copy of the current filter so that local modifications can be made
1729 // starting from what currently exists.
1730 // Returns S_OK or E_OUTOFMEMORY
1731 HRESULT PushCopyOfRetrievalFilter();
1732
1733 // PushRetrievalFilter()
1734 // Push a filter passed as a parameter onto the stack. This is
1735 // just a helper for calling PushEmptyRetrievalFilter() followed
1736 // by AddRetrievalFilterEntries()
1737 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1738 HRESULT PushRetrievalFilter(
1739 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1740
1741 // PopRetrievalFilter()
1742 // Pop the current storage filter off the stack (if there is one)
1743 void PopRetrievalFilter();
1744
1745 // GetRetrievalFilterStackSize()
1746 UINT GetRetrievalFilterStackSize();
1747
1748 //=========================================================================
1749 // Methods for adding entries to the queue.
1750
1751 // AddMessage()
1752 // This is used by D3D12 components to log messages. Nothing stops
1753 // applications from calling this, but it isn’t particularly useful.
1754 // If an application wishes to insert custom strings into the queue,
1755 // AddApplicationMessage() below is suggested. See below.
1756 //
1757 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1758 HRESULT AddMessage(
1759 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1760 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1761 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1762 [annotation("_In_")] LPCSTR pDescription);
1763
1764 // AddApplicationMessage()
1765 // This is a convenience for applications that want
1766 // to insert strings of their own into the queue, perhaps to log issues
1767 // of its own, or to mark out points in time in the queue. This
1768 // has the same effect as calling AddMessage() above with the
1769 // following settings:
1770 // Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
1771 // Severity = <app selects from D3D12_MESSAGE_SEVERITY>
1772 // ID = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
1773 // pDescription = <application provided string>
1774 //
1775 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1776 HRESULT AddApplicationMessage(
1777 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1778 [annotation("_In_")] LPCSTR pDescription);
1779
1780 //=========================================================================
1781 // Methods for breaking on errors that pass the storage filter.
1782 HRESULT SetBreakOnCategory(
1783 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1784 [annotation("_In_")] BOOL bEnable);
1785 HRESULT SetBreakOnSeverity(
1786 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1787 [annotation("_In_")] BOOL bEnable);
1788 HRESULT SetBreakOnID(
1789 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1790 [annotation("_In_")] BOOL bEnable);
1791
1792 BOOL GetBreakOnCategory(
1793 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category);
1794 BOOL GetBreakOnSeverity(
1795 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity);
1796 BOOL GetBreakOnID(
1797 [annotation("_In_")] D3D12_MESSAGE_ID ID);
1798
1799 //=========================================================================
1800 // Methods for globally muting debug spte from the InfoQueue
1801 void SetMuteDebugOutput(
1802 [annotation("_In_")] BOOL bMute);
1803 BOOL GetMuteDebugOutput();
1804};
1805
1806typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
1807{
1808 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
1809 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
1810
1811} D3D12_MESSAGE_CALLBACK_FLAGS;
1812
1813cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
1814
1815typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
1816 D3D12_MESSAGE_SEVERITY Severity,
1817 D3D12_MESSAGE_ID ID,
1818 LPCSTR pDescription,
1819 void* pContext);
1820
1821[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
1822interface ID3D12InfoQueue1
1823 : ID3D12InfoQueue
1824{
1825 HRESULT RegisterMessageCallback(
1826 [annotation("_In_")] D3D12MessageFunc CallbackFunc,
1827 [annotation("_In_")] D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
1828 [annotation("_Inout_")] void* pContext,
1829 [annotation("_Inout_")] DWORD *pCallbackCookie);
1830
1831 HRESULT UnregisterMessageCallback(
1832 [annotation("_In_")] DWORD CallbackCookie);
1833};
1834
1835
1836
1837cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1838#pragma endregion
1839
1840
1841cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
1842cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
1843cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
1844cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
1845cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
1846cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
1847cpp_quote( "DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);" )
1848cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
1849cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
1850cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
1851cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
1852cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);" )
1853cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
1854cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
1855cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
1856cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);" )
1857cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
1858cpp_quote( "DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);" )
1859cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
1860cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12shader.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12shader.h
new file mode 100644
index 0000000..56455b5
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12shader.h
@@ -0,0 +1,495 @@
1//////////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6// File: D3D12Shader.h
7// Content: D3D12 Shader Types and APIs
8//
9//////////////////////////////////////////////////////////////////////////////
10
11#ifndef __D3D12SHADER_H__
12#define __D3D12SHADER_H__
13
14#include "d3dcommon.h"
15
16typedef enum D3D12_SHADER_VERSION_TYPE
17{
18 D3D12_SHVER_PIXEL_SHADER = 0,
19 D3D12_SHVER_VERTEX_SHADER = 1,
20 D3D12_SHVER_GEOMETRY_SHADER = 2,
21
22 // D3D11 Shaders
23 D3D12_SHVER_HULL_SHADER = 3,
24 D3D12_SHVER_DOMAIN_SHADER = 4,
25 D3D12_SHVER_COMPUTE_SHADER = 5,
26
27 // D3D12 Shaders
28 D3D12_SHVER_LIBRARY = 6,
29
30 D3D12_SHVER_RAY_GENERATION_SHADER = 7,
31 D3D12_SHVER_INTERSECTION_SHADER = 8,
32 D3D12_SHVER_ANY_HIT_SHADER = 9,
33 D3D12_SHVER_CLOSEST_HIT_SHADER = 10,
34 D3D12_SHVER_MISS_SHADER = 11,
35 D3D12_SHVER_CALLABLE_SHADER = 12,
36
37 D3D12_SHVER_MESH_SHADER = 13,
38 D3D12_SHVER_AMPLIFICATION_SHADER = 14,
39
40 D3D12_SHVER_NODE_SHADER = 15,
41
42 D3D12_SHVER_RESERVED0 = 0xFFF0,
43} D3D12_SHADER_VERSION_TYPE;
44
45#define D3D12_SHVER_GET_TYPE(_Version) \
46 (((_Version) >> 16) & 0xffff)
47#define D3D12_SHVER_GET_MAJOR(_Version) \
48 (((_Version) >> 4) & 0xf)
49#define D3D12_SHVER_GET_MINOR(_Version) \
50 (((_Version) >> 0) & 0xf)
51
52// Slot ID for library function return
53#define D3D_RETURN_PARAMETER_INDEX (-1)
54
55typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
56
57typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
58
59
60typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
61{
62 LPCSTR SemanticName; // Name of the semantic
63 UINT SemanticIndex; // Index of the semantic
64 UINT Register; // Number of member variables
65 D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
66 D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.)
67 BYTE Mask; // Mask to indicate which components of the register
68 // are used (combination of D3D10_COMPONENT_MASK values)
69 BYTE ReadWriteMask; // Mask to indicate whether a given component is
70 // never written (if this is an output signature) or
71 // always read (if this is an input signature).
72 // (combination of D3D_MASK_* values)
73 UINT Stream; // Stream index
74 D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision
75} D3D12_SIGNATURE_PARAMETER_DESC;
76
77typedef struct _D3D12_SHADER_BUFFER_DESC
78{
79 LPCSTR Name; // Name of the constant buffer
80 D3D_CBUFFER_TYPE Type; // Indicates type of buffer content
81 UINT Variables; // Number of member variables
82 UINT Size; // Size of CB (in bytes)
83 UINT uFlags; // Buffer description flags
84} D3D12_SHADER_BUFFER_DESC;
85
86typedef struct _D3D12_SHADER_VARIABLE_DESC
87{
88 LPCSTR Name; // Name of the variable
89 UINT StartOffset; // Offset in constant buffer's backing store
90 UINT Size; // Size of variable (in bytes)
91 UINT uFlags; // Variable flags
92 LPVOID DefaultValue; // Raw pointer to default value
93 UINT StartTexture; // First texture index (or -1 if no textures used)
94 UINT TextureSize; // Number of texture slots possibly used.
95 UINT StartSampler; // First sampler index (or -1 if no textures used)
96 UINT SamplerSize; // Number of sampler slots possibly used.
97} D3D12_SHADER_VARIABLE_DESC;
98
99typedef struct _D3D12_SHADER_TYPE_DESC
100{
101 D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
102 D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
103 UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
104 UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
105 UINT Elements; // Number of elements (0 if not an array)
106 UINT Members; // Number of members (0 if not a structure)
107 UINT Offset; // Offset from the start of structure (0 if not a structure member)
108 LPCSTR Name; // Name of type, can be NULL
109} D3D12_SHADER_TYPE_DESC;
110
111typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
112
113typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
114
115typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;
116
117typedef struct _D3D12_SHADER_DESC
118{
119 UINT Version; // Shader version
120 LPCSTR Creator; // Creator string
121 UINT Flags; // Shader compilation/parse flags
122
123 UINT ConstantBuffers; // Number of constant buffers
124 UINT BoundResources; // Number of bound resources
125 UINT InputParameters; // Number of parameters in the input signature
126 UINT OutputParameters; // Number of parameters in the output signature
127
128 UINT InstructionCount; // Number of emitted instructions
129 UINT TempRegisterCount; // Number of temporary registers used
130 UINT TempArrayCount; // Number of temporary arrays used
131 UINT DefCount; // Number of constant defines
132 UINT DclCount; // Number of declarations (input + output)
133 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
134 UINT TextureLoadInstructions; // Number of texture load instructions
135 UINT TextureCompInstructions; // Number of texture comparison instructions
136 UINT TextureBiasInstructions; // Number of texture bias instructions
137 UINT TextureGradientInstructions; // Number of texture gradient instructions
138 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
139 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
140 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
141 UINT StaticFlowControlCount; // Number of static flow control instructions used
142 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
143 UINT MacroInstructionCount; // Number of macro instructions used
144 UINT ArrayInstructionCount; // Number of array instructions used
145 UINT CutInstructionCount; // Number of cut instructions used
146 UINT EmitInstructionCount; // Number of emit instructions used
147 D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology
148 UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count
149 D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive
150 UINT PatchConstantParameters; // Number of parameters in the patch constant signature
151 UINT cGSInstanceCount; // Number of Geometry shader instances
152 UINT cControlPoints; // Number of control points in the HS->DS stage
153 D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator
154 D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator
155 D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline)
156 // instruction counts
157 UINT cBarrierInstructions; // Number of barrier instructions in a compute shader
158 UINT cInterlockedInstructions; // Number of interlocked instructions
159 UINT cTextureStoreInstructions; // Number of texture writes
160} D3D12_SHADER_DESC;
161
162typedef struct _D3D12_SHADER_INPUT_BIND_DESC
163{
164 LPCSTR Name; // Name of the resource
165 D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
166 UINT BindPoint; // Starting bind point
167 UINT BindCount; // Number of contiguous bind points (for arrays)
168
169 UINT uFlags; // Input binding flags
170 D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
171 D3D_SRV_DIMENSION Dimension; // Dimension (if texture)
172 UINT NumSamples; // Number of samples (0 if not MS texture)
173 UINT Space; // Register space
174 UINT uID; // Range ID in the bytecode
175} D3D12_SHADER_INPUT_BIND_DESC;
176
177#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001
178#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002
179#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004
180#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008
181#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010
182#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020
183#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040
184#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080
185#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100
186#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200
187#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400
188#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800
189#define D3D_SHADER_REQUIRES_ROVS 0x00001000
190#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000
191#define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000
192#define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000
193#define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000
194#define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000
195#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000
196#define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000
197#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000
198#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000
199#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000
200#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000
201#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000
202#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000
203#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
204#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
205#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
206#define D3D_SHADER_REQUIRES_ADVANCED_TEXTURE_OPS 0x20000000
207#define D3D_SHADER_REQUIRES_WRITEABLE_MSAA_TEXTURES 0x40000000
208#define D3D_SHADER_REQUIRES_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
209#define D3D_SHADER_REQUIRES_EXTENDED_COMMAND_INFO 0x100000000ull
210
211
212typedef struct _D3D12_LIBRARY_DESC
213{
214 LPCSTR Creator; // The name of the originator of the library.
215 UINT Flags; // Compilation flags.
216 UINT FunctionCount; // Number of functions exported from the library.
217} D3D12_LIBRARY_DESC;
218
219typedef struct _D3D12_FUNCTION_DESC
220{
221 UINT Version; // Shader version
222 LPCSTR Creator; // Creator string
223 UINT Flags; // Shader compilation/parse flags
224
225 UINT ConstantBuffers; // Number of constant buffers
226 UINT BoundResources; // Number of bound resources
227
228 UINT InstructionCount; // Number of emitted instructions
229 UINT TempRegisterCount; // Number of temporary registers used
230 UINT TempArrayCount; // Number of temporary arrays used
231 UINT DefCount; // Number of constant defines
232 UINT DclCount; // Number of declarations (input + output)
233 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
234 UINT TextureLoadInstructions; // Number of texture load instructions
235 UINT TextureCompInstructions; // Number of texture comparison instructions
236 UINT TextureBiasInstructions; // Number of texture bias instructions
237 UINT TextureGradientInstructions; // Number of texture gradient instructions
238 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
239 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
240 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
241 UINT StaticFlowControlCount; // Number of static flow control instructions used
242 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
243 UINT MacroInstructionCount; // Number of macro instructions used
244 UINT ArrayInstructionCount; // Number of array instructions used
245 UINT MovInstructionCount; // Number of mov instructions used
246 UINT MovcInstructionCount; // Number of movc instructions used
247 UINT ConversionInstructionCount; // Number of type conversion instructions used
248 UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used
249 D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code
250 UINT64 RequiredFeatureFlags; // Required feature flags
251
252 LPCSTR Name; // Function name
253 INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return)
254 BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine
255 BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob
256 BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob
257} D3D12_FUNCTION_DESC;
258
259typedef struct _D3D12_PARAMETER_DESC
260{
261 LPCSTR Name; // Parameter name.
262 LPCSTR SemanticName; // Parameter semantic name (+index).
263 D3D_SHADER_VARIABLE_TYPE Type; // Element type.
264 D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix.
265 UINT Rows; // Rows are for matrix parameters.
266 UINT Columns; // Components or Columns in matrix.
267 D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode.
268 D3D_PARAMETER_FLAGS Flags; // Parameter modifiers.
269
270 UINT FirstInRegister; // The first input register for this parameter.
271 UINT FirstInComponent; // The first input register component for this parameter.
272 UINT FirstOutRegister; // The first output register for this parameter.
273 UINT FirstOutComponent; // The first output register component for this parameter.
274} D3D12_PARAMETER_DESC;
275
276
277//////////////////////////////////////////////////////////////////////////////
278// Interfaces ////////////////////////////////////////////////////////////////
279//////////////////////////////////////////////////////////////////////////////
280
281typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
282typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;
283
284typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
285typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;
286
287typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
288typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;
289
290typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
291typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;
292
293typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
294typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;
295
296typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
297typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;
298
299typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
300typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;
301
302
303// {E913C351-783D-48CA-A1D1-4F306284AD56}
304interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
305DEFINE_GUID(IID_ID3D12ShaderReflectionType,
3060xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);
307
308#undef INTERFACE
309#define INTERFACE ID3D12ShaderReflectionType
310
311DECLARE_INTERFACE(ID3D12ShaderReflectionType)
312{
313 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE;
314
315 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE;
316 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE;
317 STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE;
318
319 STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
320 STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE;
321 STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE;
322 STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE;
323 STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE;
324 STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
325 STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE;
326};
327
328// {8337A8A6-A216-444A-B2F4-314733A73AEA}
329interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable;
330DEFINE_GUID(IID_ID3D12ShaderReflectionVariable,
3310x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea);
332
333#undef INTERFACE
334#define INTERFACE ID3D12ShaderReflectionVariable
335
336DECLARE_INTERFACE(ID3D12ShaderReflectionVariable)
337{
338 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE;
339
340 STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE;
341 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE;
342
343 STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE;
344};
345
346// {C59598B4-48B3-4869-B9B1-B1618B14A8B7}
347interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer;
348DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer,
3490xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7);
350
351#undef INTERFACE
352#define INTERFACE ID3D12ShaderReflectionConstantBuffer
353
354DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer)
355{
356 STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE;
357
358 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE;
359 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
360};
361
362// The ID3D12ShaderReflection IID may change from SDK version to SDK version
363// if the reflection API changes. This prevents new code with the new API
364// from working with an old binary. Recompiling with the new header
365// will pick up the new IID.
366
367// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}
368interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection;
369DEFINE_GUID(IID_ID3D12ShaderReflection,
3700x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e);
371
372#undef INTERFACE
373#define INTERFACE ID3D12ShaderReflection
374
375DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown)
376{
377 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid,
378 _Out_ LPVOID *ppv) PURE;
379 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
380 STDMETHOD_(ULONG, Release)(THIS) PURE;
381
382 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE;
383
384 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE;
385 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
386
387 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
388 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
389
390 STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
391 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
392 STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
393 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
394 STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex,
395 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
396
397 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
398
399 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
400 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
401
402 STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE;
403 STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE;
404 STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE;
405 STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE;
406
407 STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE;
408 STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE;
409
410 STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE;
411 STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE;
412
413 STDMETHOD_(UINT, GetThreadGroupSize)(THIS_
414 _Out_opt_ UINT* pSizeX,
415 _Out_opt_ UINT* pSizeY,
416 _Out_opt_ UINT* pSizeZ) PURE;
417
418 STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE;
419};
420
421// {8E349D19-54DB-4A56-9DC9-119D87BDB804}
422interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection;
423DEFINE_GUID(IID_ID3D12LibraryReflection,
4240x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4);
425
426#undef INTERFACE
427#define INTERFACE ID3D12LibraryReflection
428
429DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown)
430{
431 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE;
432 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
433 STDMETHOD_(ULONG, Release)(THIS) PURE;
434
435 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE;
436
437 STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE;
438};
439
440// {1108795C-2772-4BA9-B2A8-D464DC7E2799}
441interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection;
442DEFINE_GUID(IID_ID3D12FunctionReflection,
4430x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99);
444
445#undef INTERFACE
446#define INTERFACE ID3D12FunctionReflection
447
448DECLARE_INTERFACE(ID3D12FunctionReflection)
449{
450 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE;
451
452 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE;
453 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
454
455 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
456 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
457
458 STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
459
460 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
461 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
462
463 // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value.
464 STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE;
465};
466
467// {EC25F42D-7006-4F2B-B33E-02CC3375733F}
468interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection;
469DEFINE_GUID(IID_ID3D12FunctionParameterReflection,
4700xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f);
471
472#undef INTERFACE
473#define INTERFACE ID3D12FunctionParameterReflection
474
475DECLARE_INTERFACE(ID3D12FunctionParameterReflection)
476{
477 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE;
478};
479
480
481//////////////////////////////////////////////////////////////////////////////
482// APIs //////////////////////////////////////////////////////////////////////
483//////////////////////////////////////////////////////////////////////////////
484
485#ifdef __cplusplus
486extern "C" {
487#endif //__cplusplus
488
489#ifdef __cplusplus
490}
491#endif //__cplusplus
492
493#endif //__D3D12SHADER_H__
494
495
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.h
new file mode 100644
index 0000000..843e78d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.h
@@ -0,0 +1,10726 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12video_h__
39#define __d3d12video_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
56#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
57typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
58
59#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12VideoDevice_FWD_DEFINED__
63#define __ID3D12VideoDevice_FWD_DEFINED__
64typedef interface ID3D12VideoDevice ID3D12VideoDevice;
65
66#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
70#define __ID3D12VideoDecoder_FWD_DEFINED__
71typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
72
73#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
77#define __ID3D12VideoProcessor_FWD_DEFINED__
78typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
79
80#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
84#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
85typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
86
87#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
91#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
92typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
93
94#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
98#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
99typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
100
101#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
105#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
106typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
107
108#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
112#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
113typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
114
115#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
119#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
120typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
121
122#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
126#define __ID3D12VideoDevice1_FWD_DEFINED__
127typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
128
129#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
133#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
134typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
135
136#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
140#define __ID3D12VideoDecoder1_FWD_DEFINED__
141typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
142
143#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
147#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
148typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
149
150#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
154#define __ID3D12VideoProcessor1_FWD_DEFINED__
155typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
156
157#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
161#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
162typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
163
164#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
168#define __ID3D12VideoDevice2_FWD_DEFINED__
169typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
170
171#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
175#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
176typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
177
178#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
182#define __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
183typedef interface ID3D12VideoDecodeCommandList3 ID3D12VideoDecodeCommandList3;
184
185#endif /* __ID3D12VideoDecodeCommandList3_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
189#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
190typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
191
192#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12VideoProcessCommandList3_FWD_DEFINED__
196#define __ID3D12VideoProcessCommandList3_FWD_DEFINED__
197typedef interface ID3D12VideoProcessCommandList3 ID3D12VideoProcessCommandList3;
198
199#endif /* __ID3D12VideoProcessCommandList3_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
203#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
204typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
205
206#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
210#define __ID3D12VideoEncoder_FWD_DEFINED__
211typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
212
213#endif /* __ID3D12VideoEncoder_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
217#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
218typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
219
220#endif /* __ID3D12VideoEncoderHeap_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
224#define __ID3D12VideoDevice3_FWD_DEFINED__
225typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
226
227#endif /* __ID3D12VideoDevice3_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
231#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
232typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
233
234#endif /* __ID3D12VideoEncodeCommandList2_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
238#define __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
239typedef interface ID3D12VideoEncodeCommandList3 ID3D12VideoEncodeCommandList3;
240
241#endif /* __ID3D12VideoEncodeCommandList3_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12VideoEncoderHeap1_FWD_DEFINED__
245#define __ID3D12VideoEncoderHeap1_FWD_DEFINED__
246typedef interface ID3D12VideoEncoderHeap1 ID3D12VideoEncoderHeap1;
247
248#endif /* __ID3D12VideoEncoderHeap1_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12VideoDevice4_FWD_DEFINED__
252#define __ID3D12VideoDevice4_FWD_DEFINED__
253typedef interface ID3D12VideoDevice4 ID3D12VideoDevice4;
254
255#endif /* __ID3D12VideoDevice4_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
259#define __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
260typedef interface ID3D12VideoEncodeCommandList4 ID3D12VideoEncodeCommandList4;
261
262#endif /* __ID3D12VideoEncodeCommandList4_FWD_DEFINED__ */
263
264
265/* header files for imported files */
266#include "oaidl.h"
267#include "ocidl.h"
268#include "dxgicommon.h"
269#include "d3d12.h"
270
271#ifdef __cplusplus
272extern "C"{
273#endif
274
275
276/* interface __MIDL_itf_d3d12video_0000_0000 */
277/* [local] */
278
279#include <winapifamily.h>
280#pragma region App Family
281#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
282typedef
283enum D3D12_VIDEO_FIELD_TYPE
284 {
285 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
286 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
287 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
288 } D3D12_VIDEO_FIELD_TYPE;
289
290typedef
291enum D3D12_VIDEO_FRAME_STEREO_FORMAT
292 {
293 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
294 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
295 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
296 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
297 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
298 } D3D12_VIDEO_FRAME_STEREO_FORMAT;
299
300typedef struct D3D12_VIDEO_FORMAT
301 {
302 DXGI_FORMAT Format;
303 DXGI_COLOR_SPACE_TYPE ColorSpace;
304 } D3D12_VIDEO_FORMAT;
305
306typedef struct D3D12_VIDEO_SAMPLE
307 {
308 UINT Width;
309 UINT Height;
310 D3D12_VIDEO_FORMAT Format;
311 } D3D12_VIDEO_SAMPLE;
312
313typedef
314enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
315 {
316 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
317 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
318 } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
319
320typedef
321enum D3D12_FEATURE_VIDEO
322 {
323 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
324 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
325 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
326 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
327 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
328 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
329 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
330 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
331 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
332 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
333 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
334 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
335 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
336 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
337 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
338 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
339 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
340 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
341 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
342 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
343 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
344 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
345 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
346 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
347 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
348 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
349 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
350 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
351 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
352 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
353 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
354 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
355 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
356 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
357 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
358 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
359 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
360 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
361 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
362 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
363 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
364 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
365 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
366 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
367 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
368 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
369 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
370 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
371 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
372 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57
373 } D3D12_FEATURE_VIDEO;
374
375typedef
376enum D3D12_BITSTREAM_ENCRYPTION_TYPE
377 {
378 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
379 } D3D12_BITSTREAM_ENCRYPTION_TYPE;
380
381typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
382 {
383 GUID DecodeProfile;
384 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
385 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
386 } D3D12_VIDEO_DECODE_CONFIGURATION;
387
388typedef struct D3D12_VIDEO_DECODER_DESC
389 {
390 UINT NodeMask;
391 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
392 } D3D12_VIDEO_DECODER_DESC;
393
394typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
395 {
396 UINT NodeMask;
397 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
398 UINT DecodeWidth;
399 UINT DecodeHeight;
400 DXGI_FORMAT Format;
401 DXGI_RATIONAL FrameRate;
402 UINT BitRate;
403 UINT MaxDecodePictureBufferCount;
404 } D3D12_VIDEO_DECODER_HEAP_DESC;
405
406typedef struct D3D12_VIDEO_SIZE_RANGE
407 {
408 UINT MaxWidth;
409 UINT MaxHeight;
410 UINT MinWidth;
411 UINT MinHeight;
412 } D3D12_VIDEO_SIZE_RANGE;
413
414typedef
415enum D3D12_VIDEO_PROCESS_FILTER
416 {
417 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
418 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
419 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
420 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
421 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
422 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
423 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
424 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
425 } D3D12_VIDEO_PROCESS_FILTER;
426
427typedef
428enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
429 {
430 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
431 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
432 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
433 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
434 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
435 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
436 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
437 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
438 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
439 } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
440
441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )
442typedef
443enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
444 {
445 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
446 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
447 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
448 } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
449
450DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )
451typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
452 {
453 BOOL Enable;
454 FLOAT Alpha;
455 } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
456
457typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
458 {
459 BOOL Enable;
460 FLOAT Lower;
461 FLOAT Upper;
462 } D3D12_VIDEO_PROCESS_LUMA_KEY;
463
464typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
465 {
466 DXGI_FORMAT Format;
467 DXGI_COLOR_SPACE_TYPE ColorSpace;
468 DXGI_RATIONAL SourceAspectRatio;
469 DXGI_RATIONAL DestinationAspectRatio;
470 DXGI_RATIONAL FrameRate;
471 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
472 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
473 BOOL EnableOrientation;
474 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
475 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
476 D3D12_VIDEO_FIELD_TYPE FieldType;
477 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
478 BOOL EnableAlphaBlending;
479 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
480 UINT NumPastFrames;
481 UINT NumFutureFrames;
482 BOOL EnableAutoProcessing;
483 } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
484
485typedef
486enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
487 {
488 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
489 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
490 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
491 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
492 } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
493
494typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
495 {
496 DXGI_FORMAT Format;
497 DXGI_COLOR_SPACE_TYPE ColorSpace;
498 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
499 UINT AlphaFillModeSourceStreamIndex;
500 FLOAT BackgroundColor[ 4 ];
501 DXGI_RATIONAL FrameRate;
502 BOOL EnableStereo;
503 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
504
505
506
507extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
508extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
509
510#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
511#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
512
513/* interface ID3D12VideoDecoderHeap */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
522 ID3D12VideoDecoderHeap : public ID3D12Pageable
523 {
524 public:
525#if defined(_MSC_VER) || !defined(_WIN32)
526 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
527#else
528 virtual D3D12_VIDEO_DECODER_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
529 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal) = 0;
530#endif
531
532 };
533
534
535#else /* C style interface */
536
537 typedef struct ID3D12VideoDecoderHeapVtbl
538 {
539 BEGIN_INTERFACE
540
541 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
542 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
543 ID3D12VideoDecoderHeap * This,
544 REFIID riid,
545 _COM_Outptr_ void **ppvObject);
546
547 DECLSPEC_XFGVIRT(IUnknown, AddRef)
548 ULONG ( STDMETHODCALLTYPE *AddRef )(
549 ID3D12VideoDecoderHeap * This);
550
551 DECLSPEC_XFGVIRT(IUnknown, Release)
552 ULONG ( STDMETHODCALLTYPE *Release )(
553 ID3D12VideoDecoderHeap * This);
554
555 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
556 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
557 ID3D12VideoDecoderHeap * This,
558 _In_ REFGUID guid,
559 _Inout_ UINT *pDataSize,
560 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
561
562 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
563 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
564 ID3D12VideoDecoderHeap * This,
565 _In_ REFGUID guid,
566 _In_ UINT DataSize,
567 _In_reads_bytes_opt_( DataSize ) const void *pData);
568
569 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
570 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
571 ID3D12VideoDecoderHeap * This,
572 _In_ REFGUID guid,
573 _In_opt_ const IUnknown *pData);
574
575 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
576 HRESULT ( STDMETHODCALLTYPE *SetName )(
577 ID3D12VideoDecoderHeap * This,
578 _In_z_ LPCWSTR Name);
579
580 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
581 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
582 ID3D12VideoDecoderHeap * This,
583 REFIID riid,
584 _COM_Outptr_opt_ void **ppvDevice);
585
586 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
587#if !defined(_WIN32)
588 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
589 ID3D12VideoDecoderHeap * This);
590
591#else
592 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
593 ID3D12VideoDecoderHeap * This,
594 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
595
596#endif
597
598 END_INTERFACE
599 } ID3D12VideoDecoderHeapVtbl;
600
601 interface ID3D12VideoDecoderHeap
602 {
603 CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
604 };
605
606
607
608#ifdef COBJMACROS
609
610
611#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
612 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
613
614#define ID3D12VideoDecoderHeap_AddRef(This) \
615 ( (This)->lpVtbl -> AddRef(This) )
616
617#define ID3D12VideoDecoderHeap_Release(This) \
618 ( (This)->lpVtbl -> Release(This) )
619
620
621#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
622 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
623
624#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
625 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
626
627#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
628 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
629
630#define ID3D12VideoDecoderHeap_SetName(This,Name) \
631 ( (This)->lpVtbl -> SetName(This,Name) )
632
633
634#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
635 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
636
637
638#if !defined(_WIN32)
639
640#define ID3D12VideoDecoderHeap_GetDesc(This) \
641 ( (This)->lpVtbl -> GetDesc(This) )
642#else
643#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
644 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
645#endif
646
647#endif /* COBJMACROS */
648
649
650#endif /* C style interface */
651
652
653
654
655#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
656
657
658#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
659#define __ID3D12VideoDevice_INTERFACE_DEFINED__
660
661/* interface ID3D12VideoDevice */
662/* [unique][local][object][uuid] */
663
664
665EXTERN_C const IID IID_ID3D12VideoDevice;
666
667#if defined(__cplusplus) && !defined(CINTERFACE)
668
669 MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
670 ID3D12VideoDevice : public IUnknown
671 {
672 public:
673 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
674 D3D12_FEATURE_VIDEO FeatureVideo,
675 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
676 UINT FeatureSupportDataSize) = 0;
677
678 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
679 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
680 _In_ REFIID riid,
681 _COM_Outptr_ void **ppVideoDecoder) = 0;
682
683 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
684 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
685 _In_ REFIID riid,
686 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
687
688 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
689 UINT NodeMask,
690 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
691 UINT NumInputStreamDescs,
692 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
693 _In_ REFIID riid,
694 _COM_Outptr_ void **ppVideoProcessor) = 0;
695
696 };
697
698
699#else /* C style interface */
700
701 typedef struct ID3D12VideoDeviceVtbl
702 {
703 BEGIN_INTERFACE
704
705 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
706 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
707 ID3D12VideoDevice * This,
708 REFIID riid,
709 _COM_Outptr_ void **ppvObject);
710
711 DECLSPEC_XFGVIRT(IUnknown, AddRef)
712 ULONG ( STDMETHODCALLTYPE *AddRef )(
713 ID3D12VideoDevice * This);
714
715 DECLSPEC_XFGVIRT(IUnknown, Release)
716 ULONG ( STDMETHODCALLTYPE *Release )(
717 ID3D12VideoDevice * This);
718
719 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
720 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
721 ID3D12VideoDevice * This,
722 D3D12_FEATURE_VIDEO FeatureVideo,
723 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
724 UINT FeatureSupportDataSize);
725
726 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
727 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
728 ID3D12VideoDevice * This,
729 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
730 _In_ REFIID riid,
731 _COM_Outptr_ void **ppVideoDecoder);
732
733 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
734 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
735 ID3D12VideoDevice * This,
736 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
737 _In_ REFIID riid,
738 _COM_Outptr_ void **ppVideoDecoderHeap);
739
740 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
741 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
742 ID3D12VideoDevice * This,
743 UINT NodeMask,
744 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
745 UINT NumInputStreamDescs,
746 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
747 _In_ REFIID riid,
748 _COM_Outptr_ void **ppVideoProcessor);
749
750 END_INTERFACE
751 } ID3D12VideoDeviceVtbl;
752
753 interface ID3D12VideoDevice
754 {
755 CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
756 };
757
758
759
760#ifdef COBJMACROS
761
762
763#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
764 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
765
766#define ID3D12VideoDevice_AddRef(This) \
767 ( (This)->lpVtbl -> AddRef(This) )
768
769#define ID3D12VideoDevice_Release(This) \
770 ( (This)->lpVtbl -> Release(This) )
771
772
773#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
774 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
775
776#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
777 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
778
779#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
780 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
781
782#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
783 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
784
785#endif /* COBJMACROS */
786
787
788#endif /* C style interface */
789
790
791
792
793#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
794
795
796#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
797#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
798
799/* interface ID3D12VideoDecoder */
800/* [unique][local][object][uuid] */
801
802
803EXTERN_C const IID IID_ID3D12VideoDecoder;
804
805#if defined(__cplusplus) && !defined(CINTERFACE)
806
807 MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
808 ID3D12VideoDecoder : public ID3D12Pageable
809 {
810 public:
811#if defined(_MSC_VER) || !defined(_WIN32)
812 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
813#else
814 virtual D3D12_VIDEO_DECODER_DESC *STDMETHODCALLTYPE GetDesc(
815 D3D12_VIDEO_DECODER_DESC * RetVal) = 0;
816#endif
817
818 };
819
820
821#else /* C style interface */
822
823 typedef struct ID3D12VideoDecoderVtbl
824 {
825 BEGIN_INTERFACE
826
827 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
828 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
829 ID3D12VideoDecoder * This,
830 REFIID riid,
831 _COM_Outptr_ void **ppvObject);
832
833 DECLSPEC_XFGVIRT(IUnknown, AddRef)
834 ULONG ( STDMETHODCALLTYPE *AddRef )(
835 ID3D12VideoDecoder * This);
836
837 DECLSPEC_XFGVIRT(IUnknown, Release)
838 ULONG ( STDMETHODCALLTYPE *Release )(
839 ID3D12VideoDecoder * This);
840
841 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
842 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
843 ID3D12VideoDecoder * This,
844 _In_ REFGUID guid,
845 _Inout_ UINT *pDataSize,
846 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
847
848 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
849 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
850 ID3D12VideoDecoder * This,
851 _In_ REFGUID guid,
852 _In_ UINT DataSize,
853 _In_reads_bytes_opt_( DataSize ) const void *pData);
854
855 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
856 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
857 ID3D12VideoDecoder * This,
858 _In_ REFGUID guid,
859 _In_opt_ const IUnknown *pData);
860
861 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
862 HRESULT ( STDMETHODCALLTYPE *SetName )(
863 ID3D12VideoDecoder * This,
864 _In_z_ LPCWSTR Name);
865
866 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
867 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
868 ID3D12VideoDecoder * This,
869 REFIID riid,
870 _COM_Outptr_opt_ void **ppvDevice);
871
872 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
873#if !defined(_WIN32)
874 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
875 ID3D12VideoDecoder * This);
876
877#else
878 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
879 ID3D12VideoDecoder * This,
880 D3D12_VIDEO_DECODER_DESC * RetVal);
881
882#endif
883
884 END_INTERFACE
885 } ID3D12VideoDecoderVtbl;
886
887 interface ID3D12VideoDecoder
888 {
889 CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
890 };
891
892
893
894#ifdef COBJMACROS
895
896
897#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
898 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
899
900#define ID3D12VideoDecoder_AddRef(This) \
901 ( (This)->lpVtbl -> AddRef(This) )
902
903#define ID3D12VideoDecoder_Release(This) \
904 ( (This)->lpVtbl -> Release(This) )
905
906
907#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
908 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
909
910#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
911 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
912
913#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
914 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
915
916#define ID3D12VideoDecoder_SetName(This,Name) \
917 ( (This)->lpVtbl -> SetName(This,Name) )
918
919
920#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
921 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
922
923
924#if !defined(_WIN32)
925
926#define ID3D12VideoDecoder_GetDesc(This) \
927 ( (This)->lpVtbl -> GetDesc(This) )
928#else
929#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
930 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
931#endif
932
933#endif /* COBJMACROS */
934
935
936#endif /* C style interface */
937
938
939
940
941#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
942
943
944/* interface __MIDL_itf_d3d12video_0000_0003 */
945/* [local] */
946
947typedef
948enum D3D12_VIDEO_DECODE_TIER
949 {
950 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
951 D3D12_VIDEO_DECODE_TIER_1 = 1,
952 D3D12_VIDEO_DECODE_TIER_2 = 2,
953 D3D12_VIDEO_DECODE_TIER_3 = 3
954 } D3D12_VIDEO_DECODE_TIER;
955
956typedef
957enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
958 {
959 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
960 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
961 } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
962
963DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )
964typedef
965enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
966 {
967 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
968 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
969 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
970 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
971 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
972 } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
973
974DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )
975typedef
976enum D3D12_VIDEO_DECODE_STATUS
977 {
978 D3D12_VIDEO_DECODE_STATUS_OK = 0,
979 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
980 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
981 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
982 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
983 } D3D12_VIDEO_DECODE_STATUS;
984
985typedef
986enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
987 {
988 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
989 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
990 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
991 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3
992 } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
993
994typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
995 {
996 UINT NodeIndex;
997 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
998 UINT Width;
999 UINT Height;
1000 DXGI_FORMAT DecodeFormat;
1001 DXGI_RATIONAL FrameRate;
1002 UINT BitRate;
1003 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
1004 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
1005 D3D12_VIDEO_DECODE_TIER DecodeTier;
1006 } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
1007
1008typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
1009 {
1010 UINT NodeIndex;
1011 UINT ProfileCount;
1012 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
1013
1014typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
1015 {
1016 UINT NodeIndex;
1017 UINT ProfileCount;
1018 _Field_size_full_(ProfileCount) GUID *pProfiles;
1019 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
1020
1021typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
1022 {
1023 UINT NodeIndex;
1024 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1025 UINT FormatCount;
1026 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
1027
1028typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
1029 {
1030 UINT NodeIndex;
1031 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1032 UINT FormatCount;
1033 _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
1034 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
1035
1036typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
1037 {
1038 BOOL IOCoherent;
1039 } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
1040
1041typedef
1042enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
1043 {
1044 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
1045 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
1046 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
1047 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
1048 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
1049 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
1050 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
1051 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
1052
1053typedef
1054enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
1055 {
1056 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
1057 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
1058 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
1059 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
1060 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
1061 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
1062 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
1063 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
1064 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
1065
1066DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )
1067typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
1068 {
1069 UINT NodeIndex;
1070 GUID DecodeProfile;
1071 UINT Width;
1072 UINT Height;
1073 DXGI_FORMAT DecodeFormat;
1074 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
1075 UINT BinCount;
1076 UINT CounterBitDepth;
1077 } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
1078
1079typedef
1080enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
1081 {
1082 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
1083 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
1084 } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
1085
1086DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )
1087typedef
1088enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
1089 {
1090 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
1091 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
1092 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
1093 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4
1094 } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
1095
1096DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )
1097typedef struct D3D12_VIDEO_SCALE_SUPPORT
1098 {
1099 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
1100 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
1101 } D3D12_VIDEO_SCALE_SUPPORT;
1102
1103typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
1104 {
1105 UINT NodeIndex;
1106 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1107 D3D12_VIDEO_SAMPLE DecodeSample;
1108 D3D12_VIDEO_FORMAT OutputFormat;
1109 DXGI_RATIONAL FrameRate;
1110 UINT BitRate;
1111 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
1112 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1113 } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
1114
1115typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
1116 {
1117 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
1118 UINT64 MemoryPoolL0Size;
1119 UINT64 MemoryPoolL1Size;
1120 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
1121
1122typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
1123 {
1124 UINT NodeMask;
1125 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
1126 UINT NumInputStreamDescs;
1127 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
1128 UINT64 MemoryPoolL0Size;
1129 UINT64 MemoryPoolL1Size;
1130 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
1131
1132typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
1133 {
1134 UINT64 Status;
1135 UINT64 NumMacroblocksAffected;
1136 DXGI_RATIONAL FrameRate;
1137 UINT BitRate;
1138 } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
1139
1140typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
1141 {
1142 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
1143 UINT Size;
1144 _Field_size_bytes_full_(Size) void *pData;
1145 } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
1146
1147typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
1148 {
1149 UINT NumTexture2Ds;
1150 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
1151 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
1152 _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
1153 } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
1154
1155typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1156 {
1157 ID3D12Resource *pBuffer;
1158 UINT64 Offset;
1159 UINT64 Size;
1160 } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1161
1162typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
1163 {
1164 BOOL Enable;
1165 ID3D12Resource *pReferenceTexture2D;
1166 UINT ReferenceSubresource;
1167 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1168 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1169 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
1170
1171typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
1172 {
1173 UINT NumFrameArguments;
1174 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
1175 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
1176 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
1177 ID3D12VideoDecoderHeap *pHeap;
1178 } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
1179
1180typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
1181 {
1182 ID3D12Resource *pOutputTexture2D;
1183 UINT OutputSubresource;
1184 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
1185 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
1186
1187
1188
1189extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1190extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
1191
1192#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
1193#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
1194
1195/* interface ID3D12VideoProcessor */
1196/* [unique][local][object][uuid] */
1197
1198
1199EXTERN_C const IID IID_ID3D12VideoProcessor;
1200
1201#if defined(__cplusplus) && !defined(CINTERFACE)
1202
1203 MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
1204 ID3D12VideoProcessor : public ID3D12Pageable
1205 {
1206 public:
1207 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
1208
1209 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
1210
1211 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
1212 UINT NumInputStreamDescs,
1213 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
1214
1215#if defined(_MSC_VER) || !defined(_WIN32)
1216 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
1217#else
1218 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *STDMETHODCALLTYPE GetOutputStreamDesc(
1219 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal) = 0;
1220#endif
1221
1222 };
1223
1224
1225#else /* C style interface */
1226
1227 typedef struct ID3D12VideoProcessorVtbl
1228 {
1229 BEGIN_INTERFACE
1230
1231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1233 ID3D12VideoProcessor * This,
1234 REFIID riid,
1235 _COM_Outptr_ void **ppvObject);
1236
1237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1238 ULONG ( STDMETHODCALLTYPE *AddRef )(
1239 ID3D12VideoProcessor * This);
1240
1241 DECLSPEC_XFGVIRT(IUnknown, Release)
1242 ULONG ( STDMETHODCALLTYPE *Release )(
1243 ID3D12VideoProcessor * This);
1244
1245 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1246 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1247 ID3D12VideoProcessor * This,
1248 _In_ REFGUID guid,
1249 _Inout_ UINT *pDataSize,
1250 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1251
1252 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1253 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1254 ID3D12VideoProcessor * This,
1255 _In_ REFGUID guid,
1256 _In_ UINT DataSize,
1257 _In_reads_bytes_opt_( DataSize ) const void *pData);
1258
1259 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1260 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1261 ID3D12VideoProcessor * This,
1262 _In_ REFGUID guid,
1263 _In_opt_ const IUnknown *pData);
1264
1265 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1266 HRESULT ( STDMETHODCALLTYPE *SetName )(
1267 ID3D12VideoProcessor * This,
1268 _In_z_ LPCWSTR Name);
1269
1270 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1271 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1272 ID3D12VideoProcessor * This,
1273 REFIID riid,
1274 _COM_Outptr_opt_ void **ppvDevice);
1275
1276 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
1277 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
1278 ID3D12VideoProcessor * This);
1279
1280 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
1281 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
1282 ID3D12VideoProcessor * This);
1283
1284 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
1285 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
1286 ID3D12VideoProcessor * This,
1287 UINT NumInputStreamDescs,
1288 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
1289
1290 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
1291#if !defined(_WIN32)
1292 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1293 ID3D12VideoProcessor * This);
1294
1295#else
1296 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1297 ID3D12VideoProcessor * This,
1298 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
1299
1300#endif
1301
1302 END_INTERFACE
1303 } ID3D12VideoProcessorVtbl;
1304
1305 interface ID3D12VideoProcessor
1306 {
1307 CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
1308 };
1309
1310
1311
1312#ifdef COBJMACROS
1313
1314
1315#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
1316 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1317
1318#define ID3D12VideoProcessor_AddRef(This) \
1319 ( (This)->lpVtbl -> AddRef(This) )
1320
1321#define ID3D12VideoProcessor_Release(This) \
1322 ( (This)->lpVtbl -> Release(This) )
1323
1324
1325#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
1326 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1327
1328#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
1329 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1330
1331#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
1332 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1333
1334#define ID3D12VideoProcessor_SetName(This,Name) \
1335 ( (This)->lpVtbl -> SetName(This,Name) )
1336
1337
1338#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
1339 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1340
1341
1342
1343#define ID3D12VideoProcessor_GetNodeMask(This) \
1344 ( (This)->lpVtbl -> GetNodeMask(This) )
1345
1346#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
1347 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
1348
1349#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
1350 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
1351#if !defined(_WIN32)
1352
1353#define ID3D12VideoProcessor_GetOutputStreamDesc(This) \
1354 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
1355#else
1356#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
1357 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
1358#endif
1359
1360#endif /* COBJMACROS */
1361
1362
1363#endif /* C style interface */
1364
1365
1366
1367
1368#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1369
1370
1371/* interface __MIDL_itf_d3d12video_0000_0004 */
1372/* [local] */
1373
1374typedef
1375enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
1376 {
1377 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
1378 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1379 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1380 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1381 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1382 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1383 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1384 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1385 } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1386
1387DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )
1388typedef
1389enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
1390 {
1391 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
1392 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1393 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1394 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1395 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1396 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1397 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1398 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1399 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1400 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1401 } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1402
1403DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )
1404typedef
1405enum D3D12_VIDEO_PROCESS_ORIENTATION
1406 {
1407 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1408 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1409 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1410 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1411 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1412 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1413 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1414 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1415 } D3D12_VIDEO_PROCESS_ORIENTATION;
1416
1417typedef
1418enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
1419 {
1420 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
1421 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1422 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1423 } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1424
1425DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )
1426typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
1427 {
1428 INT Minimum;
1429 INT Maximum;
1430 INT Default;
1431 FLOAT Multiplier;
1432 } D3D12_VIDEO_PROCESS_FILTER_RANGE;
1433
1434typedef
1435enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
1436 {
1437 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
1438 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1439 } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1440
1441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )
1442typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
1443 {
1444 UINT NodeIndex;
1445 D3D12_VIDEO_SAMPLE InputSample;
1446 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1447 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1448 DXGI_RATIONAL InputFrameRate;
1449 D3D12_VIDEO_FORMAT OutputFormat;
1450 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1451 DXGI_RATIONAL OutputFrameRate;
1452 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1453 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1454 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1455 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1456 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1457 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1458 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
1459 } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1460
1461typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
1462 {
1463 UINT NodeIndex;
1464 UINT MaxInputStreams;
1465 } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
1466
1467typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
1468 {
1469 UINT NodeIndex;
1470 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
1471 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
1472 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1473 DXGI_RATIONAL InputFrameRate;
1474 DXGI_RATIONAL OutputFrameRate;
1475 BOOL EnableAutoProcessing;
1476 UINT PastFrames;
1477 UINT FutureFrames;
1478 } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
1479
1480typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
1481 {
1482 UINT NumPastFrames;
1483 ID3D12Resource **ppPastFrames;
1484 UINT *pPastSubresources;
1485 UINT NumFutureFrames;
1486 ID3D12Resource **ppFutureFrames;
1487 UINT *pFutureSubresources;
1488 } D3D12_VIDEO_PROCESS_REFERENCE_SET;
1489
1490typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
1491 {
1492 D3D12_RECT SourceRectangle;
1493 D3D12_RECT DestinationRectangle;
1494 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1495 } D3D12_VIDEO_PROCESS_TRANSFORM;
1496
1497typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1498 {
1499 UINT OutputIndex;
1500 UINT InputFrameOrField;
1501 } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1502
1503typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
1504 {
1505 ID3D12Resource *pTexture2D;
1506 UINT Subresource;
1507 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1508 } D3D12_VIDEO_PROCESS_INPUT_STREAM;
1509
1510typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
1511 {
1512 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
1513 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1514 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1515 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1516 INT FilterLevels[ 32 ];
1517 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1518 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1519
1520typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1521 {
1522 ID3D12Resource *pTexture2D;
1523 UINT Subresource;
1524 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1525
1526typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
1527 {
1528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
1529 D3D12_RECT TargetRectangle;
1530 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1531
1532
1533
1534extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1535extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
1536
1537#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1538#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1539
1540/* interface ID3D12VideoDecodeCommandList */
1541/* [unique][local][object][uuid] */
1542
1543
1544EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
1545
1546#if defined(__cplusplus) && !defined(CINTERFACE)
1547
1548 MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
1549 ID3D12VideoDecodeCommandList : public ID3D12CommandList
1550 {
1551 public:
1552 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1553
1554 virtual HRESULT STDMETHODCALLTYPE Reset(
1555 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1556
1557 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1558
1559 virtual void STDMETHODCALLTYPE ResourceBarrier(
1560 _In_ UINT NumBarriers,
1561 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1562
1563 virtual void STDMETHODCALLTYPE DiscardResource(
1564 _In_ ID3D12Resource *pResource,
1565 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1566
1567 virtual void STDMETHODCALLTYPE BeginQuery(
1568 _In_ ID3D12QueryHeap *pQueryHeap,
1569 _In_ D3D12_QUERY_TYPE Type,
1570 _In_ UINT Index) = 0;
1571
1572 virtual void STDMETHODCALLTYPE EndQuery(
1573 _In_ ID3D12QueryHeap *pQueryHeap,
1574 _In_ D3D12_QUERY_TYPE Type,
1575 _In_ UINT Index) = 0;
1576
1577 virtual void STDMETHODCALLTYPE ResolveQueryData(
1578 _In_ ID3D12QueryHeap *pQueryHeap,
1579 _In_ D3D12_QUERY_TYPE Type,
1580 _In_ UINT StartIndex,
1581 _In_ UINT NumQueries,
1582 _In_ ID3D12Resource *pDestinationBuffer,
1583 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1584
1585 virtual void STDMETHODCALLTYPE SetPredication(
1586 _In_opt_ ID3D12Resource *pBuffer,
1587 _In_ UINT64 AlignedBufferOffset,
1588 _In_ D3D12_PREDICATION_OP Operation) = 0;
1589
1590 virtual void STDMETHODCALLTYPE SetMarker(
1591 UINT Metadata,
1592 _In_reads_bytes_opt_(Size) const void *pData,
1593 UINT Size) = 0;
1594
1595 virtual void STDMETHODCALLTYPE BeginEvent(
1596 UINT Metadata,
1597 _In_reads_bytes_opt_(Size) const void *pData,
1598 UINT Size) = 0;
1599
1600 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1601
1602 virtual void STDMETHODCALLTYPE DecodeFrame(
1603 _In_ ID3D12VideoDecoder *pDecoder,
1604 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1605 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1606
1607 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1608 UINT Count,
1609 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1610 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1611
1612 };
1613
1614
1615#else /* C style interface */
1616
1617 typedef struct ID3D12VideoDecodeCommandListVtbl
1618 {
1619 BEGIN_INTERFACE
1620
1621 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1622 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1623 ID3D12VideoDecodeCommandList * This,
1624 REFIID riid,
1625 _COM_Outptr_ void **ppvObject);
1626
1627 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1628 ULONG ( STDMETHODCALLTYPE *AddRef )(
1629 ID3D12VideoDecodeCommandList * This);
1630
1631 DECLSPEC_XFGVIRT(IUnknown, Release)
1632 ULONG ( STDMETHODCALLTYPE *Release )(
1633 ID3D12VideoDecodeCommandList * This);
1634
1635 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1636 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1637 ID3D12VideoDecodeCommandList * This,
1638 _In_ REFGUID guid,
1639 _Inout_ UINT *pDataSize,
1640 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1641
1642 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1643 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1644 ID3D12VideoDecodeCommandList * This,
1645 _In_ REFGUID guid,
1646 _In_ UINT DataSize,
1647 _In_reads_bytes_opt_( DataSize ) const void *pData);
1648
1649 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1650 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1651 ID3D12VideoDecodeCommandList * This,
1652 _In_ REFGUID guid,
1653 _In_opt_ const IUnknown *pData);
1654
1655 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1656 HRESULT ( STDMETHODCALLTYPE *SetName )(
1657 ID3D12VideoDecodeCommandList * This,
1658 _In_z_ LPCWSTR Name);
1659
1660 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1661 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1662 ID3D12VideoDecodeCommandList * This,
1663 REFIID riid,
1664 _COM_Outptr_opt_ void **ppvDevice);
1665
1666 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1667 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1668 ID3D12VideoDecodeCommandList * This);
1669
1670 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
1671 HRESULT ( STDMETHODCALLTYPE *Close )(
1672 ID3D12VideoDecodeCommandList * This);
1673
1674 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
1675 HRESULT ( STDMETHODCALLTYPE *Reset )(
1676 ID3D12VideoDecodeCommandList * This,
1677 _In_ ID3D12CommandAllocator *pAllocator);
1678
1679 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
1680 void ( STDMETHODCALLTYPE *ClearState )(
1681 ID3D12VideoDecodeCommandList * This);
1682
1683 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
1684 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1685 ID3D12VideoDecodeCommandList * This,
1686 _In_ UINT NumBarriers,
1687 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1688
1689 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
1690 void ( STDMETHODCALLTYPE *DiscardResource )(
1691 ID3D12VideoDecodeCommandList * This,
1692 _In_ ID3D12Resource *pResource,
1693 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1694
1695 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
1696 void ( STDMETHODCALLTYPE *BeginQuery )(
1697 ID3D12VideoDecodeCommandList * This,
1698 _In_ ID3D12QueryHeap *pQueryHeap,
1699 _In_ D3D12_QUERY_TYPE Type,
1700 _In_ UINT Index);
1701
1702 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
1703 void ( STDMETHODCALLTYPE *EndQuery )(
1704 ID3D12VideoDecodeCommandList * This,
1705 _In_ ID3D12QueryHeap *pQueryHeap,
1706 _In_ D3D12_QUERY_TYPE Type,
1707 _In_ UINT Index);
1708
1709 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
1710 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1711 ID3D12VideoDecodeCommandList * This,
1712 _In_ ID3D12QueryHeap *pQueryHeap,
1713 _In_ D3D12_QUERY_TYPE Type,
1714 _In_ UINT StartIndex,
1715 _In_ UINT NumQueries,
1716 _In_ ID3D12Resource *pDestinationBuffer,
1717 _In_ UINT64 AlignedDestinationBufferOffset);
1718
1719 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
1720 void ( STDMETHODCALLTYPE *SetPredication )(
1721 ID3D12VideoDecodeCommandList * This,
1722 _In_opt_ ID3D12Resource *pBuffer,
1723 _In_ UINT64 AlignedBufferOffset,
1724 _In_ D3D12_PREDICATION_OP Operation);
1725
1726 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
1727 void ( STDMETHODCALLTYPE *SetMarker )(
1728 ID3D12VideoDecodeCommandList * This,
1729 UINT Metadata,
1730 _In_reads_bytes_opt_(Size) const void *pData,
1731 UINT Size);
1732
1733 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
1734 void ( STDMETHODCALLTYPE *BeginEvent )(
1735 ID3D12VideoDecodeCommandList * This,
1736 UINT Metadata,
1737 _In_reads_bytes_opt_(Size) const void *pData,
1738 UINT Size);
1739
1740 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
1741 void ( STDMETHODCALLTYPE *EndEvent )(
1742 ID3D12VideoDecodeCommandList * This);
1743
1744 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
1745 void ( STDMETHODCALLTYPE *DecodeFrame )(
1746 ID3D12VideoDecodeCommandList * This,
1747 _In_ ID3D12VideoDecoder *pDecoder,
1748 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1749 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
1750
1751 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
1752 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1753 ID3D12VideoDecodeCommandList * This,
1754 UINT Count,
1755 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1756 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1757
1758 END_INTERFACE
1759 } ID3D12VideoDecodeCommandListVtbl;
1760
1761 interface ID3D12VideoDecodeCommandList
1762 {
1763 CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
1764 };
1765
1766
1767
1768#ifdef COBJMACROS
1769
1770
1771#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
1772 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1773
1774#define ID3D12VideoDecodeCommandList_AddRef(This) \
1775 ( (This)->lpVtbl -> AddRef(This) )
1776
1777#define ID3D12VideoDecodeCommandList_Release(This) \
1778 ( (This)->lpVtbl -> Release(This) )
1779
1780
1781#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1782 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1783
1784#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
1785 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1786
1787#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
1788 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1789
1790#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
1791 ( (This)->lpVtbl -> SetName(This,Name) )
1792
1793
1794#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
1795 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1796
1797
1798#define ID3D12VideoDecodeCommandList_GetType(This) \
1799 ( (This)->lpVtbl -> GetType(This) )
1800
1801
1802#define ID3D12VideoDecodeCommandList_Close(This) \
1803 ( (This)->lpVtbl -> Close(This) )
1804
1805#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
1806 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1807
1808#define ID3D12VideoDecodeCommandList_ClearState(This) \
1809 ( (This)->lpVtbl -> ClearState(This) )
1810
1811#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1812 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1813
1814#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
1815 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1816
1817#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1818 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1819
1820#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1821 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1822
1823#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1824 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
1825
1826#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
1827 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
1828
1829#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
1830 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
1831
1832#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
1833 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
1834
1835#define ID3D12VideoDecodeCommandList_EndEvent(This) \
1836 ( (This)->lpVtbl -> EndEvent(This) )
1837
1838#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
1839 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
1840
1841#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
1842 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
1843
1844#endif /* COBJMACROS */
1845
1846
1847#endif /* C style interface */
1848
1849
1850
1851
1852#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1853
1854
1855#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1856#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1857
1858/* interface ID3D12VideoProcessCommandList */
1859/* [unique][local][object][uuid] */
1860
1861
1862EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
1863
1864#if defined(__cplusplus) && !defined(CINTERFACE)
1865
1866 MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
1867 ID3D12VideoProcessCommandList : public ID3D12CommandList
1868 {
1869 public:
1870 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1871
1872 virtual HRESULT STDMETHODCALLTYPE Reset(
1873 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1874
1875 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1876
1877 virtual void STDMETHODCALLTYPE ResourceBarrier(
1878 _In_ UINT NumBarriers,
1879 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1880
1881 virtual void STDMETHODCALLTYPE DiscardResource(
1882 _In_ ID3D12Resource *pResource,
1883 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1884
1885 virtual void STDMETHODCALLTYPE BeginQuery(
1886 _In_ ID3D12QueryHeap *pQueryHeap,
1887 _In_ D3D12_QUERY_TYPE Type,
1888 _In_ UINT Index) = 0;
1889
1890 virtual void STDMETHODCALLTYPE EndQuery(
1891 _In_ ID3D12QueryHeap *pQueryHeap,
1892 _In_ D3D12_QUERY_TYPE Type,
1893 _In_ UINT Index) = 0;
1894
1895 virtual void STDMETHODCALLTYPE ResolveQueryData(
1896 _In_ ID3D12QueryHeap *pQueryHeap,
1897 _In_ D3D12_QUERY_TYPE Type,
1898 _In_ UINT StartIndex,
1899 _In_ UINT NumQueries,
1900 _In_ ID3D12Resource *pDestinationBuffer,
1901 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1902
1903 virtual void STDMETHODCALLTYPE SetPredication(
1904 _In_opt_ ID3D12Resource *pBuffer,
1905 _In_ UINT64 AlignedBufferOffset,
1906 _In_ D3D12_PREDICATION_OP Operation) = 0;
1907
1908 virtual void STDMETHODCALLTYPE SetMarker(
1909 UINT Metadata,
1910 _In_reads_bytes_opt_(Size) const void *pData,
1911 UINT Size) = 0;
1912
1913 virtual void STDMETHODCALLTYPE BeginEvent(
1914 UINT Metadata,
1915 _In_reads_bytes_opt_(Size) const void *pData,
1916 UINT Size) = 0;
1917
1918 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1919
1920 virtual void STDMETHODCALLTYPE ProcessFrames(
1921 _In_ ID3D12VideoProcessor *pVideoProcessor,
1922 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1923 UINT NumInputStreams,
1924 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1925
1926 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1927 UINT Count,
1928 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1929 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1930
1931 };
1932
1933
1934#else /* C style interface */
1935
1936 typedef struct ID3D12VideoProcessCommandListVtbl
1937 {
1938 BEGIN_INTERFACE
1939
1940 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1941 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1942 ID3D12VideoProcessCommandList * This,
1943 REFIID riid,
1944 _COM_Outptr_ void **ppvObject);
1945
1946 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1947 ULONG ( STDMETHODCALLTYPE *AddRef )(
1948 ID3D12VideoProcessCommandList * This);
1949
1950 DECLSPEC_XFGVIRT(IUnknown, Release)
1951 ULONG ( STDMETHODCALLTYPE *Release )(
1952 ID3D12VideoProcessCommandList * This);
1953
1954 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1955 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1956 ID3D12VideoProcessCommandList * This,
1957 _In_ REFGUID guid,
1958 _Inout_ UINT *pDataSize,
1959 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1960
1961 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1962 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1963 ID3D12VideoProcessCommandList * This,
1964 _In_ REFGUID guid,
1965 _In_ UINT DataSize,
1966 _In_reads_bytes_opt_( DataSize ) const void *pData);
1967
1968 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1969 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1970 ID3D12VideoProcessCommandList * This,
1971 _In_ REFGUID guid,
1972 _In_opt_ const IUnknown *pData);
1973
1974 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1975 HRESULT ( STDMETHODCALLTYPE *SetName )(
1976 ID3D12VideoProcessCommandList * This,
1977 _In_z_ LPCWSTR Name);
1978
1979 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1980 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1981 ID3D12VideoProcessCommandList * This,
1982 REFIID riid,
1983 _COM_Outptr_opt_ void **ppvDevice);
1984
1985 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1986 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1987 ID3D12VideoProcessCommandList * This);
1988
1989 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
1990 HRESULT ( STDMETHODCALLTYPE *Close )(
1991 ID3D12VideoProcessCommandList * This);
1992
1993 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
1994 HRESULT ( STDMETHODCALLTYPE *Reset )(
1995 ID3D12VideoProcessCommandList * This,
1996 _In_ ID3D12CommandAllocator *pAllocator);
1997
1998 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
1999 void ( STDMETHODCALLTYPE *ClearState )(
2000 ID3D12VideoProcessCommandList * This);
2001
2002 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2003 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2004 ID3D12VideoProcessCommandList * This,
2005 _In_ UINT NumBarriers,
2006 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2007
2008 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2009 void ( STDMETHODCALLTYPE *DiscardResource )(
2010 ID3D12VideoProcessCommandList * This,
2011 _In_ ID3D12Resource *pResource,
2012 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2013
2014 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2015 void ( STDMETHODCALLTYPE *BeginQuery )(
2016 ID3D12VideoProcessCommandList * This,
2017 _In_ ID3D12QueryHeap *pQueryHeap,
2018 _In_ D3D12_QUERY_TYPE Type,
2019 _In_ UINT Index);
2020
2021 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2022 void ( STDMETHODCALLTYPE *EndQuery )(
2023 ID3D12VideoProcessCommandList * This,
2024 _In_ ID3D12QueryHeap *pQueryHeap,
2025 _In_ D3D12_QUERY_TYPE Type,
2026 _In_ UINT Index);
2027
2028 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2029 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2030 ID3D12VideoProcessCommandList * This,
2031 _In_ ID3D12QueryHeap *pQueryHeap,
2032 _In_ D3D12_QUERY_TYPE Type,
2033 _In_ UINT StartIndex,
2034 _In_ UINT NumQueries,
2035 _In_ ID3D12Resource *pDestinationBuffer,
2036 _In_ UINT64 AlignedDestinationBufferOffset);
2037
2038 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2039 void ( STDMETHODCALLTYPE *SetPredication )(
2040 ID3D12VideoProcessCommandList * This,
2041 _In_opt_ ID3D12Resource *pBuffer,
2042 _In_ UINT64 AlignedBufferOffset,
2043 _In_ D3D12_PREDICATION_OP Operation);
2044
2045 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2046 void ( STDMETHODCALLTYPE *SetMarker )(
2047 ID3D12VideoProcessCommandList * This,
2048 UINT Metadata,
2049 _In_reads_bytes_opt_(Size) const void *pData,
2050 UINT Size);
2051
2052 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2053 void ( STDMETHODCALLTYPE *BeginEvent )(
2054 ID3D12VideoProcessCommandList * This,
2055 UINT Metadata,
2056 _In_reads_bytes_opt_(Size) const void *pData,
2057 UINT Size);
2058
2059 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2060 void ( STDMETHODCALLTYPE *EndEvent )(
2061 ID3D12VideoProcessCommandList * This);
2062
2063 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2064 void ( STDMETHODCALLTYPE *ProcessFrames )(
2065 ID3D12VideoProcessCommandList * This,
2066 _In_ ID3D12VideoProcessor *pVideoProcessor,
2067 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2068 UINT NumInputStreams,
2069 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2070
2071 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2072 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2073 ID3D12VideoProcessCommandList * This,
2074 UINT Count,
2075 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2076 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2077
2078 END_INTERFACE
2079 } ID3D12VideoProcessCommandListVtbl;
2080
2081 interface ID3D12VideoProcessCommandList
2082 {
2083 CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12VideoProcessCommandList_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12VideoProcessCommandList_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
2102 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2103
2104#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
2105 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2106
2107#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
2108 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2109
2110#define ID3D12VideoProcessCommandList_SetName(This,Name) \
2111 ( (This)->lpVtbl -> SetName(This,Name) )
2112
2113
2114#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
2115 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2116
2117
2118#define ID3D12VideoProcessCommandList_GetType(This) \
2119 ( (This)->lpVtbl -> GetType(This) )
2120
2121
2122#define ID3D12VideoProcessCommandList_Close(This) \
2123 ( (This)->lpVtbl -> Close(This) )
2124
2125#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
2126 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2127
2128#define ID3D12VideoProcessCommandList_ClearState(This) \
2129 ( (This)->lpVtbl -> ClearState(This) )
2130
2131#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
2132 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2133
2134#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
2135 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2136
2137#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
2138 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2139
2140#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
2141 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2142
2143#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2144 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2145
2146#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2147 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2148
2149#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
2150 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2151
2152#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
2153 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2154
2155#define ID3D12VideoProcessCommandList_EndEvent(This) \
2156 ( (This)->lpVtbl -> EndEvent(This) )
2157
2158#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2159 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2160
2161#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
2162 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2163
2164#endif /* COBJMACROS */
2165
2166
2167#endif /* C style interface */
2168
2169
2170
2171
2172#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
2173
2174
2175/* interface __MIDL_itf_d3d12video_0000_0006 */
2176/* [local] */
2177
2178typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2179 {
2180 UINT64 Offset;
2181 ID3D12Resource *pBuffer;
2182 } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2183
2184typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
2185 {
2186 BOOL Enable;
2187 ID3D12Resource *pReferenceTexture2D;
2188 UINT ReferenceSubresource;
2189 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
2190 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
2191 UINT OutputWidth;
2192 UINT OutputHeight;
2193 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
2194
2195typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
2196 {
2197 ID3D12Resource *pOutputTexture2D;
2198 UINT OutputSubresource;
2199 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
2200 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
2201 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
2202
2203
2204
2205extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2206extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
2207
2208#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2209#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2210
2211/* interface ID3D12VideoDecodeCommandList1 */
2212/* [unique][local][object][uuid] */
2213
2214
2215EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
2216
2217#if defined(__cplusplus) && !defined(CINTERFACE)
2218
2219 MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
2220 ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
2221 {
2222 public:
2223 virtual void STDMETHODCALLTYPE DecodeFrame1(
2224 _In_ ID3D12VideoDecoder *pDecoder,
2225 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2226 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
2227
2228 };
2229
2230
2231#else /* C style interface */
2232
2233 typedef struct ID3D12VideoDecodeCommandList1Vtbl
2234 {
2235 BEGIN_INTERFACE
2236
2237 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2238 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2239 ID3D12VideoDecodeCommandList1 * This,
2240 REFIID riid,
2241 _COM_Outptr_ void **ppvObject);
2242
2243 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2244 ULONG ( STDMETHODCALLTYPE *AddRef )(
2245 ID3D12VideoDecodeCommandList1 * This);
2246
2247 DECLSPEC_XFGVIRT(IUnknown, Release)
2248 ULONG ( STDMETHODCALLTYPE *Release )(
2249 ID3D12VideoDecodeCommandList1 * This);
2250
2251 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2252 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2253 ID3D12VideoDecodeCommandList1 * This,
2254 _In_ REFGUID guid,
2255 _Inout_ UINT *pDataSize,
2256 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2257
2258 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2259 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2260 ID3D12VideoDecodeCommandList1 * This,
2261 _In_ REFGUID guid,
2262 _In_ UINT DataSize,
2263 _In_reads_bytes_opt_( DataSize ) const void *pData);
2264
2265 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2266 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2267 ID3D12VideoDecodeCommandList1 * This,
2268 _In_ REFGUID guid,
2269 _In_opt_ const IUnknown *pData);
2270
2271 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2272 HRESULT ( STDMETHODCALLTYPE *SetName )(
2273 ID3D12VideoDecodeCommandList1 * This,
2274 _In_z_ LPCWSTR Name);
2275
2276 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2277 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2278 ID3D12VideoDecodeCommandList1 * This,
2279 REFIID riid,
2280 _COM_Outptr_opt_ void **ppvDevice);
2281
2282 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2283 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2284 ID3D12VideoDecodeCommandList1 * This);
2285
2286 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
2287 HRESULT ( STDMETHODCALLTYPE *Close )(
2288 ID3D12VideoDecodeCommandList1 * This);
2289
2290 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
2291 HRESULT ( STDMETHODCALLTYPE *Reset )(
2292 ID3D12VideoDecodeCommandList1 * This,
2293 _In_ ID3D12CommandAllocator *pAllocator);
2294
2295 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
2296 void ( STDMETHODCALLTYPE *ClearState )(
2297 ID3D12VideoDecodeCommandList1 * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
2300 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2301 ID3D12VideoDecodeCommandList1 * This,
2302 _In_ UINT NumBarriers,
2303 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2304
2305 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
2306 void ( STDMETHODCALLTYPE *DiscardResource )(
2307 ID3D12VideoDecodeCommandList1 * This,
2308 _In_ ID3D12Resource *pResource,
2309 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2310
2311 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
2312 void ( STDMETHODCALLTYPE *BeginQuery )(
2313 ID3D12VideoDecodeCommandList1 * This,
2314 _In_ ID3D12QueryHeap *pQueryHeap,
2315 _In_ D3D12_QUERY_TYPE Type,
2316 _In_ UINT Index);
2317
2318 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
2319 void ( STDMETHODCALLTYPE *EndQuery )(
2320 ID3D12VideoDecodeCommandList1 * This,
2321 _In_ ID3D12QueryHeap *pQueryHeap,
2322 _In_ D3D12_QUERY_TYPE Type,
2323 _In_ UINT Index);
2324
2325 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
2326 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2327 ID3D12VideoDecodeCommandList1 * This,
2328 _In_ ID3D12QueryHeap *pQueryHeap,
2329 _In_ D3D12_QUERY_TYPE Type,
2330 _In_ UINT StartIndex,
2331 _In_ UINT NumQueries,
2332 _In_ ID3D12Resource *pDestinationBuffer,
2333 _In_ UINT64 AlignedDestinationBufferOffset);
2334
2335 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
2336 void ( STDMETHODCALLTYPE *SetPredication )(
2337 ID3D12VideoDecodeCommandList1 * This,
2338 _In_opt_ ID3D12Resource *pBuffer,
2339 _In_ UINT64 AlignedBufferOffset,
2340 _In_ D3D12_PREDICATION_OP Operation);
2341
2342 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
2343 void ( STDMETHODCALLTYPE *SetMarker )(
2344 ID3D12VideoDecodeCommandList1 * This,
2345 UINT Metadata,
2346 _In_reads_bytes_opt_(Size) const void *pData,
2347 UINT Size);
2348
2349 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
2350 void ( STDMETHODCALLTYPE *BeginEvent )(
2351 ID3D12VideoDecodeCommandList1 * This,
2352 UINT Metadata,
2353 _In_reads_bytes_opt_(Size) const void *pData,
2354 UINT Size);
2355
2356 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
2357 void ( STDMETHODCALLTYPE *EndEvent )(
2358 ID3D12VideoDecodeCommandList1 * This);
2359
2360 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
2361 void ( STDMETHODCALLTYPE *DecodeFrame )(
2362 ID3D12VideoDecodeCommandList1 * This,
2363 _In_ ID3D12VideoDecoder *pDecoder,
2364 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2365 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2366
2367 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
2368 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2369 ID3D12VideoDecodeCommandList1 * This,
2370 UINT Count,
2371 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2372 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2373
2374 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
2375 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
2376 ID3D12VideoDecodeCommandList1 * This,
2377 _In_ ID3D12VideoDecoder *pDecoder,
2378 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2379 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2380
2381 END_INTERFACE
2382 } ID3D12VideoDecodeCommandList1Vtbl;
2383
2384 interface ID3D12VideoDecodeCommandList1
2385 {
2386 CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
2387 };
2388
2389
2390
2391#ifdef COBJMACROS
2392
2393
2394#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
2395 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2396
2397#define ID3D12VideoDecodeCommandList1_AddRef(This) \
2398 ( (This)->lpVtbl -> AddRef(This) )
2399
2400#define ID3D12VideoDecodeCommandList1_Release(This) \
2401 ( (This)->lpVtbl -> Release(This) )
2402
2403
2404#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2405 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2406
2407#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2408 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2409
2410#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
2411 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2412
2413#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
2414 ( (This)->lpVtbl -> SetName(This,Name) )
2415
2416
2417#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
2418 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2419
2420
2421#define ID3D12VideoDecodeCommandList1_GetType(This) \
2422 ( (This)->lpVtbl -> GetType(This) )
2423
2424
2425#define ID3D12VideoDecodeCommandList1_Close(This) \
2426 ( (This)->lpVtbl -> Close(This) )
2427
2428#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
2429 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2430
2431#define ID3D12VideoDecodeCommandList1_ClearState(This) \
2432 ( (This)->lpVtbl -> ClearState(This) )
2433
2434#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2435 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2436
2437#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
2438 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2439
2440#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2441 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2442
2443#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2444 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2445
2446#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2447 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2448
2449#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2450 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2451
2452#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
2453 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2454
2455#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
2456 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2457
2458#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
2459 ( (This)->lpVtbl -> EndEvent(This) )
2460
2461#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
2462 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
2463
2464#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2465 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2466
2467
2468#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
2469 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
2470
2471#endif /* COBJMACROS */
2472
2473
2474#endif /* C style interface */
2475
2476
2477
2478
2479#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2480
2481
2482/* interface __MIDL_itf_d3d12video_0000_0007 */
2483/* [local] */
2484
2485typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
2486 {
2487 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
2488 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
2489 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
2490 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
2491 INT FilterLevels[ 32 ];
2492 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
2493 D3D12_VIDEO_FIELD_TYPE FieldType;
2494 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
2495
2496
2497
2498extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2499extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
2500
2501#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2502#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2503
2504/* interface ID3D12VideoProcessCommandList1 */
2505/* [unique][local][object][uuid] */
2506
2507
2508EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
2509
2510#if defined(__cplusplus) && !defined(CINTERFACE)
2511
2512 MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
2513 ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
2514 {
2515 public:
2516 virtual void STDMETHODCALLTYPE ProcessFrames1(
2517 _In_ ID3D12VideoProcessor *pVideoProcessor,
2518 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2519 UINT NumInputStreams,
2520 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
2521
2522 };
2523
2524
2525#else /* C style interface */
2526
2527 typedef struct ID3D12VideoProcessCommandList1Vtbl
2528 {
2529 BEGIN_INTERFACE
2530
2531 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2532 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2533 ID3D12VideoProcessCommandList1 * This,
2534 REFIID riid,
2535 _COM_Outptr_ void **ppvObject);
2536
2537 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2538 ULONG ( STDMETHODCALLTYPE *AddRef )(
2539 ID3D12VideoProcessCommandList1 * This);
2540
2541 DECLSPEC_XFGVIRT(IUnknown, Release)
2542 ULONG ( STDMETHODCALLTYPE *Release )(
2543 ID3D12VideoProcessCommandList1 * This);
2544
2545 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2546 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2547 ID3D12VideoProcessCommandList1 * This,
2548 _In_ REFGUID guid,
2549 _Inout_ UINT *pDataSize,
2550 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2551
2552 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2553 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2554 ID3D12VideoProcessCommandList1 * This,
2555 _In_ REFGUID guid,
2556 _In_ UINT DataSize,
2557 _In_reads_bytes_opt_( DataSize ) const void *pData);
2558
2559 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2560 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2561 ID3D12VideoProcessCommandList1 * This,
2562 _In_ REFGUID guid,
2563 _In_opt_ const IUnknown *pData);
2564
2565 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2566 HRESULT ( STDMETHODCALLTYPE *SetName )(
2567 ID3D12VideoProcessCommandList1 * This,
2568 _In_z_ LPCWSTR Name);
2569
2570 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2571 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2572 ID3D12VideoProcessCommandList1 * This,
2573 REFIID riid,
2574 _COM_Outptr_opt_ void **ppvDevice);
2575
2576 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2577 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2578 ID3D12VideoProcessCommandList1 * This);
2579
2580 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
2581 HRESULT ( STDMETHODCALLTYPE *Close )(
2582 ID3D12VideoProcessCommandList1 * This);
2583
2584 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
2585 HRESULT ( STDMETHODCALLTYPE *Reset )(
2586 ID3D12VideoProcessCommandList1 * This,
2587 _In_ ID3D12CommandAllocator *pAllocator);
2588
2589 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
2590 void ( STDMETHODCALLTYPE *ClearState )(
2591 ID3D12VideoProcessCommandList1 * This);
2592
2593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2594 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2595 ID3D12VideoProcessCommandList1 * This,
2596 _In_ UINT NumBarriers,
2597 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2598
2599 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2600 void ( STDMETHODCALLTYPE *DiscardResource )(
2601 ID3D12VideoProcessCommandList1 * This,
2602 _In_ ID3D12Resource *pResource,
2603 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2604
2605 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2606 void ( STDMETHODCALLTYPE *BeginQuery )(
2607 ID3D12VideoProcessCommandList1 * This,
2608 _In_ ID3D12QueryHeap *pQueryHeap,
2609 _In_ D3D12_QUERY_TYPE Type,
2610 _In_ UINT Index);
2611
2612 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2613 void ( STDMETHODCALLTYPE *EndQuery )(
2614 ID3D12VideoProcessCommandList1 * This,
2615 _In_ ID3D12QueryHeap *pQueryHeap,
2616 _In_ D3D12_QUERY_TYPE Type,
2617 _In_ UINT Index);
2618
2619 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2620 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2621 ID3D12VideoProcessCommandList1 * This,
2622 _In_ ID3D12QueryHeap *pQueryHeap,
2623 _In_ D3D12_QUERY_TYPE Type,
2624 _In_ UINT StartIndex,
2625 _In_ UINT NumQueries,
2626 _In_ ID3D12Resource *pDestinationBuffer,
2627 _In_ UINT64 AlignedDestinationBufferOffset);
2628
2629 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2630 void ( STDMETHODCALLTYPE *SetPredication )(
2631 ID3D12VideoProcessCommandList1 * This,
2632 _In_opt_ ID3D12Resource *pBuffer,
2633 _In_ UINT64 AlignedBufferOffset,
2634 _In_ D3D12_PREDICATION_OP Operation);
2635
2636 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2637 void ( STDMETHODCALLTYPE *SetMarker )(
2638 ID3D12VideoProcessCommandList1 * This,
2639 UINT Metadata,
2640 _In_reads_bytes_opt_(Size) const void *pData,
2641 UINT Size);
2642
2643 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2644 void ( STDMETHODCALLTYPE *BeginEvent )(
2645 ID3D12VideoProcessCommandList1 * This,
2646 UINT Metadata,
2647 _In_reads_bytes_opt_(Size) const void *pData,
2648 UINT Size);
2649
2650 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2651 void ( STDMETHODCALLTYPE *EndEvent )(
2652 ID3D12VideoProcessCommandList1 * This);
2653
2654 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2655 void ( STDMETHODCALLTYPE *ProcessFrames )(
2656 ID3D12VideoProcessCommandList1 * This,
2657 _In_ ID3D12VideoProcessor *pVideoProcessor,
2658 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2659 UINT NumInputStreams,
2660 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2661
2662 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2663 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2664 ID3D12VideoProcessCommandList1 * This,
2665 UINT Count,
2666 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2667 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2668
2669 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
2670 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
2671 ID3D12VideoProcessCommandList1 * This,
2672 _In_ ID3D12VideoProcessor *pVideoProcessor,
2673 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2674 UINT NumInputStreams,
2675 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
2676
2677 END_INTERFACE
2678 } ID3D12VideoProcessCommandList1Vtbl;
2679
2680 interface ID3D12VideoProcessCommandList1
2681 {
2682 CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
2683 };
2684
2685
2686
2687#ifdef COBJMACROS
2688
2689
2690#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
2691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2692
2693#define ID3D12VideoProcessCommandList1_AddRef(This) \
2694 ( (This)->lpVtbl -> AddRef(This) )
2695
2696#define ID3D12VideoProcessCommandList1_Release(This) \
2697 ( (This)->lpVtbl -> Release(This) )
2698
2699
2700#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2701 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2702
2703#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2704 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2705
2706#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
2707 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2708
2709#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
2710 ( (This)->lpVtbl -> SetName(This,Name) )
2711
2712
2713#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
2714 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2715
2716
2717#define ID3D12VideoProcessCommandList1_GetType(This) \
2718 ( (This)->lpVtbl -> GetType(This) )
2719
2720
2721#define ID3D12VideoProcessCommandList1_Close(This) \
2722 ( (This)->lpVtbl -> Close(This) )
2723
2724#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
2725 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2726
2727#define ID3D12VideoProcessCommandList1_ClearState(This) \
2728 ( (This)->lpVtbl -> ClearState(This) )
2729
2730#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2731 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2732
2733#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
2734 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2735
2736#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2737 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2738
2739#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2740 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2741
2742#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2743 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2744
2745#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2746 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2747
2748#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
2749 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2750
2751#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
2752 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2753
2754#define ID3D12VideoProcessCommandList1_EndEvent(This) \
2755 ( (This)->lpVtbl -> EndEvent(This) )
2756
2757#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2758 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2759
2760#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2761 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2762
2763
2764#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2765 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2766
2767#endif /* COBJMACROS */
2768
2769
2770#endif /* C style interface */
2771
2772
2773
2774
2775#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
2776
2777
2778/* interface __MIDL_itf_d3d12video_0000_0008 */
2779/* [local] */
2780
2781typedef
2782enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
2783 {
2784 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2785 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2786 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2787
2788typedef
2789enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
2790 {
2791 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2792 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
2793 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
2794 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2795
2796DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )
2797typedef
2798enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
2799 {
2800 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2801 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2802
2803typedef
2804enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
2805 {
2806 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2807 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
2808 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2809
2810DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )
2811typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
2812 {
2813 UINT NodeIndex;
2814 BOOL VideoDecodeSupport;
2815 BOOL VideoProcessSupport;
2816 BOOL VideoEncodeSupport;
2817 } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2818
2819typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
2820 {
2821 UINT NodeIndex;
2822 DXGI_FORMAT InputFormat;
2823 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2824 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2825 D3D12_VIDEO_SIZE_RANGE SizeRange;
2826 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2827
2828typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
2829 {
2830 UINT NodeIndex;
2831 DXGI_FORMAT InputFormat;
2832 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2833 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2834 D3D12_VIDEO_SIZE_RANGE SizeRange;
2835 BOOL Protected;
2836 UINT64 MotionVectorHeapMemoryPoolL0Size;
2837 UINT64 MotionVectorHeapMemoryPoolL1Size;
2838 UINT64 MotionEstimatorMemoryPoolL0Size;
2839 UINT64 MotionEstimatorMemoryPoolL1Size;
2840 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
2841
2842typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
2843 {
2844 UINT NodeMask;
2845 DXGI_FORMAT InputFormat;
2846 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2847 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2848 D3D12_VIDEO_SIZE_RANGE SizeRange;
2849 } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2850
2851
2852
2853extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2854extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
2855
2856#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2857#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2858
2859/* interface ID3D12VideoMotionEstimator */
2860/* [unique][local][object][uuid] */
2861
2862
2863EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
2864
2865#if defined(__cplusplus) && !defined(CINTERFACE)
2866
2867 MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
2868 ID3D12VideoMotionEstimator : public ID3D12Pageable
2869 {
2870 public:
2871#if defined(_MSC_VER) || !defined(_WIN32)
2872 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2873#else
2874 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC *STDMETHODCALLTYPE GetDesc(
2875 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal) = 0;
2876#endif
2877
2878 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2879 REFIID riid,
2880 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2881
2882 };
2883
2884
2885#else /* C style interface */
2886
2887 typedef struct ID3D12VideoMotionEstimatorVtbl
2888 {
2889 BEGIN_INTERFACE
2890
2891 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2892 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2893 ID3D12VideoMotionEstimator * This,
2894 REFIID riid,
2895 _COM_Outptr_ void **ppvObject);
2896
2897 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2898 ULONG ( STDMETHODCALLTYPE *AddRef )(
2899 ID3D12VideoMotionEstimator * This);
2900
2901 DECLSPEC_XFGVIRT(IUnknown, Release)
2902 ULONG ( STDMETHODCALLTYPE *Release )(
2903 ID3D12VideoMotionEstimator * This);
2904
2905 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2906 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2907 ID3D12VideoMotionEstimator * This,
2908 _In_ REFGUID guid,
2909 _Inout_ UINT *pDataSize,
2910 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2911
2912 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2913 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2914 ID3D12VideoMotionEstimator * This,
2915 _In_ REFGUID guid,
2916 _In_ UINT DataSize,
2917 _In_reads_bytes_opt_( DataSize ) const void *pData);
2918
2919 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2920 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2921 ID3D12VideoMotionEstimator * This,
2922 _In_ REFGUID guid,
2923 _In_opt_ const IUnknown *pData);
2924
2925 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2926 HRESULT ( STDMETHODCALLTYPE *SetName )(
2927 ID3D12VideoMotionEstimator * This,
2928 _In_z_ LPCWSTR Name);
2929
2930 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2931 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2932 ID3D12VideoMotionEstimator * This,
2933 REFIID riid,
2934 _COM_Outptr_opt_ void **ppvDevice);
2935
2936 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
2937#if !defined(_WIN32)
2938 D3D12_VIDEO_MOTION_ESTIMATOR_DESC ( STDMETHODCALLTYPE *GetDesc )(
2939 ID3D12VideoMotionEstimator * This);
2940
2941#else
2942 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
2943 ID3D12VideoMotionEstimator * This,
2944 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
2945
2946#endif
2947
2948 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
2949 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2950 ID3D12VideoMotionEstimator * This,
2951 REFIID riid,
2952 _COM_Outptr_opt_ void **ppProtectedSession);
2953
2954 END_INTERFACE
2955 } ID3D12VideoMotionEstimatorVtbl;
2956
2957 interface ID3D12VideoMotionEstimator
2958 {
2959 CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
2960 };
2961
2962
2963
2964#ifdef COBJMACROS
2965
2966
2967#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
2968 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2969
2970#define ID3D12VideoMotionEstimator_AddRef(This) \
2971 ( (This)->lpVtbl -> AddRef(This) )
2972
2973#define ID3D12VideoMotionEstimator_Release(This) \
2974 ( (This)->lpVtbl -> Release(This) )
2975
2976
2977#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
2978 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2979
2980#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
2981 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2982
2983#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
2984 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2985
2986#define ID3D12VideoMotionEstimator_SetName(This,Name) \
2987 ( (This)->lpVtbl -> SetName(This,Name) )
2988
2989
2990#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
2991 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2992
2993
2994#if !defined(_WIN32)
2995
2996#define ID3D12VideoMotionEstimator_GetDesc(This) \
2997 ( (This)->lpVtbl -> GetDesc(This) )
2998#else
2999#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
3000 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3001#endif
3002
3003#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3004 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3005
3006#endif /* COBJMACROS */
3007
3008
3009#endif /* C style interface */
3010
3011
3012
3013
3014#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
3015
3016
3017/* interface __MIDL_itf_d3d12video_0000_0009 */
3018/* [local] */
3019
3020typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
3021 {
3022 UINT NodeMask;
3023 DXGI_FORMAT InputFormat;
3024 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
3025 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
3026 D3D12_VIDEO_SIZE_RANGE SizeRange;
3027 } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
3028
3029
3030
3031extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
3032extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
3033
3034#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3035#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3036
3037/* interface ID3D12VideoMotionVectorHeap */
3038/* [unique][local][object][uuid] */
3039
3040
3041EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
3042
3043#if defined(__cplusplus) && !defined(CINTERFACE)
3044
3045 MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
3046 ID3D12VideoMotionVectorHeap : public ID3D12Pageable
3047 {
3048 public:
3049#if defined(_MSC_VER) || !defined(_WIN32)
3050 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
3051#else
3052 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
3053 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal) = 0;
3054#endif
3055
3056 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3057 REFIID riid,
3058 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3059
3060 };
3061
3062
3063#else /* C style interface */
3064
3065 typedef struct ID3D12VideoMotionVectorHeapVtbl
3066 {
3067 BEGIN_INTERFACE
3068
3069 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3070 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3071 ID3D12VideoMotionVectorHeap * This,
3072 REFIID riid,
3073 _COM_Outptr_ void **ppvObject);
3074
3075 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3076 ULONG ( STDMETHODCALLTYPE *AddRef )(
3077 ID3D12VideoMotionVectorHeap * This);
3078
3079 DECLSPEC_XFGVIRT(IUnknown, Release)
3080 ULONG ( STDMETHODCALLTYPE *Release )(
3081 ID3D12VideoMotionVectorHeap * This);
3082
3083 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3084 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3085 ID3D12VideoMotionVectorHeap * This,
3086 _In_ REFGUID guid,
3087 _Inout_ UINT *pDataSize,
3088 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3089
3090 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3091 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3092 ID3D12VideoMotionVectorHeap * This,
3093 _In_ REFGUID guid,
3094 _In_ UINT DataSize,
3095 _In_reads_bytes_opt_( DataSize ) const void *pData);
3096
3097 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3098 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3099 ID3D12VideoMotionVectorHeap * This,
3100 _In_ REFGUID guid,
3101 _In_opt_ const IUnknown *pData);
3102
3103 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3104 HRESULT ( STDMETHODCALLTYPE *SetName )(
3105 ID3D12VideoMotionVectorHeap * This,
3106 _In_z_ LPCWSTR Name);
3107
3108 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3109 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3110 ID3D12VideoMotionVectorHeap * This,
3111 REFIID riid,
3112 _COM_Outptr_opt_ void **ppvDevice);
3113
3114 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
3115#if !defined(_WIN32)
3116 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
3117 ID3D12VideoMotionVectorHeap * This);
3118
3119#else
3120 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
3121 ID3D12VideoMotionVectorHeap * This,
3122 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
3123
3124#endif
3125
3126 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
3127 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3128 ID3D12VideoMotionVectorHeap * This,
3129 REFIID riid,
3130 _COM_Outptr_opt_ void **ppProtectedSession);
3131
3132 END_INTERFACE
3133 } ID3D12VideoMotionVectorHeapVtbl;
3134
3135 interface ID3D12VideoMotionVectorHeap
3136 {
3137 CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
3138 };
3139
3140
3141
3142#ifdef COBJMACROS
3143
3144
3145#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
3146 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3147
3148#define ID3D12VideoMotionVectorHeap_AddRef(This) \
3149 ( (This)->lpVtbl -> AddRef(This) )
3150
3151#define ID3D12VideoMotionVectorHeap_Release(This) \
3152 ( (This)->lpVtbl -> Release(This) )
3153
3154
3155#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
3156 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3157
3158#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
3159 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3160
3161#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
3162 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3163
3164#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
3165 ( (This)->lpVtbl -> SetName(This,Name) )
3166
3167
3168#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
3169 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3170
3171
3172#if !defined(_WIN32)
3173
3174#define ID3D12VideoMotionVectorHeap_GetDesc(This) \
3175 ( (This)->lpVtbl -> GetDesc(This) )
3176#else
3177#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
3178 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3179#endif
3180
3181#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3182 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3183
3184#endif /* COBJMACROS */
3185
3186
3187#endif /* C style interface */
3188
3189
3190
3191
3192#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
3193
3194
3195#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
3196#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
3197
3198/* interface ID3D12VideoDevice1 */
3199/* [unique][local][object][uuid] */
3200
3201
3202EXTERN_C const IID IID_ID3D12VideoDevice1;
3203
3204#if defined(__cplusplus) && !defined(CINTERFACE)
3205
3206 MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
3207 ID3D12VideoDevice1 : public ID3D12VideoDevice
3208 {
3209 public:
3210 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
3211 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3212 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3213 _In_ REFIID riid,
3214 _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
3215
3216 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
3217 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3218 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3219 _In_ REFIID riid,
3220 _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
3221
3222 };
3223
3224
3225#else /* C style interface */
3226
3227 typedef struct ID3D12VideoDevice1Vtbl
3228 {
3229 BEGIN_INTERFACE
3230
3231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3233 ID3D12VideoDevice1 * This,
3234 REFIID riid,
3235 _COM_Outptr_ void **ppvObject);
3236
3237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3238 ULONG ( STDMETHODCALLTYPE *AddRef )(
3239 ID3D12VideoDevice1 * This);
3240
3241 DECLSPEC_XFGVIRT(IUnknown, Release)
3242 ULONG ( STDMETHODCALLTYPE *Release )(
3243 ID3D12VideoDevice1 * This);
3244
3245 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
3246 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
3247 ID3D12VideoDevice1 * This,
3248 D3D12_FEATURE_VIDEO FeatureVideo,
3249 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
3250 UINT FeatureSupportDataSize);
3251
3252 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
3253 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
3254 ID3D12VideoDevice1 * This,
3255 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
3256 _In_ REFIID riid,
3257 _COM_Outptr_ void **ppVideoDecoder);
3258
3259 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
3260 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
3261 ID3D12VideoDevice1 * This,
3262 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
3263 _In_ REFIID riid,
3264 _COM_Outptr_ void **ppVideoDecoderHeap);
3265
3266 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
3267 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
3268 ID3D12VideoDevice1 * This,
3269 UINT NodeMask,
3270 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
3271 UINT NumInputStreamDescs,
3272 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
3273 _In_ REFIID riid,
3274 _COM_Outptr_ void **ppVideoProcessor);
3275
3276 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
3277 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
3278 ID3D12VideoDevice1 * This,
3279 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3280 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3281 _In_ REFIID riid,
3282 _COM_Outptr_ void **ppVideoMotionEstimator);
3283
3284 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
3285 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
3286 ID3D12VideoDevice1 * This,
3287 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3288 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3289 _In_ REFIID riid,
3290 _COM_Outptr_ void **ppVideoMotionVectorHeap);
3291
3292 END_INTERFACE
3293 } ID3D12VideoDevice1Vtbl;
3294
3295 interface ID3D12VideoDevice1
3296 {
3297 CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
3298 };
3299
3300
3301
3302#ifdef COBJMACROS
3303
3304
3305#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
3306 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3307
3308#define ID3D12VideoDevice1_AddRef(This) \
3309 ( (This)->lpVtbl -> AddRef(This) )
3310
3311#define ID3D12VideoDevice1_Release(This) \
3312 ( (This)->lpVtbl -> Release(This) )
3313
3314
3315#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
3316 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
3317
3318#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
3319 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
3320
3321#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
3322 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
3323
3324#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
3325 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
3326
3327
3328#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
3329 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
3330
3331#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
3332 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
3333
3334#endif /* COBJMACROS */
3335
3336
3337#endif /* C style interface */
3338
3339
3340
3341
3342#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
3343
3344
3345/* interface __MIDL_itf_d3d12video_0000_0011 */
3346/* [local] */
3347
3348typedef struct D3D12_RESOURCE_COORDINATE
3349 {
3350 UINT64 X;
3351 UINT Y;
3352 UINT Z;
3353 UINT SubresourceIndex;
3354 } D3D12_RESOURCE_COORDINATE;
3355
3356typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3357 {
3358 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3359 } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3360
3361typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
3362 {
3363 ID3D12Resource *pInputTexture2D;
3364 UINT InputSubresourceIndex;
3365 ID3D12Resource *pReferenceTexture2D;
3366 UINT ReferenceSubresourceIndex;
3367 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
3368 } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
3369
3370typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
3371 {
3372 ID3D12Resource *pMotionVectorTexture2D;
3373 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
3374 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
3375
3376typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
3377 {
3378 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3379 UINT PixelWidth;
3380 UINT PixelHeight;
3381 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
3382
3383
3384
3385extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3386extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
3387
3388#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3389#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3390
3391/* interface ID3D12VideoEncodeCommandList */
3392/* [unique][local][object][uuid] */
3393
3394
3395EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
3396
3397#if defined(__cplusplus) && !defined(CINTERFACE)
3398
3399 MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
3400 ID3D12VideoEncodeCommandList : public ID3D12CommandList
3401 {
3402 public:
3403 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
3404
3405 virtual HRESULT STDMETHODCALLTYPE Reset(
3406 _In_ ID3D12CommandAllocator *pAllocator) = 0;
3407
3408 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
3409
3410 virtual void STDMETHODCALLTYPE ResourceBarrier(
3411 _In_ UINT NumBarriers,
3412 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3413
3414 virtual void STDMETHODCALLTYPE DiscardResource(
3415 _In_ ID3D12Resource *pResource,
3416 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3417
3418 virtual void STDMETHODCALLTYPE BeginQuery(
3419 _In_ ID3D12QueryHeap *pQueryHeap,
3420 _In_ D3D12_QUERY_TYPE Type,
3421 _In_ UINT Index) = 0;
3422
3423 virtual void STDMETHODCALLTYPE EndQuery(
3424 _In_ ID3D12QueryHeap *pQueryHeap,
3425 _In_ D3D12_QUERY_TYPE Type,
3426 _In_ UINT Index) = 0;
3427
3428 virtual void STDMETHODCALLTYPE ResolveQueryData(
3429 _In_ ID3D12QueryHeap *pQueryHeap,
3430 _In_ D3D12_QUERY_TYPE Type,
3431 _In_ UINT StartIndex,
3432 _In_ UINT NumQueries,
3433 _In_ ID3D12Resource *pDestinationBuffer,
3434 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3435
3436 virtual void STDMETHODCALLTYPE SetPredication(
3437 _In_opt_ ID3D12Resource *pBuffer,
3438 _In_ UINT64 AlignedBufferOffset,
3439 _In_ D3D12_PREDICATION_OP Operation) = 0;
3440
3441 virtual void STDMETHODCALLTYPE SetMarker(
3442 UINT Metadata,
3443 _In_reads_bytes_opt_(Size) const void *pData,
3444 UINT Size) = 0;
3445
3446 virtual void STDMETHODCALLTYPE BeginEvent(
3447 UINT Metadata,
3448 _In_reads_bytes_opt_(Size) const void *pData,
3449 UINT Size) = 0;
3450
3451 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
3452
3453 virtual void STDMETHODCALLTYPE EstimateMotion(
3454 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3455 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3456 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
3457
3458 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
3459 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3460 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
3461
3462 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
3463 UINT Count,
3464 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3465 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
3466
3467 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
3468 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
3469
3470 };
3471
3472
3473#else /* C style interface */
3474
3475 typedef struct ID3D12VideoEncodeCommandListVtbl
3476 {
3477 BEGIN_INTERFACE
3478
3479 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3480 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3481 ID3D12VideoEncodeCommandList * This,
3482 REFIID riid,
3483 _COM_Outptr_ void **ppvObject);
3484
3485 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3486 ULONG ( STDMETHODCALLTYPE *AddRef )(
3487 ID3D12VideoEncodeCommandList * This);
3488
3489 DECLSPEC_XFGVIRT(IUnknown, Release)
3490 ULONG ( STDMETHODCALLTYPE *Release )(
3491 ID3D12VideoEncodeCommandList * This);
3492
3493 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3494 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3495 ID3D12VideoEncodeCommandList * This,
3496 _In_ REFGUID guid,
3497 _Inout_ UINT *pDataSize,
3498 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3499
3500 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3501 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3502 ID3D12VideoEncodeCommandList * This,
3503 _In_ REFGUID guid,
3504 _In_ UINT DataSize,
3505 _In_reads_bytes_opt_( DataSize ) const void *pData);
3506
3507 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3508 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3509 ID3D12VideoEncodeCommandList * This,
3510 _In_ REFGUID guid,
3511 _In_opt_ const IUnknown *pData);
3512
3513 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3514 HRESULT ( STDMETHODCALLTYPE *SetName )(
3515 ID3D12VideoEncodeCommandList * This,
3516 _In_z_ LPCWSTR Name);
3517
3518 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3519 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3520 ID3D12VideoEncodeCommandList * This,
3521 REFIID riid,
3522 _COM_Outptr_opt_ void **ppvDevice);
3523
3524 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
3525 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
3526 ID3D12VideoEncodeCommandList * This);
3527
3528 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
3529 HRESULT ( STDMETHODCALLTYPE *Close )(
3530 ID3D12VideoEncodeCommandList * This);
3531
3532 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
3533 HRESULT ( STDMETHODCALLTYPE *Reset )(
3534 ID3D12VideoEncodeCommandList * This,
3535 _In_ ID3D12CommandAllocator *pAllocator);
3536
3537 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
3538 void ( STDMETHODCALLTYPE *ClearState )(
3539 ID3D12VideoEncodeCommandList * This);
3540
3541 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
3542 void ( STDMETHODCALLTYPE *ResourceBarrier )(
3543 ID3D12VideoEncodeCommandList * This,
3544 _In_ UINT NumBarriers,
3545 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3546
3547 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
3548 void ( STDMETHODCALLTYPE *DiscardResource )(
3549 ID3D12VideoEncodeCommandList * This,
3550 _In_ ID3D12Resource *pResource,
3551 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
3552
3553 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
3554 void ( STDMETHODCALLTYPE *BeginQuery )(
3555 ID3D12VideoEncodeCommandList * This,
3556 _In_ ID3D12QueryHeap *pQueryHeap,
3557 _In_ D3D12_QUERY_TYPE Type,
3558 _In_ UINT Index);
3559
3560 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
3561 void ( STDMETHODCALLTYPE *EndQuery )(
3562 ID3D12VideoEncodeCommandList * This,
3563 _In_ ID3D12QueryHeap *pQueryHeap,
3564 _In_ D3D12_QUERY_TYPE Type,
3565 _In_ UINT Index);
3566
3567 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
3568 void ( STDMETHODCALLTYPE *ResolveQueryData )(
3569 ID3D12VideoEncodeCommandList * This,
3570 _In_ ID3D12QueryHeap *pQueryHeap,
3571 _In_ D3D12_QUERY_TYPE Type,
3572 _In_ UINT StartIndex,
3573 _In_ UINT NumQueries,
3574 _In_ ID3D12Resource *pDestinationBuffer,
3575 _In_ UINT64 AlignedDestinationBufferOffset);
3576
3577 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
3578 void ( STDMETHODCALLTYPE *SetPredication )(
3579 ID3D12VideoEncodeCommandList * This,
3580 _In_opt_ ID3D12Resource *pBuffer,
3581 _In_ UINT64 AlignedBufferOffset,
3582 _In_ D3D12_PREDICATION_OP Operation);
3583
3584 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
3585 void ( STDMETHODCALLTYPE *SetMarker )(
3586 ID3D12VideoEncodeCommandList * This,
3587 UINT Metadata,
3588 _In_reads_bytes_opt_(Size) const void *pData,
3589 UINT Size);
3590
3591 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
3592 void ( STDMETHODCALLTYPE *BeginEvent )(
3593 ID3D12VideoEncodeCommandList * This,
3594 UINT Metadata,
3595 _In_reads_bytes_opt_(Size) const void *pData,
3596 UINT Size);
3597
3598 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
3599 void ( STDMETHODCALLTYPE *EndEvent )(
3600 ID3D12VideoEncodeCommandList * This);
3601
3602 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
3603 void ( STDMETHODCALLTYPE *EstimateMotion )(
3604 ID3D12VideoEncodeCommandList * This,
3605 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3606 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3607 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
3608
3609 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
3610 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
3611 ID3D12VideoEncodeCommandList * This,
3612 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3613 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
3614
3615 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
3616 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
3617 ID3D12VideoEncodeCommandList * This,
3618 UINT Count,
3619 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3620 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
3621
3622 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
3623 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
3624 ID3D12VideoEncodeCommandList * This,
3625 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
3626
3627 END_INTERFACE
3628 } ID3D12VideoEncodeCommandListVtbl;
3629
3630 interface ID3D12VideoEncodeCommandList
3631 {
3632 CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
3633 };
3634
3635
3636
3637#ifdef COBJMACROS
3638
3639
3640#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
3641 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3642
3643#define ID3D12VideoEncodeCommandList_AddRef(This) \
3644 ( (This)->lpVtbl -> AddRef(This) )
3645
3646#define ID3D12VideoEncodeCommandList_Release(This) \
3647 ( (This)->lpVtbl -> Release(This) )
3648
3649
3650#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
3651 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3652
3653#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
3654 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3655
3656#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
3657 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3658
3659#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
3660 ( (This)->lpVtbl -> SetName(This,Name) )
3661
3662
3663#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
3664 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3665
3666
3667#define ID3D12VideoEncodeCommandList_GetType(This) \
3668 ( (This)->lpVtbl -> GetType(This) )
3669
3670
3671#define ID3D12VideoEncodeCommandList_Close(This) \
3672 ( (This)->lpVtbl -> Close(This) )
3673
3674#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
3675 ( (This)->lpVtbl -> Reset(This,pAllocator) )
3676
3677#define ID3D12VideoEncodeCommandList_ClearState(This) \
3678 ( (This)->lpVtbl -> ClearState(This) )
3679
3680#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
3681 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
3682
3683#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
3684 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
3685
3686#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
3687 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
3688
3689#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
3690 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
3691
3692#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
3693 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
3694
3695#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
3696 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
3697
3698#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
3699 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
3700
3701#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
3702 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
3703
3704#define ID3D12VideoEncodeCommandList_EndEvent(This) \
3705 ( (This)->lpVtbl -> EndEvent(This) )
3706
3707#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
3708 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
3709
3710#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
3711 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
3712
3713#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
3714 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
3715
3716#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
3717 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
3718
3719#endif /* COBJMACROS */
3720
3721
3722#endif /* C style interface */
3723
3724
3725
3726
3727#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
3728
3729
3730/* interface __MIDL_itf_d3d12video_0000_0012 */
3731/* [local] */
3732
3733typedef
3734enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
3735 {
3736 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
3737 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
3738 } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
3739
3740DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )
3741typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
3742 {
3743 UINT NodeIndex;
3744 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
3745 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3746 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
3747
3748typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
3749 {
3750 UINT NodeIndex;
3751 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3752 } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
3753
3754typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
3755 {
3756 UINT NodeIndex;
3757 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3758 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
3759
3760typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
3761 {
3762 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
3763 BOOL Protected;
3764 UINT64 MemoryPoolL0Size;
3765 UINT64 MemoryPoolL1Size;
3766 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
3767
3768typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
3769 {
3770 UINT NodeMask;
3771 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
3772 UINT NumInputStreamDescs;
3773 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
3774 BOOL Protected;
3775 UINT64 MemoryPoolL0Size;
3776 UINT64 MemoryPoolL1Size;
3777 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
3778
3779typedef
3780enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
3781 {
3782 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
3783 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3784 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3785 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
3786 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
3787 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
3788 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
3789 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
3790
3791typedef
3792enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
3793 {
3794 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
3795 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
3796 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
3797 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
3798 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
3799 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
3800 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
3801 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
3802 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
3803 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
3804 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
3805 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
3806
3807typedef
3808enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
3809 {
3810 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
3811 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
3812 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
3813 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
3814
3815DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )
3816typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3817 {
3818 UINT NodeIndex;
3819 UINT CommandCount;
3820 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3821
3822typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
3823 {
3824 GUID CommandId;
3825 LPCWSTR Name;
3826 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
3827 } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
3828
3829typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
3830 {
3831 UINT NodeIndex;
3832 UINT CommandCount;
3833 _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
3834 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
3835
3836typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
3837 {
3838 GUID CommandId;
3839 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3840 UINT ParameterCount;
3841 UINT ParameterPacking;
3842 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
3843
3844typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
3845 {
3846 LPCWSTR Name;
3847 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
3848 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
3849 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
3850
3851typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
3852 {
3853 GUID CommandId;
3854 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3855 UINT ParameterCount;
3856 _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
3857 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
3858
3859typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
3860 {
3861 UINT NodeIndex;
3862 GUID CommandId;
3863 _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
3864 SIZE_T InputDataSizeInBytes;
3865 _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
3866 SIZE_T OutputDataSizeInBytes;
3867 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
3868
3869typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
3870 {
3871 UINT NodeIndex;
3872 GUID CommandId;
3873 _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
3874 SIZE_T CreationParametersSizeInBytes;
3875 UINT64 MemoryPoolL0Size;
3876 UINT64 MemoryPoolL1Size;
3877 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
3878
3879typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3880 {
3881 UINT NodeMask;
3882 GUID CommandId;
3883 } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3884
3885
3886
3887extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3888extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
3889
3890#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3891#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3892
3893/* interface ID3D12VideoDecoder1 */
3894/* [unique][local][object][uuid] */
3895
3896
3897EXTERN_C const IID IID_ID3D12VideoDecoder1;
3898
3899#if defined(__cplusplus) && !defined(CINTERFACE)
3900
3901 MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
3902 ID3D12VideoDecoder1 : public ID3D12VideoDecoder
3903 {
3904 public:
3905 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3906 REFIID riid,
3907 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3908
3909 };
3910
3911
3912#else /* C style interface */
3913
3914 typedef struct ID3D12VideoDecoder1Vtbl
3915 {
3916 BEGIN_INTERFACE
3917
3918 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3919 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3920 ID3D12VideoDecoder1 * This,
3921 REFIID riid,
3922 _COM_Outptr_ void **ppvObject);
3923
3924 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3925 ULONG ( STDMETHODCALLTYPE *AddRef )(
3926 ID3D12VideoDecoder1 * This);
3927
3928 DECLSPEC_XFGVIRT(IUnknown, Release)
3929 ULONG ( STDMETHODCALLTYPE *Release )(
3930 ID3D12VideoDecoder1 * This);
3931
3932 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3933 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3934 ID3D12VideoDecoder1 * This,
3935 _In_ REFGUID guid,
3936 _Inout_ UINT *pDataSize,
3937 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3938
3939 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3940 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3941 ID3D12VideoDecoder1 * This,
3942 _In_ REFGUID guid,
3943 _In_ UINT DataSize,
3944 _In_reads_bytes_opt_( DataSize ) const void *pData);
3945
3946 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3947 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3948 ID3D12VideoDecoder1 * This,
3949 _In_ REFGUID guid,
3950 _In_opt_ const IUnknown *pData);
3951
3952 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3953 HRESULT ( STDMETHODCALLTYPE *SetName )(
3954 ID3D12VideoDecoder1 * This,
3955 _In_z_ LPCWSTR Name);
3956
3957 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3958 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3959 ID3D12VideoDecoder1 * This,
3960 REFIID riid,
3961 _COM_Outptr_opt_ void **ppvDevice);
3962
3963 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
3964#if !defined(_WIN32)
3965 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
3966 ID3D12VideoDecoder1 * This);
3967
3968#else
3969 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
3970 ID3D12VideoDecoder1 * This,
3971 D3D12_VIDEO_DECODER_DESC * RetVal);
3972
3973#endif
3974
3975 DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
3976 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3977 ID3D12VideoDecoder1 * This,
3978 REFIID riid,
3979 _COM_Outptr_opt_ void **ppProtectedSession);
3980
3981 END_INTERFACE
3982 } ID3D12VideoDecoder1Vtbl;
3983
3984 interface ID3D12VideoDecoder1
3985 {
3986 CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
3987 };
3988
3989
3990
3991#ifdef COBJMACROS
3992
3993
3994#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
3995 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3996
3997#define ID3D12VideoDecoder1_AddRef(This) \
3998 ( (This)->lpVtbl -> AddRef(This) )
3999
4000#define ID3D12VideoDecoder1_Release(This) \
4001 ( (This)->lpVtbl -> Release(This) )
4002
4003
4004#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
4005 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4006
4007#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
4008 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4009
4010#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
4011 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4012
4013#define ID3D12VideoDecoder1_SetName(This,Name) \
4014 ( (This)->lpVtbl -> SetName(This,Name) )
4015
4016
4017#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
4018 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4019
4020
4021#if !defined(_WIN32)
4022
4023#define ID3D12VideoDecoder1_GetDesc(This) \
4024 ( (This)->lpVtbl -> GetDesc(This) )
4025#else
4026#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
4027 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4028#endif
4029
4030
4031#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4032 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4033
4034#endif /* COBJMACROS */
4035
4036
4037#endif /* C style interface */
4038
4039
4040
4041
4042#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
4043
4044
4045#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4046#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4047
4048/* interface ID3D12VideoDecoderHeap1 */
4049/* [unique][local][object][uuid] */
4050
4051
4052EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
4053
4054#if defined(__cplusplus) && !defined(CINTERFACE)
4055
4056 MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
4057 ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
4058 {
4059 public:
4060 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4061 REFIID riid,
4062 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4063
4064 };
4065
4066
4067#else /* C style interface */
4068
4069 typedef struct ID3D12VideoDecoderHeap1Vtbl
4070 {
4071 BEGIN_INTERFACE
4072
4073 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4074 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4075 ID3D12VideoDecoderHeap1 * This,
4076 REFIID riid,
4077 _COM_Outptr_ void **ppvObject);
4078
4079 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4080 ULONG ( STDMETHODCALLTYPE *AddRef )(
4081 ID3D12VideoDecoderHeap1 * This);
4082
4083 DECLSPEC_XFGVIRT(IUnknown, Release)
4084 ULONG ( STDMETHODCALLTYPE *Release )(
4085 ID3D12VideoDecoderHeap1 * This);
4086
4087 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4088 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4089 ID3D12VideoDecoderHeap1 * This,
4090 _In_ REFGUID guid,
4091 _Inout_ UINT *pDataSize,
4092 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4093
4094 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4095 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4096 ID3D12VideoDecoderHeap1 * This,
4097 _In_ REFGUID guid,
4098 _In_ UINT DataSize,
4099 _In_reads_bytes_opt_( DataSize ) const void *pData);
4100
4101 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4102 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4103 ID3D12VideoDecoderHeap1 * This,
4104 _In_ REFGUID guid,
4105 _In_opt_ const IUnknown *pData);
4106
4107 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4108 HRESULT ( STDMETHODCALLTYPE *SetName )(
4109 ID3D12VideoDecoderHeap1 * This,
4110 _In_z_ LPCWSTR Name);
4111
4112 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4113 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4114 ID3D12VideoDecoderHeap1 * This,
4115 REFIID riid,
4116 _COM_Outptr_opt_ void **ppvDevice);
4117
4118 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
4119#if !defined(_WIN32)
4120 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4121 ID3D12VideoDecoderHeap1 * This);
4122
4123#else
4124 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4125 ID3D12VideoDecoderHeap1 * This,
4126 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
4127
4128#endif
4129
4130 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
4131 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4132 ID3D12VideoDecoderHeap1 * This,
4133 REFIID riid,
4134 _COM_Outptr_opt_ void **ppProtectedSession);
4135
4136 END_INTERFACE
4137 } ID3D12VideoDecoderHeap1Vtbl;
4138
4139 interface ID3D12VideoDecoderHeap1
4140 {
4141 CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
4142 };
4143
4144
4145
4146#ifdef COBJMACROS
4147
4148
4149#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
4150 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4151
4152#define ID3D12VideoDecoderHeap1_AddRef(This) \
4153 ( (This)->lpVtbl -> AddRef(This) )
4154
4155#define ID3D12VideoDecoderHeap1_Release(This) \
4156 ( (This)->lpVtbl -> Release(This) )
4157
4158
4159#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
4160 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4161
4162#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
4163 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4164
4165#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
4166 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4167
4168#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
4169 ( (This)->lpVtbl -> SetName(This,Name) )
4170
4171
4172#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
4173 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4174
4175
4176#if !defined(_WIN32)
4177
4178#define ID3D12VideoDecoderHeap1_GetDesc(This) \
4179 ( (This)->lpVtbl -> GetDesc(This) )
4180#else
4181#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
4182 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4183#endif
4184
4185
4186#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4187 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4188
4189#endif /* COBJMACROS */
4190
4191
4192#endif /* C style interface */
4193
4194
4195
4196
4197#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
4198
4199
4200#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4201#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4202
4203/* interface ID3D12VideoProcessor1 */
4204/* [unique][local][object][uuid] */
4205
4206
4207EXTERN_C const IID IID_ID3D12VideoProcessor1;
4208
4209#if defined(__cplusplus) && !defined(CINTERFACE)
4210
4211 MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
4212 ID3D12VideoProcessor1 : public ID3D12VideoProcessor
4213 {
4214 public:
4215 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4216 REFIID riid,
4217 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4218
4219 };
4220
4221
4222#else /* C style interface */
4223
4224 typedef struct ID3D12VideoProcessor1Vtbl
4225 {
4226 BEGIN_INTERFACE
4227
4228 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4229 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4230 ID3D12VideoProcessor1 * This,
4231 REFIID riid,
4232 _COM_Outptr_ void **ppvObject);
4233
4234 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4235 ULONG ( STDMETHODCALLTYPE *AddRef )(
4236 ID3D12VideoProcessor1 * This);
4237
4238 DECLSPEC_XFGVIRT(IUnknown, Release)
4239 ULONG ( STDMETHODCALLTYPE *Release )(
4240 ID3D12VideoProcessor1 * This);
4241
4242 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4243 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4244 ID3D12VideoProcessor1 * This,
4245 _In_ REFGUID guid,
4246 _Inout_ UINT *pDataSize,
4247 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4248
4249 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4250 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4251 ID3D12VideoProcessor1 * This,
4252 _In_ REFGUID guid,
4253 _In_ UINT DataSize,
4254 _In_reads_bytes_opt_( DataSize ) const void *pData);
4255
4256 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4257 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4258 ID3D12VideoProcessor1 * This,
4259 _In_ REFGUID guid,
4260 _In_opt_ const IUnknown *pData);
4261
4262 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4263 HRESULT ( STDMETHODCALLTYPE *SetName )(
4264 ID3D12VideoProcessor1 * This,
4265 _In_z_ LPCWSTR Name);
4266
4267 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4268 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4269 ID3D12VideoProcessor1 * This,
4270 REFIID riid,
4271 _COM_Outptr_opt_ void **ppvDevice);
4272
4273 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
4274 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
4275 ID3D12VideoProcessor1 * This);
4276
4277 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
4278 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
4279 ID3D12VideoProcessor1 * This);
4280
4281 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
4282 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
4283 ID3D12VideoProcessor1 * This,
4284 UINT NumInputStreamDescs,
4285 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
4286
4287 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
4288#if !defined(_WIN32)
4289 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4290 ID3D12VideoProcessor1 * This);
4291
4292#else
4293 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4294 ID3D12VideoProcessor1 * This,
4295 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
4296
4297#endif
4298
4299 DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
4300 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4301 ID3D12VideoProcessor1 * This,
4302 REFIID riid,
4303 _COM_Outptr_opt_ void **ppProtectedSession);
4304
4305 END_INTERFACE
4306 } ID3D12VideoProcessor1Vtbl;
4307
4308 interface ID3D12VideoProcessor1
4309 {
4310 CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
4311 };
4312
4313
4314
4315#ifdef COBJMACROS
4316
4317
4318#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
4319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4320
4321#define ID3D12VideoProcessor1_AddRef(This) \
4322 ( (This)->lpVtbl -> AddRef(This) )
4323
4324#define ID3D12VideoProcessor1_Release(This) \
4325 ( (This)->lpVtbl -> Release(This) )
4326
4327
4328#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
4329 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4330
4331#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
4332 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4333
4334#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
4335 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4336
4337#define ID3D12VideoProcessor1_SetName(This,Name) \
4338 ( (This)->lpVtbl -> SetName(This,Name) )
4339
4340
4341#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
4342 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4343
4344
4345
4346#define ID3D12VideoProcessor1_GetNodeMask(This) \
4347 ( (This)->lpVtbl -> GetNodeMask(This) )
4348
4349#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
4350 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
4351
4352#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
4353 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
4354#if !defined(_WIN32)
4355
4356#define ID3D12VideoProcessor1_GetOutputStreamDesc(This) \
4357 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
4358#else
4359#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
4360 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
4361#endif
4362
4363
4364#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4365 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4366
4367#endif /* COBJMACROS */
4368
4369
4370#endif /* C style interface */
4371
4372
4373
4374
4375#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
4376
4377
4378#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4379#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4380
4381/* interface ID3D12VideoExtensionCommand */
4382/* [unique][local][object][uuid] */
4383
4384
4385EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
4386
4387#if defined(__cplusplus) && !defined(CINTERFACE)
4388
4389 MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
4390 ID3D12VideoExtensionCommand : public ID3D12Pageable
4391 {
4392 public:
4393#if defined(_MSC_VER) || !defined(_WIN32)
4394 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4395#else
4396 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC *STDMETHODCALLTYPE GetDesc(
4397 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal) = 0;
4398#endif
4399
4400 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4401 REFIID riid,
4402 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4403
4404 };
4405
4406
4407#else /* C style interface */
4408
4409 typedef struct ID3D12VideoExtensionCommandVtbl
4410 {
4411 BEGIN_INTERFACE
4412
4413 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4414 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4415 ID3D12VideoExtensionCommand * This,
4416 REFIID riid,
4417 _COM_Outptr_ void **ppvObject);
4418
4419 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4420 ULONG ( STDMETHODCALLTYPE *AddRef )(
4421 ID3D12VideoExtensionCommand * This);
4422
4423 DECLSPEC_XFGVIRT(IUnknown, Release)
4424 ULONG ( STDMETHODCALLTYPE *Release )(
4425 ID3D12VideoExtensionCommand * This);
4426
4427 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4428 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4429 ID3D12VideoExtensionCommand * This,
4430 _In_ REFGUID guid,
4431 _Inout_ UINT *pDataSize,
4432 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4433
4434 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4435 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4436 ID3D12VideoExtensionCommand * This,
4437 _In_ REFGUID guid,
4438 _In_ UINT DataSize,
4439 _In_reads_bytes_opt_( DataSize ) const void *pData);
4440
4441 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4442 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4443 ID3D12VideoExtensionCommand * This,
4444 _In_ REFGUID guid,
4445 _In_opt_ const IUnknown *pData);
4446
4447 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4448 HRESULT ( STDMETHODCALLTYPE *SetName )(
4449 ID3D12VideoExtensionCommand * This,
4450 _In_z_ LPCWSTR Name);
4451
4452 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4453 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4454 ID3D12VideoExtensionCommand * This,
4455 REFIID riid,
4456 _COM_Outptr_opt_ void **ppvDevice);
4457
4458 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
4459#if !defined(_WIN32)
4460 D3D12_VIDEO_EXTENSION_COMMAND_DESC ( STDMETHODCALLTYPE *GetDesc )(
4461 ID3D12VideoExtensionCommand * This);
4462
4463#else
4464 D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
4465 ID3D12VideoExtensionCommand * This,
4466 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
4467
4468#endif
4469
4470 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
4471 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4472 ID3D12VideoExtensionCommand * This,
4473 REFIID riid,
4474 _COM_Outptr_opt_ void **ppProtectedSession);
4475
4476 END_INTERFACE
4477 } ID3D12VideoExtensionCommandVtbl;
4478
4479 interface ID3D12VideoExtensionCommand
4480 {
4481 CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
4482 };
4483
4484
4485
4486#ifdef COBJMACROS
4487
4488
4489#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
4490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4491
4492#define ID3D12VideoExtensionCommand_AddRef(This) \
4493 ( (This)->lpVtbl -> AddRef(This) )
4494
4495#define ID3D12VideoExtensionCommand_Release(This) \
4496 ( (This)->lpVtbl -> Release(This) )
4497
4498
4499#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
4500 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4501
4502#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
4503 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4504
4505#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
4506 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4507
4508#define ID3D12VideoExtensionCommand_SetName(This,Name) \
4509 ( (This)->lpVtbl -> SetName(This,Name) )
4510
4511
4512#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
4513 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4514
4515
4516#if !defined(_WIN32)
4517
4518#define ID3D12VideoExtensionCommand_GetDesc(This) \
4519 ( (This)->lpVtbl -> GetDesc(This) )
4520#else
4521#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
4522 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4523#endif
4524
4525#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4526 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4527
4528#endif /* COBJMACROS */
4529
4530
4531#endif /* C style interface */
4532
4533
4534
4535
4536#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
4537
4538
4539#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
4540#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
4541
4542/* interface ID3D12VideoDevice2 */
4543/* [unique][local][object][uuid] */
4544
4545
4546EXTERN_C const IID IID_ID3D12VideoDevice2;
4547
4548#if defined(__cplusplus) && !defined(CINTERFACE)
4549
4550 MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
4551 ID3D12VideoDevice2 : public ID3D12VideoDevice1
4552 {
4553 public:
4554 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
4555 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4556 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4557 _In_ REFIID riid,
4558 _COM_Outptr_ void **ppVideoDecoder) = 0;
4559
4560 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
4561 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4562 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4563 _In_ REFIID riid,
4564 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
4565
4566 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
4567 UINT NodeMask,
4568 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4569 UINT NumInputStreamDescs,
4570 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4571 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4572 _In_ REFIID riid,
4573 _COM_Outptr_ void **ppVideoProcessor) = 0;
4574
4575 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
4576 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4577 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4578 SIZE_T CreationParametersDataSizeInBytes,
4579 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4580 _In_ REFIID riid,
4581 _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
4582
4583 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
4584 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4585 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4586 SIZE_T ExecutionParametersSizeInBytes,
4587 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4588 SIZE_T OutputDataSizeInBytes) = 0;
4589
4590 };
4591
4592
4593#else /* C style interface */
4594
4595 typedef struct ID3D12VideoDevice2Vtbl
4596 {
4597 BEGIN_INTERFACE
4598
4599 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4600 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4601 ID3D12VideoDevice2 * This,
4602 REFIID riid,
4603 _COM_Outptr_ void **ppvObject);
4604
4605 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4606 ULONG ( STDMETHODCALLTYPE *AddRef )(
4607 ID3D12VideoDevice2 * This);
4608
4609 DECLSPEC_XFGVIRT(IUnknown, Release)
4610 ULONG ( STDMETHODCALLTYPE *Release )(
4611 ID3D12VideoDevice2 * This);
4612
4613 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
4614 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
4615 ID3D12VideoDevice2 * This,
4616 D3D12_FEATURE_VIDEO FeatureVideo,
4617 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
4618 UINT FeatureSupportDataSize);
4619
4620 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
4621 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
4622 ID3D12VideoDevice2 * This,
4623 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4624 _In_ REFIID riid,
4625 _COM_Outptr_ void **ppVideoDecoder);
4626
4627 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
4628 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
4629 ID3D12VideoDevice2 * This,
4630 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4631 _In_ REFIID riid,
4632 _COM_Outptr_ void **ppVideoDecoderHeap);
4633
4634 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
4635 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
4636 ID3D12VideoDevice2 * This,
4637 UINT NodeMask,
4638 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4639 UINT NumInputStreamDescs,
4640 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4641 _In_ REFIID riid,
4642 _COM_Outptr_ void **ppVideoProcessor);
4643
4644 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
4645 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
4646 ID3D12VideoDevice2 * This,
4647 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
4648 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4649 _In_ REFIID riid,
4650 _COM_Outptr_ void **ppVideoMotionEstimator);
4651
4652 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
4653 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
4654 ID3D12VideoDevice2 * This,
4655 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
4656 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4657 _In_ REFIID riid,
4658 _COM_Outptr_ void **ppVideoMotionVectorHeap);
4659
4660 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
4661 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
4662 ID3D12VideoDevice2 * This,
4663 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4664 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4665 _In_ REFIID riid,
4666 _COM_Outptr_ void **ppVideoDecoder);
4667
4668 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
4669 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
4670 ID3D12VideoDevice2 * This,
4671 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4672 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4673 _In_ REFIID riid,
4674 _COM_Outptr_ void **ppVideoDecoderHeap);
4675
4676 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
4677 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
4678 ID3D12VideoDevice2 * This,
4679 UINT NodeMask,
4680 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4681 UINT NumInputStreamDescs,
4682 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4683 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4684 _In_ REFIID riid,
4685 _COM_Outptr_ void **ppVideoProcessor);
4686
4687 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
4688 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
4689 ID3D12VideoDevice2 * This,
4690 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4691 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4692 SIZE_T CreationParametersDataSizeInBytes,
4693 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4694 _In_ REFIID riid,
4695 _COM_Outptr_ void **ppVideoExtensionCommand);
4696
4697 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
4698 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4699 ID3D12VideoDevice2 * This,
4700 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4701 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4702 SIZE_T ExecutionParametersSizeInBytes,
4703 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4704 SIZE_T OutputDataSizeInBytes);
4705
4706 END_INTERFACE
4707 } ID3D12VideoDevice2Vtbl;
4708
4709 interface ID3D12VideoDevice2
4710 {
4711 CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
4712 };
4713
4714
4715
4716#ifdef COBJMACROS
4717
4718
4719#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
4720 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4721
4722#define ID3D12VideoDevice2_AddRef(This) \
4723 ( (This)->lpVtbl -> AddRef(This) )
4724
4725#define ID3D12VideoDevice2_Release(This) \
4726 ( (This)->lpVtbl -> Release(This) )
4727
4728
4729#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
4730 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
4731
4732#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
4733 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
4734
4735#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
4736 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
4737
4738#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
4739 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
4740
4741
4742#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
4743 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
4744
4745#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
4746 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
4747
4748
4749#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
4750 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
4751
4752#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
4753 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
4754
4755#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
4756 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
4757
4758#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
4759 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
4760
4761#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
4762 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
4763
4764#endif /* COBJMACROS */
4765
4766
4767#endif /* C style interface */
4768
4769
4770
4771
4772#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
4773
4774
4775#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4776#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4777
4778/* interface ID3D12VideoDecodeCommandList2 */
4779/* [unique][local][object][uuid] */
4780
4781
4782EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
4783
4784#if defined(__cplusplus) && !defined(CINTERFACE)
4785
4786 MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
4787 ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
4788 {
4789 public:
4790 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4791 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4792
4793 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4794 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4795 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4796 SIZE_T InitializationParametersSizeInBytes) = 0;
4797
4798 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4799 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4800 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4801 SIZE_T ExecutionParametersSizeInBytes) = 0;
4802
4803 };
4804
4805
4806#else /* C style interface */
4807
4808 typedef struct ID3D12VideoDecodeCommandList2Vtbl
4809 {
4810 BEGIN_INTERFACE
4811
4812 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4813 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4814 ID3D12VideoDecodeCommandList2 * This,
4815 REFIID riid,
4816 _COM_Outptr_ void **ppvObject);
4817
4818 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4819 ULONG ( STDMETHODCALLTYPE *AddRef )(
4820 ID3D12VideoDecodeCommandList2 * This);
4821
4822 DECLSPEC_XFGVIRT(IUnknown, Release)
4823 ULONG ( STDMETHODCALLTYPE *Release )(
4824 ID3D12VideoDecodeCommandList2 * This);
4825
4826 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4827 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4828 ID3D12VideoDecodeCommandList2 * This,
4829 _In_ REFGUID guid,
4830 _Inout_ UINT *pDataSize,
4831 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4832
4833 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4834 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4835 ID3D12VideoDecodeCommandList2 * This,
4836 _In_ REFGUID guid,
4837 _In_ UINT DataSize,
4838 _In_reads_bytes_opt_( DataSize ) const void *pData);
4839
4840 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4841 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4842 ID3D12VideoDecodeCommandList2 * This,
4843 _In_ REFGUID guid,
4844 _In_opt_ const IUnknown *pData);
4845
4846 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4847 HRESULT ( STDMETHODCALLTYPE *SetName )(
4848 ID3D12VideoDecodeCommandList2 * This,
4849 _In_z_ LPCWSTR Name);
4850
4851 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4852 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4853 ID3D12VideoDecodeCommandList2 * This,
4854 REFIID riid,
4855 _COM_Outptr_opt_ void **ppvDevice);
4856
4857 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4858 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4859 ID3D12VideoDecodeCommandList2 * This);
4860
4861 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
4862 HRESULT ( STDMETHODCALLTYPE *Close )(
4863 ID3D12VideoDecodeCommandList2 * This);
4864
4865 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
4866 HRESULT ( STDMETHODCALLTYPE *Reset )(
4867 ID3D12VideoDecodeCommandList2 * This,
4868 _In_ ID3D12CommandAllocator *pAllocator);
4869
4870 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
4871 void ( STDMETHODCALLTYPE *ClearState )(
4872 ID3D12VideoDecodeCommandList2 * This);
4873
4874 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
4875 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4876 ID3D12VideoDecodeCommandList2 * This,
4877 _In_ UINT NumBarriers,
4878 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4879
4880 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
4881 void ( STDMETHODCALLTYPE *DiscardResource )(
4882 ID3D12VideoDecodeCommandList2 * This,
4883 _In_ ID3D12Resource *pResource,
4884 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4885
4886 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
4887 void ( STDMETHODCALLTYPE *BeginQuery )(
4888 ID3D12VideoDecodeCommandList2 * This,
4889 _In_ ID3D12QueryHeap *pQueryHeap,
4890 _In_ D3D12_QUERY_TYPE Type,
4891 _In_ UINT Index);
4892
4893 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
4894 void ( STDMETHODCALLTYPE *EndQuery )(
4895 ID3D12VideoDecodeCommandList2 * This,
4896 _In_ ID3D12QueryHeap *pQueryHeap,
4897 _In_ D3D12_QUERY_TYPE Type,
4898 _In_ UINT Index);
4899
4900 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
4901 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4902 ID3D12VideoDecodeCommandList2 * This,
4903 _In_ ID3D12QueryHeap *pQueryHeap,
4904 _In_ D3D12_QUERY_TYPE Type,
4905 _In_ UINT StartIndex,
4906 _In_ UINT NumQueries,
4907 _In_ ID3D12Resource *pDestinationBuffer,
4908 _In_ UINT64 AlignedDestinationBufferOffset);
4909
4910 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
4911 void ( STDMETHODCALLTYPE *SetPredication )(
4912 ID3D12VideoDecodeCommandList2 * This,
4913 _In_opt_ ID3D12Resource *pBuffer,
4914 _In_ UINT64 AlignedBufferOffset,
4915 _In_ D3D12_PREDICATION_OP Operation);
4916
4917 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
4918 void ( STDMETHODCALLTYPE *SetMarker )(
4919 ID3D12VideoDecodeCommandList2 * This,
4920 UINT Metadata,
4921 _In_reads_bytes_opt_(Size) const void *pData,
4922 UINT Size);
4923
4924 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
4925 void ( STDMETHODCALLTYPE *BeginEvent )(
4926 ID3D12VideoDecodeCommandList2 * This,
4927 UINT Metadata,
4928 _In_reads_bytes_opt_(Size) const void *pData,
4929 UINT Size);
4930
4931 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
4932 void ( STDMETHODCALLTYPE *EndEvent )(
4933 ID3D12VideoDecodeCommandList2 * This);
4934
4935 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
4936 void ( STDMETHODCALLTYPE *DecodeFrame )(
4937 ID3D12VideoDecodeCommandList2 * This,
4938 _In_ ID3D12VideoDecoder *pDecoder,
4939 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
4940 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4941
4942 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
4943 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
4944 ID3D12VideoDecodeCommandList2 * This,
4945 UINT Count,
4946 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
4947 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
4948
4949 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
4950 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
4951 ID3D12VideoDecodeCommandList2 * This,
4952 _In_ ID3D12VideoDecoder *pDecoder,
4953 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
4954 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4955
4956 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
4957 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
4958 ID3D12VideoDecodeCommandList2 * This,
4959 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
4960
4961 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
4962 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
4963 ID3D12VideoDecodeCommandList2 * This,
4964 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4965 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4966 SIZE_T InitializationParametersSizeInBytes);
4967
4968 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
4969 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4970 ID3D12VideoDecodeCommandList2 * This,
4971 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4972 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4973 SIZE_T ExecutionParametersSizeInBytes);
4974
4975 END_INTERFACE
4976 } ID3D12VideoDecodeCommandList2Vtbl;
4977
4978 interface ID3D12VideoDecodeCommandList2
4979 {
4980 CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
4981 };
4982
4983
4984
4985#ifdef COBJMACROS
4986
4987
4988#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
4989 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4990
4991#define ID3D12VideoDecodeCommandList2_AddRef(This) \
4992 ( (This)->lpVtbl -> AddRef(This) )
4993
4994#define ID3D12VideoDecodeCommandList2_Release(This) \
4995 ( (This)->lpVtbl -> Release(This) )
4996
4997
4998#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
4999 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5000
5001#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5002 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5003
5004#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
5005 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5006
5007#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
5008 ( (This)->lpVtbl -> SetName(This,Name) )
5009
5010
5011#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
5012 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5013
5014
5015#define ID3D12VideoDecodeCommandList2_GetType(This) \
5016 ( (This)->lpVtbl -> GetType(This) )
5017
5018
5019#define ID3D12VideoDecodeCommandList2_Close(This) \
5020 ( (This)->lpVtbl -> Close(This) )
5021
5022#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
5023 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5024
5025#define ID3D12VideoDecodeCommandList2_ClearState(This) \
5026 ( (This)->lpVtbl -> ClearState(This) )
5027
5028#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5029 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5030
5031#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
5032 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5033
5034#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5035 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5036
5037#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5038 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5039
5040#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5041 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5042
5043#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5044 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5045
5046#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
5047 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5048
5049#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
5050 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5051
5052#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
5053 ( (This)->lpVtbl -> EndEvent(This) )
5054
5055#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5056 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5057
5058#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5059 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5060
5061
5062#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5063 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5064
5065
5066#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5067 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5068
5069#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5070 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5071
5072#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5073 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5074
5075#endif /* COBJMACROS */
5076
5077
5078#endif /* C style interface */
5079
5080
5081
5082
5083#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
5084
5085
5086#ifndef __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5087#define __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5088
5089/* interface ID3D12VideoDecodeCommandList3 */
5090/* [unique][local][object][uuid] */
5091
5092
5093EXTERN_C const IID IID_ID3D12VideoDecodeCommandList3;
5094
5095#if defined(__cplusplus) && !defined(CINTERFACE)
5096
5097 MIDL_INTERFACE("2aee8c37-9562-42da-8abf-61efeb2e4513")
5098 ID3D12VideoDecodeCommandList3 : public ID3D12VideoDecodeCommandList2
5099 {
5100 public:
5101 virtual void STDMETHODCALLTYPE Barrier(
5102 UINT32 NumBarrierGroups,
5103 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5104
5105 };
5106
5107
5108#else /* C style interface */
5109
5110 typedef struct ID3D12VideoDecodeCommandList3Vtbl
5111 {
5112 BEGIN_INTERFACE
5113
5114 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5115 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5116 ID3D12VideoDecodeCommandList3 * This,
5117 REFIID riid,
5118 _COM_Outptr_ void **ppvObject);
5119
5120 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5121 ULONG ( STDMETHODCALLTYPE *AddRef )(
5122 ID3D12VideoDecodeCommandList3 * This);
5123
5124 DECLSPEC_XFGVIRT(IUnknown, Release)
5125 ULONG ( STDMETHODCALLTYPE *Release )(
5126 ID3D12VideoDecodeCommandList3 * This);
5127
5128 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5129 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5130 ID3D12VideoDecodeCommandList3 * This,
5131 _In_ REFGUID guid,
5132 _Inout_ UINT *pDataSize,
5133 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5134
5135 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5136 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5137 ID3D12VideoDecodeCommandList3 * This,
5138 _In_ REFGUID guid,
5139 _In_ UINT DataSize,
5140 _In_reads_bytes_opt_( DataSize ) const void *pData);
5141
5142 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5143 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5144 ID3D12VideoDecodeCommandList3 * This,
5145 _In_ REFGUID guid,
5146 _In_opt_ const IUnknown *pData);
5147
5148 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5149 HRESULT ( STDMETHODCALLTYPE *SetName )(
5150 ID3D12VideoDecodeCommandList3 * This,
5151 _In_z_ LPCWSTR Name);
5152
5153 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5154 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5155 ID3D12VideoDecodeCommandList3 * This,
5156 REFIID riid,
5157 _COM_Outptr_opt_ void **ppvDevice);
5158
5159 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5160 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5161 ID3D12VideoDecodeCommandList3 * This);
5162
5163 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
5164 HRESULT ( STDMETHODCALLTYPE *Close )(
5165 ID3D12VideoDecodeCommandList3 * This);
5166
5167 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
5168 HRESULT ( STDMETHODCALLTYPE *Reset )(
5169 ID3D12VideoDecodeCommandList3 * This,
5170 _In_ ID3D12CommandAllocator *pAllocator);
5171
5172 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
5173 void ( STDMETHODCALLTYPE *ClearState )(
5174 ID3D12VideoDecodeCommandList3 * This);
5175
5176 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
5177 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5178 ID3D12VideoDecodeCommandList3 * This,
5179 _In_ UINT NumBarriers,
5180 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5181
5182 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
5183 void ( STDMETHODCALLTYPE *DiscardResource )(
5184 ID3D12VideoDecodeCommandList3 * This,
5185 _In_ ID3D12Resource *pResource,
5186 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5187
5188 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
5189 void ( STDMETHODCALLTYPE *BeginQuery )(
5190 ID3D12VideoDecodeCommandList3 * This,
5191 _In_ ID3D12QueryHeap *pQueryHeap,
5192 _In_ D3D12_QUERY_TYPE Type,
5193 _In_ UINT Index);
5194
5195 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
5196 void ( STDMETHODCALLTYPE *EndQuery )(
5197 ID3D12VideoDecodeCommandList3 * This,
5198 _In_ ID3D12QueryHeap *pQueryHeap,
5199 _In_ D3D12_QUERY_TYPE Type,
5200 _In_ UINT Index);
5201
5202 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
5203 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5204 ID3D12VideoDecodeCommandList3 * This,
5205 _In_ ID3D12QueryHeap *pQueryHeap,
5206 _In_ D3D12_QUERY_TYPE Type,
5207 _In_ UINT StartIndex,
5208 _In_ UINT NumQueries,
5209 _In_ ID3D12Resource *pDestinationBuffer,
5210 _In_ UINT64 AlignedDestinationBufferOffset);
5211
5212 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
5213 void ( STDMETHODCALLTYPE *SetPredication )(
5214 ID3D12VideoDecodeCommandList3 * This,
5215 _In_opt_ ID3D12Resource *pBuffer,
5216 _In_ UINT64 AlignedBufferOffset,
5217 _In_ D3D12_PREDICATION_OP Operation);
5218
5219 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
5220 void ( STDMETHODCALLTYPE *SetMarker )(
5221 ID3D12VideoDecodeCommandList3 * This,
5222 UINT Metadata,
5223 _In_reads_bytes_opt_(Size) const void *pData,
5224 UINT Size);
5225
5226 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
5227 void ( STDMETHODCALLTYPE *BeginEvent )(
5228 ID3D12VideoDecodeCommandList3 * This,
5229 UINT Metadata,
5230 _In_reads_bytes_opt_(Size) const void *pData,
5231 UINT Size);
5232
5233 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
5234 void ( STDMETHODCALLTYPE *EndEvent )(
5235 ID3D12VideoDecodeCommandList3 * This);
5236
5237 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
5238 void ( STDMETHODCALLTYPE *DecodeFrame )(
5239 ID3D12VideoDecodeCommandList3 * This,
5240 _In_ ID3D12VideoDecoder *pDecoder,
5241 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5242 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5243
5244 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
5245 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5246 ID3D12VideoDecodeCommandList3 * This,
5247 UINT Count,
5248 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5249 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5250
5251 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
5252 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
5253 ID3D12VideoDecodeCommandList3 * This,
5254 _In_ ID3D12VideoDecoder *pDecoder,
5255 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
5256 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5257
5258 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
5259 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5260 ID3D12VideoDecodeCommandList3 * This,
5261 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5262
5263 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
5264 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5265 ID3D12VideoDecodeCommandList3 * This,
5266 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5267 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5268 SIZE_T InitializationParametersSizeInBytes);
5269
5270 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
5271 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5272 ID3D12VideoDecodeCommandList3 * This,
5273 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5274 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5275 SIZE_T ExecutionParametersSizeInBytes);
5276
5277 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList3, Barrier)
5278 void ( STDMETHODCALLTYPE *Barrier )(
5279 ID3D12VideoDecodeCommandList3 * This,
5280 UINT32 NumBarrierGroups,
5281 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5282
5283 END_INTERFACE
5284 } ID3D12VideoDecodeCommandList3Vtbl;
5285
5286 interface ID3D12VideoDecodeCommandList3
5287 {
5288 CONST_VTBL struct ID3D12VideoDecodeCommandList3Vtbl *lpVtbl;
5289 };
5290
5291
5292
5293#ifdef COBJMACROS
5294
5295
5296#define ID3D12VideoDecodeCommandList3_QueryInterface(This,riid,ppvObject) \
5297 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5298
5299#define ID3D12VideoDecodeCommandList3_AddRef(This) \
5300 ( (This)->lpVtbl -> AddRef(This) )
5301
5302#define ID3D12VideoDecodeCommandList3_Release(This) \
5303 ( (This)->lpVtbl -> Release(This) )
5304
5305
5306#define ID3D12VideoDecodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5307 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5308
5309#define ID3D12VideoDecodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5310 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5311
5312#define ID3D12VideoDecodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
5313 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5314
5315#define ID3D12VideoDecodeCommandList3_SetName(This,Name) \
5316 ( (This)->lpVtbl -> SetName(This,Name) )
5317
5318
5319#define ID3D12VideoDecodeCommandList3_GetDevice(This,riid,ppvDevice) \
5320 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5321
5322
5323#define ID3D12VideoDecodeCommandList3_GetType(This) \
5324 ( (This)->lpVtbl -> GetType(This) )
5325
5326
5327#define ID3D12VideoDecodeCommandList3_Close(This) \
5328 ( (This)->lpVtbl -> Close(This) )
5329
5330#define ID3D12VideoDecodeCommandList3_Reset(This,pAllocator) \
5331 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5332
5333#define ID3D12VideoDecodeCommandList3_ClearState(This) \
5334 ( (This)->lpVtbl -> ClearState(This) )
5335
5336#define ID3D12VideoDecodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5337 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5338
5339#define ID3D12VideoDecodeCommandList3_DiscardResource(This,pResource,pRegion) \
5340 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5341
5342#define ID3D12VideoDecodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5343 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5344
5345#define ID3D12VideoDecodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5346 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5347
5348#define ID3D12VideoDecodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5349 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5350
5351#define ID3D12VideoDecodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5352 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5353
5354#define ID3D12VideoDecodeCommandList3_SetMarker(This,Metadata,pData,Size) \
5355 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5356
5357#define ID3D12VideoDecodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
5358 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5359
5360#define ID3D12VideoDecodeCommandList3_EndEvent(This) \
5361 ( (This)->lpVtbl -> EndEvent(This) )
5362
5363#define ID3D12VideoDecodeCommandList3_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5364 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5365
5366#define ID3D12VideoDecodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5367 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5368
5369
5370#define ID3D12VideoDecodeCommandList3_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5371 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5372
5373
5374#define ID3D12VideoDecodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
5375 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5376
5377#define ID3D12VideoDecodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5378 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5379
5380#define ID3D12VideoDecodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5381 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5382
5383
5384#define ID3D12VideoDecodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
5385 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
5386
5387#endif /* COBJMACROS */
5388
5389
5390#endif /* C style interface */
5391
5392
5393
5394
5395#endif /* __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__ */
5396
5397
5398#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5399#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5400
5401/* interface ID3D12VideoProcessCommandList2 */
5402/* [unique][local][object][uuid] */
5403
5404
5405EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
5406
5407#if defined(__cplusplus) && !defined(CINTERFACE)
5408
5409 MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
5410 ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
5411 {
5412 public:
5413 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
5414 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
5415
5416 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
5417 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5418 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5419 SIZE_T InitializationParametersSizeInBytes) = 0;
5420
5421 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
5422 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5423 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5424 SIZE_T ExecutionParametersSizeInBytes) = 0;
5425
5426 };
5427
5428
5429#else /* C style interface */
5430
5431 typedef struct ID3D12VideoProcessCommandList2Vtbl
5432 {
5433 BEGIN_INTERFACE
5434
5435 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5436 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5437 ID3D12VideoProcessCommandList2 * This,
5438 REFIID riid,
5439 _COM_Outptr_ void **ppvObject);
5440
5441 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5442 ULONG ( STDMETHODCALLTYPE *AddRef )(
5443 ID3D12VideoProcessCommandList2 * This);
5444
5445 DECLSPEC_XFGVIRT(IUnknown, Release)
5446 ULONG ( STDMETHODCALLTYPE *Release )(
5447 ID3D12VideoProcessCommandList2 * This);
5448
5449 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5450 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5451 ID3D12VideoProcessCommandList2 * This,
5452 _In_ REFGUID guid,
5453 _Inout_ UINT *pDataSize,
5454 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5455
5456 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5457 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5458 ID3D12VideoProcessCommandList2 * This,
5459 _In_ REFGUID guid,
5460 _In_ UINT DataSize,
5461 _In_reads_bytes_opt_( DataSize ) const void *pData);
5462
5463 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5464 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5465 ID3D12VideoProcessCommandList2 * This,
5466 _In_ REFGUID guid,
5467 _In_opt_ const IUnknown *pData);
5468
5469 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5470 HRESULT ( STDMETHODCALLTYPE *SetName )(
5471 ID3D12VideoProcessCommandList2 * This,
5472 _In_z_ LPCWSTR Name);
5473
5474 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5475 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5476 ID3D12VideoProcessCommandList2 * This,
5477 REFIID riid,
5478 _COM_Outptr_opt_ void **ppvDevice);
5479
5480 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5481 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5482 ID3D12VideoProcessCommandList2 * This);
5483
5484 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5485 HRESULT ( STDMETHODCALLTYPE *Close )(
5486 ID3D12VideoProcessCommandList2 * This);
5487
5488 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5489 HRESULT ( STDMETHODCALLTYPE *Reset )(
5490 ID3D12VideoProcessCommandList2 * This,
5491 _In_ ID3D12CommandAllocator *pAllocator);
5492
5493 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5494 void ( STDMETHODCALLTYPE *ClearState )(
5495 ID3D12VideoProcessCommandList2 * This);
5496
5497 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5498 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5499 ID3D12VideoProcessCommandList2 * This,
5500 _In_ UINT NumBarriers,
5501 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5502
5503 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5504 void ( STDMETHODCALLTYPE *DiscardResource )(
5505 ID3D12VideoProcessCommandList2 * This,
5506 _In_ ID3D12Resource *pResource,
5507 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5508
5509 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5510 void ( STDMETHODCALLTYPE *BeginQuery )(
5511 ID3D12VideoProcessCommandList2 * This,
5512 _In_ ID3D12QueryHeap *pQueryHeap,
5513 _In_ D3D12_QUERY_TYPE Type,
5514 _In_ UINT Index);
5515
5516 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5517 void ( STDMETHODCALLTYPE *EndQuery )(
5518 ID3D12VideoProcessCommandList2 * This,
5519 _In_ ID3D12QueryHeap *pQueryHeap,
5520 _In_ D3D12_QUERY_TYPE Type,
5521 _In_ UINT Index);
5522
5523 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5524 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5525 ID3D12VideoProcessCommandList2 * This,
5526 _In_ ID3D12QueryHeap *pQueryHeap,
5527 _In_ D3D12_QUERY_TYPE Type,
5528 _In_ UINT StartIndex,
5529 _In_ UINT NumQueries,
5530 _In_ ID3D12Resource *pDestinationBuffer,
5531 _In_ UINT64 AlignedDestinationBufferOffset);
5532
5533 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5534 void ( STDMETHODCALLTYPE *SetPredication )(
5535 ID3D12VideoProcessCommandList2 * This,
5536 _In_opt_ ID3D12Resource *pBuffer,
5537 _In_ UINT64 AlignedBufferOffset,
5538 _In_ D3D12_PREDICATION_OP Operation);
5539
5540 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5541 void ( STDMETHODCALLTYPE *SetMarker )(
5542 ID3D12VideoProcessCommandList2 * This,
5543 UINT Metadata,
5544 _In_reads_bytes_opt_(Size) const void *pData,
5545 UINT Size);
5546
5547 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5548 void ( STDMETHODCALLTYPE *BeginEvent )(
5549 ID3D12VideoProcessCommandList2 * This,
5550 UINT Metadata,
5551 _In_reads_bytes_opt_(Size) const void *pData,
5552 UINT Size);
5553
5554 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5555 void ( STDMETHODCALLTYPE *EndEvent )(
5556 ID3D12VideoProcessCommandList2 * This);
5557
5558 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5559 void ( STDMETHODCALLTYPE *ProcessFrames )(
5560 ID3D12VideoProcessCommandList2 * This,
5561 _In_ ID3D12VideoProcessor *pVideoProcessor,
5562 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5563 UINT NumInputStreams,
5564 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5565
5566 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5567 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5568 ID3D12VideoProcessCommandList2 * This,
5569 UINT Count,
5570 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5571 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5572
5573 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5574 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5575 ID3D12VideoProcessCommandList2 * This,
5576 _In_ ID3D12VideoProcessor *pVideoProcessor,
5577 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5578 UINT NumInputStreams,
5579 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5580
5581 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5582 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5583 ID3D12VideoProcessCommandList2 * This,
5584 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5585
5586 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5587 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5588 ID3D12VideoProcessCommandList2 * This,
5589 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5590 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5591 SIZE_T InitializationParametersSizeInBytes);
5592
5593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5594 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5595 ID3D12VideoProcessCommandList2 * This,
5596 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5597 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5598 SIZE_T ExecutionParametersSizeInBytes);
5599
5600 END_INTERFACE
5601 } ID3D12VideoProcessCommandList2Vtbl;
5602
5603 interface ID3D12VideoProcessCommandList2
5604 {
5605 CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
5606 };
5607
5608
5609
5610#ifdef COBJMACROS
5611
5612
5613#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
5614 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5615
5616#define ID3D12VideoProcessCommandList2_AddRef(This) \
5617 ( (This)->lpVtbl -> AddRef(This) )
5618
5619#define ID3D12VideoProcessCommandList2_Release(This) \
5620 ( (This)->lpVtbl -> Release(This) )
5621
5622
5623#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
5624 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5625
5626#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5627 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5628
5629#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
5630 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5631
5632#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
5633 ( (This)->lpVtbl -> SetName(This,Name) )
5634
5635
5636#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
5637 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5638
5639
5640#define ID3D12VideoProcessCommandList2_GetType(This) \
5641 ( (This)->lpVtbl -> GetType(This) )
5642
5643
5644#define ID3D12VideoProcessCommandList2_Close(This) \
5645 ( (This)->lpVtbl -> Close(This) )
5646
5647#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
5648 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5649
5650#define ID3D12VideoProcessCommandList2_ClearState(This) \
5651 ( (This)->lpVtbl -> ClearState(This) )
5652
5653#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5654 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5655
5656#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
5657 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5658
5659#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5660 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5661
5662#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5663 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5664
5665#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5666 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5667
5668#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5669 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5670
5671#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
5672 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5673
5674#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
5675 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5676
5677#define ID3D12VideoProcessCommandList2_EndEvent(This) \
5678 ( (This)->lpVtbl -> EndEvent(This) )
5679
5680#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5681 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5682
5683#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5684 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5685
5686
5687#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5688 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5689
5690
5691#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5692 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5693
5694#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5695 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5696
5697#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5698 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5699
5700#endif /* COBJMACROS */
5701
5702
5703#endif /* C style interface */
5704
5705
5706
5707
5708#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
5709
5710
5711#ifndef __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5712#define __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5713
5714/* interface ID3D12VideoProcessCommandList3 */
5715/* [unique][local][object][uuid] */
5716
5717
5718EXTERN_C const IID IID_ID3D12VideoProcessCommandList3;
5719
5720#if defined(__cplusplus) && !defined(CINTERFACE)
5721
5722 MIDL_INTERFACE("1a0a4ca4-9f08-40ce-9558-b411fd2666ff")
5723 ID3D12VideoProcessCommandList3 : public ID3D12VideoProcessCommandList2
5724 {
5725 public:
5726 virtual void STDMETHODCALLTYPE Barrier(
5727 UINT32 NumBarrierGroups,
5728 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5729
5730 };
5731
5732
5733#else /* C style interface */
5734
5735 typedef struct ID3D12VideoProcessCommandList3Vtbl
5736 {
5737 BEGIN_INTERFACE
5738
5739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5741 ID3D12VideoProcessCommandList3 * This,
5742 REFIID riid,
5743 _COM_Outptr_ void **ppvObject);
5744
5745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5746 ULONG ( STDMETHODCALLTYPE *AddRef )(
5747 ID3D12VideoProcessCommandList3 * This);
5748
5749 DECLSPEC_XFGVIRT(IUnknown, Release)
5750 ULONG ( STDMETHODCALLTYPE *Release )(
5751 ID3D12VideoProcessCommandList3 * This);
5752
5753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5755 ID3D12VideoProcessCommandList3 * This,
5756 _In_ REFGUID guid,
5757 _Inout_ UINT *pDataSize,
5758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5759
5760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5762 ID3D12VideoProcessCommandList3 * This,
5763 _In_ REFGUID guid,
5764 _In_ UINT DataSize,
5765 _In_reads_bytes_opt_( DataSize ) const void *pData);
5766
5767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5769 ID3D12VideoProcessCommandList3 * This,
5770 _In_ REFGUID guid,
5771 _In_opt_ const IUnknown *pData);
5772
5773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5774 HRESULT ( STDMETHODCALLTYPE *SetName )(
5775 ID3D12VideoProcessCommandList3 * This,
5776 _In_z_ LPCWSTR Name);
5777
5778 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5779 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5780 ID3D12VideoProcessCommandList3 * This,
5781 REFIID riid,
5782 _COM_Outptr_opt_ void **ppvDevice);
5783
5784 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5785 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5786 ID3D12VideoProcessCommandList3 * This);
5787
5788 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5789 HRESULT ( STDMETHODCALLTYPE *Close )(
5790 ID3D12VideoProcessCommandList3 * This);
5791
5792 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5793 HRESULT ( STDMETHODCALLTYPE *Reset )(
5794 ID3D12VideoProcessCommandList3 * This,
5795 _In_ ID3D12CommandAllocator *pAllocator);
5796
5797 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5798 void ( STDMETHODCALLTYPE *ClearState )(
5799 ID3D12VideoProcessCommandList3 * This);
5800
5801 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5802 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5803 ID3D12VideoProcessCommandList3 * This,
5804 _In_ UINT NumBarriers,
5805 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5806
5807 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5808 void ( STDMETHODCALLTYPE *DiscardResource )(
5809 ID3D12VideoProcessCommandList3 * This,
5810 _In_ ID3D12Resource *pResource,
5811 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5812
5813 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5814 void ( STDMETHODCALLTYPE *BeginQuery )(
5815 ID3D12VideoProcessCommandList3 * This,
5816 _In_ ID3D12QueryHeap *pQueryHeap,
5817 _In_ D3D12_QUERY_TYPE Type,
5818 _In_ UINT Index);
5819
5820 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5821 void ( STDMETHODCALLTYPE *EndQuery )(
5822 ID3D12VideoProcessCommandList3 * This,
5823 _In_ ID3D12QueryHeap *pQueryHeap,
5824 _In_ D3D12_QUERY_TYPE Type,
5825 _In_ UINT Index);
5826
5827 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5828 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5829 ID3D12VideoProcessCommandList3 * This,
5830 _In_ ID3D12QueryHeap *pQueryHeap,
5831 _In_ D3D12_QUERY_TYPE Type,
5832 _In_ UINT StartIndex,
5833 _In_ UINT NumQueries,
5834 _In_ ID3D12Resource *pDestinationBuffer,
5835 _In_ UINT64 AlignedDestinationBufferOffset);
5836
5837 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5838 void ( STDMETHODCALLTYPE *SetPredication )(
5839 ID3D12VideoProcessCommandList3 * This,
5840 _In_opt_ ID3D12Resource *pBuffer,
5841 _In_ UINT64 AlignedBufferOffset,
5842 _In_ D3D12_PREDICATION_OP Operation);
5843
5844 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5845 void ( STDMETHODCALLTYPE *SetMarker )(
5846 ID3D12VideoProcessCommandList3 * This,
5847 UINT Metadata,
5848 _In_reads_bytes_opt_(Size) const void *pData,
5849 UINT Size);
5850
5851 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5852 void ( STDMETHODCALLTYPE *BeginEvent )(
5853 ID3D12VideoProcessCommandList3 * This,
5854 UINT Metadata,
5855 _In_reads_bytes_opt_(Size) const void *pData,
5856 UINT Size);
5857
5858 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5859 void ( STDMETHODCALLTYPE *EndEvent )(
5860 ID3D12VideoProcessCommandList3 * This);
5861
5862 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5863 void ( STDMETHODCALLTYPE *ProcessFrames )(
5864 ID3D12VideoProcessCommandList3 * This,
5865 _In_ ID3D12VideoProcessor *pVideoProcessor,
5866 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5867 UINT NumInputStreams,
5868 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5869
5870 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5871 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5872 ID3D12VideoProcessCommandList3 * This,
5873 UINT Count,
5874 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5875 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5876
5877 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5878 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5879 ID3D12VideoProcessCommandList3 * This,
5880 _In_ ID3D12VideoProcessor *pVideoProcessor,
5881 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5882 UINT NumInputStreams,
5883 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5884
5885 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5886 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5887 ID3D12VideoProcessCommandList3 * This,
5888 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5889
5890 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5891 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5892 ID3D12VideoProcessCommandList3 * This,
5893 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5894 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5895 SIZE_T InitializationParametersSizeInBytes);
5896
5897 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5898 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5899 ID3D12VideoProcessCommandList3 * This,
5900 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5901 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5902 SIZE_T ExecutionParametersSizeInBytes);
5903
5904 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList3, Barrier)
5905 void ( STDMETHODCALLTYPE *Barrier )(
5906 ID3D12VideoProcessCommandList3 * This,
5907 UINT32 NumBarrierGroups,
5908 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5909
5910 END_INTERFACE
5911 } ID3D12VideoProcessCommandList3Vtbl;
5912
5913 interface ID3D12VideoProcessCommandList3
5914 {
5915 CONST_VTBL struct ID3D12VideoProcessCommandList3Vtbl *lpVtbl;
5916 };
5917
5918
5919
5920#ifdef COBJMACROS
5921
5922
5923#define ID3D12VideoProcessCommandList3_QueryInterface(This,riid,ppvObject) \
5924 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5925
5926#define ID3D12VideoProcessCommandList3_AddRef(This) \
5927 ( (This)->lpVtbl -> AddRef(This) )
5928
5929#define ID3D12VideoProcessCommandList3_Release(This) \
5930 ( (This)->lpVtbl -> Release(This) )
5931
5932
5933#define ID3D12VideoProcessCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5934 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5935
5936#define ID3D12VideoProcessCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5937 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5938
5939#define ID3D12VideoProcessCommandList3_SetPrivateDataInterface(This,guid,pData) \
5940 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5941
5942#define ID3D12VideoProcessCommandList3_SetName(This,Name) \
5943 ( (This)->lpVtbl -> SetName(This,Name) )
5944
5945
5946#define ID3D12VideoProcessCommandList3_GetDevice(This,riid,ppvDevice) \
5947 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5948
5949
5950#define ID3D12VideoProcessCommandList3_GetType(This) \
5951 ( (This)->lpVtbl -> GetType(This) )
5952
5953
5954#define ID3D12VideoProcessCommandList3_Close(This) \
5955 ( (This)->lpVtbl -> Close(This) )
5956
5957#define ID3D12VideoProcessCommandList3_Reset(This,pAllocator) \
5958 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5959
5960#define ID3D12VideoProcessCommandList3_ClearState(This) \
5961 ( (This)->lpVtbl -> ClearState(This) )
5962
5963#define ID3D12VideoProcessCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5964 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5965
5966#define ID3D12VideoProcessCommandList3_DiscardResource(This,pResource,pRegion) \
5967 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5968
5969#define ID3D12VideoProcessCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5970 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5971
5972#define ID3D12VideoProcessCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5973 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5974
5975#define ID3D12VideoProcessCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5976 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5977
5978#define ID3D12VideoProcessCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5979 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5980
5981#define ID3D12VideoProcessCommandList3_SetMarker(This,Metadata,pData,Size) \
5982 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5983
5984#define ID3D12VideoProcessCommandList3_BeginEvent(This,Metadata,pData,Size) \
5985 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5986
5987#define ID3D12VideoProcessCommandList3_EndEvent(This) \
5988 ( (This)->lpVtbl -> EndEvent(This) )
5989
5990#define ID3D12VideoProcessCommandList3_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5991 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5992
5993#define ID3D12VideoProcessCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5994 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5995
5996
5997#define ID3D12VideoProcessCommandList3_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5998 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5999
6000
6001#define ID3D12VideoProcessCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
6002 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6003
6004#define ID3D12VideoProcessCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6005 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6006
6007#define ID3D12VideoProcessCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6008 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6009
6010
6011#define ID3D12VideoProcessCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
6012 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
6013
6014#endif /* COBJMACROS */
6015
6016
6017#endif /* C style interface */
6018
6019
6020
6021
6022#endif /* __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__ */
6023
6024
6025#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6026#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6027
6028/* interface ID3D12VideoEncodeCommandList1 */
6029/* [unique][local][object][uuid] */
6030
6031
6032EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
6033
6034#if defined(__cplusplus) && !defined(CINTERFACE)
6035
6036 MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
6037 ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
6038 {
6039 public:
6040 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
6041 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6042 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6043 SIZE_T InitializationParametersSizeInBytes) = 0;
6044
6045 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
6046 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6047 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6048 SIZE_T ExecutionParametersSizeInBytes) = 0;
6049
6050 };
6051
6052
6053#else /* C style interface */
6054
6055 typedef struct ID3D12VideoEncodeCommandList1Vtbl
6056 {
6057 BEGIN_INTERFACE
6058
6059 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6060 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6061 ID3D12VideoEncodeCommandList1 * This,
6062 REFIID riid,
6063 _COM_Outptr_ void **ppvObject);
6064
6065 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6066 ULONG ( STDMETHODCALLTYPE *AddRef )(
6067 ID3D12VideoEncodeCommandList1 * This);
6068
6069 DECLSPEC_XFGVIRT(IUnknown, Release)
6070 ULONG ( STDMETHODCALLTYPE *Release )(
6071 ID3D12VideoEncodeCommandList1 * This);
6072
6073 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6074 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6075 ID3D12VideoEncodeCommandList1 * This,
6076 _In_ REFGUID guid,
6077 _Inout_ UINT *pDataSize,
6078 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6079
6080 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6081 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6082 ID3D12VideoEncodeCommandList1 * This,
6083 _In_ REFGUID guid,
6084 _In_ UINT DataSize,
6085 _In_reads_bytes_opt_( DataSize ) const void *pData);
6086
6087 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6088 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6089 ID3D12VideoEncodeCommandList1 * This,
6090 _In_ REFGUID guid,
6091 _In_opt_ const IUnknown *pData);
6092
6093 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6094 HRESULT ( STDMETHODCALLTYPE *SetName )(
6095 ID3D12VideoEncodeCommandList1 * This,
6096 _In_z_ LPCWSTR Name);
6097
6098 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6099 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6100 ID3D12VideoEncodeCommandList1 * This,
6101 REFIID riid,
6102 _COM_Outptr_opt_ void **ppvDevice);
6103
6104 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6105 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6106 ID3D12VideoEncodeCommandList1 * This);
6107
6108 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
6109 HRESULT ( STDMETHODCALLTYPE *Close )(
6110 ID3D12VideoEncodeCommandList1 * This);
6111
6112 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
6113 HRESULT ( STDMETHODCALLTYPE *Reset )(
6114 ID3D12VideoEncodeCommandList1 * This,
6115 _In_ ID3D12CommandAllocator *pAllocator);
6116
6117 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
6118 void ( STDMETHODCALLTYPE *ClearState )(
6119 ID3D12VideoEncodeCommandList1 * This);
6120
6121 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
6122 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6123 ID3D12VideoEncodeCommandList1 * This,
6124 _In_ UINT NumBarriers,
6125 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6126
6127 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
6128 void ( STDMETHODCALLTYPE *DiscardResource )(
6129 ID3D12VideoEncodeCommandList1 * This,
6130 _In_ ID3D12Resource *pResource,
6131 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6132
6133 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
6134 void ( STDMETHODCALLTYPE *BeginQuery )(
6135 ID3D12VideoEncodeCommandList1 * This,
6136 _In_ ID3D12QueryHeap *pQueryHeap,
6137 _In_ D3D12_QUERY_TYPE Type,
6138 _In_ UINT Index);
6139
6140 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
6141 void ( STDMETHODCALLTYPE *EndQuery )(
6142 ID3D12VideoEncodeCommandList1 * This,
6143 _In_ ID3D12QueryHeap *pQueryHeap,
6144 _In_ D3D12_QUERY_TYPE Type,
6145 _In_ UINT Index);
6146
6147 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
6148 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6149 ID3D12VideoEncodeCommandList1 * This,
6150 _In_ ID3D12QueryHeap *pQueryHeap,
6151 _In_ D3D12_QUERY_TYPE Type,
6152 _In_ UINT StartIndex,
6153 _In_ UINT NumQueries,
6154 _In_ ID3D12Resource *pDestinationBuffer,
6155 _In_ UINT64 AlignedDestinationBufferOffset);
6156
6157 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
6158 void ( STDMETHODCALLTYPE *SetPredication )(
6159 ID3D12VideoEncodeCommandList1 * This,
6160 _In_opt_ ID3D12Resource *pBuffer,
6161 _In_ UINT64 AlignedBufferOffset,
6162 _In_ D3D12_PREDICATION_OP Operation);
6163
6164 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
6165 void ( STDMETHODCALLTYPE *SetMarker )(
6166 ID3D12VideoEncodeCommandList1 * This,
6167 UINT Metadata,
6168 _In_reads_bytes_opt_(Size) const void *pData,
6169 UINT Size);
6170
6171 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
6172 void ( STDMETHODCALLTYPE *BeginEvent )(
6173 ID3D12VideoEncodeCommandList1 * This,
6174 UINT Metadata,
6175 _In_reads_bytes_opt_(Size) const void *pData,
6176 UINT Size);
6177
6178 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
6179 void ( STDMETHODCALLTYPE *EndEvent )(
6180 ID3D12VideoEncodeCommandList1 * This);
6181
6182 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
6183 void ( STDMETHODCALLTYPE *EstimateMotion )(
6184 ID3D12VideoEncodeCommandList1 * This,
6185 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
6186 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
6187 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
6188
6189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
6190 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
6191 ID3D12VideoEncodeCommandList1 * This,
6192 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
6193 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
6194
6195 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
6196 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
6197 ID3D12VideoEncodeCommandList1 * This,
6198 UINT Count,
6199 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
6200 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
6201
6202 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
6203 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
6204 ID3D12VideoEncodeCommandList1 * This,
6205 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
6206
6207 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
6208 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
6209 ID3D12VideoEncodeCommandList1 * This,
6210 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6211 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6212 SIZE_T InitializationParametersSizeInBytes);
6213
6214 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
6215 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
6216 ID3D12VideoEncodeCommandList1 * This,
6217 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6218 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6219 SIZE_T ExecutionParametersSizeInBytes);
6220
6221 END_INTERFACE
6222 } ID3D12VideoEncodeCommandList1Vtbl;
6223
6224 interface ID3D12VideoEncodeCommandList1
6225 {
6226 CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
6227 };
6228
6229
6230
6231#ifdef COBJMACROS
6232
6233
6234#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
6235 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6236
6237#define ID3D12VideoEncodeCommandList1_AddRef(This) \
6238 ( (This)->lpVtbl -> AddRef(This) )
6239
6240#define ID3D12VideoEncodeCommandList1_Release(This) \
6241 ( (This)->lpVtbl -> Release(This) )
6242
6243
6244#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
6245 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6246
6247#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
6248 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6249
6250#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
6251 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6252
6253#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
6254 ( (This)->lpVtbl -> SetName(This,Name) )
6255
6256
6257#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
6258 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6259
6260
6261#define ID3D12VideoEncodeCommandList1_GetType(This) \
6262 ( (This)->lpVtbl -> GetType(This) )
6263
6264
6265#define ID3D12VideoEncodeCommandList1_Close(This) \
6266 ( (This)->lpVtbl -> Close(This) )
6267
6268#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
6269 ( (This)->lpVtbl -> Reset(This,pAllocator) )
6270
6271#define ID3D12VideoEncodeCommandList1_ClearState(This) \
6272 ( (This)->lpVtbl -> ClearState(This) )
6273
6274#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
6275 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
6276
6277#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
6278 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
6279
6280#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
6281 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
6282
6283#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
6284 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
6285
6286#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
6287 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
6288
6289#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
6290 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
6291
6292#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
6293 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
6294
6295#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
6296 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
6297
6298#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
6299 ( (This)->lpVtbl -> EndEvent(This) )
6300
6301#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
6302 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
6303
6304#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
6305 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
6306
6307#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
6308 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
6309
6310#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
6311 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6312
6313
6314#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6315 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6316
6317#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6318 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6319
6320#endif /* COBJMACROS */
6321
6322
6323#endif /* C style interface */
6324
6325
6326
6327
6328#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
6329
6330
6331/* interface __MIDL_itf_d3d12video_0000_0022 */
6332/* [local] */
6333
6334DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
6335DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
6336DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6337DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
6338DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
6339DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
6340DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6341DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6342DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
6343DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
6344DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
6345DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
6346DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);
6347DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);
6348DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);
6349DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);
6350DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);
6351DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);
6352DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);
6353DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);
6354DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);
6355DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);
6356DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
6357DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
6358DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
6359DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
6360DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
6361DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
6362DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
6363DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
6364DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4);
6365DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
6366DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
6367DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
6368DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
6369DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
6370DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
6371typedef
6372enum D3D12_VIDEO_ENCODER_AV1_PROFILE
6373 {
6374 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
6375 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
6376 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2
6377 } D3D12_VIDEO_ENCODER_AV1_PROFILE;
6378
6379typedef
6380enum D3D12_VIDEO_ENCODER_AV1_LEVELS
6381 {
6382 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
6383 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
6384 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
6385 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
6386 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
6387 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
6388 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
6389 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
6390 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
6391 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
6392 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
6393 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
6394 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
6395 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
6396 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
6397 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
6398 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
6399 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
6400 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
6401 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
6402 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
6403 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
6404 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
6405 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23
6406 } D3D12_VIDEO_ENCODER_AV1_LEVELS;
6407
6408typedef
6409enum D3D12_VIDEO_ENCODER_AV1_TIER
6410 {
6411 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
6412 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1
6413 } D3D12_VIDEO_ENCODER_AV1_TIER;
6414
6415typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
6416 {
6417 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
6418 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
6419 } D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
6420
6421typedef
6422enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
6423 {
6424 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0,
6425 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
6426 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
6427 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
6428 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
6429 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
6430 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
6431 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
6432 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
6433 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
6434 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
6435 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
6436 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
6437 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
6438 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
6439 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
6440 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
6441 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
6442 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
6443 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
6444 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
6445 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
6446 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
6447 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
6448 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
6449 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
6450 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000
6451 } D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
6452
6453DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
6454typedef
6455enum D3D12_VIDEO_ENCODER_AV1_TX_MODE
6456 {
6457 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
6458 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
6459 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2
6460 } D3D12_VIDEO_ENCODER_AV1_TX_MODE;
6461
6462typedef
6463enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS
6464 {
6465 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0,
6466 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 ) ,
6467 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST ) ,
6468 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT )
6469 } D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
6470
6471DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
6472typedef
6473enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS
6474 {
6475 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
6476 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
6477 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
6478 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
6479 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4
6480 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
6481
6482typedef
6483enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS
6484 {
6485 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0,
6486 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP ) ,
6487 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH ) ,
6488 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP ) ,
6489 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR ) ,
6490 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE )
6491 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
6492
6493DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
6494typedef
6495enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE
6496 {
6497 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
6498 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
6499 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
6500 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
6501 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4
6502 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
6503
6504typedef
6505enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE
6506 {
6507 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
6508 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
6509 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
6510 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
6511 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
6512 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
6513 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
6514 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
6515 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8
6516 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
6517
6518typedef
6519enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
6520 {
6521 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
6522 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED ) ,
6523 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q ) ,
6524 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V ) ,
6525 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H ) ,
6526 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U ) ,
6527 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V ) ,
6528 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME ) ,
6529 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP ) ,
6530 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV )
6531 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
6532
6533DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
6534typedef
6535enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE
6536 {
6537 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
6538 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
6539 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
6540 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3
6541 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
6542
6543typedef
6544enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE
6545 {
6546 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
6547 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
6548 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
6549 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
6550 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4
6551 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
6552
6553typedef
6554enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS
6555 {
6556 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0,
6557 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
6558 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
6559 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
6560 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8
6561 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
6562
6563DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
6564typedef
6565enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
6566 {
6567 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
6568 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
6569 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
6570 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3
6571 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
6572
6573typedef
6574enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS
6575 {
6576 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0,
6577 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY ) ,
6578 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION ) ,
6579 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM ) ,
6580 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE )
6581 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
6582
6583DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
6584typedef
6585enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS
6586 {
6587 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
6588 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
6589 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
6590 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
6591 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
6592 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
6593 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
6594 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
6595 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
6596 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100
6597 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
6598
6599DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
6600typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
6601 {
6602 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
6603 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
6604 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
6605 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[ 3 ][ 3 ];
6606 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
6607 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[ 4 ];
6608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
6609 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
6610 UINT MaxTemporalLayers;
6611 UINT MaxSpatialLayers;
6612 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
6613
6614typedef
6615enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
6616 {
6617 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
6618 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
6619 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
6620 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3
6621 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
6622
6623typedef
6624enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS
6625 {
6626 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0,
6627 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME ) ,
6628 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME ) ,
6629 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME ) ,
6630 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME )
6631 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
6632
6633DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
6634typedef
6635enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
6636 {
6637 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
6638 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1
6639 } D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
6640
6641typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT
6642 {
6643 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
6644 UINT MaxUniqueReferencesPerFrame;
6645 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
6646 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
6647 } D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
6648
6649typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION
6650 {
6651 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
6652 UINT OrderHintBitsMinus1;
6653 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
6654
6655typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
6656 {
6657 UINT IntraDistance;
6658 UINT InterFramePeriod;
6659 } D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
6660
6661typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
6662 {
6663 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
6664 INT TransformationMatrix[ 8 ];
6665 BOOL InvalidAffineSet;
6666 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
6667
6668typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
6669 {
6670 UINT ReconstructedPictureResourceIndex;
6671 UINT TemporalLayerIndexPlus1;
6672 UINT SpatialLayerIndexPlus1;
6673 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
6675 UINT OrderHint;
6676 UINT PictureIndex;
6677 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
6678
6679typedef
6680enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
6681 {
6682 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0,
6683 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
6684 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
6685 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
6686 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
6687 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
6688 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
6689 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
6690 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
6691 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
6692 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
6693 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
6694 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
6695 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
6696 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
6697 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000
6698 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
6699
6700DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
6701typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
6702 {
6703 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[ 3 ];
6704 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[ 3 ];
6705 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
6706
6707typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
6708 {
6709 UINT64 EnabledFeatures;
6710 INT64 FeatureValue[ 8 ];
6711 } D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
6712
6713typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
6714 {
6715 UINT64 UpdateMap;
6716 UINT64 TemporalUpdate;
6717 UINT64 UpdateData;
6718 UINT64 NumSegments;
6719 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[ 8 ];
6720 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
6721
6722typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
6723 {
6724 UINT SegmentsMapByteSize;
6725 UINT8 *pSegmentsMap;
6726 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
6727
6728typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
6729 {
6730 UINT64 LoopFilterLevel[ 2 ];
6731 UINT64 LoopFilterLevelU;
6732 UINT64 LoopFilterLevelV;
6733 UINT64 LoopFilterSharpnessLevel;
6734 UINT64 LoopFilterDeltaEnabled;
6735 UINT64 UpdateRefDelta;
6736 INT64 RefDeltas[ 8 ];
6737 UINT64 UpdateModeDelta;
6738 INT64 ModeDeltas[ 2 ];
6739 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
6740
6741typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
6742 {
6743 UINT64 DeltaLFPresent;
6744 UINT64 DeltaLFMulti;
6745 UINT64 DeltaLFRes;
6746 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
6747
6748typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
6749 {
6750 UINT64 BaseQIndex;
6751 INT64 YDCDeltaQ;
6752 INT64 UDCDeltaQ;
6753 INT64 UACDeltaQ;
6754 INT64 VDCDeltaQ;
6755 INT64 VACDeltaQ;
6756 UINT64 UsingQMatrix;
6757 UINT64 QMY;
6758 UINT64 QMU;
6759 UINT64 QMV;
6760 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
6761
6762typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
6763 {
6764 UINT64 DeltaQPresent;
6765 UINT64 DeltaQRes;
6766 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
6767
6768typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
6769 {
6770 UINT64 CdefBits;
6771 UINT64 CdefDampingMinus3;
6772 UINT64 CdefYPriStrength[ 8 ];
6773 UINT64 CdefUVPriStrength[ 8 ];
6774 UINT64 CdefYSecStrength[ 8 ];
6775 UINT64 CdefUVSecStrength[ 8 ];
6776 } D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
6777
6778typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
6779 {
6780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
6781 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6782 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
6783 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
6784 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
6785 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
6786 UINT SuperResDenominator;
6787 UINT OrderHint;
6788 UINT PictureIndex;
6789 UINT TemporalLayerIndexPlus1;
6790 UINT SpatialLayerIndexPlus1;
6791 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[ 8 ];
6792 UINT ReferenceIndices[ 7 ];
6793 UINT PrimaryRefFrame;
6794 UINT RefreshFrameFlags;
6795 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6796 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6797 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6798 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6799 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6800 UINT QPMapValuesCount;
6801 _Field_size_full_(QPMapValuesCount) INT16 *pRateControlQPMap;
6802 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
6803 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
6804 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
6805
6806typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
6807 {
6808 UINT64 RowCount;
6809 UINT64 ColCount;
6810 UINT64 RowHeights[ 64 ];
6811 UINT64 ColWidths[ 64 ];
6812 UINT64 ContextUpdateTileId;
6813 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
6814
6815typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
6816 {
6817 UINT64 CompoundPredictionType;
6818 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6819 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6820 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6821 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6822 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6823 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
6824 UINT64 PrimaryRefFrame;
6825 UINT64 ReferenceIndices[ 7 ];
6826 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
6827
6828typedef
6829enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
6830 {
6831 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
6832 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
6833 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
6834 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
6835 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4
6836 } D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
6837
6838typedef
6839enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
6840 {
6841 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0,
6842 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
6843 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
6844 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
6845 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
6846 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
6847 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
6848 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
6849 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
6850 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100
6851 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
6852
6853DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)
6854typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP
6855 {
6856 UINT ConstantQP_FullIntracodedFrame;
6857 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6858 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6859 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
6860
6861typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1
6862 {
6863 UINT ConstantQP_FullIntracodedFrame;
6864 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6865 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6866 UINT QualityVsSpeed;
6867 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
6868
6869typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR
6870 {
6871 UINT InitialQP;
6872 UINT MinQP;
6873 UINT MaxQP;
6874 UINT64 MaxFrameBitSize;
6875 UINT64 TargetBitRate;
6876 UINT64 VBVCapacity;
6877 UINT64 InitialVBVFullness;
6878 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
6879
6880typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1
6881 {
6882 UINT InitialQP;
6883 UINT MinQP;
6884 UINT MaxQP;
6885 UINT64 MaxFrameBitSize;
6886 UINT64 TargetBitRate;
6887 UINT64 VBVCapacity;
6888 UINT64 InitialVBVFullness;
6889 UINT QualityVsSpeed;
6890 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
6891
6892typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR
6893 {
6894 UINT InitialQP;
6895 UINT MinQP;
6896 UINT MaxQP;
6897 UINT64 MaxFrameBitSize;
6898 UINT64 TargetAvgBitRate;
6899 UINT64 PeakBitRate;
6900 UINT64 VBVCapacity;
6901 UINT64 InitialVBVFullness;
6902 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
6903
6904typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1
6905 {
6906 UINT InitialQP;
6907 UINT MinQP;
6908 UINT MaxQP;
6909 UINT64 MaxFrameBitSize;
6910 UINT64 TargetAvgBitRate;
6911 UINT64 PeakBitRate;
6912 UINT64 VBVCapacity;
6913 UINT64 InitialVBVFullness;
6914 UINT QualityVsSpeed;
6915 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
6916
6917typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR
6918 {
6919 UINT InitialQP;
6920 UINT MinQP;
6921 UINT MaxQP;
6922 UINT64 MaxFrameBitSize;
6923 UINT64 TargetAvgBitRate;
6924 UINT64 PeakBitRate;
6925 UINT ConstantQualityTarget;
6926 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
6927
6928typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
6929 {
6930 UINT InitialQP;
6931 UINT MinQP;
6932 UINT MaxQP;
6933 UINT64 MaxFrameBitSize;
6934 UINT64 TargetAvgBitRate;
6935 UINT64 PeakBitRate;
6936 UINT ConstantQualityTarget;
6937 UINT64 VBVCapacity;
6938 UINT64 InitialVBVFullness;
6939 UINT QualityVsSpeed;
6940 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
6941
6942typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP
6943 {
6944 UINT QualityVsSpeed;
6945 } D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
6946
6947typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
6948 {
6949 UINT DataSize;
6950 union
6951 {
6952 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP *pConfiguration_CQP;
6953 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR *pConfiguration_CBR;
6954 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR *pConfiguration_VBR;
6955 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR *pConfiguration_QVBR;
6956 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 *pConfiguration_CQP1;
6957 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 *pConfiguration_CBR1;
6958 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 *pConfiguration_VBR1;
6959 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1 *pConfiguration_QVBR1;
6960 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP *pConfiguration_AbsoluteQPMap;
6961 } ;
6962 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
6963
6964typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL
6965 {
6966 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
6967 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
6968 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
6969 DXGI_RATIONAL TargetFrameRate;
6970 } D3D12_VIDEO_ENCODER_RATE_CONTROL;
6971
6972typedef
6973enum D3D12_VIDEO_ENCODER_CODEC
6974 {
6975 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
6976 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
6977 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2
6978 } D3D12_VIDEO_ENCODER_CODEC;
6979
6980typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
6981 {
6982 UINT NodeIndex;
6983 D3D12_VIDEO_ENCODER_CODEC Codec;
6984 BOOL IsSupported;
6985 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
6986
6987typedef
6988enum D3D12_VIDEO_ENCODER_PROFILE_H264
6989 {
6990 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
6991 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
6992 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2
6993 } D3D12_VIDEO_ENCODER_PROFILE_H264;
6994
6995typedef
6996enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
6997 {
6998 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
6999 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
7000 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
7001 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
7002 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
7003 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
7004 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
7005 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
7006 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8
7007 } D3D12_VIDEO_ENCODER_PROFILE_HEVC;
7008
7009typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
7010 {
7011 UINT DataSize;
7012 union
7013 {
7014 D3D12_VIDEO_ENCODER_PROFILE_H264 *pH264Profile;
7015 D3D12_VIDEO_ENCODER_PROFILE_HEVC *pHEVCProfile;
7016 D3D12_VIDEO_ENCODER_AV1_PROFILE *pAV1Profile;
7017 } ;
7018 } D3D12_VIDEO_ENCODER_PROFILE_DESC;
7019
7020typedef
7021enum D3D12_VIDEO_ENCODER_LEVELS_H264
7022 {
7023 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
7024 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
7025 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
7026 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
7027 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
7028 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
7029 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
7030 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
7031 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
7032 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
7033 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
7034 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
7035 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
7036 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
7037 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
7038 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
7039 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
7040 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
7041 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
7042 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19
7043 } D3D12_VIDEO_ENCODER_LEVELS_H264;
7044
7045typedef
7046enum D3D12_VIDEO_ENCODER_TIER_HEVC
7047 {
7048 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
7049 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1
7050 } D3D12_VIDEO_ENCODER_TIER_HEVC;
7051
7052typedef
7053enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
7054 {
7055 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
7056 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
7057 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
7058 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
7059 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
7060 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
7061 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
7062 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
7063 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
7064 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
7065 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
7066 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
7067 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12
7068 } D3D12_VIDEO_ENCODER_LEVELS_HEVC;
7069
7070typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
7071 {
7072 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
7073 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
7074 } D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
7075
7076typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
7077 {
7078 UINT DataSize;
7079 union
7080 {
7081 D3D12_VIDEO_ENCODER_LEVELS_H264 *pH264LevelSetting;
7082 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC *pHEVCLevelSetting;
7083 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS *pAV1LevelSetting;
7084 } ;
7085 } D3D12_VIDEO_ENCODER_LEVEL_SETTING;
7086
7087typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
7088 {
7089 UINT NodeIndex;
7090 D3D12_VIDEO_ENCODER_CODEC Codec;
7091 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7092 BOOL IsSupported;
7093 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel;
7094 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel;
7095 } D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
7096
7097typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
7098 {
7099 UINT Width;
7100 UINT Height;
7101 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
7102
7103typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
7104 {
7105 UINT WidthRatio;
7106 UINT HeightRatio;
7107 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
7108
7109typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
7110 {
7111 UINT NodeIndex;
7112 D3D12_VIDEO_ENCODER_CODEC Codec;
7113 UINT ResolutionRatiosCount;
7114 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
7115
7116typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
7117 {
7118 UINT NodeIndex;
7119 D3D12_VIDEO_ENCODER_CODEC Codec;
7120 UINT ResolutionRatiosCount;
7121 BOOL IsSupported;
7122 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported;
7123 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported;
7124 UINT ResolutionWidthMultipleRequirement;
7125 UINT ResolutionHeightMultipleRequirement;
7126 _Field_size_full_(ResolutionRatiosCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC *pResolutionRatios;
7127 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
7128
7129typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
7130 {
7131 UINT NodeIndex;
7132 D3D12_VIDEO_ENCODER_CODEC Codec;
7133 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7134 DXGI_FORMAT Format;
7135 BOOL IsSupported;
7136 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
7137
7138typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
7139 {
7140 UINT NodeIndex;
7141 D3D12_VIDEO_ENCODER_CODEC Codec;
7142 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;
7143 BOOL IsSupported;
7144 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
7145
7146typedef
7147enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
7148 {
7149 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
7150 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1
7151 } D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7152
7153typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE
7154 {
7155 UINT NodeIndex;
7156 D3D12_VIDEO_ENCODER_CODEC Codec;
7157 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7158 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7159 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;
7160 BOOL IsSupported;
7161 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7162
7163typedef
7164enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7165 {
7166 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
7167 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
7168 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
7169 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
7170 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
7171 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
7172 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
7173 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7
7174 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7175
7176typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7177 {
7178 UINT NodeIndex;
7179 D3D12_VIDEO_ENCODER_CODEC Codec;
7180 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7181 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7182 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7183 BOOL IsSupported;
7184 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7185
7186typedef
7187enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
7188 {
7189 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0,
7190 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
7191 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
7192 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
7193 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
7194 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
7195 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
7196 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
7197 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80
7198 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
7199
7200DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)
7201typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7202 {
7203 BOOL Use128SuperBlocks;
7204 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
7205 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
7206 UINT MinTileRows;
7207 UINT MaxTileRows;
7208 UINT MinTileCols;
7209 UINT MaxTileCols;
7210 UINT MinTileWidth;
7211 UINT MaxTileWidth;
7212 UINT MinTileArea;
7213 UINT MaxTileArea;
7214 UINT TileSizeBytesMinus1;
7215 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7216
7217typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7218 {
7219 UINT DataSize;
7220 union
7221 {
7222 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT *pAV1Support;
7223 } ;
7224 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7225
7226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
7227 {
7228 UINT NodeIndex;
7229 D3D12_VIDEO_ENCODER_CODEC Codec;
7230 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7231 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7232 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7233 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution;
7234 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport;
7235 BOOL IsSupported;
7236 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
7237
7238typedef
7239enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
7240 {
7241 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0,
7242 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
7243 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
7244 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
7245 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8
7246 } D3D12_VIDEO_ENCODER_HEAP_FLAGS;
7247
7248DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)
7249typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
7250 {
7251 UINT NodeMask;
7252 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
7253 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7254 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7255 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
7256 UINT ResolutionsListCount;
7257 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7258 } D3D12_VIDEO_ENCODER_HEAP_DESC;
7259
7260typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE
7261 {
7262 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc;
7263 BOOL IsSupported;
7264 UINT64 MemoryPoolL0Size;
7265 UINT64 MemoryPoolL1Size;
7266 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
7267
7268typedef
7269enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
7270 {
7271 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0,
7272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
7273 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7274 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
7275 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
7276 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
7277 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
7278 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
7279 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80
7280 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
7281
7282DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)
7283typedef
7284enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES
7285 {
7286 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
7287 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
7288 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
7289 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
7290 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
7291 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
7292 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6
7293 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
7294
7295typedef
7296enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS
7297 {
7298 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0,
7299 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED ) ,
7300 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES ) ,
7301 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS ) ,
7302 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING ) ,
7303 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES ) ,
7304 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES ) ,
7305 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING )
7306 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
7307
7308DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)
7309typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264
7310 {
7311 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
7312 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
7313 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
7314
7315typedef
7316enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
7317 {
7318 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0,
7319 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
7320 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7321 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
7322 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
7323 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
7324 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
7325 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
7326 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
7327 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
7328 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
7329 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
7330 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
7331 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
7332 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
7333 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
7334 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
7335 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
7336 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
7337 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
7338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
7339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
7340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
7341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
7342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
7343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
7344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
7345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
7346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
7347 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
7348 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
7349 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
7350 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000
7351 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
7352
7353DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)
7354typedef
7355enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE
7356 {
7357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
7358 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
7359 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
7360 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3
7361 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
7362
7363typedef
7364enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE
7365 {
7366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
7367 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
7368 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
7369 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3
7370 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
7371
7372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC
7373 {
7374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7375 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7376 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7377 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7378 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7379 UCHAR max_transform_hierarchy_depth_inter;
7380 UCHAR max_transform_hierarchy_depth_intra;
7381 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
7382
7383typedef
7384enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
7385 {
7386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0,
7387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
7388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2
7389 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
7390
7391DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
7392typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
7393 {
7394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7399 UCHAR max_transform_hierarchy_depth_inter;
7400 UCHAR max_transform_hierarchy_depth_intra;
7401 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
7402 UINT allowed_log2_sao_offset_scale_luma_values;
7403 UINT allowed_log2_sao_offset_scale_chroma_values;
7404 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
7405 UINT allowed_chroma_qp_offset_list_len_minus1_values;
7406 UINT allowed_cb_qp_offset_list_values[ 6 ];
7407 UINT allowed_cr_qp_offset_list_values[ 6 ];
7408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
7409 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
7410
7411typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7412 {
7413 UINT DataSize;
7414 union
7415 {
7416 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
7417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
7418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 *pHEVCSupport1;
7419 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT *pAV1Support;
7420 } ;
7421 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7422
7423typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7424 {
7425 UINT NodeIndex;
7426 D3D12_VIDEO_ENCODER_CODEC Codec;
7427 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7428 BOOL IsSupported;
7429 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;
7430 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7431
7432typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264
7433 {
7434 UINT MaxL0ReferencesForP;
7435 UINT MaxL0ReferencesForB;
7436 UINT MaxL1ReferencesForB;
7437 UINT MaxLongTermReferences;
7438 UINT MaxDPBCapacity;
7439 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
7440
7441typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC
7442 {
7443 UINT MaxL0ReferencesForP;
7444 UINT MaxL0ReferencesForB;
7445 UINT MaxL1ReferencesForB;
7446 UINT MaxLongTermReferences;
7447 UINT MaxDPBCapacity;
7448 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
7449
7450typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7451 {
7452 UINT DataSize;
7453 union
7454 {
7455 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 *pH264Support;
7456 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC *pHEVCSupport;
7457 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT *pAV1Support;
7458 } ;
7459 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7460
7461typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7462 {
7463 UINT NodeIndex;
7464 D3D12_VIDEO_ENCODER_CODEC Codec;
7465 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7466 BOOL IsSupported;
7467 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;
7468 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7469
7470typedef
7471enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
7472 {
7473 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0,
7474 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
7475 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
7476 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
7477 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
7478 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
7479 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
7480 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
7481 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
7482 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
7483 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
7484 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
7485 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
7486 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
7487 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
7488 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
7489 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
7490 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
7491 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
7492 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
7493 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
7494 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
7495 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
7496 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
7497 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000
7498 } D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
7499
7500DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)
7501typedef
7502enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
7503 {
7504 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0,
7505 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
7506 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
7507 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
7508 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
7509 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
7510
7511DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)
7512typedef
7513enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES
7514 {
7515 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
7516 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
7517 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2
7518 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
7519
7520typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
7521 {
7522 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
7523 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
7524 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
7525 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
7526
7527typedef
7528enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
7529 {
7530 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0,
7531 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
7532 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
7533 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
7534 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
7535 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
7536 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
7537 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
7538 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
7539 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
7540 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
7541 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
7542 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
7543 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
7544 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
7545 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
7546 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
7547 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000
7548 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
7549
7550DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)
7551typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
7552 {
7553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
7554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7557 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7558 UCHAR max_transform_hierarchy_depth_inter;
7559 UCHAR max_transform_hierarchy_depth_intra;
7560 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
7561
7562typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
7563 {
7564 UINT DataSize;
7565 union
7566 {
7567 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 *pH264Config;
7568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC *pHEVCConfig;
7569 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION *pAV1Config;
7570 } ;
7571 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
7572
7573typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
7574 {
7575 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
7576 UINT IntraRefreshDuration;
7577 } D3D12_VIDEO_ENCODER_INTRA_REFRESH;
7578
7579typedef
7580enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
7581 {
7582 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
7583 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
7584 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
7585 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
7586 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4
7587 } D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
7588
7589typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
7590 {
7591 UINT MaxSubregionsNumber;
7592 UINT MaxIntraRefreshFrameDuration;
7593 UINT SubregionBlockPixelsSize;
7594 UINT QPMapRegionPixelsSize;
7595 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
7596
7597typedef
7598enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
7599 {
7600 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0,
7601 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
7602 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
7603 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
7604 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
7605 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
7606 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
7607 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
7608 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
7609 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
7610 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
7611 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
7612 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
7613 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
7614 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000
7615 } D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
7616
7617DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)
7618typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
7619 {
7620 UINT GOPLength;
7621 UINT PPicturePeriod;
7622 UCHAR pic_order_cnt_type;
7623 UCHAR log2_max_frame_num_minus4;
7624 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7625 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
7626
7627typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
7628 {
7629 UINT GOPLength;
7630 UINT PPicturePeriod;
7631 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7632 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
7633
7634typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
7635 {
7636 UINT DataSize;
7637 union
7638 {
7639 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 *pH264GroupOfPictures;
7640 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC *pHEVCGroupOfPictures;
7641 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE *pAV1SequenceStructure;
7642 } ;
7643 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
7644
7645typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
7646 {
7647 UINT NodeIndex;
7648 D3D12_VIDEO_ENCODER_CODEC Codec;
7649 DXGI_FORMAT InputFormat;
7650 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7651 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7652 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7653 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7654 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7655 UINT ResolutionsListCount;
7656 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7657 UINT MaxReferenceFramesInDPB;
7658 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7659 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7660 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7661 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7662 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7663 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
7664
7665typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
7666 {
7667 union
7668 {
7669 UINT MaxBytesPerSlice;
7670 UINT NumberOfCodingUnitsPerSlice;
7671 UINT NumberOfRowsPerSlice;
7672 UINT NumberOfSlicesPerFrame;
7673 } ;
7674 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
7675
7676typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
7677 {
7678 UINT DataSize;
7679 union
7680 {
7681 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_H264;
7682 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_HEVC;
7683 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES *pTilesPartition_AV1;
7684 } ;
7685 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
7686
7687typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
7688 {
7689 UINT NodeIndex;
7690 D3D12_VIDEO_ENCODER_CODEC Codec;
7691 DXGI_FORMAT InputFormat;
7692 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7693 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7694 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7695 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7696 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7697 UINT ResolutionsListCount;
7698 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7699 UINT MaxReferenceFramesInDPB;
7700 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7701 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7702 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7703 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7704 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7705 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
7706 UINT MaxQualityVsSpeed;
7707 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
7708
7709typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
7710 {
7711 UINT NodeIndex;
7712 D3D12_VIDEO_ENCODER_CODEC Codec;
7713 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7714 DXGI_FORMAT InputFormat;
7715 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
7716 BOOL IsSupported;
7717 UINT CompressedBitstreamBufferAccessAlignment;
7718 UINT EncoderMetadataBufferAccessAlignment;
7719 UINT MaxEncoderOutputMetadataBufferSize;
7720 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
7721
7722typedef
7723enum D3D12_VIDEO_ENCODER_FLAGS
7724 {
7725 D3D12_VIDEO_ENCODER_FLAG_NONE = 0
7726 } D3D12_VIDEO_ENCODER_FLAGS;
7727
7728DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)
7729typedef struct D3D12_VIDEO_ENCODER_DESC
7730 {
7731 UINT NodeMask;
7732 D3D12_VIDEO_ENCODER_FLAGS Flags;
7733 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7734 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7735 DXGI_FORMAT InputFormat;
7736 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7737 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
7738 } D3D12_VIDEO_ENCODER_DESC;
7739
7740
7741
7742extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_c_ifspec;
7743extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_s_ifspec;
7744
7745#ifndef __ID3D12VideoEncoder_INTERFACE_DEFINED__
7746#define __ID3D12VideoEncoder_INTERFACE_DEFINED__
7747
7748/* interface ID3D12VideoEncoder */
7749/* [unique][local][object][uuid] */
7750
7751
7752EXTERN_C const IID IID_ID3D12VideoEncoder;
7753
7754#if defined(__cplusplus) && !defined(CINTERFACE)
7755
7756 MIDL_INTERFACE("2E0D212D-8DF9-44A6-A770-BB289B182737")
7757 ID3D12VideoEncoder : public ID3D12Pageable
7758 {
7759 public:
7760 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7761
7762 virtual D3D12_VIDEO_ENCODER_FLAGS STDMETHODCALLTYPE GetEncoderFlags( void) = 0;
7763
7764 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7765
7766 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7767 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7768
7769 virtual HRESULT STDMETHODCALLTYPE GetCodecConfiguration(
7770 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig) = 0;
7771
7772 virtual DXGI_FORMAT STDMETHODCALLTYPE GetInputFormat( void) = 0;
7773
7774 virtual D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE STDMETHODCALLTYPE GetMaxMotionEstimationPrecision( void) = 0;
7775
7776 };
7777
7778
7779#else /* C style interface */
7780
7781 typedef struct ID3D12VideoEncoderVtbl
7782 {
7783 BEGIN_INTERFACE
7784
7785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7787 ID3D12VideoEncoder * This,
7788 REFIID riid,
7789 _COM_Outptr_ void **ppvObject);
7790
7791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7792 ULONG ( STDMETHODCALLTYPE *AddRef )(
7793 ID3D12VideoEncoder * This);
7794
7795 DECLSPEC_XFGVIRT(IUnknown, Release)
7796 ULONG ( STDMETHODCALLTYPE *Release )(
7797 ID3D12VideoEncoder * This);
7798
7799 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7800 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7801 ID3D12VideoEncoder * This,
7802 _In_ REFGUID guid,
7803 _Inout_ UINT *pDataSize,
7804 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7805
7806 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7807 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7808 ID3D12VideoEncoder * This,
7809 _In_ REFGUID guid,
7810 _In_ UINT DataSize,
7811 _In_reads_bytes_opt_( DataSize ) const void *pData);
7812
7813 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7814 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7815 ID3D12VideoEncoder * This,
7816 _In_ REFGUID guid,
7817 _In_opt_ const IUnknown *pData);
7818
7819 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7820 HRESULT ( STDMETHODCALLTYPE *SetName )(
7821 ID3D12VideoEncoder * This,
7822 _In_z_ LPCWSTR Name);
7823
7824 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7825 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7826 ID3D12VideoEncoder * This,
7827 REFIID riid,
7828 _COM_Outptr_opt_ void **ppvDevice);
7829
7830 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetNodeMask)
7831 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
7832 ID3D12VideoEncoder * This);
7833
7834 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetEncoderFlags)
7835 D3D12_VIDEO_ENCODER_FLAGS ( STDMETHODCALLTYPE *GetEncoderFlags )(
7836 ID3D12VideoEncoder * This);
7837
7838 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodec)
7839 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
7840 ID3D12VideoEncoder * This);
7841
7842 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecProfile)
7843 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
7844 ID3D12VideoEncoder * This,
7845 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
7846
7847 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecConfiguration)
7848 HRESULT ( STDMETHODCALLTYPE *GetCodecConfiguration )(
7849 ID3D12VideoEncoder * This,
7850 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
7851
7852 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetInputFormat)
7853 DXGI_FORMAT ( STDMETHODCALLTYPE *GetInputFormat )(
7854 ID3D12VideoEncoder * This);
7855
7856 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetMaxMotionEstimationPrecision)
7857 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE ( STDMETHODCALLTYPE *GetMaxMotionEstimationPrecision )(
7858 ID3D12VideoEncoder * This);
7859
7860 END_INTERFACE
7861 } ID3D12VideoEncoderVtbl;
7862
7863 interface ID3D12VideoEncoder
7864 {
7865 CONST_VTBL struct ID3D12VideoEncoderVtbl *lpVtbl;
7866 };
7867
7868
7869
7870#ifdef COBJMACROS
7871
7872
7873#define ID3D12VideoEncoder_QueryInterface(This,riid,ppvObject) \
7874 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7875
7876#define ID3D12VideoEncoder_AddRef(This) \
7877 ( (This)->lpVtbl -> AddRef(This) )
7878
7879#define ID3D12VideoEncoder_Release(This) \
7880 ( (This)->lpVtbl -> Release(This) )
7881
7882
7883#define ID3D12VideoEncoder_GetPrivateData(This,guid,pDataSize,pData) \
7884 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7885
7886#define ID3D12VideoEncoder_SetPrivateData(This,guid,DataSize,pData) \
7887 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7888
7889#define ID3D12VideoEncoder_SetPrivateDataInterface(This,guid,pData) \
7890 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7891
7892#define ID3D12VideoEncoder_SetName(This,Name) \
7893 ( (This)->lpVtbl -> SetName(This,Name) )
7894
7895
7896#define ID3D12VideoEncoder_GetDevice(This,riid,ppvDevice) \
7897 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7898
7899
7900
7901#define ID3D12VideoEncoder_GetNodeMask(This) \
7902 ( (This)->lpVtbl -> GetNodeMask(This) )
7903
7904#define ID3D12VideoEncoder_GetEncoderFlags(This) \
7905 ( (This)->lpVtbl -> GetEncoderFlags(This) )
7906
7907#define ID3D12VideoEncoder_GetCodec(This) \
7908 ( (This)->lpVtbl -> GetCodec(This) )
7909
7910#define ID3D12VideoEncoder_GetCodecProfile(This,dstProfile) \
7911 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
7912
7913#define ID3D12VideoEncoder_GetCodecConfiguration(This,dstCodecConfig) \
7914 ( (This)->lpVtbl -> GetCodecConfiguration(This,dstCodecConfig) )
7915
7916#define ID3D12VideoEncoder_GetInputFormat(This) \
7917 ( (This)->lpVtbl -> GetInputFormat(This) )
7918
7919#define ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(This) \
7920 ( (This)->lpVtbl -> GetMaxMotionEstimationPrecision(This) )
7921
7922#endif /* COBJMACROS */
7923
7924
7925#endif /* C style interface */
7926
7927
7928
7929
7930#endif /* __ID3D12VideoEncoder_INTERFACE_DEFINED__ */
7931
7932
7933#ifndef __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7934#define __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7935
7936/* interface ID3D12VideoEncoderHeap */
7937/* [unique][local][object][uuid] */
7938
7939
7940EXTERN_C const IID IID_ID3D12VideoEncoderHeap;
7941
7942#if defined(__cplusplus) && !defined(CINTERFACE)
7943
7944 MIDL_INTERFACE("22B35D96-876A-44C0-B25E-FB8C9C7F1C4A")
7945 ID3D12VideoEncoderHeap : public ID3D12Pageable
7946 {
7947 public:
7948 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7949
7950 virtual D3D12_VIDEO_ENCODER_HEAP_FLAGS STDMETHODCALLTYPE GetEncoderHeapFlags( void) = 0;
7951
7952 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7953
7954 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7955 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7956
7957 virtual HRESULT STDMETHODCALLTYPE GetCodecLevel(
7958 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel) = 0;
7959
7960 virtual UINT STDMETHODCALLTYPE GetResolutionListCount( void) = 0;
7961
7962 virtual HRESULT STDMETHODCALLTYPE GetResolutionList(
7963 const UINT ResolutionsListCount,
7964 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList) = 0;
7965
7966 };
7967
7968
7969#else /* C style interface */
7970
7971 typedef struct ID3D12VideoEncoderHeapVtbl
7972 {
7973 BEGIN_INTERFACE
7974
7975 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7976 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7977 ID3D12VideoEncoderHeap * This,
7978 REFIID riid,
7979 _COM_Outptr_ void **ppvObject);
7980
7981 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7982 ULONG ( STDMETHODCALLTYPE *AddRef )(
7983 ID3D12VideoEncoderHeap * This);
7984
7985 DECLSPEC_XFGVIRT(IUnknown, Release)
7986 ULONG ( STDMETHODCALLTYPE *Release )(
7987 ID3D12VideoEncoderHeap * This);
7988
7989 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7990 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7991 ID3D12VideoEncoderHeap * This,
7992 _In_ REFGUID guid,
7993 _Inout_ UINT *pDataSize,
7994 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7995
7996 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7997 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7998 ID3D12VideoEncoderHeap * This,
7999 _In_ REFGUID guid,
8000 _In_ UINT DataSize,
8001 _In_reads_bytes_opt_( DataSize ) const void *pData);
8002
8003 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8004 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8005 ID3D12VideoEncoderHeap * This,
8006 _In_ REFGUID guid,
8007 _In_opt_ const IUnknown *pData);
8008
8009 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8010 HRESULT ( STDMETHODCALLTYPE *SetName )(
8011 ID3D12VideoEncoderHeap * This,
8012 _In_z_ LPCWSTR Name);
8013
8014 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8015 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8016 ID3D12VideoEncoderHeap * This,
8017 REFIID riid,
8018 _COM_Outptr_opt_ void **ppvDevice);
8019
8020 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
8021 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
8022 ID3D12VideoEncoderHeap * This);
8023
8024 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
8025 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
8026 ID3D12VideoEncoderHeap * This);
8027
8028 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
8029 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
8030 ID3D12VideoEncoderHeap * This);
8031
8032 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
8033 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
8034 ID3D12VideoEncoderHeap * This,
8035 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
8036
8037 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
8038 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
8039 ID3D12VideoEncoderHeap * This,
8040 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
8041
8042 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
8043 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
8044 ID3D12VideoEncoderHeap * This);
8045
8046 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
8047 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
8048 ID3D12VideoEncoderHeap * This,
8049 const UINT ResolutionsListCount,
8050 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
8051
8052 END_INTERFACE
8053 } ID3D12VideoEncoderHeapVtbl;
8054
8055 interface ID3D12VideoEncoderHeap
8056 {
8057 CONST_VTBL struct ID3D12VideoEncoderHeapVtbl *lpVtbl;
8058 };
8059
8060
8061
8062#ifdef COBJMACROS
8063
8064
8065#define ID3D12VideoEncoderHeap_QueryInterface(This,riid,ppvObject) \
8066 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8067
8068#define ID3D12VideoEncoderHeap_AddRef(This) \
8069 ( (This)->lpVtbl -> AddRef(This) )
8070
8071#define ID3D12VideoEncoderHeap_Release(This) \
8072 ( (This)->lpVtbl -> Release(This) )
8073
8074
8075#define ID3D12VideoEncoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
8076 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8077
8078#define ID3D12VideoEncoderHeap_SetPrivateData(This,guid,DataSize,pData) \
8079 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8080
8081#define ID3D12VideoEncoderHeap_SetPrivateDataInterface(This,guid,pData) \
8082 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8083
8084#define ID3D12VideoEncoderHeap_SetName(This,Name) \
8085 ( (This)->lpVtbl -> SetName(This,Name) )
8086
8087
8088#define ID3D12VideoEncoderHeap_GetDevice(This,riid,ppvDevice) \
8089 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8090
8091
8092
8093#define ID3D12VideoEncoderHeap_GetNodeMask(This) \
8094 ( (This)->lpVtbl -> GetNodeMask(This) )
8095
8096#define ID3D12VideoEncoderHeap_GetEncoderHeapFlags(This) \
8097 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
8098
8099#define ID3D12VideoEncoderHeap_GetCodec(This) \
8100 ( (This)->lpVtbl -> GetCodec(This) )
8101
8102#define ID3D12VideoEncoderHeap_GetCodecProfile(This,dstProfile) \
8103 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
8104
8105#define ID3D12VideoEncoderHeap_GetCodecLevel(This,dstLevel) \
8106 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
8107
8108#define ID3D12VideoEncoderHeap_GetResolutionListCount(This) \
8109 ( (This)->lpVtbl -> GetResolutionListCount(This) )
8110
8111#define ID3D12VideoEncoderHeap_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
8112 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
8113
8114#endif /* COBJMACROS */
8115
8116
8117#endif /* C style interface */
8118
8119
8120
8121
8122#endif /* __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__ */
8123
8124
8125#ifndef __ID3D12VideoDevice3_INTERFACE_DEFINED__
8126#define __ID3D12VideoDevice3_INTERFACE_DEFINED__
8127
8128/* interface ID3D12VideoDevice3 */
8129/* [unique][local][object][uuid] */
8130
8131
8132EXTERN_C const IID IID_ID3D12VideoDevice3;
8133
8134#if defined(__cplusplus) && !defined(CINTERFACE)
8135
8136 MIDL_INTERFACE("4243ADB4-3A32-4666-973C-0CCC5625DC44")
8137 ID3D12VideoDevice3 : public ID3D12VideoDevice2
8138 {
8139 public:
8140 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoder(
8141 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8142 _In_ REFIID riid,
8143 _COM_Outptr_ void **ppVideoEncoder) = 0;
8144
8145 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap(
8146 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8147 _In_ REFIID riid,
8148 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
8149
8150 };
8151
8152
8153#else /* C style interface */
8154
8155 typedef struct ID3D12VideoDevice3Vtbl
8156 {
8157 BEGIN_INTERFACE
8158
8159 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8160 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8161 ID3D12VideoDevice3 * This,
8162 REFIID riid,
8163 _COM_Outptr_ void **ppvObject);
8164
8165 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8166 ULONG ( STDMETHODCALLTYPE *AddRef )(
8167 ID3D12VideoDevice3 * This);
8168
8169 DECLSPEC_XFGVIRT(IUnknown, Release)
8170 ULONG ( STDMETHODCALLTYPE *Release )(
8171 ID3D12VideoDevice3 * This);
8172
8173 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
8174 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
8175 ID3D12VideoDevice3 * This,
8176 D3D12_FEATURE_VIDEO FeatureVideo,
8177 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8178 UINT FeatureSupportDataSize);
8179
8180 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
8181 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
8182 ID3D12VideoDevice3 * This,
8183 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8184 _In_ REFIID riid,
8185 _COM_Outptr_ void **ppVideoDecoder);
8186
8187 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
8188 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
8189 ID3D12VideoDevice3 * This,
8190 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8191 _In_ REFIID riid,
8192 _COM_Outptr_ void **ppVideoDecoderHeap);
8193
8194 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
8195 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
8196 ID3D12VideoDevice3 * This,
8197 UINT NodeMask,
8198 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8199 UINT NumInputStreamDescs,
8200 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8201 _In_ REFIID riid,
8202 _COM_Outptr_ void **ppVideoProcessor);
8203
8204 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
8205 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
8206 ID3D12VideoDevice3 * This,
8207 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
8208 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8209 _In_ REFIID riid,
8210 _COM_Outptr_ void **ppVideoMotionEstimator);
8211
8212 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
8213 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
8214 ID3D12VideoDevice3 * This,
8215 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
8216 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8217 _In_ REFIID riid,
8218 _COM_Outptr_ void **ppVideoMotionVectorHeap);
8219
8220 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
8221 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
8222 ID3D12VideoDevice3 * This,
8223 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8224 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8225 _In_ REFIID riid,
8226 _COM_Outptr_ void **ppVideoDecoder);
8227
8228 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
8229 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
8230 ID3D12VideoDevice3 * This,
8231 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8232 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8233 _In_ REFIID riid,
8234 _COM_Outptr_ void **ppVideoDecoderHeap);
8235
8236 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
8237 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
8238 ID3D12VideoDevice3 * This,
8239 UINT NodeMask,
8240 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8241 UINT NumInputStreamDescs,
8242 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8243 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8244 _In_ REFIID riid,
8245 _COM_Outptr_ void **ppVideoProcessor);
8246
8247 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
8248 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
8249 ID3D12VideoDevice3 * This,
8250 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
8251 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
8252 SIZE_T CreationParametersDataSizeInBytes,
8253 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8254 _In_ REFIID riid,
8255 _COM_Outptr_ void **ppVideoExtensionCommand);
8256
8257 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
8258 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8259 ID3D12VideoDevice3 * This,
8260 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8261 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8262 SIZE_T ExecutionParametersSizeInBytes,
8263 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
8264 SIZE_T OutputDataSizeInBytes);
8265
8266 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
8267 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
8268 ID3D12VideoDevice3 * This,
8269 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8270 _In_ REFIID riid,
8271 _COM_Outptr_ void **ppVideoEncoder);
8272
8273 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
8274 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
8275 ID3D12VideoDevice3 * This,
8276 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8277 _In_ REFIID riid,
8278 _COM_Outptr_ void **ppVideoEncoderHeap);
8279
8280 END_INTERFACE
8281 } ID3D12VideoDevice3Vtbl;
8282
8283 interface ID3D12VideoDevice3
8284 {
8285 CONST_VTBL struct ID3D12VideoDevice3Vtbl *lpVtbl;
8286 };
8287
8288
8289
8290#ifdef COBJMACROS
8291
8292
8293#define ID3D12VideoDevice3_QueryInterface(This,riid,ppvObject) \
8294 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8295
8296#define ID3D12VideoDevice3_AddRef(This) \
8297 ( (This)->lpVtbl -> AddRef(This) )
8298
8299#define ID3D12VideoDevice3_Release(This) \
8300 ( (This)->lpVtbl -> Release(This) )
8301
8302
8303#define ID3D12VideoDevice3_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
8304 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
8305
8306#define ID3D12VideoDevice3_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
8307 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
8308
8309#define ID3D12VideoDevice3_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
8310 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
8311
8312#define ID3D12VideoDevice3_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
8313 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
8314
8315
8316#define ID3D12VideoDevice3_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
8317 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
8318
8319#define ID3D12VideoDevice3_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
8320 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
8321
8322
8323#define ID3D12VideoDevice3_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
8324 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
8325
8326#define ID3D12VideoDevice3_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
8327 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
8328
8329#define ID3D12VideoDevice3_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
8330 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
8331
8332#define ID3D12VideoDevice3_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
8333 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
8334
8335#define ID3D12VideoDevice3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
8336 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
8337
8338
8339#define ID3D12VideoDevice3_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
8340 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
8341
8342#define ID3D12VideoDevice3_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
8343 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
8344
8345#endif /* COBJMACROS */
8346
8347
8348#endif /* C style interface */
8349
8350
8351
8352
8353#endif /* __ID3D12VideoDevice3_INTERFACE_DEFINED__ */
8354
8355
8356/* interface __MIDL_itf_d3d12video_0000_0025 */
8357/* [local] */
8358
8359typedef
8360enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
8361 {
8362 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
8363 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
8364 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
8365 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3
8366 } D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
8367
8368typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
8369 {
8370 UINT ReconstructedPictureResourceIndex;
8371 BOOL IsLongTermReference;
8372 UINT LongTermPictureIdx;
8373 UINT PictureOrderCountNumber;
8374 UINT FrameDecodingOrderNumber;
8375 UINT TemporalLayerIndex;
8376 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
8377
8378typedef
8379enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
8380 {
8381 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0,
8382 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8383 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2
8384 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
8385
8386DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)
8387typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
8388 {
8389 UCHAR memory_management_control_operation;
8390 UINT difference_of_pic_nums_minus1;
8391 UINT long_term_pic_num;
8392 UINT long_term_frame_idx;
8393 UINT max_long_term_frame_idx_plus1;
8394 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
8395
8396typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
8397 {
8398 UCHAR modification_of_pic_nums_idc;
8399 UINT abs_diff_pic_num_minus1;
8400 UINT long_term_pic_num;
8401 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
8402
8403typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
8404 {
8405 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
8406 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
8407 UINT pic_parameter_set_id;
8408 UINT idr_pic_id;
8409 UINT PictureOrderCountNumber;
8410 UINT FrameDecodingOrderNumber;
8411 UINT TemporalLayerIndex;
8412 UINT List0ReferenceFramesCount;
8413 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8414 UINT List1ReferenceFramesCount;
8415 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8416 UINT ReferenceFramesReconPictureDescriptorsCount;
8417 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
8418 UCHAR adaptive_ref_pic_marking_mode_flag;
8419 UINT RefPicMarkingOperationsCommandsCount;
8420 _Field_size_full_(RefPicMarkingOperationsCommandsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
8421 UINT List0RefPicModificationsCount;
8422 _Field_size_full_(List0RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
8423 UINT List1RefPicModificationsCount;
8424 _Field_size_full_(List1RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
8425 UINT QPMapValuesCount;
8426 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8427 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
8428
8429typedef
8430enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
8431 {
8432 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
8433 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
8434 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
8435 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3
8436 } D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
8437
8438typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
8439 {
8440 UINT ReconstructedPictureResourceIndex;
8441 BOOL IsRefUsedByCurrentPic;
8442 BOOL IsLongTermReference;
8443 UINT PictureOrderCountNumber;
8444 UINT TemporalLayerIndex;
8445 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
8446
8447typedef
8448enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
8449 {
8450 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0,
8451 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8452 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
8453 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
8454 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8
8455 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
8456
8457DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)
8458typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
8459 {
8460 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8461 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8462 UINT slice_pic_parameter_set_id;
8463 UINT PictureOrderCountNumber;
8464 UINT TemporalLayerIndex;
8465 UINT List0ReferenceFramesCount;
8466 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8467 UINT List1ReferenceFramesCount;
8468 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8469 UINT ReferenceFramesReconPictureDescriptorsCount;
8470 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8471 UINT List0RefPicModificationsCount;
8472 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8473 UINT List1RefPicModificationsCount;
8474 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8475 UINT QPMapValuesCount;
8476 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8477 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
8478
8479typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
8480 {
8481 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8482 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8483 UINT slice_pic_parameter_set_id;
8484 UINT PictureOrderCountNumber;
8485 UINT TemporalLayerIndex;
8486 UINT List0ReferenceFramesCount;
8487 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8488 UINT List1ReferenceFramesCount;
8489 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8490 UINT ReferenceFramesReconPictureDescriptorsCount;
8491 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8492 UINT List0RefPicModificationsCount;
8493 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8494 UINT List1RefPicModificationsCount;
8495 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8496 UINT QPMapValuesCount;
8497 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8498 UCHAR diff_cu_chroma_qp_offset_depth;
8499 UCHAR log2_sao_offset_scale_luma;
8500 UCHAR log2_sao_offset_scale_chroma;
8501 UCHAR log2_max_transform_skip_block_size_minus2;
8502 UCHAR chroma_qp_offset_list_len_minus1;
8503 CHAR cb_qp_offset_list[ 6 ];
8504 CHAR cr_qp_offset_list[ 6 ];
8505 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
8506
8507typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
8508 {
8509 UINT DataSize;
8510 union
8511 {
8512 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
8513 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
8514 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 *pHEVCPicData1;
8515 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
8516 } ;
8517 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
8518
8519typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
8520 {
8521 UINT NumTexture2Ds;
8522 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
8523 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
8524 } D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
8525
8526typedef
8527enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
8528 {
8529 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0,
8530 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
8531 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
8532 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
8533 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8
8534 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
8535
8536DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)
8537typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
8538 {
8539 UINT IntraRefreshFrameIndex;
8540 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
8541 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
8542 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
8543 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
8544
8545typedef
8546enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
8547 {
8548 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0,
8549 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
8550 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
8551 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
8552 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
8553 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
8554 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
8555
8556DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)
8557typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
8558 {
8559 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
8560 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
8561 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
8562 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
8563 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
8564 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
8565 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
8566 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
8567
8568typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
8569 {
8570 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
8571 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
8572 ID3D12Resource *pInputFrame;
8573 UINT InputFrameSubresource;
8574 UINT CurrentFrameBitstreamMetadataSize;
8575 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
8576
8577typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
8578 {
8579 ID3D12Resource *pBuffer;
8580 UINT64 FrameStartOffset;
8581 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
8582
8583typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
8584 {
8585 ID3D12Resource *pReconstructedPicture;
8586 UINT ReconstructedPictureSubresource;
8587 } D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
8588
8589typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
8590 {
8591 UINT64 bSize;
8592 UINT64 bStartOffset;
8593 UINT64 bHeaderSize;
8594 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
8595
8596typedef
8597enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
8598 {
8599 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0,
8600 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
8601 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
8602 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
8603 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
8604 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
8605 } D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
8606
8607DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)
8608typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
8609 {
8610 UINT64 AverageQP;
8611 UINT64 IntraCodingUnitsCount;
8612 UINT64 InterCodingUnitsCount;
8613 UINT64 SkipCodingUnitsCount;
8614 UINT64 AverageMotionEstimationXDirection;
8615 UINT64 AverageMotionEstimationYDirection;
8616 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
8617
8618typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
8619 {
8620 UINT64 EncodeErrorFlags;
8621 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
8622 UINT64 EncodedBitstreamWrittenBytesCount;
8623 UINT64 WrittenSubregionsCount;
8624 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
8625
8626typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
8627 {
8628 ID3D12Resource *pBuffer;
8629 UINT64 Offset;
8630 } D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
8631
8632typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
8633 {
8634 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
8635 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
8636 DXGI_FORMAT EncoderInputFormat;
8637 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
8638 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
8639 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
8640
8641typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
8642 {
8643 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
8644 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
8645
8646typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
8647 {
8648 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
8649 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
8650 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
8651 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
8652
8653
8654
8655extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_c_ifspec;
8656extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_s_ifspec;
8657
8658#ifndef __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8659#define __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8660
8661/* interface ID3D12VideoEncodeCommandList2 */
8662/* [unique][local][object][uuid] */
8663
8664
8665EXTERN_C const IID IID_ID3D12VideoEncodeCommandList2;
8666
8667#if defined(__cplusplus) && !defined(CINTERFACE)
8668
8669 MIDL_INTERFACE("895491e2-e701-46a9-9a1f-8d3480ed867a")
8670 ID3D12VideoEncodeCommandList2 : public ID3D12VideoEncodeCommandList1
8671 {
8672 public:
8673 virtual void STDMETHODCALLTYPE EncodeFrame(
8674 _In_ ID3D12VideoEncoder *pEncoder,
8675 _In_ ID3D12VideoEncoderHeap *pHeap,
8676 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8677 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8678
8679 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata(
8680 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8681 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8682
8683 };
8684
8685
8686#else /* C style interface */
8687
8688 typedef struct ID3D12VideoEncodeCommandList2Vtbl
8689 {
8690 BEGIN_INTERFACE
8691
8692 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8693 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8694 ID3D12VideoEncodeCommandList2 * This,
8695 REFIID riid,
8696 _COM_Outptr_ void **ppvObject);
8697
8698 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8699 ULONG ( STDMETHODCALLTYPE *AddRef )(
8700 ID3D12VideoEncodeCommandList2 * This);
8701
8702 DECLSPEC_XFGVIRT(IUnknown, Release)
8703 ULONG ( STDMETHODCALLTYPE *Release )(
8704 ID3D12VideoEncodeCommandList2 * This);
8705
8706 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8707 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8708 ID3D12VideoEncodeCommandList2 * This,
8709 _In_ REFGUID guid,
8710 _Inout_ UINT *pDataSize,
8711 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8712
8713 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8714 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8715 ID3D12VideoEncodeCommandList2 * This,
8716 _In_ REFGUID guid,
8717 _In_ UINT DataSize,
8718 _In_reads_bytes_opt_( DataSize ) const void *pData);
8719
8720 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8721 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8722 ID3D12VideoEncodeCommandList2 * This,
8723 _In_ REFGUID guid,
8724 _In_opt_ const IUnknown *pData);
8725
8726 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8727 HRESULT ( STDMETHODCALLTYPE *SetName )(
8728 ID3D12VideoEncodeCommandList2 * This,
8729 _In_z_ LPCWSTR Name);
8730
8731 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8732 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8733 ID3D12VideoEncodeCommandList2 * This,
8734 REFIID riid,
8735 _COM_Outptr_opt_ void **ppvDevice);
8736
8737 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8738 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8739 ID3D12VideoEncodeCommandList2 * This);
8740
8741 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
8742 HRESULT ( STDMETHODCALLTYPE *Close )(
8743 ID3D12VideoEncodeCommandList2 * This);
8744
8745 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
8746 HRESULT ( STDMETHODCALLTYPE *Reset )(
8747 ID3D12VideoEncodeCommandList2 * This,
8748 _In_ ID3D12CommandAllocator *pAllocator);
8749
8750 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
8751 void ( STDMETHODCALLTYPE *ClearState )(
8752 ID3D12VideoEncodeCommandList2 * This);
8753
8754 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
8755 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8756 ID3D12VideoEncodeCommandList2 * This,
8757 _In_ UINT NumBarriers,
8758 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8759
8760 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
8761 void ( STDMETHODCALLTYPE *DiscardResource )(
8762 ID3D12VideoEncodeCommandList2 * This,
8763 _In_ ID3D12Resource *pResource,
8764 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8765
8766 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
8767 void ( STDMETHODCALLTYPE *BeginQuery )(
8768 ID3D12VideoEncodeCommandList2 * This,
8769 _In_ ID3D12QueryHeap *pQueryHeap,
8770 _In_ D3D12_QUERY_TYPE Type,
8771 _In_ UINT Index);
8772
8773 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
8774 void ( STDMETHODCALLTYPE *EndQuery )(
8775 ID3D12VideoEncodeCommandList2 * This,
8776 _In_ ID3D12QueryHeap *pQueryHeap,
8777 _In_ D3D12_QUERY_TYPE Type,
8778 _In_ UINT Index);
8779
8780 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
8781 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8782 ID3D12VideoEncodeCommandList2 * This,
8783 _In_ ID3D12QueryHeap *pQueryHeap,
8784 _In_ D3D12_QUERY_TYPE Type,
8785 _In_ UINT StartIndex,
8786 _In_ UINT NumQueries,
8787 _In_ ID3D12Resource *pDestinationBuffer,
8788 _In_ UINT64 AlignedDestinationBufferOffset);
8789
8790 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
8791 void ( STDMETHODCALLTYPE *SetPredication )(
8792 ID3D12VideoEncodeCommandList2 * This,
8793 _In_opt_ ID3D12Resource *pBuffer,
8794 _In_ UINT64 AlignedBufferOffset,
8795 _In_ D3D12_PREDICATION_OP Operation);
8796
8797 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
8798 void ( STDMETHODCALLTYPE *SetMarker )(
8799 ID3D12VideoEncodeCommandList2 * This,
8800 UINT Metadata,
8801 _In_reads_bytes_opt_(Size) const void *pData,
8802 UINT Size);
8803
8804 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
8805 void ( STDMETHODCALLTYPE *BeginEvent )(
8806 ID3D12VideoEncodeCommandList2 * This,
8807 UINT Metadata,
8808 _In_reads_bytes_opt_(Size) const void *pData,
8809 UINT Size);
8810
8811 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
8812 void ( STDMETHODCALLTYPE *EndEvent )(
8813 ID3D12VideoEncodeCommandList2 * This);
8814
8815 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
8816 void ( STDMETHODCALLTYPE *EstimateMotion )(
8817 ID3D12VideoEncodeCommandList2 * This,
8818 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
8819 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
8820 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
8821
8822 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
8823 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
8824 ID3D12VideoEncodeCommandList2 * This,
8825 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
8826 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
8827
8828 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
8829 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8830 ID3D12VideoEncodeCommandList2 * This,
8831 UINT Count,
8832 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8833 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8834
8835 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
8836 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
8837 ID3D12VideoEncodeCommandList2 * This,
8838 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
8839
8840 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
8841 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
8842 ID3D12VideoEncodeCommandList2 * This,
8843 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8844 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
8845 SIZE_T InitializationParametersSizeInBytes);
8846
8847 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
8848 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8849 ID3D12VideoEncodeCommandList2 * This,
8850 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8851 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8852 SIZE_T ExecutionParametersSizeInBytes);
8853
8854 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
8855 void ( STDMETHODCALLTYPE *EncodeFrame )(
8856 ID3D12VideoEncodeCommandList2 * This,
8857 _In_ ID3D12VideoEncoder *pEncoder,
8858 _In_ ID3D12VideoEncoderHeap *pHeap,
8859 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8860 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
8861
8862 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
8863 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
8864 ID3D12VideoEncodeCommandList2 * This,
8865 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8866 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
8867
8868 END_INTERFACE
8869 } ID3D12VideoEncodeCommandList2Vtbl;
8870
8871 interface ID3D12VideoEncodeCommandList2
8872 {
8873 CONST_VTBL struct ID3D12VideoEncodeCommandList2Vtbl *lpVtbl;
8874 };
8875
8876
8877
8878#ifdef COBJMACROS
8879
8880
8881#define ID3D12VideoEncodeCommandList2_QueryInterface(This,riid,ppvObject) \
8882 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8883
8884#define ID3D12VideoEncodeCommandList2_AddRef(This) \
8885 ( (This)->lpVtbl -> AddRef(This) )
8886
8887#define ID3D12VideoEncodeCommandList2_Release(This) \
8888 ( (This)->lpVtbl -> Release(This) )
8889
8890
8891#define ID3D12VideoEncodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8892 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8893
8894#define ID3D12VideoEncodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8895 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8896
8897#define ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
8898 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8899
8900#define ID3D12VideoEncodeCommandList2_SetName(This,Name) \
8901 ( (This)->lpVtbl -> SetName(This,Name) )
8902
8903
8904#define ID3D12VideoEncodeCommandList2_GetDevice(This,riid,ppvDevice) \
8905 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8906
8907
8908#define ID3D12VideoEncodeCommandList2_GetType(This) \
8909 ( (This)->lpVtbl -> GetType(This) )
8910
8911
8912#define ID3D12VideoEncodeCommandList2_Close(This) \
8913 ( (This)->lpVtbl -> Close(This) )
8914
8915#define ID3D12VideoEncodeCommandList2_Reset(This,pAllocator) \
8916 ( (This)->lpVtbl -> Reset(This,pAllocator) )
8917
8918#define ID3D12VideoEncodeCommandList2_ClearState(This) \
8919 ( (This)->lpVtbl -> ClearState(This) )
8920
8921#define ID3D12VideoEncodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8922 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8923
8924#define ID3D12VideoEncodeCommandList2_DiscardResource(This,pResource,pRegion) \
8925 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8926
8927#define ID3D12VideoEncodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8928 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8929
8930#define ID3D12VideoEncodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8931 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8932
8933#define ID3D12VideoEncodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8934 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8935
8936#define ID3D12VideoEncodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8937 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8938
8939#define ID3D12VideoEncodeCommandList2_SetMarker(This,Metadata,pData,Size) \
8940 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8941
8942#define ID3D12VideoEncodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
8943 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8944
8945#define ID3D12VideoEncodeCommandList2_EndEvent(This) \
8946 ( (This)->lpVtbl -> EndEvent(This) )
8947
8948#define ID3D12VideoEncodeCommandList2_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
8949 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
8950
8951#define ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
8952 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
8953
8954#define ID3D12VideoEncodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8955 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8956
8957#define ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
8958 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
8959
8960
8961#define ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
8962 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
8963
8964#define ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
8965 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
8966
8967
8968#define ID3D12VideoEncodeCommandList2_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
8969 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
8970
8971#define ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
8972 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
8973
8974#endif /* COBJMACROS */
8975
8976
8977#endif /* C style interface */
8978
8979
8980
8981
8982#endif /* __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__ */
8983
8984
8985#ifndef __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8986#define __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8987
8988/* interface ID3D12VideoEncodeCommandList3 */
8989/* [unique][local][object][uuid] */
8990
8991
8992EXTERN_C const IID IID_ID3D12VideoEncodeCommandList3;
8993
8994#if defined(__cplusplus) && !defined(CINTERFACE)
8995
8996 MIDL_INTERFACE("7f027b22-1515-4e85-aa0d-026486580576")
8997 ID3D12VideoEncodeCommandList3 : public ID3D12VideoEncodeCommandList2
8998 {
8999 public:
9000 virtual void STDMETHODCALLTYPE Barrier(
9001 UINT32 NumBarrierGroups,
9002 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
9003
9004 };
9005
9006
9007#else /* C style interface */
9008
9009 typedef struct ID3D12VideoEncodeCommandList3Vtbl
9010 {
9011 BEGIN_INTERFACE
9012
9013 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9014 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9015 ID3D12VideoEncodeCommandList3 * This,
9016 REFIID riid,
9017 _COM_Outptr_ void **ppvObject);
9018
9019 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9020 ULONG ( STDMETHODCALLTYPE *AddRef )(
9021 ID3D12VideoEncodeCommandList3 * This);
9022
9023 DECLSPEC_XFGVIRT(IUnknown, Release)
9024 ULONG ( STDMETHODCALLTYPE *Release )(
9025 ID3D12VideoEncodeCommandList3 * This);
9026
9027 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9028 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9029 ID3D12VideoEncodeCommandList3 * This,
9030 _In_ REFGUID guid,
9031 _Inout_ UINT *pDataSize,
9032 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9033
9034 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9035 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9036 ID3D12VideoEncodeCommandList3 * This,
9037 _In_ REFGUID guid,
9038 _In_ UINT DataSize,
9039 _In_reads_bytes_opt_( DataSize ) const void *pData);
9040
9041 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9042 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9043 ID3D12VideoEncodeCommandList3 * This,
9044 _In_ REFGUID guid,
9045 _In_opt_ const IUnknown *pData);
9046
9047 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9048 HRESULT ( STDMETHODCALLTYPE *SetName )(
9049 ID3D12VideoEncodeCommandList3 * This,
9050 _In_z_ LPCWSTR Name);
9051
9052 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9053 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9054 ID3D12VideoEncodeCommandList3 * This,
9055 REFIID riid,
9056 _COM_Outptr_opt_ void **ppvDevice);
9057
9058 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
9059 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
9060 ID3D12VideoEncodeCommandList3 * This);
9061
9062 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
9063 HRESULT ( STDMETHODCALLTYPE *Close )(
9064 ID3D12VideoEncodeCommandList3 * This);
9065
9066 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
9067 HRESULT ( STDMETHODCALLTYPE *Reset )(
9068 ID3D12VideoEncodeCommandList3 * This,
9069 _In_ ID3D12CommandAllocator *pAllocator);
9070
9071 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
9072 void ( STDMETHODCALLTYPE *ClearState )(
9073 ID3D12VideoEncodeCommandList3 * This);
9074
9075 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
9076 void ( STDMETHODCALLTYPE *ResourceBarrier )(
9077 ID3D12VideoEncodeCommandList3 * This,
9078 _In_ UINT NumBarriers,
9079 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
9080
9081 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
9082 void ( STDMETHODCALLTYPE *DiscardResource )(
9083 ID3D12VideoEncodeCommandList3 * This,
9084 _In_ ID3D12Resource *pResource,
9085 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
9086
9087 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
9088 void ( STDMETHODCALLTYPE *BeginQuery )(
9089 ID3D12VideoEncodeCommandList3 * This,
9090 _In_ ID3D12QueryHeap *pQueryHeap,
9091 _In_ D3D12_QUERY_TYPE Type,
9092 _In_ UINT Index);
9093
9094 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
9095 void ( STDMETHODCALLTYPE *EndQuery )(
9096 ID3D12VideoEncodeCommandList3 * This,
9097 _In_ ID3D12QueryHeap *pQueryHeap,
9098 _In_ D3D12_QUERY_TYPE Type,
9099 _In_ UINT Index);
9100
9101 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
9102 void ( STDMETHODCALLTYPE *ResolveQueryData )(
9103 ID3D12VideoEncodeCommandList3 * This,
9104 _In_ ID3D12QueryHeap *pQueryHeap,
9105 _In_ D3D12_QUERY_TYPE Type,
9106 _In_ UINT StartIndex,
9107 _In_ UINT NumQueries,
9108 _In_ ID3D12Resource *pDestinationBuffer,
9109 _In_ UINT64 AlignedDestinationBufferOffset);
9110
9111 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
9112 void ( STDMETHODCALLTYPE *SetPredication )(
9113 ID3D12VideoEncodeCommandList3 * This,
9114 _In_opt_ ID3D12Resource *pBuffer,
9115 _In_ UINT64 AlignedBufferOffset,
9116 _In_ D3D12_PREDICATION_OP Operation);
9117
9118 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
9119 void ( STDMETHODCALLTYPE *SetMarker )(
9120 ID3D12VideoEncodeCommandList3 * This,
9121 UINT Metadata,
9122 _In_reads_bytes_opt_(Size) const void *pData,
9123 UINT Size);
9124
9125 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
9126 void ( STDMETHODCALLTYPE *BeginEvent )(
9127 ID3D12VideoEncodeCommandList3 * This,
9128 UINT Metadata,
9129 _In_reads_bytes_opt_(Size) const void *pData,
9130 UINT Size);
9131
9132 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
9133 void ( STDMETHODCALLTYPE *EndEvent )(
9134 ID3D12VideoEncodeCommandList3 * This);
9135
9136 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
9137 void ( STDMETHODCALLTYPE *EstimateMotion )(
9138 ID3D12VideoEncodeCommandList3 * This,
9139 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
9140 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
9141 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
9142
9143 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
9144 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
9145 ID3D12VideoEncodeCommandList3 * This,
9146 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
9147 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
9148
9149 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
9150 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
9151 ID3D12VideoEncodeCommandList3 * This,
9152 UINT Count,
9153 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
9154 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
9155
9156 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
9157 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
9158 ID3D12VideoEncodeCommandList3 * This,
9159 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
9160
9161 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
9162 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
9163 ID3D12VideoEncodeCommandList3 * This,
9164 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9165 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
9166 SIZE_T InitializationParametersSizeInBytes);
9167
9168 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
9169 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9170 ID3D12VideoEncodeCommandList3 * This,
9171 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9172 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9173 SIZE_T ExecutionParametersSizeInBytes);
9174
9175 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
9176 void ( STDMETHODCALLTYPE *EncodeFrame )(
9177 ID3D12VideoEncodeCommandList3 * This,
9178 _In_ ID3D12VideoEncoder *pEncoder,
9179 _In_ ID3D12VideoEncoderHeap *pHeap,
9180 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
9181 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
9182
9183 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
9184 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
9185 ID3D12VideoEncodeCommandList3 * This,
9186 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
9187 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
9188
9189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
9190 void ( STDMETHODCALLTYPE *Barrier )(
9191 ID3D12VideoEncodeCommandList3 * This,
9192 UINT32 NumBarrierGroups,
9193 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
9194
9195 END_INTERFACE
9196 } ID3D12VideoEncodeCommandList3Vtbl;
9197
9198 interface ID3D12VideoEncodeCommandList3
9199 {
9200 CONST_VTBL struct ID3D12VideoEncodeCommandList3Vtbl *lpVtbl;
9201 };
9202
9203
9204
9205#ifdef COBJMACROS
9206
9207
9208#define ID3D12VideoEncodeCommandList3_QueryInterface(This,riid,ppvObject) \
9209 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9210
9211#define ID3D12VideoEncodeCommandList3_AddRef(This) \
9212 ( (This)->lpVtbl -> AddRef(This) )
9213
9214#define ID3D12VideoEncodeCommandList3_Release(This) \
9215 ( (This)->lpVtbl -> Release(This) )
9216
9217
9218#define ID3D12VideoEncodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
9219 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9220
9221#define ID3D12VideoEncodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
9222 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9223
9224#define ID3D12VideoEncodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
9225 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9226
9227#define ID3D12VideoEncodeCommandList3_SetName(This,Name) \
9228 ( (This)->lpVtbl -> SetName(This,Name) )
9229
9230
9231#define ID3D12VideoEncodeCommandList3_GetDevice(This,riid,ppvDevice) \
9232 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9233
9234
9235#define ID3D12VideoEncodeCommandList3_GetType(This) \
9236 ( (This)->lpVtbl -> GetType(This) )
9237
9238
9239#define ID3D12VideoEncodeCommandList3_Close(This) \
9240 ( (This)->lpVtbl -> Close(This) )
9241
9242#define ID3D12VideoEncodeCommandList3_Reset(This,pAllocator) \
9243 ( (This)->lpVtbl -> Reset(This,pAllocator) )
9244
9245#define ID3D12VideoEncodeCommandList3_ClearState(This) \
9246 ( (This)->lpVtbl -> ClearState(This) )
9247
9248#define ID3D12VideoEncodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
9249 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
9250
9251#define ID3D12VideoEncodeCommandList3_DiscardResource(This,pResource,pRegion) \
9252 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
9253
9254#define ID3D12VideoEncodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
9255 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
9256
9257#define ID3D12VideoEncodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
9258 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
9259
9260#define ID3D12VideoEncodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
9261 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
9262
9263#define ID3D12VideoEncodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
9264 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
9265
9266#define ID3D12VideoEncodeCommandList3_SetMarker(This,Metadata,pData,Size) \
9267 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9268
9269#define ID3D12VideoEncodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
9270 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9271
9272#define ID3D12VideoEncodeCommandList3_EndEvent(This) \
9273 ( (This)->lpVtbl -> EndEvent(This) )
9274
9275#define ID3D12VideoEncodeCommandList3_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
9276 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
9277
9278#define ID3D12VideoEncodeCommandList3_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
9279 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
9280
9281#define ID3D12VideoEncodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
9282 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
9283
9284#define ID3D12VideoEncodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
9285 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
9286
9287
9288#define ID3D12VideoEncodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
9289 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
9290
9291#define ID3D12VideoEncodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
9292 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
9293
9294
9295#define ID3D12VideoEncodeCommandList3_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
9296 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
9297
9298#define ID3D12VideoEncodeCommandList3_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
9299 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
9300
9301
9302#define ID3D12VideoEncodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
9303 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
9304
9305#endif /* COBJMACROS */
9306
9307
9308#endif /* C style interface */
9309
9310
9311
9312
9313#endif /* __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__ */
9314
9315
9316/* interface __MIDL_itf_d3d12video_0000_0027 */
9317/* [local] */
9318
9319typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
9320 {
9321 UINT NodeMask;
9322 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
9323 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
9324 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
9325 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
9326 UINT ResolutionsListCount;
9327 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
9328 UINT Pow2DownscaleFactor;
9329 } D3D12_VIDEO_ENCODER_HEAP_DESC1;
9330
9331
9332
9333extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
9334extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_s_ifspec;
9335
9336#ifndef __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9337#define __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9338
9339/* interface ID3D12VideoEncoderHeap1 */
9340/* [unique][local][object][uuid] */
9341
9342
9343EXTERN_C const IID IID_ID3D12VideoEncoderHeap1;
9344
9345#if defined(__cplusplus) && !defined(CINTERFACE)
9346
9347 MIDL_INTERFACE("ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9")
9348 ID3D12VideoEncoderHeap1 : public ID3D12VideoEncoderHeap
9349 {
9350 public:
9351 virtual UINT STDMETHODCALLTYPE GetPow2DownscaleFactor( void) = 0;
9352
9353 };
9354
9355
9356#else /* C style interface */
9357
9358 typedef struct ID3D12VideoEncoderHeap1Vtbl
9359 {
9360 BEGIN_INTERFACE
9361
9362 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9363 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9364 ID3D12VideoEncoderHeap1 * This,
9365 REFIID riid,
9366 _COM_Outptr_ void **ppvObject);
9367
9368 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9369 ULONG ( STDMETHODCALLTYPE *AddRef )(
9370 ID3D12VideoEncoderHeap1 * This);
9371
9372 DECLSPEC_XFGVIRT(IUnknown, Release)
9373 ULONG ( STDMETHODCALLTYPE *Release )(
9374 ID3D12VideoEncoderHeap1 * This);
9375
9376 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9377 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9378 ID3D12VideoEncoderHeap1 * This,
9379 _In_ REFGUID guid,
9380 _Inout_ UINT *pDataSize,
9381 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9382
9383 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9384 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9385 ID3D12VideoEncoderHeap1 * This,
9386 _In_ REFGUID guid,
9387 _In_ UINT DataSize,
9388 _In_reads_bytes_opt_( DataSize ) const void *pData);
9389
9390 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9391 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9392 ID3D12VideoEncoderHeap1 * This,
9393 _In_ REFGUID guid,
9394 _In_opt_ const IUnknown *pData);
9395
9396 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9397 HRESULT ( STDMETHODCALLTYPE *SetName )(
9398 ID3D12VideoEncoderHeap1 * This,
9399 _In_z_ LPCWSTR Name);
9400
9401 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9402 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9403 ID3D12VideoEncoderHeap1 * This,
9404 REFIID riid,
9405 _COM_Outptr_opt_ void **ppvDevice);
9406
9407 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
9408 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
9409 ID3D12VideoEncoderHeap1 * This);
9410
9411 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
9412 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
9413 ID3D12VideoEncoderHeap1 * This);
9414
9415 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
9416 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
9417 ID3D12VideoEncoderHeap1 * This);
9418
9419 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
9420 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
9421 ID3D12VideoEncoderHeap1 * This,
9422 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
9423
9424 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
9425 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
9426 ID3D12VideoEncoderHeap1 * This,
9427 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
9428
9429 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
9430 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
9431 ID3D12VideoEncoderHeap1 * This);
9432
9433 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
9434 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
9435 ID3D12VideoEncoderHeap1 * This,
9436 const UINT ResolutionsListCount,
9437 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
9438
9439 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap1, GetPow2DownscaleFactor)
9440 UINT ( STDMETHODCALLTYPE *GetPow2DownscaleFactor )(
9441 ID3D12VideoEncoderHeap1 * This);
9442
9443 END_INTERFACE
9444 } ID3D12VideoEncoderHeap1Vtbl;
9445
9446 interface ID3D12VideoEncoderHeap1
9447 {
9448 CONST_VTBL struct ID3D12VideoEncoderHeap1Vtbl *lpVtbl;
9449 };
9450
9451
9452
9453#ifdef COBJMACROS
9454
9455
9456#define ID3D12VideoEncoderHeap1_QueryInterface(This,riid,ppvObject) \
9457 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9458
9459#define ID3D12VideoEncoderHeap1_AddRef(This) \
9460 ( (This)->lpVtbl -> AddRef(This) )
9461
9462#define ID3D12VideoEncoderHeap1_Release(This) \
9463 ( (This)->lpVtbl -> Release(This) )
9464
9465
9466#define ID3D12VideoEncoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
9467 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9468
9469#define ID3D12VideoEncoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
9470 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9471
9472#define ID3D12VideoEncoderHeap1_SetPrivateDataInterface(This,guid,pData) \
9473 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9474
9475#define ID3D12VideoEncoderHeap1_SetName(This,Name) \
9476 ( (This)->lpVtbl -> SetName(This,Name) )
9477
9478
9479#define ID3D12VideoEncoderHeap1_GetDevice(This,riid,ppvDevice) \
9480 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9481
9482
9483
9484#define ID3D12VideoEncoderHeap1_GetNodeMask(This) \
9485 ( (This)->lpVtbl -> GetNodeMask(This) )
9486
9487#define ID3D12VideoEncoderHeap1_GetEncoderHeapFlags(This) \
9488 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
9489
9490#define ID3D12VideoEncoderHeap1_GetCodec(This) \
9491 ( (This)->lpVtbl -> GetCodec(This) )
9492
9493#define ID3D12VideoEncoderHeap1_GetCodecProfile(This,dstProfile) \
9494 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
9495
9496#define ID3D12VideoEncoderHeap1_GetCodecLevel(This,dstLevel) \
9497 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
9498
9499#define ID3D12VideoEncoderHeap1_GetResolutionListCount(This) \
9500 ( (This)->lpVtbl -> GetResolutionListCount(This) )
9501
9502#define ID3D12VideoEncoderHeap1_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
9503 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
9504
9505
9506#define ID3D12VideoEncoderHeap1_GetPow2DownscaleFactor(This) \
9507 ( (This)->lpVtbl -> GetPow2DownscaleFactor(This) )
9508
9509#endif /* COBJMACROS */
9510
9511
9512#endif /* C style interface */
9513
9514
9515
9516
9517#endif /* __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__ */
9518
9519
9520#ifndef __ID3D12VideoDevice4_INTERFACE_DEFINED__
9521#define __ID3D12VideoDevice4_INTERFACE_DEFINED__
9522
9523/* interface ID3D12VideoDevice4 */
9524/* [unique][local][object][uuid] */
9525
9526
9527EXTERN_C const IID IID_ID3D12VideoDevice4;
9528
9529#if defined(__cplusplus) && !defined(CINTERFACE)
9530
9531 MIDL_INTERFACE("e59ad09e-f1ae-42bb-8983-9f6e5586c4eb")
9532 ID3D12VideoDevice4 : public ID3D12VideoDevice3
9533 {
9534 public:
9535 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap1(
9536 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9537 _In_ REFIID riid,
9538 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
9539
9540 };
9541
9542
9543#else /* C style interface */
9544
9545 typedef struct ID3D12VideoDevice4Vtbl
9546 {
9547 BEGIN_INTERFACE
9548
9549 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9550 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9551 ID3D12VideoDevice4 * This,
9552 REFIID riid,
9553 _COM_Outptr_ void **ppvObject);
9554
9555 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9556 ULONG ( STDMETHODCALLTYPE *AddRef )(
9557 ID3D12VideoDevice4 * This);
9558
9559 DECLSPEC_XFGVIRT(IUnknown, Release)
9560 ULONG ( STDMETHODCALLTYPE *Release )(
9561 ID3D12VideoDevice4 * This);
9562
9563 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
9564 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9565 ID3D12VideoDevice4 * This,
9566 D3D12_FEATURE_VIDEO FeatureVideo,
9567 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9568 UINT FeatureSupportDataSize);
9569
9570 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
9571 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
9572 ID3D12VideoDevice4 * This,
9573 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9574 _In_ REFIID riid,
9575 _COM_Outptr_ void **ppVideoDecoder);
9576
9577 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
9578 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
9579 ID3D12VideoDevice4 * This,
9580 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9581 _In_ REFIID riid,
9582 _COM_Outptr_ void **ppVideoDecoderHeap);
9583
9584 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
9585 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
9586 ID3D12VideoDevice4 * This,
9587 UINT NodeMask,
9588 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9589 UINT NumInputStreamDescs,
9590 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9591 _In_ REFIID riid,
9592 _COM_Outptr_ void **ppVideoProcessor);
9593
9594 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
9595 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
9596 ID3D12VideoDevice4 * This,
9597 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
9598 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9599 _In_ REFIID riid,
9600 _COM_Outptr_ void **ppVideoMotionEstimator);
9601
9602 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
9603 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
9604 ID3D12VideoDevice4 * This,
9605 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
9606 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9607 _In_ REFIID riid,
9608 _COM_Outptr_ void **ppVideoMotionVectorHeap);
9609
9610 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
9611 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
9612 ID3D12VideoDevice4 * This,
9613 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9614 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9615 _In_ REFIID riid,
9616 _COM_Outptr_ void **ppVideoDecoder);
9617
9618 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
9619 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
9620 ID3D12VideoDevice4 * This,
9621 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9622 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9623 _In_ REFIID riid,
9624 _COM_Outptr_ void **ppVideoDecoderHeap);
9625
9626 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
9627 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
9628 ID3D12VideoDevice4 * This,
9629 UINT NodeMask,
9630 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9631 UINT NumInputStreamDescs,
9632 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9633 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9634 _In_ REFIID riid,
9635 _COM_Outptr_ void **ppVideoProcessor);
9636
9637 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
9638 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
9639 ID3D12VideoDevice4 * This,
9640 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
9641 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
9642 SIZE_T CreationParametersDataSizeInBytes,
9643 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9644 _In_ REFIID riid,
9645 _COM_Outptr_ void **ppVideoExtensionCommand);
9646
9647 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
9648 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9649 ID3D12VideoDevice4 * This,
9650 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9651 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9652 SIZE_T ExecutionParametersSizeInBytes,
9653 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
9654 SIZE_T OutputDataSizeInBytes);
9655
9656 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
9657 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
9658 ID3D12VideoDevice4 * This,
9659 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
9660 _In_ REFIID riid,
9661 _COM_Outptr_ void **ppVideoEncoder);
9662
9663 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
9664 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
9665 ID3D12VideoDevice4 * This,
9666 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
9667 _In_ REFIID riid,
9668 _COM_Outptr_ void **ppVideoEncoderHeap);
9669
9670 DECLSPEC_XFGVIRT(ID3D12VideoDevice4, CreateVideoEncoderHeap1)
9671 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap1 )(
9672 ID3D12VideoDevice4 * This,
9673 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9674 _In_ REFIID riid,
9675 _COM_Outptr_ void **ppVideoEncoderHeap);
9676
9677 END_INTERFACE
9678 } ID3D12VideoDevice4Vtbl;
9679
9680 interface ID3D12VideoDevice4
9681 {
9682 CONST_VTBL struct ID3D12VideoDevice4Vtbl *lpVtbl;
9683 };
9684
9685
9686
9687#ifdef COBJMACROS
9688
9689
9690#define ID3D12VideoDevice4_QueryInterface(This,riid,ppvObject) \
9691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9692
9693#define ID3D12VideoDevice4_AddRef(This) \
9694 ( (This)->lpVtbl -> AddRef(This) )
9695
9696#define ID3D12VideoDevice4_Release(This) \
9697 ( (This)->lpVtbl -> Release(This) )
9698
9699
9700#define ID3D12VideoDevice4_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
9701 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
9702
9703#define ID3D12VideoDevice4_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
9704 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
9705
9706#define ID3D12VideoDevice4_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
9707 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
9708
9709#define ID3D12VideoDevice4_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
9710 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
9711
9712
9713#define ID3D12VideoDevice4_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
9714 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
9715
9716#define ID3D12VideoDevice4_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
9717 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
9718
9719
9720#define ID3D12VideoDevice4_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
9721 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
9722
9723#define ID3D12VideoDevice4_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
9724 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
9725
9726#define ID3D12VideoDevice4_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
9727 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
9728
9729#define ID3D12VideoDevice4_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
9730 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
9731
9732#define ID3D12VideoDevice4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
9733 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
9734
9735
9736#define ID3D12VideoDevice4_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
9737 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
9738
9739#define ID3D12VideoDevice4_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
9740 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
9741
9742
9743#define ID3D12VideoDevice4_CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) \
9744 ( (This)->lpVtbl -> CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) )
9745
9746#endif /* COBJMACROS */
9747
9748
9749#endif /* C style interface */
9750
9751
9752
9753
9754#endif /* __ID3D12VideoDevice4_INTERFACE_DEFINED__ */
9755
9756
9757/* interface __MIDL_itf_d3d12video_0000_0029 */
9758/* [local] */
9759
9760typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1
9761 {
9762 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc;
9763 BOOL IsSupported;
9764 UINT64 MemoryPoolL0Size;
9765 UINT64 MemoryPoolL1Size;
9766 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
9767
9768typedef
9769enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
9770 {
9771 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0,
9772 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
9773 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
9774 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
9775 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
9776 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10
9777 } D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
9778
9779DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )
9780typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
9781 {
9782 UINT NodeIndex;
9783 D3D12_VIDEO_ENCODER_CODEC Codec;
9784 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9785 DXGI_FORMAT InputFormat;
9786 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
9787 BOOL IsSupported;
9788 UINT CompressedBitstreamBufferAccessAlignment;
9789 UINT EncoderMetadataBufferAccessAlignment;
9790 UINT MaxEncoderOutputMetadataBufferSize;
9791 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
9792 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9793 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions;
9794 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions;
9795 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions;
9796 UINT EncoderOutputMetadataFramePSNRComponentsNumber;
9797 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber;
9798 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize;
9799 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
9800
9801typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
9802 {
9803 float PSNRY;
9804 float PSNRU;
9805 float PSNRV;
9806 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
9807
9808typedef
9809enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
9810 {
9811 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
9812 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1
9813 } D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
9814
9815typedef
9816enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
9817 {
9818 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
9819 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1
9820 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
9821
9822typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
9823 {
9824 D3D12_VIDEO_ENCODER_CODEC Codec;
9825 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9826 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9827 DXGI_FORMAT InputFormat;
9828 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9829 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9830 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9831 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9832 } D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
9833
9834typedef
9835enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
9836 {
9837 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
9838 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
9839 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2
9840 } D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
9841
9842typedef
9843enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
9844 {
9845 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
9846 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
9847 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2
9848 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
9849
9850typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
9851 {
9852 UINT NodeIndex;
9853 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9854 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9855 BOOL IsSupported;
9856 UINT MapSourcePreferenceRanking;
9857 UINT BlockSize;
9858 } D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
9859
9860typedef
9861enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
9862 {
9863 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0,
9864 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
9865 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
9866 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4
9867 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
9868
9869DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )
9870typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
9871 {
9872 UINT NodeIndex;
9873 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9874 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9875 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9876 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
9877 UINT MapSourcePreferenceRanking;
9878 } D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
9879
9880typedef
9881enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
9882 {
9883 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
9884 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
9885 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2
9886 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
9887
9888typedef
9889enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS
9890 {
9891 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0,
9892 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL ) ,
9893 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL ) ,
9894 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL )
9895 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
9896
9897DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )
9898typedef
9899enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
9900 {
9901 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0,
9902 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
9903 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
9904 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4
9905 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
9906
9907DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )
9908typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
9909 {
9910 UINT NodeIndex;
9911 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9912 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9913 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9914 BOOL BidirectionalRefFrameEnabled;
9915 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9916 UINT MaxMotionHints;
9917 UINT MinDeviation;
9918 UINT MaxDeviation;
9919 UINT MapSourcePreferenceRanking;
9920 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
9921 } D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
9922
9923typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
9924 {
9925 UINT NodeIndex;
9926 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9927 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
9928 BOOL IsSupported;
9929 UINT64 MaxResolvedBufferAllocationSize;
9930 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
9931
9932typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
9933 {
9934 BOOL Enabled;
9935 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9936 } D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
9937
9938typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
9939 {
9940 UINT MapSourcePreferenceRanking;
9941 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
9942
9943typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
9944 {
9945 BOOL Enabled;
9946 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9947 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9948 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
9949
9950typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
9951 {
9952 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
9953 UINT MapSourcePreferenceRanking;
9954 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
9955
9956typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
9957 {
9958 BOOL Enabled;
9959 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9960 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9961 BOOL BidirectionalRefFrameEnabled;
9962 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
9963
9964typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
9965 {
9966 UINT MaxMotionHints;
9967 UINT MinDeviation;
9968 UINT MaxDeviation;
9969 UINT MapSourcePreferenceRanking;
9970 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
9971 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9972 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
9973
9974typedef
9975enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
9976 {
9977 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0,
9978 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
9979 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
9980 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
9981 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
9982 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
9983 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
9984 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED = ( ( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED ) | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED )
9985 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
9986
9987DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )
9988typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
9989 {
9990 UINT NodeIndex;
9991 D3D12_VIDEO_ENCODER_CODEC Codec;
9992 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9993 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9994 DXGI_FORMAT InputFormat;
9995 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9996 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9997 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9998 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9999 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10000 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10001 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10002 UINT Pow2DownscaleFactor;
10003 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10004 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
10005
10006typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
10007 {
10008 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10009 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
10010
10011typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
10012 {
10013 UINT MaxSubregionsNumber;
10014 UINT MaxIntraRefreshFrameDuration;
10015 UINT SubregionBlockPixelsSize;
10016 UINT QPMapRegionPixelsSize;
10017 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
10018 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
10019 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
10020 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
10021 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
10022
10023typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
10024 {
10025 BOOL Enabled;
10026 UINT Pow2DownscaleFactor;
10027 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
10028
10029typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
10030 {
10031 UINT NodeIndex;
10032 D3D12_VIDEO_ENCODER_CODEC Codec;
10033 DXGI_FORMAT InputFormat;
10034 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10035 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
10036 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
10037 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
10038 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
10039 UINT ResolutionsListCount;
10040 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
10041 UINT MaxReferenceFramesInDPB;
10042 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
10043 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
10044 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
10045 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
10046 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 *pResolutionDependentSupport;
10047 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
10048 UINT MaxQualityVsSpeed;
10049 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10050 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10051 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10052 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
10053 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
10054
10055typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
10056 {
10057 BOOL FullFrameIdentical;
10058 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10059 UINT NumDirtyRects;
10060 _Field_size_full_(NumDirtyRects) RECT *pDirtyRects;
10061 UINT SourceDPBFrameReference;
10062 } D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
10063
10064typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
10065 {
10066 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10067 union
10068 {
10069 ID3D12Resource *pOpaqueLayoutBuffer;
10070 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO *pCPUBuffer;
10071 } ;
10072 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
10073
10074typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
10075 {
10076 ID3D12Resource *pOpaqueQuantizationMap;
10077 } D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
10078
10079typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
10080 {
10081 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
10082 UINT SearchDeviationLimit;
10083 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
10084
10085typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
10086 {
10087 POINT SourcePoint;
10088 RECT DestRect;
10089 } D3D12_VIDEO_ENCODER_MOVE_RECT;
10090
10091typedef
10092enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
10093 {
10094 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0,
10095 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1
10096 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
10097
10098typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
10099 {
10100 UINT NumMoveRegions;
10101 _Field_size_full_(NumMoveRegions) D3D12_VIDEO_ENCODER_MOVE_RECT *pMoveRegions;
10102 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10103 UINT SourceDPBFrameReference;
10104 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10105 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
10106 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
10107
10108typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
10109 {
10110 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10111 union
10112 {
10113 ID3D12Resource *pOpaqueLayoutBuffer;
10114 D3D12_VIDEO_ENCODER_MOVEREGION_INFO *pCPUBuffer;
10115 } ;
10116 } D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
10117
10118typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
10119 {
10120 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
10121 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
10122 UINT slice_pic_parameter_set_id;
10123 UINT PictureOrderCountNumber;
10124 UINT TemporalLayerIndex;
10125 UINT List0ReferenceFramesCount;
10126 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
10127 UINT List1ReferenceFramesCount;
10128 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
10129 UINT ReferenceFramesReconPictureDescriptorsCount;
10130 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
10131 UINT List0RefPicModificationsCount;
10132 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
10133 UINT List1RefPicModificationsCount;
10134 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
10135 UINT QPMapValuesCount;
10136 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
10137 UCHAR diff_cu_chroma_qp_offset_depth;
10138 UCHAR log2_sao_offset_scale_luma;
10139 UCHAR log2_sao_offset_scale_chroma;
10140 UCHAR log2_max_transform_skip_block_size_minus2;
10141 UCHAR chroma_qp_offset_list_len_minus1;
10142 CHAR cb_qp_offset_list[ 6 ];
10143 CHAR cr_qp_offset_list[ 6 ];
10144 UINT num_ref_idx_l0_active_minus1;
10145 UINT num_ref_idx_l1_active_minus1;
10146 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
10147
10148typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
10149 {
10150 UINT DataSize;
10151 union
10152 {
10153 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
10154 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 *pHEVCPicData;
10155 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
10156 } ;
10157 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
10158
10159typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
10160 {
10161 ID3D12Resource *pDownscaledFrame;
10162 UINT64 Subresource;
10163 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
10164 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
10165
10166typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
10167 {
10168 UINT IntraRefreshFrameIndex;
10169 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
10170 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
10171 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
10172 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
10173 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
10174 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
10175 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
10176 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
10177
10178typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
10179 {
10180 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
10181 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
10182 ID3D12Resource *pInputFrame;
10183 UINT InputFrameSubresource;
10184 UINT CurrentFrameBitstreamMetadataSize;
10185 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10186 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
10187
10188typedef
10189enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
10190 {
10191 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
10192 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1
10193 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
10194
10195typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
10196 {
10197 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
10198 UINT ExpectedSubregionCount;
10199 UINT64 *pSubregionBitstreamsBaseOffsets;
10200 ID3D12Resource **ppSubregionBitstreams;
10201 ID3D12Resource **ppSubregionSizes;
10202 ID3D12Resource **ppSubregionOffsets;
10203 ID3D12Fence **ppSubregionFences;
10204 UINT64 *pSubregionFenceValues;
10205 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
10206
10207typedef
10208enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
10209 {
10210 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
10211 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1
10212 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
10213
10214typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
10215 {
10216 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
10217 union
10218 {
10219 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
10220 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
10221 } ;
10222 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
10223
10224typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
10225 {
10226 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
10227 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
10228 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
10229 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
10230 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
10231
10232typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
10233 {
10234 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
10235 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
10236 DXGI_FORMAT EncoderInputFormat;
10237 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
10238 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
10239 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10240 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10241 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
10242
10243typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
10244 {
10245 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
10246 ID3D12Resource *pOutputQPMap;
10247 ID3D12Resource *pOutputSATDMap;
10248 ID3D12Resource *pOutputBitAllocationMap;
10249 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
10250 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
10251 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
10252
10253typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
10254 {
10255 ID3D12Resource *pQuantizationMap;
10256 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
10257
10258typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
10259 {
10260 BOOL FullFrameIdentical;
10261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10262 ID3D12Resource *pDirtyRegionsMap;
10263 UINT SourceDPBFrameReference;
10264 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
10265
10266typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
10267 {
10268 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10269 UINT NumHintsPerPixel;
10270 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMaps;
10271 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsSubresources;
10272 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMapsMetadata;
10273 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsMetadataSubresources;
10274 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10275 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
10276 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
10277
10278typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
10279 {
10280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
10281 union
10282 {
10283 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
10284 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
10285 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
10286 } ;
10287 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
10288
10289typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
10290 {
10291 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
10292 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
10293 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
10294
10295typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
10296 {
10297 ID3D12Resource *pOpaqueLayoutBuffer;
10298 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
10299
10300
10301
10302extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_c_ifspec;
10303extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_s_ifspec;
10304
10305#ifndef __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10306#define __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10307
10308/* interface ID3D12VideoEncodeCommandList4 */
10309/* [unique][local][object][uuid] */
10310
10311
10312EXTERN_C const IID IID_ID3D12VideoEncodeCommandList4;
10313
10314#if defined(__cplusplus) && !defined(CINTERFACE)
10315
10316 MIDL_INTERFACE("69aeb5b7-55f2-4012-8b73-3a88d65a204c")
10317 ID3D12VideoEncodeCommandList4 : public ID3D12VideoEncodeCommandList3
10318 {
10319 public:
10320 virtual void STDMETHODCALLTYPE EncodeFrame1(
10321 _In_ ID3D12VideoEncoder *pEncoder,
10322 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10323 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10324 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10325
10326 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata1(
10327 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10328 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10329
10330 virtual void STDMETHODCALLTYPE ResolveInputParamLayout(
10331 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10332 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
10333
10334 };
10335
10336
10337#else /* C style interface */
10338
10339 typedef struct ID3D12VideoEncodeCommandList4Vtbl
10340 {
10341 BEGIN_INTERFACE
10342
10343 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10344 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10345 ID3D12VideoEncodeCommandList4 * This,
10346 REFIID riid,
10347 _COM_Outptr_ void **ppvObject);
10348
10349 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10350 ULONG ( STDMETHODCALLTYPE *AddRef )(
10351 ID3D12VideoEncodeCommandList4 * This);
10352
10353 DECLSPEC_XFGVIRT(IUnknown, Release)
10354 ULONG ( STDMETHODCALLTYPE *Release )(
10355 ID3D12VideoEncodeCommandList4 * This);
10356
10357 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10358 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10359 ID3D12VideoEncodeCommandList4 * This,
10360 _In_ REFGUID guid,
10361 _Inout_ UINT *pDataSize,
10362 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10363
10364 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10365 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10366 ID3D12VideoEncodeCommandList4 * This,
10367 _In_ REFGUID guid,
10368 _In_ UINT DataSize,
10369 _In_reads_bytes_opt_( DataSize ) const void *pData);
10370
10371 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10372 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10373 ID3D12VideoEncodeCommandList4 * This,
10374 _In_ REFGUID guid,
10375 _In_opt_ const IUnknown *pData);
10376
10377 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10378 HRESULT ( STDMETHODCALLTYPE *SetName )(
10379 ID3D12VideoEncodeCommandList4 * This,
10380 _In_z_ LPCWSTR Name);
10381
10382 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10383 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10384 ID3D12VideoEncodeCommandList4 * This,
10385 REFIID riid,
10386 _COM_Outptr_opt_ void **ppvDevice);
10387
10388 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
10389 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
10390 ID3D12VideoEncodeCommandList4 * This);
10391
10392 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
10393 HRESULT ( STDMETHODCALLTYPE *Close )(
10394 ID3D12VideoEncodeCommandList4 * This);
10395
10396 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
10397 HRESULT ( STDMETHODCALLTYPE *Reset )(
10398 ID3D12VideoEncodeCommandList4 * This,
10399 _In_ ID3D12CommandAllocator *pAllocator);
10400
10401 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
10402 void ( STDMETHODCALLTYPE *ClearState )(
10403 ID3D12VideoEncodeCommandList4 * This);
10404
10405 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
10406 void ( STDMETHODCALLTYPE *ResourceBarrier )(
10407 ID3D12VideoEncodeCommandList4 * This,
10408 _In_ UINT NumBarriers,
10409 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
10410
10411 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
10412 void ( STDMETHODCALLTYPE *DiscardResource )(
10413 ID3D12VideoEncodeCommandList4 * This,
10414 _In_ ID3D12Resource *pResource,
10415 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
10416
10417 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
10418 void ( STDMETHODCALLTYPE *BeginQuery )(
10419 ID3D12VideoEncodeCommandList4 * This,
10420 _In_ ID3D12QueryHeap *pQueryHeap,
10421 _In_ D3D12_QUERY_TYPE Type,
10422 _In_ UINT Index);
10423
10424 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
10425 void ( STDMETHODCALLTYPE *EndQuery )(
10426 ID3D12VideoEncodeCommandList4 * This,
10427 _In_ ID3D12QueryHeap *pQueryHeap,
10428 _In_ D3D12_QUERY_TYPE Type,
10429 _In_ UINT Index);
10430
10431 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
10432 void ( STDMETHODCALLTYPE *ResolveQueryData )(
10433 ID3D12VideoEncodeCommandList4 * This,
10434 _In_ ID3D12QueryHeap *pQueryHeap,
10435 _In_ D3D12_QUERY_TYPE Type,
10436 _In_ UINT StartIndex,
10437 _In_ UINT NumQueries,
10438 _In_ ID3D12Resource *pDestinationBuffer,
10439 _In_ UINT64 AlignedDestinationBufferOffset);
10440
10441 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
10442 void ( STDMETHODCALLTYPE *SetPredication )(
10443 ID3D12VideoEncodeCommandList4 * This,
10444 _In_opt_ ID3D12Resource *pBuffer,
10445 _In_ UINT64 AlignedBufferOffset,
10446 _In_ D3D12_PREDICATION_OP Operation);
10447
10448 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
10449 void ( STDMETHODCALLTYPE *SetMarker )(
10450 ID3D12VideoEncodeCommandList4 * This,
10451 UINT Metadata,
10452 _In_reads_bytes_opt_(Size) const void *pData,
10453 UINT Size);
10454
10455 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
10456 void ( STDMETHODCALLTYPE *BeginEvent )(
10457 ID3D12VideoEncodeCommandList4 * This,
10458 UINT Metadata,
10459 _In_reads_bytes_opt_(Size) const void *pData,
10460 UINT Size);
10461
10462 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
10463 void ( STDMETHODCALLTYPE *EndEvent )(
10464 ID3D12VideoEncodeCommandList4 * This);
10465
10466 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
10467 void ( STDMETHODCALLTYPE *EstimateMotion )(
10468 ID3D12VideoEncodeCommandList4 * This,
10469 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
10470 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
10471 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
10472
10473 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
10474 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
10475 ID3D12VideoEncodeCommandList4 * This,
10476 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
10477 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
10478
10479 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
10480 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
10481 ID3D12VideoEncodeCommandList4 * This,
10482 UINT Count,
10483 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
10484 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
10485
10486 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
10487 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
10488 ID3D12VideoEncodeCommandList4 * This,
10489 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
10490
10491 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
10492 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
10493 ID3D12VideoEncodeCommandList4 * This,
10494 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10495 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
10496 SIZE_T InitializationParametersSizeInBytes);
10497
10498 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
10499 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
10500 ID3D12VideoEncodeCommandList4 * This,
10501 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10502 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
10503 SIZE_T ExecutionParametersSizeInBytes);
10504
10505 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
10506 void ( STDMETHODCALLTYPE *EncodeFrame )(
10507 ID3D12VideoEncodeCommandList4 * This,
10508 _In_ ID3D12VideoEncoder *pEncoder,
10509 _In_ ID3D12VideoEncoderHeap *pHeap,
10510 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
10511 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
10512
10513 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
10514 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
10515 ID3D12VideoEncodeCommandList4 * This,
10516 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
10517 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
10518
10519 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
10520 void ( STDMETHODCALLTYPE *Barrier )(
10521 ID3D12VideoEncodeCommandList4 * This,
10522 UINT32 NumBarrierGroups,
10523 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
10524
10525 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, EncodeFrame1)
10526 void ( STDMETHODCALLTYPE *EncodeFrame1 )(
10527 ID3D12VideoEncodeCommandList4 * This,
10528 _In_ ID3D12VideoEncoder *pEncoder,
10529 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10530 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10531 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments);
10532
10533 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveEncoderOutputMetadata1)
10534 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata1 )(
10535 ID3D12VideoEncodeCommandList4 * This,
10536 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10537 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments);
10538
10539 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveInputParamLayout)
10540 void ( STDMETHODCALLTYPE *ResolveInputParamLayout )(
10541 ID3D12VideoEncodeCommandList4 * This,
10542 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10543 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments);
10544
10545 END_INTERFACE
10546 } ID3D12VideoEncodeCommandList4Vtbl;
10547
10548 interface ID3D12VideoEncodeCommandList4
10549 {
10550 CONST_VTBL struct ID3D12VideoEncodeCommandList4Vtbl *lpVtbl;
10551 };
10552
10553
10554
10555#ifdef COBJMACROS
10556
10557
10558#define ID3D12VideoEncodeCommandList4_QueryInterface(This,riid,ppvObject) \
10559 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10560
10561#define ID3D12VideoEncodeCommandList4_AddRef(This) \
10562 ( (This)->lpVtbl -> AddRef(This) )
10563
10564#define ID3D12VideoEncodeCommandList4_Release(This) \
10565 ( (This)->lpVtbl -> Release(This) )
10566
10567
10568#define ID3D12VideoEncodeCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
10569 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10570
10571#define ID3D12VideoEncodeCommandList4_SetPrivateData(This,guid,DataSize,pData) \
10572 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10573
10574#define ID3D12VideoEncodeCommandList4_SetPrivateDataInterface(This,guid,pData) \
10575 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10576
10577#define ID3D12VideoEncodeCommandList4_SetName(This,Name) \
10578 ( (This)->lpVtbl -> SetName(This,Name) )
10579
10580
10581#define ID3D12VideoEncodeCommandList4_GetDevice(This,riid,ppvDevice) \
10582 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10583
10584
10585#define ID3D12VideoEncodeCommandList4_GetType(This) \
10586 ( (This)->lpVtbl -> GetType(This) )
10587
10588
10589#define ID3D12VideoEncodeCommandList4_Close(This) \
10590 ( (This)->lpVtbl -> Close(This) )
10591
10592#define ID3D12VideoEncodeCommandList4_Reset(This,pAllocator) \
10593 ( (This)->lpVtbl -> Reset(This,pAllocator) )
10594
10595#define ID3D12VideoEncodeCommandList4_ClearState(This) \
10596 ( (This)->lpVtbl -> ClearState(This) )
10597
10598#define ID3D12VideoEncodeCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
10599 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
10600
10601#define ID3D12VideoEncodeCommandList4_DiscardResource(This,pResource,pRegion) \
10602 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
10603
10604#define ID3D12VideoEncodeCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
10605 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
10606
10607#define ID3D12VideoEncodeCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
10608 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
10609
10610#define ID3D12VideoEncodeCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
10611 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
10612
10613#define ID3D12VideoEncodeCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
10614 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
10615
10616#define ID3D12VideoEncodeCommandList4_SetMarker(This,Metadata,pData,Size) \
10617 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
10618
10619#define ID3D12VideoEncodeCommandList4_BeginEvent(This,Metadata,pData,Size) \
10620 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
10621
10622#define ID3D12VideoEncodeCommandList4_EndEvent(This) \
10623 ( (This)->lpVtbl -> EndEvent(This) )
10624
10625#define ID3D12VideoEncodeCommandList4_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
10626 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
10627
10628#define ID3D12VideoEncodeCommandList4_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
10629 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
10630
10631#define ID3D12VideoEncodeCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
10632 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
10633
10634#define ID3D12VideoEncodeCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
10635 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
10636
10637
10638#define ID3D12VideoEncodeCommandList4_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
10639 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
10640
10641#define ID3D12VideoEncodeCommandList4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
10642 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
10643
10644
10645#define ID3D12VideoEncodeCommandList4_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10646 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10647
10648#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
10649 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
10650
10651
10652#define ID3D12VideoEncodeCommandList4_Barrier(This,NumBarrierGroups,pBarrierGroups) \
10653 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
10654
10655
10656#define ID3D12VideoEncodeCommandList4_EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10657 ( (This)->lpVtbl -> EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10658
10659#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) \
10660 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) )
10661
10662#define ID3D12VideoEncodeCommandList4_ResolveInputParamLayout(This,pInputArguments,pOutputArguments) \
10663 ( (This)->lpVtbl -> ResolveInputParamLayout(This,pInputArguments,pOutputArguments) )
10664
10665#endif /* COBJMACROS */
10666
10667
10668#endif /* C style interface */
10669
10670
10671
10672
10673#endif /* __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__ */
10674
10675
10676/* interface __MIDL_itf_d3d12video_0000_0030 */
10677/* [local] */
10678
10679#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
10680#pragma endregion
10681DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
10682DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
10683DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
10684DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
10685DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
10686DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
10687DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
10688DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
10689DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
10690DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
10691DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
10692DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
10693DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
10694DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
10695DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
10696DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
10697DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
10698DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
10699DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
10700DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
10701DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
10702DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
10703DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
10704DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
10705DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
10706DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
10707DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
10708DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
10709DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
10710DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
10711
10712
10713extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_c_ifspec;
10714extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_s_ifspec;
10715
10716/* Additional Prototypes for ALL interfaces */
10717
10718/* end of Additional Prototypes */
10719
10720#ifdef __cplusplus
10721}
10722#endif
10723
10724#endif
10725
10726
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.idl
new file mode 100644
index 0000000..b2c930b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.idl
@@ -0,0 +1,3818 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18typedef enum D3D12_VIDEO_FIELD_TYPE
19{
20 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
21 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
22 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2,
23} D3D12_VIDEO_FIELD_TYPE;
24
25typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT
26{
27 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
28 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
29 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
30 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
31 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4,
32} D3D12_VIDEO_FRAME_STEREO_FORMAT;
33
34typedef struct D3D12_VIDEO_FORMAT
35{
36 DXGI_FORMAT Format;
37 DXGI_COLOR_SPACE_TYPE ColorSpace;
38} D3D12_VIDEO_FORMAT;
39
40typedef struct D3D12_VIDEO_SAMPLE
41{
42 UINT Width;
43 UINT Height;
44 D3D12_VIDEO_FORMAT Format;
45} D3D12_VIDEO_SAMPLE;
46
47typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
48{
49 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
50 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1,
51} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
52
53typedef enum D3D12_FEATURE_VIDEO
54{
55 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
56 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
57 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
58 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
59 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
60 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
61 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
62 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
63 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
64 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
65 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
66 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
67 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
68 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
69 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
70 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
71 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
72 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
73 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
74 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
75 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
76 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
77 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
78 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
79 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
80 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
81 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
82 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
83 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
84 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
85 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
86 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
87 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
88 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
89 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
90 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
91 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
92 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
93 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
94 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
95 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
96 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
97 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
98 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
99 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
100 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
101 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
102 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
103 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
104 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57,
105
106} D3D12_FEATURE_VIDEO;
107
108typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
109{
110 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
111} D3D12_BITSTREAM_ENCRYPTION_TYPE;
112
113typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
114{
115 GUID DecodeProfile;
116 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
117 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
118} D3D12_VIDEO_DECODE_CONFIGURATION;
119
120typedef struct D3D12_VIDEO_DECODER_DESC
121{
122 UINT NodeMask;
123 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
124} D3D12_VIDEO_DECODER_DESC;
125
126typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
127{
128 UINT NodeMask;
129 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
130 UINT DecodeWidth;
131 UINT DecodeHeight;
132 DXGI_FORMAT Format;
133 DXGI_RATIONAL FrameRate;
134 UINT BitRate;
135 UINT MaxDecodePictureBufferCount;
136} D3D12_VIDEO_DECODER_HEAP_DESC;
137
138typedef struct D3D12_VIDEO_SIZE_RANGE
139{
140 UINT MaxWidth;
141 UINT MaxHeight;
142 UINT MinWidth;
143 UINT MinHeight;
144} D3D12_VIDEO_SIZE_RANGE;
145
146typedef enum D3D12_VIDEO_PROCESS_FILTER
147{
148 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
149 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
150 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
151 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
152 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
153 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
154 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
155 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
156} D3D12_VIDEO_PROCESS_FILTER;
157
158typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
159{
160 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
161 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
162 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
163 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
164 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
165 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
166 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
167 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
168 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
169
170} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
171cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )")
172
173typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
174{
175 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
176 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
177 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
178
179} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
180cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )")
181
182typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
183{
184 BOOL Enable;
185 FLOAT Alpha;
186} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
187
188typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
189{
190 BOOL Enable;
191 FLOAT Lower;
192 FLOAT Upper;
193} D3D12_VIDEO_PROCESS_LUMA_KEY;
194
195typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
196{
197 DXGI_FORMAT Format;
198 DXGI_COLOR_SPACE_TYPE ColorSpace;
199 DXGI_RATIONAL SourceAspectRatio;
200 DXGI_RATIONAL DestinationAspectRatio;
201 DXGI_RATIONAL FrameRate;
202 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
203 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
204 BOOL EnableOrientation;
205 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
206 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
207 D3D12_VIDEO_FIELD_TYPE FieldType;
208 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
209 BOOL EnableAlphaBlending;
210 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
211 UINT NumPastFrames;
212 UINT NumFutureFrames;
213 BOOL EnableAutoProcessing;
214} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
215
216typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
217{
218 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
219 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
220 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
221 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
222} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
223
224typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
225{
226 DXGI_FORMAT Format;
227 DXGI_COLOR_SPACE_TYPE ColorSpace;
228 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
229 UINT AlphaFillModeSourceStreamIndex;
230 FLOAT BackgroundColor[4];
231 DXGI_RATIONAL FrameRate;
232 BOOL EnableStereo;
233} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
234
235[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
236interface ID3D12VideoDecoderHeap
237 : ID3D12Pageable
238{
239 D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
240}
241
242[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
243interface ID3D12VideoDevice
244 : IUnknown
245{
246 HRESULT CheckFeatureSupport(
247 D3D12_FEATURE_VIDEO FeatureVideo,
248 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
249 UINT FeatureSupportDataSize
250 );
251
252 HRESULT CreateVideoDecoder(
253 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
254 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder,
255 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
256 );
257
258 HRESULT CreateVideoDecoderHeap(
259 [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
260 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap,
261 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
262 );
263
264 HRESULT CreateVideoProcessor(
265 UINT NodeMask,
266 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
267 UINT NumInputStreamDescs,
268 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
269 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor,
270 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
271 );
272}
273
274[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
275interface ID3D12VideoDecoder
276 : ID3D12Pageable
277{
278 D3D12_VIDEO_DECODER_DESC GetDesc();
279}
280
281typedef enum D3D12_VIDEO_DECODE_TIER
282{
283 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
284 D3D12_VIDEO_DECODE_TIER_1 = 1,
285 D3D12_VIDEO_DECODE_TIER_2 = 2,
286 D3D12_VIDEO_DECODE_TIER_3 = 3,
287} D3D12_VIDEO_DECODE_TIER;
288
289typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
290{
291 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
292 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
293
294} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
295cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )")
296
297typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
298{
299 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
300 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
301 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
302 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
303 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8,
304
305} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
306cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )")
307
308typedef enum D3D12_VIDEO_DECODE_STATUS
309{
310 D3D12_VIDEO_DECODE_STATUS_OK = 0,
311 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
312 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
313 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
314 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
315} D3D12_VIDEO_DECODE_STATUS;
316
317typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
318{
319 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
320 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
321 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
322 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3,
323} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
324
325typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
326{
327 UINT NodeIndex; // input
328 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
329 UINT Width; // input
330 UINT Height; // input
331 DXGI_FORMAT DecodeFormat; // input
332 DXGI_RATIONAL FrameRate; // input
333 UINT BitRate; // input
334 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags; // output
335 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
336 D3D12_VIDEO_DECODE_TIER DecodeTier; // output
337} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
338
339typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
340{
341 UINT NodeIndex; // input
342 UINT ProfileCount; // output
343} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
344
345typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
346{
347 UINT NodeIndex; // input
348 UINT ProfileCount; // input
349 [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles; // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
350} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
351
352typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
353{
354 UINT NodeIndex; // input
355 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
356 UINT FormatCount; // output
357} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
358
359typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
360{
361 UINT NodeIndex; // input
362 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
363 UINT FormatCount; // input
364 [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats; // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport.
365} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
366
367typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
368{
369 BOOL IOCoherent;
370} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
371
372typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
373{
374 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
375 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
376 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
377
378 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
379 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
380 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
381
382 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
383} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
384
385typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
386{
387 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
388
389 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
390 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U),
391 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
392
393 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
394 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G),
395 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
396
397 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
398} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
399cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )")
400
401typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
402{
403 UINT NodeIndex; // in
404 GUID DecodeProfile; // in
405 UINT Width; // in
406 UINT Height; // in
407 DXGI_FORMAT DecodeFormat; // in
408 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components; // out
409 UINT BinCount; // out
410 UINT CounterBitDepth; // out
411} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
412
413typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
414{
415 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
416 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
417
418} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
419cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )")
420
421typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
422{
423 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
424 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
425 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
426 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4,
427
428} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
429cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )")
430
431typedef struct D3D12_VIDEO_SCALE_SUPPORT
432{
433 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
434 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
435} D3D12_VIDEO_SCALE_SUPPORT;
436
437typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
438{
439 UINT NodeIndex; // input
440 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
441 D3D12_VIDEO_SAMPLE DecodeSample; // input
442 D3D12_VIDEO_FORMAT OutputFormat; // input
443 DXGI_RATIONAL FrameRate; // input
444 UINT BitRate; // input
445 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags; // output
446 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
447} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
448
449typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
450{
451 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
452 UINT64 MemoryPoolL0Size; // output
453 UINT64 MemoryPoolL1Size; // output
454} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
455
456typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
457{
458 UINT NodeMask;
459 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
460 UINT NumInputStreamDescs; // input
461 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
462 UINT64 MemoryPoolL0Size; // output
463 UINT64 MemoryPoolL1Size; // output
464} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
465
466typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
467{
468 UINT64 Status; // see D3D12_VIDEO_DECODE_STATUS
469 UINT64 NumMacroblocksAffected;
470 DXGI_RATIONAL FrameRate;
471 UINT BitRate;
472} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
473
474typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
475{
476 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
477 UINT Size;
478 [annotation("_Field_size_bytes_full_(Size)")] void *pData;
479} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
480
481typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
482{
483 UINT NumTexture2Ds;
484 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
485 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
486 [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
487} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
488
489typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
490{
491 ID3D12Resource* pBuffer;
492 UINT64 Offset;
493 UINT64 Size;
494} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
495
496typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
497{
498 BOOL Enable;
499 ID3D12Resource* pReferenceTexture2D;
500 UINT ReferenceSubresource;
501 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
502 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
503} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
504
505typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
506{
507 UINT NumFrameArguments;
508 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
509 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
510 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
511 ID3D12VideoDecoderHeap *pHeap;
512} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
513
514typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
515{
516 ID3D12Resource* pOutputTexture2D;
517 UINT OutputSubresource;
518 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
519} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
520
521[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
522interface ID3D12VideoProcessor
523 : ID3D12Pageable
524{
525 UINT GetNodeMask();
526 UINT GetNumInputStreamDescs();
527 HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
529}
530
531typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
532{
533 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
534 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
535 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
536 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
537 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
538 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
539 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
540 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
541
542} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
543cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )")
544
545typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
546{
547 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
548 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
549 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
550 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
551 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
552 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
553 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
554 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
555 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
556 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
557
558} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
559cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )")
560
561typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
562{
563 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
564 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
565 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
566 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
567 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
568 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
569 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
570 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
571} D3D12_VIDEO_PROCESS_ORIENTATION;
572
573typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
574{
575 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
576 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
577 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
578
579} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
580cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )")
581
582typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
583{
584 INT Minimum;
585 INT Maximum;
586 INT Default;
587 FLOAT Multiplier;
588} D3D12_VIDEO_PROCESS_FILTER_RANGE;
589
590typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
591{
592 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
593 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
594
595} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
596cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )")
597
598typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
599{
600 UINT NodeIndex; // input
601 D3D12_VIDEO_SAMPLE InputSample; // input
602 D3D12_VIDEO_FIELD_TYPE InputFieldType; // input
603 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; // input
604 DXGI_RATIONAL InputFrameRate; // input
605 D3D12_VIDEO_FORMAT OutputFormat; // input
606 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; // input
607 DXGI_RATIONAL OutputFrameRate; // input
608 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; // output
609 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
610 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // output
611 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; // output
612 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; // output
613 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; // output
614 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; // output
615} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
616
617typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
618{
619 UINT NodeIndex; // input
620 UINT MaxInputStreams; // output
621} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
622
623typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
624{
625 UINT NodeIndex; // input
626 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; // input
627 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters; // input
628 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // input
629 DXGI_RATIONAL InputFrameRate; // input
630 DXGI_RATIONAL OutputFrameRate; // input
631 BOOL EnableAutoProcessing; // input
632 UINT PastFrames; // output
633 UINT FutureFrames; // output
634} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
635
636typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
637{
638 UINT NumPastFrames;
639 ID3D12Resource **ppPastFrames;
640 UINT *pPastSubresources;
641 UINT NumFutureFrames;
642 ID3D12Resource **ppFutureFrames;
643 UINT *pFutureSubresources;
644} D3D12_VIDEO_PROCESS_REFERENCE_SET;
645
646typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
647{
648 D3D12_RECT SourceRectangle;
649 D3D12_RECT DestinationRectangle;
650 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
651} D3D12_VIDEO_PROCESS_TRANSFORM;
652
653typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
654{
655 UINT OutputIndex;
656 UINT InputFrameOrField;
657} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
658
659typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
660{
661 ID3D12Resource *pTexture2D;
662 UINT Subresource;
663 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
664} D3D12_VIDEO_PROCESS_INPUT_STREAM;
665
666typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
667{
668 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
669 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
670 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
671 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
672 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
673 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
674} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
675
676typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
677{
678 ID3D12Resource* pTexture2D;
679 UINT Subresource;
680} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
681
682typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
683{
684 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
685 D3D12_RECT TargetRectangle;
686} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
687
688[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
689interface ID3D12VideoDecodeCommandList
690 : ID3D12CommandList
691{
692 HRESULT Close();
693
694 HRESULT Reset(
695 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
696 );
697
698 void ClearState();
699
700 void ResourceBarrier(
701 [annotation("_In_")] UINT NumBarriers,
702 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
703 );
704
705 void DiscardResource(
706 [annotation("_In_")] ID3D12Resource* pResource,
707 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
708 );
709
710 void BeginQuery(
711 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
712 [annotation("_In_")] D3D12_QUERY_TYPE Type,
713 [annotation("_In_")] UINT Index
714 );
715
716 void EndQuery(
717 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
718 [annotation("_In_")] D3D12_QUERY_TYPE Type,
719 [annotation("_In_")] UINT Index
720 );
721
722 void ResolveQueryData(
723 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
724 [annotation("_In_")] D3D12_QUERY_TYPE Type,
725 [annotation("_In_")] UINT StartIndex,
726 [annotation("_In_")] UINT NumQueries,
727 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
728 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
729 );
730
731 void SetPredication(
732 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
733 [annotation("_In_")] UINT64 AlignedBufferOffset,
734 [annotation("_In_")] D3D12_PREDICATION_OP Operation
735 );
736
737 void SetMarker(
738 UINT Metadata,
739 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
740 UINT Size);
741
742 void BeginEvent(
743 UINT Metadata,
744 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
745 UINT Size);
746
747 void EndEvent();
748
749 void DecodeFrame(
750 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
751 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
752 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
753 );
754
755 void WriteBufferImmediate(
756 UINT Count,
757 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
758 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
759 );
760}
761
762[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
763interface ID3D12VideoProcessCommandList
764 : ID3D12CommandList
765{
766 HRESULT Close();
767
768 HRESULT Reset(
769 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
770 );
771
772 void ClearState();
773
774 void ResourceBarrier(
775 [annotation("_In_")] UINT NumBarriers,
776 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
777 );
778
779 void DiscardResource(
780 [annotation("_In_")] ID3D12Resource* pResource,
781 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
782 );
783
784 void BeginQuery(
785 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
786 [annotation("_In_")] D3D12_QUERY_TYPE Type,
787 [annotation("_In_")] UINT Index
788 );
789
790 void EndQuery(
791 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
792 [annotation("_In_")] D3D12_QUERY_TYPE Type,
793 [annotation("_In_")] UINT Index
794 );
795
796 void ResolveQueryData(
797 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
798 [annotation("_In_")] D3D12_QUERY_TYPE Type,
799 [annotation("_In_")] UINT StartIndex,
800 [annotation("_In_")] UINT NumQueries,
801 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
802 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
803 );
804
805 void SetPredication(
806 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
807 [annotation("_In_")] UINT64 AlignedBufferOffset,
808 [annotation("_In_")] D3D12_PREDICATION_OP Operation
809 );
810
811 void SetMarker(
812 UINT Metadata,
813 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
814 UINT Size);
815
816 void BeginEvent(
817 UINT Metadata,
818 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
819 UINT Size);
820
821 void EndEvent();
822
823 void ProcessFrames(
824 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
825 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
826 UINT NumInputStreams,
827 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
828 );
829
830 void WriteBufferImmediate(
831 UINT Count,
832 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
833 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
834 );
835}
836
837typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
838{
839 UINT64 Offset;
840 ID3D12Resource* pBuffer;
841} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
842
843typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
844{
845 BOOL Enable;
846 ID3D12Resource* pReferenceTexture2D;
847 UINT ReferenceSubresource;
848 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
849 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
850 UINT OutputWidth;
851 UINT OutputHeight;
852} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
853
854typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
855{
856 ID3D12Resource* pOutputTexture2D;
857 UINT OutputSubresource;
858 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
859 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
860} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
861
862[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
863interface ID3D12VideoDecodeCommandList1
864 : ID3D12VideoDecodeCommandList
865{
866 void DecodeFrame1(
867 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
868 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
869 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
870 );
871}
872
873typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
874{
875 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
876 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
877 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
878 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
879 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
880 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
881 D3D12_VIDEO_FIELD_TYPE FieldType;
882} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
883
884[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
885interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
886{
887 void ProcessFrames1(
888 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
889 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
890 UINT NumInputStreams,
891 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
892 );
893}
894
895typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
896{
897 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
898 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1,
899} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
900
901typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
902{
903 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
904 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
905 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
906
907} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
908cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )" )
909
910typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
911{
912 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0,
913} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
914
915typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
916{
917 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
918 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
919
920} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
921cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )" )
922
923// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
924typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
925{
926 UINT NodeIndex; // input
927 BOOL VideoDecodeSupport; // output
928 BOOL VideoProcessSupport; // output
929 BOOL VideoEncodeSupport; // output
930} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
931
932// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
933typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
934{
935 UINT NodeIndex; // input
936 DXGI_FORMAT InputFormat; // input
937 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags; // output
938 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags; // output
939 D3D12_VIDEO_SIZE_RANGE SizeRange; // output
940} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
941
942// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
943typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
944{
945 UINT NodeIndex; // input
946 DXGI_FORMAT InputFormat; // input
947 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; // input
948 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; // input
949 D3D12_VIDEO_SIZE_RANGE SizeRange; // input
950 BOOL Protected; // input
951 UINT64 MotionVectorHeapMemoryPoolL0Size; // output
952 UINT64 MotionVectorHeapMemoryPoolL1Size; // output
953 UINT64 MotionEstimatorMemoryPoolL0Size; // output
954 UINT64 MotionEstimatorMemoryPoolL1Size; // output
955} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
956
957typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
958{
959 UINT NodeMask;
960 DXGI_FORMAT InputFormat;
961 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
962 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
963 D3D12_VIDEO_SIZE_RANGE SizeRange;
964
965} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
966
967[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
968interface ID3D12VideoMotionEstimator
969 : ID3D12Pageable
970{
971 D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
972
973 HRESULT GetProtectedResourceSession(
974 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
975 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
976}
977
978typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
979{
980 UINT NodeMask;
981 DXGI_FORMAT InputFormat;
982 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
983 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
984 D3D12_VIDEO_SIZE_RANGE SizeRange;
985
986} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
987
988[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
989interface ID3D12VideoMotionVectorHeap
990 : ID3D12Pageable
991{
992 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
993
994 HRESULT GetProtectedResourceSession(
995 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
996 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
997}
998
999[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
1000interface ID3D12VideoDevice1
1001 : ID3D12VideoDevice
1002{
1003 HRESULT CreateVideoMotionEstimator(
1004 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
1005 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1006 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator,
1007 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
1008 );
1009
1010 HRESULT CreateVideoMotionVectorHeap(
1011 [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
1012 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1013 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap,
1014 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
1015 );
1016}
1017
1018typedef struct D3D12_RESOURCE_COORDINATE
1019{
1020 // Coordinate values below index pixels.
1021 UINT64 X; // Used for buffer, 1D, 2D, 3D
1022 UINT Y; // Used for 2D, 3D
1023 UINT Z; // Used for 3D
1024 UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
1025} D3D12_RESOURCE_COORDINATE;
1026
1027typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
1028{
1029 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1030} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
1031
1032typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
1033{
1034 ID3D12Resource* pInputTexture2D;
1035 UINT InputSubresourceIndex;
1036 ID3D12Resource* pReferenceTexture2D;
1037 UINT ReferenceSubresourceIndex;
1038 ID3D12VideoMotionVectorHeap* pHintMotionVectorHeap;
1039} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
1040
1041typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
1042{
1043 ID3D12Resource* pMotionVectorTexture2D;
1044 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
1045} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
1046
1047typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
1048{
1049 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1050 UINT PixelWidth;
1051 UINT PixelHeight;
1052} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
1053
1054[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
1055interface ID3D12VideoEncodeCommandList
1056 : ID3D12CommandList
1057{
1058 HRESULT Close();
1059
1060 HRESULT Reset(
1061 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
1062 );
1063
1064 void ClearState();
1065
1066 void ResourceBarrier(
1067 [annotation("_In_")] UINT NumBarriers,
1068 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
1069 );
1070
1071 void DiscardResource(
1072 [annotation("_In_")] ID3D12Resource* pResource,
1073 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
1074 );
1075
1076 void BeginQuery(
1077 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1078 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1079 [annotation("_In_")] UINT Index
1080 );
1081
1082 void EndQuery(
1083 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1084 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1085 [annotation("_In_")] UINT Index
1086 );
1087
1088 void ResolveQueryData(
1089 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1090 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1091 [annotation("_In_")] UINT StartIndex,
1092 [annotation("_In_")] UINT NumQueries,
1093 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
1094 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
1095 );
1096
1097 void SetPredication(
1098 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
1099 [annotation("_In_")] UINT64 AlignedBufferOffset,
1100 [annotation("_In_")] D3D12_PREDICATION_OP Operation
1101 );
1102
1103 void SetMarker(
1104 UINT Metadata,
1105 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1106 UINT Size);
1107
1108 void BeginEvent(
1109 UINT Metadata,
1110 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1111 UINT Size);
1112
1113 void EndEvent();
1114
1115 void EstimateMotion(
1116 [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
1117 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
1118 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
1119 );
1120
1121 void ResolveMotionVectorHeap(
1122 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
1123 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
1124 );
1125
1126 void WriteBufferImmediate(
1127 UINT Count,
1128 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1129 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
1130 );
1131
1132 void SetProtectedResourceSession(
1133 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1134 );
1135}
1136
1137typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
1138{
1139 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0x0,
1140 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1,
1141
1142} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
1143cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )")
1144
1145// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
1146typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
1147{
1148 UINT NodeIndex; // input
1149 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
1150 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1151} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
1152
1153// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
1154typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
1155{
1156 UINT NodeIndex; // input
1157 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1158} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
1159
1160// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1161typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1162{
1163 UINT NodeIndex; // input
1164 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1165} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
1166
1167//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
1168typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
1169{
1170 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
1171 BOOL Protected; // input
1172 UINT64 MemoryPoolL0Size; // output
1173 UINT64 MemoryPoolL1Size; // output
1174} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
1175
1176// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
1177typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
1178{
1179 UINT NodeMask;
1180 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
1181 UINT NumInputStreamDescs; // input
1182 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
1183 BOOL Protected; // input
1184 UINT64 MemoryPoolL0Size; // output
1185 UINT64 MemoryPoolL1Size; // output
1186} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
1187
1188typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
1189{
1190 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
1191 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
1192 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
1193 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
1194 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
1195 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
1196 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
1197} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
1198
1199typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
1200{
1201 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
1202 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
1203 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
1204 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
1205 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
1206 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
1207 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
1208 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
1209 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
1210 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
1211 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
1212} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
1213
1214typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
1215{
1216 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
1217 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
1218 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
1219} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
1220
1221cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )")
1222
1223typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
1224{
1225 UINT NodeIndex; // in
1226 UINT CommandCount; // out
1227} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
1228
1229typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
1230{
1231 GUID CommandId;
1232 LPCWSTR Name;
1233 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
1234} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
1235
1236typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
1237{
1238 UINT NodeIndex;
1239 UINT CommandCount;
1240 [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
1241} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
1242
1243typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
1244{
1245 GUID CommandId; // in
1246 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1247 UINT ParameterCount; // out
1248 UINT ParameterPacking; // out
1249} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
1250
1251typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
1252{
1253 LPCWSTR Name;
1254 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
1255 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
1256} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
1257
1258typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
1259{
1260 GUID CommandId; // in
1261 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1262 UINT ParameterCount; // in
1263 [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
1264} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
1265
1266typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
1267{
1268 UINT NodeIndex;
1269 GUID CommandId;
1270 [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
1271 SIZE_T InputDataSizeInBytes;
1272 [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
1273 SIZE_T OutputDataSizeInBytes;
1274} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
1275
1276typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
1277{
1278 UINT NodeIndex;
1279 GUID CommandId;
1280 [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
1281 SIZE_T CreationParametersSizeInBytes;
1282 UINT64 MemoryPoolL0Size; // output
1283 UINT64 MemoryPoolL1Size; // output
1284} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
1285
1286typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
1287{
1288 UINT NodeMask;
1289 GUID CommandId;
1290} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
1291
1292[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
1293interface ID3D12VideoDecoder1
1294 : ID3D12VideoDecoder
1295{
1296 HRESULT GetProtectedResourceSession(
1297 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1298 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1299}
1300
1301[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
1302interface ID3D12VideoDecoderHeap1
1303 : ID3D12VideoDecoderHeap
1304{
1305 HRESULT GetProtectedResourceSession(
1306 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1307 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1308}
1309
1310[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
1311interface ID3D12VideoProcessor1
1312 : ID3D12VideoProcessor
1313{
1314 HRESULT GetProtectedResourceSession(
1315 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1316 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1317}
1318
1319[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
1320interface ID3D12VideoExtensionCommand
1321 : ID3D12Pageable
1322{
1323 D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
1324
1325 HRESULT GetProtectedResourceSession(
1326 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1327 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1328}
1329
1330[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
1331interface ID3D12VideoDevice2
1332 : ID3D12VideoDevice1
1333{
1334 HRESULT CreateVideoDecoder1(
1335 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
1336 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1337 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1,
1338 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
1339 );
1340
1341 HRESULT CreateVideoDecoderHeap1(
1342 [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
1343 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1344 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1,
1345 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
1346 );
1347
1348 HRESULT CreateVideoProcessor1(
1349 UINT NodeMask,
1350 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
1351 UINT NumInputStreamDescs,
1352 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
1353 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1354 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1,
1355 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
1356 );
1357
1358 HRESULT CreateVideoExtensionCommand(
1359 [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,
1360 [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters,
1361 SIZE_T CreationParametersDataSizeInBytes,
1362 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
1363 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand,
1364 [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
1365
1366 HRESULT ExecuteExtensionCommand(
1367 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1368 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1369 SIZE_T ExecutionParametersSizeInBytes,
1370 [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
1371 SIZE_T OutputDataSizeInBytes
1372 );
1373}
1374
1375[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
1376interface ID3D12VideoDecodeCommandList2
1377 : ID3D12VideoDecodeCommandList1
1378{
1379 void SetProtectedResourceSession(
1380 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1381 );
1382
1383 void InitializeExtensionCommand(
1384 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1385 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1386 SIZE_T InitializationParametersSizeInBytes);
1387
1388 void ExecuteExtensionCommand(
1389 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1390 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1391 SIZE_T ExecutionParametersSizeInBytes);
1392}
1393
1394[uuid(2aee8c37-9562-42da-8abf-61efeb2e4513), object, local, pointer_default(unique)]
1395interface ID3D12VideoDecodeCommandList3
1396 : ID3D12VideoDecodeCommandList2
1397{
1398 void Barrier(
1399 UINT32 NumBarrierGroups,
1400 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
1401 );
1402}
1403
1404
1405
1406[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
1407interface ID3D12VideoProcessCommandList2
1408 : ID3D12VideoProcessCommandList1
1409{
1410
1411 void SetProtectedResourceSession(
1412 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1413 );
1414
1415 void InitializeExtensionCommand(
1416 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1417 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1418 SIZE_T InitializationParametersSizeInBytes);
1419
1420 void ExecuteExtensionCommand(
1421 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1422 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1423 SIZE_T ExecutionParametersSizeInBytes);
1424}
1425
1426[uuid(1a0a4ca4-9f08-40ce-9558-b411fd2666ff), object, local, pointer_default(unique)]
1427interface ID3D12VideoProcessCommandList3
1428 : ID3D12VideoProcessCommandList2
1429{
1430 void Barrier(
1431 UINT32 NumBarrierGroups,
1432 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
1433 );
1434}
1435
1436
1437
1438[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
1439interface ID3D12VideoEncodeCommandList1
1440 : ID3D12VideoEncodeCommandList
1441{
1442 void InitializeExtensionCommand(
1443 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1444 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1445 SIZE_T InitializationParametersSizeInBytes);
1446
1447 void ExecuteExtensionCommand(
1448 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1449 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1450 SIZE_T ExecutionParametersSizeInBytes);
1451}
1452
1453cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
1454cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
1455cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1456cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
1457cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
1458cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
1459cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1460cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1461cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
1462cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
1463cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
1464cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
1465cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);")
1466cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);")
1467cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);")
1468cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);")
1469cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);")
1470cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);")
1471cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);")
1472cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);")
1473cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);")
1474cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);")
1475cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
1476cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
1477cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
1478cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
1479cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
1480cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
1481cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
1482cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
1483cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4); ")
1484cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd); ")
1485cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97); ")
1486cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d); ")
1487cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac); ")
1488cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21); ")
1489cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);")
1490
1491///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1492// Video Encoder
1493///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1494
1495typedef enum D3D12_VIDEO_ENCODER_AV1_PROFILE
1496{
1497 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
1498 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
1499 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2,
1500} D3D12_VIDEO_ENCODER_AV1_PROFILE;
1501
1502typedef enum D3D12_VIDEO_ENCODER_AV1_LEVELS
1503{ // These values are defined according to the AV1 codec standard spec
1504 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
1505 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
1506 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
1507 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
1508 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
1509 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
1510 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
1511 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
1512 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
1513 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
1514 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
1515 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
1516 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
1517 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
1518 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
1519 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
1520 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
1521 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
1522 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
1523 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
1524 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
1525 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
1526 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
1527 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23,
1528} D3D12_VIDEO_ENCODER_AV1_LEVELS;
1529
1530typedef enum D3D12_VIDEO_ENCODER_AV1_TIER
1531{
1532 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
1533 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1,
1534} D3D12_VIDEO_ENCODER_AV1_TIER;
1535
1536typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
1537{
1538 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
1539 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
1540} D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
1541
1542typedef enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
1543{
1544 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0x0,
1545 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
1546 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
1547 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
1548 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
1549 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
1550 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
1551 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
1552 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
1553 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
1554 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
1555 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
1556 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
1557 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
1558 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
1559 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
1560 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
1561 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
1562 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
1563 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
1564 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
1565 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
1566 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
1567 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
1568 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
1569 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
1570 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000,
1571} D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
1572cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)")
1573
1574typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE {
1575 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
1576 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
1577 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2,
1578} D3D12_VIDEO_ENCODER_AV1_TX_MODE;
1579
1580typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS {
1581 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0x0,
1582 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4),
1583 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST),
1584 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT),
1585} D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
1586cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)")
1587
1588typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS {
1589 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
1590 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
1591 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
1592 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
1593 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4,
1594} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
1595
1596typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS {
1597 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0x0,
1598 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP),
1599 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH),
1600 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP),
1601 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR),
1602 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE),
1603} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
1604cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)")
1605
1606typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE {
1607 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
1608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
1609 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
1610 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
1611 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4,
1612} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
1613
1614typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE {
1615 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
1616 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
1617 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
1618 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
1619 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
1620 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
1621 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
1622 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
1623 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8,
1624} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
1625
1626typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS {
1627 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
1628 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED),
1629 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q),
1630 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V),
1631 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H),
1632 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U),
1633 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V),
1634 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME),
1635 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP),
1636 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV),
1637} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
1638cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)")
1639
1640typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE {
1641 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
1642 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
1643 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
1644 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3,
1645} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
1646
1647typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE {
1648 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
1649 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
1650 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
1651 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
1652 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4,
1653} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
1654
1655typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS {
1656 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0x0,
1657 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
1658 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
1659 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
1660 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8,
1661} D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
1662cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)")
1663
1664typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
1665{
1666 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
1667 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
1668 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
1669 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3,
1670} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
1671
1672typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS {
1673 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0, // None is supported, reference warp motion arguments are ignored and is_global syntax is false for all references
1674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY),
1675 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION),
1676 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM),
1677 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE),
1678} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
1679cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)")
1680
1681typedef enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS {
1682 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
1683 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
1684 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
1685 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
1686 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
1687 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
1688 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
1689 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
1690 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
1691 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100,
1692} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
1693cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)")
1694
1695typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
1696 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
1697 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
1698 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
1699 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[3][3];
1700 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
1701 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4]; // Different for D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE types
1702 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
1703 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
1704 UINT MaxTemporalLayers;
1705 UINT MaxSpatialLayers;
1706} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
1707
1708typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
1709{
1710 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
1711 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
1712 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
1713 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3,
1714} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
1715
1716typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS {
1717 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0x0,
1718 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME),
1719 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME),
1720 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME),
1721 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME),
1722} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
1723cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)")
1724
1725typedef enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
1726{
1727 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
1728 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1,
1729} D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
1730
1731typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT {
1732 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
1733 UINT MaxUniqueReferencesPerFrame;
1734 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
1735 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
1736} D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
1737
1738typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION {
1739 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
1740 UINT OrderHintBitsMinus1;
1741} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
1742
1743typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
1744{
1745 UINT IntraDistance;
1746 UINT InterFramePeriod;
1747} D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
1748
1749typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
1750{
1751 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
1752 INT TransformationMatrix[8];
1753 BOOL InvalidAffineSet; // Valid or invalid on affine set
1754} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
1755
1756typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
1757{
1758 UINT ReconstructedPictureResourceIndex;
1759 UINT TemporalLayerIndexPlus1;
1760 UINT SpatialLayerIndexPlus1;
1761 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
1762 // Only used if supported in D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS, ignored by driver otherwise
1763 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
1764 UINT OrderHint;
1765 UINT PictureIndex;
1766} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
1767
1768typedef enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
1769{
1770 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0x0,
1771 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
1772 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
1773 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
1774 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
1775 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
1776 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
1777 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
1778 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
1779 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
1780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
1781 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
1782 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
1783 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
1784 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
1785 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000,
1786
1787} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
1788cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)")
1789
1790typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
1791 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3];
1792 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3];
1793} D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
1794
1795typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
1796 UINT64 EnabledFeatures; // D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
1797 // For the enabled features in EnabledFeatures, the array below
1798 // is indexed by D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE - 1
1799 INT64 FeatureValue[8];
1800} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
1801
1802typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
1803 UINT64 UpdateMap;
1804 UINT64 TemporalUpdate;
1805 UINT64 UpdateData;
1806 UINT64 NumSegments;
1807 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8];
1808} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
1809
1810typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP {
1811 UINT SegmentsMapByteSize;
1812 UINT8* pSegmentsMap;
1813} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
1814
1815typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
1816 UINT64 LoopFilterLevel[2];
1817 UINT64 LoopFilterLevelU;
1818 UINT64 LoopFilterLevelV;
1819 UINT64 LoopFilterSharpnessLevel;
1820 UINT64 LoopFilterDeltaEnabled;
1821 // loop_filter_delta_update = UpdateRefDelta || UpdateModeDelta
1822 UINT64 UpdateRefDelta;
1823 INT64 RefDeltas[8];
1824 UINT64 UpdateModeDelta;
1825 INT64 ModeDeltas[2];
1826} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
1827
1828typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
1829 UINT64 DeltaLFPresent;
1830 UINT64 DeltaLFMulti;
1831 UINT64 DeltaLFRes;
1832} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
1833
1834typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
1835 UINT64 BaseQIndex;
1836 INT64 YDCDeltaQ;
1837 INT64 UDCDeltaQ;
1838 INT64 UACDeltaQ;
1839 INT64 VDCDeltaQ;
1840 INT64 VACDeltaQ;
1841 UINT64 UsingQMatrix;
1842 UINT64 QMY;
1843 UINT64 QMU;
1844 UINT64 QMV;
1845} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
1846
1847typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
1848 UINT64 DeltaQPresent;
1849 UINT64 DeltaQRes;
1850} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
1851
1852typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
1853 UINT64 CdefBits;
1854 UINT64 CdefDampingMinus3;
1855 UINT64 CdefYPriStrength[8];
1856 UINT64 CdefUVPriStrength[8];
1857 UINT64 CdefYSecStrength[8];
1858 UINT64 CdefUVSecStrength[8];
1859} D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
1860
1861typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
1862{
1863 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
1864 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
1865 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
1866 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
1867 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
1868 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
1869 UINT SuperResDenominator;
1870 UINT OrderHint;
1871 UINT PictureIndex;
1872 UINT TemporalLayerIndexPlus1;
1873 UINT SpatialLayerIndexPlus1;
1874 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8];
1875 UINT ReferenceIndices[7];
1876 UINT PrimaryRefFrame;
1877 UINT RefreshFrameFlags;
1878 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
1879 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
1880 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
1881 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
1882 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
1883 UINT QPMapValuesCount;
1884 [annotation("_Field_size_full_(QPMapValuesCount)")] INT16* pRateControlQPMap;
1885 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
1886 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
1887} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
1888
1889typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
1890{
1891 UINT64 RowCount;
1892 UINT64 ColCount;
1893 UINT64 RowHeights[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS];
1894 UINT64 ColWidths[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS];
1895 UINT64 ContextUpdateTileId;
1896} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
1897
1898typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
1899{
1900 UINT64 CompoundPredictionType; // D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
1901 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
1902 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
1903 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
1904 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
1905 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
1906 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
1907 UINT64 PrimaryRefFrame; // Aligned to 64 for use of post encode metadata with predication
1908 UINT64 ReferenceIndices[7]; // Aligned to 64 for use of post encode metadata with predication
1909} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
1910
1911//
1912// Rate control API
1913//
1914
1915typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
1916{
1917 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
1918 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
1919 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
1920 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
1921 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4,
1922} D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
1923
1924typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
1925{
1926 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0,
1927 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
1928 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
1929 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
1930 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
1931 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
1932 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
1933 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
1934 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
1935 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100,
1936} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
1937cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)")
1938
1939typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP {
1940 UINT ConstantQP_FullIntracodedFrame;
1941 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
1942 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
1943} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
1944
1945typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 {
1946 UINT ConstantQP_FullIntracodedFrame;
1947 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
1948 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
1949 UINT QualityVsSpeed;
1950} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
1951
1952typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR {
1953 UINT InitialQP;
1954 UINT MinQP;
1955 UINT MaxQP;
1956 UINT64 MaxFrameBitSize;
1957 UINT64 TargetBitRate;
1958 UINT64 VBVCapacity;
1959 UINT64 InitialVBVFullness;
1960} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
1961
1962typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 {
1963 UINT InitialQP;
1964 UINT MinQP;
1965 UINT MaxQP;
1966 UINT64 MaxFrameBitSize;
1967 UINT64 TargetBitRate;
1968 UINT64 VBVCapacity;
1969 UINT64 InitialVBVFullness;
1970 UINT QualityVsSpeed;
1971} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
1972
1973typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR {
1974 UINT InitialQP;
1975 UINT MinQP;
1976 UINT MaxQP;
1977 UINT64 MaxFrameBitSize;
1978 UINT64 TargetAvgBitRate;
1979 UINT64 PeakBitRate;
1980 UINT64 VBVCapacity;
1981 UINT64 InitialVBVFullness;
1982} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
1983
1984typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 {
1985 UINT InitialQP;
1986 UINT MinQP;
1987 UINT MaxQP;
1988 UINT64 MaxFrameBitSize;
1989 UINT64 TargetAvgBitRate;
1990 UINT64 PeakBitRate;
1991 UINT64 VBVCapacity;
1992 UINT64 InitialVBVFullness;
1993 UINT QualityVsSpeed;
1994} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
1995
1996typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR {
1997 UINT InitialQP;
1998 UINT MinQP;
1999 UINT MaxQP;
2000 UINT64 MaxFrameBitSize;
2001 UINT64 TargetAvgBitRate;
2002 UINT64 PeakBitRate;
2003 UINT ConstantQualityTarget;
2004} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
2005
2006typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
2007{
2008 UINT InitialQP;
2009 UINT MinQP;
2010 UINT MaxQP;
2011 UINT64 MaxFrameBitSize;
2012 UINT64 TargetAvgBitRate;
2013 UINT64 PeakBitRate;
2014 UINT ConstantQualityTarget;
2015 UINT64 VBVCapacity;
2016 UINT64 InitialVBVFullness;
2017 UINT QualityVsSpeed;
2018} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
2019
2020typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP {
2021 UINT QualityVsSpeed;
2022} D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
2023
2024typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
2025{
2026 UINT DataSize;
2027 union
2028 {
2029 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP* pConfiguration_CQP;
2030 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR* pConfiguration_CBR;
2031 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR* pConfiguration_VBR;
2032 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR* pConfiguration_QVBR;
2033 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1* pConfiguration_CQP1;
2034 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1* pConfiguration_CBR1;
2035 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1* pConfiguration_VBR1;
2036 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1* pConfiguration_QVBR1;
2037 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP* pConfiguration_AbsoluteQPMap;
2038 };
2039} D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
2040
2041typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL {
2042 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
2043 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
2044 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
2045 DXGI_RATIONAL TargetFrameRate;
2046} D3D12_VIDEO_ENCODER_RATE_CONTROL;
2047
2048//
2049// Video Encoder support API
2050//
2051
2052typedef enum D3D12_VIDEO_ENCODER_CODEC
2053{
2054 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
2055 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
2056 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2,
2057} D3D12_VIDEO_ENCODER_CODEC;
2058
2059typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
2060{
2061 UINT NodeIndex; // input
2062 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2063 BOOL IsSupported; // output
2064} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
2065
2066typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264
2067{
2068 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
2069 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
2070 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2,
2071} D3D12_VIDEO_ENCODER_PROFILE_H264;
2072
2073typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
2074{
2075 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
2076 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
2077 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
2078 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
2079 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
2080 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
2081 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
2082 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
2083 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8,
2084} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
2085
2086typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
2087{
2088 UINT DataSize;
2089 union
2090 {
2091 D3D12_VIDEO_ENCODER_PROFILE_H264* pH264Profile;
2092 D3D12_VIDEO_ENCODER_PROFILE_HEVC* pHEVCProfile;
2093 D3D12_VIDEO_ENCODER_AV1_PROFILE* pAV1Profile;
2094 };
2095} D3D12_VIDEO_ENCODER_PROFILE_DESC;
2096
2097typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264
2098{
2099 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
2100 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
2101 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
2102 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
2103 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
2104 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
2105 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
2106 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
2107 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
2108 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
2109 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
2110 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
2111 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
2112 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
2113 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
2114 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
2115 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
2116 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
2117 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
2118 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19,
2119} D3D12_VIDEO_ENCODER_LEVELS_H264;
2120
2121typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC
2122{
2123 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
2124 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1,
2125} D3D12_VIDEO_ENCODER_TIER_HEVC;
2126
2127typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
2128{
2129 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
2130 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
2131 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
2132 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
2133 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
2134 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
2135 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
2136 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
2137 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
2138 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
2139 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
2140 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
2141 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12,
2142} D3D12_VIDEO_ENCODER_LEVELS_HEVC;
2143
2144typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
2145{
2146 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
2147 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
2148} D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
2149
2150typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
2151{
2152 UINT DataSize;
2153 union
2154 {
2155 D3D12_VIDEO_ENCODER_LEVELS_H264* pH264LevelSetting;
2156 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC* pHEVCLevelSetting;
2157 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS* pAV1LevelSetting;
2158 };
2159} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
2160
2161typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
2162{
2163 UINT NodeIndex; // input
2164 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2165 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2166 BOOL IsSupported; // output
2167 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel; // output
2168 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel; // output
2169} D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
2170
2171typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
2172{
2173 UINT Width;
2174 UINT Height;
2175} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
2176
2177typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
2178{
2179 UINT WidthRatio;
2180 UINT HeightRatio;
2181} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
2182
2183typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
2184{
2185 UINT NodeIndex; // input
2186 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2187 UINT ResolutionRatiosCount; // output
2188} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
2189
2190typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
2191{
2192 UINT NodeIndex; // input
2193 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2194 UINT ResolutionRatiosCount; // input
2195 BOOL IsSupported; // output
2196 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported; // output
2197 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported; // output
2198 UINT ResolutionWidthMultipleRequirement; // output
2199 UINT ResolutionHeightMultipleRequirement; // output
2200 [annotation("_Field_size_full_(ResolutionRatiosCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC* pResolutionRatios;
2201} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
2202
2203typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
2204{
2205 UINT NodeIndex; // input
2206 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2207 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2208 DXGI_FORMAT Format; // input
2209 BOOL IsSupported; // output
2210} D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
2211
2212typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
2213{
2214 UINT NodeIndex; // input
2215 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2216 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode; // input
2217 BOOL IsSupported; // output
2218} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
2219
2220typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
2221{
2222 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
2223 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1,
2224} D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
2225
2226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE {
2227 UINT NodeIndex; // input
2228 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2229 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2230 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2231 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode; // input
2232 BOOL IsSupported; // output
2233} D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
2234
2235typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
2236{
2237 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
2238 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
2239 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
2240 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
2241 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
2242 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
2243 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
2244 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7,
2245} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
2246
2247typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
2248{
2249 UINT NodeIndex; // input
2250 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2251 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2252 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2253 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
2254 BOOL IsSupported; // output
2255} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
2256
2257typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
2258{
2259 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0x0,
2260 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
2261 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
2262 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
2263 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
2264 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
2265 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
2266 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
2267 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80,
2268
2269} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
2270cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)")
2271
2272typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
2273{
2274 BOOL Use128SuperBlocks;
2275 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
2276 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
2277 UINT MinTileRows;
2278 UINT MaxTileRows;
2279 UINT MinTileCols;
2280 UINT MaxTileCols;
2281 UINT MinTileWidth;
2282 UINT MaxTileWidth;
2283 UINT MinTileArea;
2284 UINT MaxTileArea;
2285 UINT TileSizeBytesMinus1;
2286} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
2287
2288typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT {
2289 UINT DataSize;
2290 union
2291 {
2292 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT* pAV1Support;
2293 };
2294} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
2295
2296typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
2297{
2298 UINT NodeIndex; // input
2299 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2300 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2301 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2302 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
2303 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution; // input
2304 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport; // input/output
2305 BOOL IsSupported; // output
2306} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
2307
2308typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
2309{
2310 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0,
2311 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
2312 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
2313 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
2314 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8,
2315} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
2316cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)")
2317
2318typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
2319{
2320 UINT NodeMask;
2321 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
2322 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
2323 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
2324 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
2325 UINT ResolutionsListCount;
2326 [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2327} D3D12_VIDEO_ENCODER_HEAP_DESC;
2328
2329typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE {
2330 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc; // input
2331 BOOL IsSupported; // output
2332 UINT64 MemoryPoolL0Size; // output
2333 UINT64 MemoryPoolL1Size; // output
2334} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
2335
2336typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
2337{
2338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0,
2339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
2340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
2341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
2342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
2343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
2344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
2345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
2346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80,
2347} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
2348cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)")
2349
2350typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES {
2351 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
2352 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
2353 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
2354 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
2355 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
2356 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
2357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6,
2358} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
2359
2360typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS {
2361 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0,
2362 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED),
2363 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES),
2364 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS),
2365 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING),
2366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES),
2367 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES),
2368 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING),
2369} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
2370cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)")
2371
2372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 {
2373 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
2374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
2375} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
2376
2377typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
2378{
2379 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0,
2380 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
2381 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
2382 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
2383 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
2384 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
2385 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
2386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
2387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
2388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
2389 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
2390 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
2391 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
2392 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
2393 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
2394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
2395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
2396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
2397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
2398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
2399 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
2400 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
2401 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
2402 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
2403 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
2404 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
2405 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
2406 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
2407 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
2408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
2409 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
2410 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
2411 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000, // 2^31 - 32 bit integer enum type
2412
2413} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
2414cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)")
2415
2416typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE {
2417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
2418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
2419 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
2420 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3,
2421} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
2422
2423typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE {
2424 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
2425 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
2426 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
2427 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3,
2428} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
2429
2430typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC {
2431 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
2432 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2433 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2434 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2435 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2436 UCHAR max_transform_hierarchy_depth_inter;
2437 UCHAR max_transform_hierarchy_depth_intra;
2438} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
2439
2440
2441typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
2442{
2443 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0x0,
2444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
2445 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2,
2446} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
2447cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)")
2448
2449typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
2450 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
2451 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2452 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2453 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2454 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2455 UCHAR max_transform_hierarchy_depth_inter;
2456 UCHAR max_transform_hierarchy_depth_intra;
2457 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
2458 UINT allowed_log2_sao_offset_scale_luma_values;
2459 UINT allowed_log2_sao_offset_scale_chroma_values;
2460 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
2461 UINT allowed_chroma_qp_offset_list_len_minus1_values;
2462 UINT allowed_cb_qp_offset_list_values[6];
2463 UINT allowed_cr_qp_offset_list_values[6];
2464 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
2465} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
2466
2467typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
2468 UINT DataSize;
2469 union
2470 {
2471 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264* pH264Support;
2472 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC* pHEVCSupport;
2473 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1* pHEVCSupport1;
2474 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT* pAV1Support;
2475 };
2476} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
2477
2478typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
2479 UINT NodeIndex; // input
2480 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2481 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2482 BOOL IsSupported; // output
2483 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits; // input/output
2484} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
2485
2486typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 {
2487 UINT MaxL0ReferencesForP;
2488 UINT MaxL0ReferencesForB;
2489 UINT MaxL1ReferencesForB;
2490 UINT MaxLongTermReferences;
2491 UINT MaxDPBCapacity;
2492} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
2493
2494typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC {
2495 UINT MaxL0ReferencesForP;
2496 UINT MaxL0ReferencesForB;
2497 UINT MaxL1ReferencesForB;
2498 UINT MaxLongTermReferences;
2499 UINT MaxDPBCapacity;
2500} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
2501
2502typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
2503 UINT DataSize;
2504 union
2505 {
2506 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264* pH264Support;
2507 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC* pHEVCSupport;
2508 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT* pAV1Support;
2509 };
2510} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
2511
2512typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
2513 UINT NodeIndex; // input
2514 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2515 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2516 BOOL IsSupported; // output
2517 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport; // output
2518} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
2519
2520typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
2521{
2522 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0,
2523 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
2524 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
2525 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
2526 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
2527 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
2528 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
2529 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
2530 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
2531 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
2532 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
2533 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
2534 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
2535 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
2536 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
2537 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
2538 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
2539 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
2540 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
2541 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
2542 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
2543 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
2544 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
2545 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
2546 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000,
2547} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
2548cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)")
2549
2550typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
2551{
2552 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0,
2553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
2554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
2555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
2556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8,
2557} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
2558cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)")
2559
2560typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES {
2561 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
2562 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
2563 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2,
2564} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
2565
2566typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
2567{
2568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
2569 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
2570 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
2571} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
2572
2573typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
2574{
2575 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0,
2576 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
2577 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
2578 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
2579 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
2580 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
2581 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
2582 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
2583 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
2584 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
2585 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
2586 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
2587 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
2588 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
2589 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
2590 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
2591 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
2592 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000,
2593} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
2594cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)")
2595
2596typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC {
2597 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
2598 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2599 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2600 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2601 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2602 UCHAR max_transform_hierarchy_depth_inter;
2603 UCHAR max_transform_hierarchy_depth_intra;
2604} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
2605
2606typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
2607{
2608 UINT DataSize;
2609 union
2610 {
2611 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264* pH264Config;
2612 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC* pHEVCConfig;
2613 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION* pAV1Config;
2614 };
2615} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
2616
2617typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
2618{
2619 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
2620 UINT IntraRefreshDuration;
2621} D3D12_VIDEO_ENCODER_INTRA_REFRESH;
2622
2623
2624typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
2625{
2626 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
2627 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
2628 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
2629 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
2630 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4,
2631} D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
2632
2633typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
2634{
2635 UINT MaxSubregionsNumber;
2636 UINT MaxIntraRefreshFrameDuration;
2637 UINT SubregionBlockPixelsSize;
2638 UINT QPMapRegionPixelsSize;
2639} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
2640
2641typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
2642{
2643 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0,
2644 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
2645 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
2646 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
2647 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
2648 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
2649 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
2650 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
2651 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
2652 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
2653 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
2654 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
2655 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
2656 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
2657 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000,
2658} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
2659cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)")
2660
2661typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
2662{
2663 UINT GOPLength;
2664 UINT PPicturePeriod;
2665 UCHAR pic_order_cnt_type;
2666 UCHAR log2_max_frame_num_minus4;
2667 UCHAR log2_max_pic_order_cnt_lsb_minus4;
2668} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
2669
2670typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
2671{
2672 UINT GOPLength;
2673 UINT PPicturePeriod;
2674 UCHAR log2_max_pic_order_cnt_lsb_minus4;
2675} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
2676
2677typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
2678{
2679 UINT DataSize;
2680 union
2681 {
2682 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264* pH264GroupOfPictures;
2683 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC* pHEVCGroupOfPictures;
2684 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE* pAV1SequenceStructure;
2685 };
2686} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
2687
2688typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
2689{
2690 // input
2691 UINT NodeIndex;
2692 D3D12_VIDEO_ENCODER_CODEC Codec;
2693 DXGI_FORMAT InputFormat;
2694 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2695 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
2696 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
2697 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
2698 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
2699 UINT ResolutionsListCount;
2700 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2701 UINT MaxReferenceFramesInDPB;
2702
2703 // single value output
2704 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
2705 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
2706 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
2707 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; // assuming max resolution from input list
2708
2709 // resolution dependent output
2710 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
2711} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
2712
2713typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
2714{
2715 // Mutually exclusive options according to selected mode
2716 union
2717 {
2718 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION
2719 UINT MaxBytesPerSlice;
2720
2721 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED
2722 UINT NumberOfCodingUnitsPerSlice;
2723
2724 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION
2725 UINT NumberOfRowsPerSlice;
2726
2727 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME
2728 UINT NumberOfSlicesPerFrame;
2729 };
2730} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
2731
2732typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
2733{
2734 UINT DataSize;
2735 union
2736 {
2737 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_H264;
2738 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_HEVC;
2739 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES* pTilesPartition_AV1;
2740 };
2741
2742} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
2743
2744typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
2745{
2746 /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT */
2747 UINT NodeIndex;
2748 D3D12_VIDEO_ENCODER_CODEC Codec;
2749 DXGI_FORMAT InputFormat;
2750 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2751 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
2752 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
2753 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
2754 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
2755 UINT ResolutionsListCount;
2756 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2757 UINT MaxReferenceFramesInDPB;
2758 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
2759 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
2760 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
2761 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
2762 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
2763
2764 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 */
2765 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; // input
2766 UINT MaxQualityVsSpeed;
2767} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
2768
2769typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
2770{
2771 UINT NodeIndex; // input
2772 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2773 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2774 DXGI_FORMAT InputFormat; // input
2775 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
2776
2777 BOOL IsSupported; // output
2778 UINT CompressedBitstreamBufferAccessAlignment; // output
2779 UINT EncoderMetadataBufferAccessAlignment; // output
2780 UINT MaxEncoderOutputMetadataBufferSize; // output
2781} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
2782
2783//
2784// Video Encoder creation API
2785//
2786
2787typedef enum D3D12_VIDEO_ENCODER_FLAGS
2788{
2789 D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0,
2790} D3D12_VIDEO_ENCODER_FLAGS;
2791cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)")
2792
2793typedef struct D3D12_VIDEO_ENCODER_DESC
2794{
2795 UINT NodeMask;
2796 D3D12_VIDEO_ENCODER_FLAGS Flags;
2797 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
2798 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
2799 DXGI_FORMAT InputFormat;
2800 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2801 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
2802} D3D12_VIDEO_ENCODER_DESC;
2803
2804[uuid(2E0D212D-8DF9-44A6-A770-BB289B182737), object, local, pointer_default(unique)]
2805interface ID3D12VideoEncoder
2806 : ID3D12Pageable
2807{
2808 UINT GetNodeMask();
2809 D3D12_VIDEO_ENCODER_FLAGS GetEncoderFlags();
2810 D3D12_VIDEO_ENCODER_CODEC GetCodec();
2811 HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
2812 HRESULT GetCodecConfiguration([annotation("_Inout_")] D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
2813 DXGI_FORMAT GetInputFormat();
2814 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE GetMaxMotionEstimationPrecision();
2815}
2816
2817[uuid(22B35D96-876A-44C0-B25E-FB8C9C7F1C4A), object, local, pointer_default(unique)]
2818interface ID3D12VideoEncoderHeap
2819 : ID3D12Pageable
2820{
2821 UINT GetNodeMask();
2822 D3D12_VIDEO_ENCODER_HEAP_FLAGS GetEncoderHeapFlags();
2823 D3D12_VIDEO_ENCODER_CODEC GetCodec();
2824 HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
2825 HRESULT GetCodecLevel([annotation("_Inout_")] D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
2826 UINT GetResolutionListCount();
2827 HRESULT GetResolutionList(
2828 const UINT ResolutionsListCount,
2829 [annotation("_Out_writes_(ResolutionsListCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList);
2830}
2831
2832[uuid(4243ADB4-3A32-4666-973C-0CCC5625DC44), object, local, pointer_default(unique)]
2833interface ID3D12VideoDevice3
2834 : ID3D12VideoDevice2
2835{
2836
2837 HRESULT CreateVideoEncoder(
2838 [annotation("_In_")] const D3D12_VIDEO_ENCODER_DESC* pDesc,
2839 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoder,
2840 [annotation("_COM_Outptr_")] void** ppVideoEncoder);
2841
2842 HRESULT CreateVideoEncoderHeap(
2843 [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC* pDesc,
2844 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap,
2845 [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
2846
2847}
2848
2849//
2850// Video Encoder operation API
2851//
2852
2853
2854typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
2855{
2856 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
2857 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
2858 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
2859 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3,
2860} D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
2861
2862
2863typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
2864{
2865 UINT ReconstructedPictureResourceIndex;
2866 BOOL IsLongTermReference;
2867 UINT LongTermPictureIdx;
2868 UINT PictureOrderCountNumber;
2869 UINT FrameDecodingOrderNumber;
2870 UINT TemporalLayerIndex;
2871} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
2872
2873typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
2874{
2875 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0,
2876 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
2877 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
2878} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
2879cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)")
2880
2881typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
2882{
2883 UCHAR memory_management_control_operation;
2884 UINT difference_of_pic_nums_minus1;
2885 UINT long_term_pic_num;
2886 UINT long_term_frame_idx;
2887 UINT max_long_term_frame_idx_plus1;
2888} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
2889
2890typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
2891{
2892 UCHAR modification_of_pic_nums_idc;
2893 UINT abs_diff_pic_num_minus1;
2894 UINT long_term_pic_num;
2895} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
2896
2897typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
2898{
2899 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
2900 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
2901 UINT pic_parameter_set_id;
2902 UINT idr_pic_id;
2903 UINT PictureOrderCountNumber;
2904 UINT FrameDecodingOrderNumber;
2905 UINT TemporalLayerIndex;
2906 UINT List0ReferenceFramesCount;
2907 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2908 UINT List1ReferenceFramesCount;
2909 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2910 UINT ReferenceFramesReconPictureDescriptorsCount;
2911 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* pReferenceFramesReconPictureDescriptors;
2912 UCHAR adaptive_ref_pic_marking_mode_flag;
2913 UINT RefPicMarkingOperationsCommandsCount;
2914 [annotation("_Field_size_full_(RefPicMarkingOperationsCommandsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* pRefPicMarkingOperationsCommands;
2915 UINT List0RefPicModificationsCount;
2916 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList0RefPicModifications;
2917 UINT List1RefPicModificationsCount;
2918 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList1RefPicModifications;
2919 UINT QPMapValuesCount;
2920 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
2921} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
2922
2923typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
2924{
2925 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
2926 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
2927 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
2928 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3,
2929} D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
2930
2931typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
2932{
2933 UINT ReconstructedPictureResourceIndex;
2934 BOOL IsRefUsedByCurrentPic;
2935 BOOL IsLongTermReference;
2936 UINT PictureOrderCountNumber;
2937 UINT TemporalLayerIndex;
2938} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
2939
2940typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
2941{
2942 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0,
2943 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
2944 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
2945 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
2946 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8,
2947} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
2948cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)")
2949
2950typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
2951{
2952 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
2953 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
2954 UINT slice_pic_parameter_set_id;
2955 UINT PictureOrderCountNumber;
2956 UINT TemporalLayerIndex;
2957 UINT List0ReferenceFramesCount;
2958 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2959 UINT List1ReferenceFramesCount;
2960 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2961 UINT ReferenceFramesReconPictureDescriptorsCount;
2962 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
2963 UINT List0RefPicModificationsCount;
2964 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
2965 UINT List1RefPicModificationsCount;
2966 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
2967 UINT QPMapValuesCount;
2968 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
2969} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
2970
2971typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
2972{
2973 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
2974 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
2975 UINT slice_pic_parameter_set_id;
2976 UINT PictureOrderCountNumber;
2977 UINT TemporalLayerIndex;
2978 UINT List0ReferenceFramesCount;
2979 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2980 UINT List1ReferenceFramesCount;
2981 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2982 UINT ReferenceFramesReconPictureDescriptorsCount;
2983 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
2984 UINT List0RefPicModificationsCount;
2985 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
2986 UINT List1RefPicModificationsCount;
2987 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
2988 UINT QPMapValuesCount;
2989 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
2990 UCHAR diff_cu_chroma_qp_offset_depth;
2991 UCHAR log2_sao_offset_scale_luma;
2992 UCHAR log2_sao_offset_scale_chroma;
2993 UCHAR log2_max_transform_skip_block_size_minus2;
2994 UCHAR chroma_qp_offset_list_len_minus1;
2995 CHAR cb_qp_offset_list[6];
2996 CHAR cr_qp_offset_list[6];
2997} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
2998
2999typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
3000{
3001 UINT DataSize;
3002 union
3003 {
3004 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
3005 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC* pHEVCPicData;
3006 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1* pHEVCPicData1;
3007 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
3008 };
3009} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
3010
3011typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
3012{
3013 UINT NumTexture2Ds;
3014 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
3015 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
3016} D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
3017
3018typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
3019{
3020 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0,
3021 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
3022 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
3023 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
3024 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8,
3025} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
3026cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)")
3027
3028typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
3029{
3030 UINT IntraRefreshFrameIndex;
3031 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
3032 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
3033 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
3034} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
3035
3036typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
3037{
3038 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0,
3039 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
3040 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
3041 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
3042 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
3043 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10,
3044} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
3045cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)")
3046
3047typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
3048{
3049 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
3050 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
3051 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3052 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
3053 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
3054 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
3055 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3056} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
3057
3058//
3059// Video Encoder operation commands API
3060//
3061
3062typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
3063{
3064 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
3065 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
3066 ID3D12Resource *pInputFrame;
3067 UINT InputFrameSubresource;
3068 UINT CurrentFrameBitstreamMetadataSize;
3069} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
3070
3071typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
3072{
3073 ID3D12Resource* pBuffer;
3074 UINT64 FrameStartOffset;
3075} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
3076
3077typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
3078{
3079 ID3D12Resource *pReconstructedPicture;
3080 UINT ReconstructedPictureSubresource;
3081} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
3082
3083typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
3084{
3085 UINT64 bSize;
3086 UINT64 bStartOffset;
3087 UINT64 bHeaderSize;
3088} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
3089
3090typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
3091{
3092 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0,
3093 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
3094 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
3095 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
3096 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
3097 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10,
3098} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
3099cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)")
3100
3101typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
3102{
3103 UINT64 AverageQP;
3104 UINT64 IntraCodingUnitsCount;
3105 UINT64 InterCodingUnitsCount;
3106 UINT64 SkipCodingUnitsCount;
3107 UINT64 AverageMotionEstimationXDirection;
3108 UINT64 AverageMotionEstimationYDirection;
3109} D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
3110
3111typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
3112{
3113 UINT64 EncodeErrorFlags; // D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
3114 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
3115 UINT64 EncodedBitstreamWrittenBytesCount;
3116 UINT64 WrittenSubregionsCount;
3117} D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
3118
3119typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
3120{
3121 ID3D12Resource* pBuffer;
3122 UINT64 Offset;
3123} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
3124
3125typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
3126{
3127 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
3128 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
3129 DXGI_FORMAT EncoderInputFormat;
3130 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
3131 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
3132} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
3133
3134typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
3135{
3136 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
3137} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
3138
3139typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
3140{
3141 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
3142 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
3143 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
3144} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
3145
3146[uuid(895491e2-e701-46a9-9a1f-8d3480ed867a), object, local, pointer_default(unique)]
3147interface ID3D12VideoEncodeCommandList2
3148 : ID3D12VideoEncodeCommandList1
3149{
3150 void EncodeFrame(
3151 [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
3152 [annotation("_In_")] ID3D12VideoEncoderHeap *pHeap,
3153 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
3154 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
3155
3156 void ResolveEncoderOutputMetadata(
3157 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS* pInputArguments,
3158 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS* pOutputArguments);
3159}
3160
3161
3162[uuid(7f027b22-1515-4e85-aa0d-026486580576), object, local, pointer_default(unique)]
3163interface ID3D12VideoEncodeCommandList3
3164 : ID3D12VideoEncodeCommandList2
3165{
3166
3167 void Barrier(
3168 UINT32 NumBarrierGroups,
3169 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
3170 );
3171}
3172
3173
3174
3175typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
3176{
3177 UINT NodeMask;
3178 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
3179 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
3180 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
3181 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
3182 UINT ResolutionsListCount;
3183 [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
3184 UINT Pow2DownscaleFactor;
3185} D3D12_VIDEO_ENCODER_HEAP_DESC1;
3186
3187[uuid(ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9), object, local, pointer_default(unique)]
3188interface ID3D12VideoEncoderHeap1
3189 : ID3D12VideoEncoderHeap
3190{
3191 UINT GetPow2DownscaleFactor();
3192}
3193
3194[uuid(e59ad09e-f1ae-42bb-8983-9f6e5586c4eb), object, local, pointer_default(unique)]
3195interface ID3D12VideoDevice4
3196 : ID3D12VideoDevice3
3197{
3198 HRESULT CreateVideoEncoderHeap1(
3199 [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC1* pDesc,
3200 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap1,
3201 [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
3202
3203}
3204
3205typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1 {
3206 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc; // input
3207 BOOL IsSupported; // output
3208 UINT64 MemoryPoolL0Size; // output
3209 UINT64 MemoryPoolL1Size; // output
3210} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
3211
3212typedef enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
3213{
3214 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0x0,
3215 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
3216 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
3217 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
3218 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
3219 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10,
3220} D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
3221cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )")
3222
3223// Binary back-compat with D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
3224typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
3225{
3226 UINT NodeIndex; // input
3227 D3D12_VIDEO_ENCODER_CODEC Codec; // input
3228 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
3229 DXGI_FORMAT InputFormat; // input
3230 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
3231
3232 BOOL IsSupported; // output
3233 UINT CompressedBitstreamBufferAccessAlignment; // output
3234 UINT EncoderMetadataBufferAccessAlignment; // output
3235 UINT MaxEncoderOutputMetadataBufferSize; // output
3236 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata; // input
3237 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; // input
3238 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions; // output
3239 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions; // output
3240 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions; // output
3241 UINT EncoderOutputMetadataFramePSNRComponentsNumber; // output
3242 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber; // output
3243 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize; // output
3244} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
3245
3246typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
3247{
3248 float PSNRY;
3249 float PSNRU;
3250 float PSNRV;
3251} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
3252
3253typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
3254{
3255 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
3256 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1,
3257} D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
3258
3259typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
3260{
3261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
3262 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1,
3263} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
3264
3265typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
3266{
3267 D3D12_VIDEO_ENCODER_CODEC Codec;
3268 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3269 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
3270 DXGI_FORMAT InputFormat;
3271 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
3272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3273 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3274 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3275} D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
3276
3277typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
3278{
3279 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
3280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
3281 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2,
3282} D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
3283
3284typedef enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
3285{
3286 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
3287 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
3288 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2,
3289} D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
3290
3291// D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT
3292typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
3293{
3294 UINT NodeIndex;
3295 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3296 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3297 BOOL IsSupported;
3298 UINT MapSourcePreferenceRanking;
3299 UINT BlockSize;
3300} D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
3301
3302typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
3303{
3304 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0x0,
3305 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
3306 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
3307 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4,
3308} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
3309cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )")
3310
3311// D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS
3312typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
3313{
3314 UINT NodeIndex;
3315 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3316 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3317 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3318 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
3319 UINT MapSourcePreferenceRanking;
3320} D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
3321
3322typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
3323{
3324 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
3325 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
3326 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2,
3327} D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
3328
3329typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS {
3330 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0x0,
3331 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL), // 0x1
3332 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL), // 0x2
3333 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL), // 0x4
3334} D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
3335cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )")
3336
3337typedef enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
3338{
3339 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0x0,
3340 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
3341 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
3342 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4,
3343
3344
3345} D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
3346cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )")
3347
3348// D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH
3349typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
3350{
3351 UINT NodeIndex;
3352 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3353 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3354 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3355 BOOL BidirectionalRefFrameEnabled;
3356 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
3357 UINT MaxMotionHints;
3358 UINT MinDeviation;
3359 UINT MaxDeviation;
3360 UINT MapSourcePreferenceRanking;
3361 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
3362} D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
3363
3364// D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
3365typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
3366{
3367 UINT NodeIndex;
3368 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3369 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
3370 BOOL IsSupported;
3371 UINT64 MaxResolvedBufferAllocationSize;
3372} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
3373
3374typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
3375{
3376 BOOL Enabled;
3377 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3378} D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
3379
3380typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
3381{
3382 // Reuse existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1.QPMapRegionPixelsSize for BlockSize
3383 UINT MapSourcePreferenceRanking;
3384} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
3385
3386typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
3387{
3388 BOOL Enabled;
3389 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3390 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3391} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
3392
3393typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
3394{
3395 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
3396 UINT MapSourcePreferenceRanking;
3397} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
3398
3399typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
3400{
3401 BOOL Enabled;
3402 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3403 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3404 BOOL BidirectionalRefFrameEnabled;
3405} D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
3406
3407typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
3408{
3409 UINT MaxMotionHints;
3410 UINT MinDeviation;
3411 UINT MaxDeviation;
3412 UINT MapSourcePreferenceRanking;
3413 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
3414 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
3415} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
3416
3417typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
3418{
3419 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0x0,
3420 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
3421 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
3422 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
3423 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
3424 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
3425 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
3426
3427 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED =
3428 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED |
3429 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED |
3430 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED,
3431
3432} D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
3433cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )")
3434
3435// D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
3436typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
3437{
3438 UINT NodeIndex;
3439 D3D12_VIDEO_ENCODER_CODEC Codec;
3440 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3441 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
3442 DXGI_FORMAT InputFormat;
3443 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
3444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3445 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3446 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3447 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
3448 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
3449 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
3450 UINT Pow2DownscaleFactor;
3451 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
3452} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
3453
3454typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
3455{
3456 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
3457} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
3458
3459typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
3460{
3461 /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS */
3462 UINT MaxSubregionsNumber;
3463 UINT MaxIntraRefreshFrameDuration;
3464 UINT SubregionBlockPixelsSize;
3465 UINT QPMapRegionPixelsSize;
3466
3467 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 */
3468 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
3469 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
3470 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
3471 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
3472} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
3473
3474typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
3475{
3476 BOOL Enabled;
3477 UINT Pow2DownscaleFactor;
3478} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
3479
3480// D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2
3481typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
3482{
3483 /*
3484 * Below params match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 binary size
3485 * please note pResolutionDependentSupport type changes from D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS to D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
3486 */
3487
3488 UINT NodeIndex;
3489 D3D12_VIDEO_ENCODER_CODEC Codec;
3490 DXGI_FORMAT InputFormat;
3491 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3492 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3493 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3494 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
3495 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3496 UINT ResolutionsListCount;
3497 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
3498 UINT MaxReferenceFramesInDPB;
3499 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
3500 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
3501 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
3502 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
3503 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1* pResolutionDependentSupport;
3504 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3505 UINT MaxQualityVsSpeed;
3506
3507 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2 */
3508 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
3509 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
3510 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
3511 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
3512} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
3513
3514typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
3515{
3516 BOOL FullFrameIdentical;
3517 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3518 UINT NumDirtyRects;
3519 [annotation("_Field_size_full_(NumDirtyRects)")] RECT* pDirtyRects;
3520 UINT SourceDPBFrameReference;
3521} D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
3522
3523typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
3524{
3525 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3526 union
3527 {
3528 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE
3529 ID3D12Resource* pOpaqueLayoutBuffer;
3530 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER
3531 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO* pCPUBuffer;
3532 };
3533} D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
3534
3535typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
3536{
3537 ID3D12Resource* pOpaqueQuantizationMap;
3538} D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
3539
3540typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
3541{
3542 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3543 UINT SearchDeviationLimit;
3544} D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
3545
3546typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
3547{
3548 POINT SourcePoint;
3549 RECT DestRect;
3550} D3D12_VIDEO_ENCODER_MOVE_RECT;
3551
3552typedef enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
3553{
3554 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0x0,
3555 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1,
3556} D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
3557
3558typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
3559{
3560 UINT NumMoveRegions;
3561 [annotation("_Field_size_full_(NumMoveRegions)")] D3D12_VIDEO_ENCODER_MOVE_RECT* pMoveRegions;
3562 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
3563 UINT SourceDPBFrameReference;
3564 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
3565 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
3566} D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
3567
3568typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
3569{
3570 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3571 union
3572 {
3573 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE
3574 ID3D12Resource* pOpaqueLayoutBuffer;
3575 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER
3576 D3D12_VIDEO_ENCODER_MOVEREGION_INFO* pCPUBuffer;
3577 };
3578} D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
3579
3580typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
3581{
3582 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
3583 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
3584 UINT slice_pic_parameter_set_id;
3585 UINT PictureOrderCountNumber;
3586 UINT TemporalLayerIndex;
3587 UINT List0ReferenceFramesCount;
3588 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
3589 UINT List1ReferenceFramesCount;
3590 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
3591 UINT ReferenceFramesReconPictureDescriptorsCount;
3592 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
3593 UINT List0RefPicModificationsCount;
3594 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
3595 UINT List1RefPicModificationsCount;
3596 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
3597 UINT QPMapValuesCount;
3598 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
3599 UCHAR diff_cu_chroma_qp_offset_depth;
3600 UCHAR log2_sao_offset_scale_luma;
3601 UCHAR log2_sao_offset_scale_chroma;
3602 UCHAR log2_max_transform_skip_block_size_minus2;
3603 UCHAR chroma_qp_offset_list_len_minus1;
3604 CHAR cb_qp_offset_list[6];
3605 CHAR cr_qp_offset_list[6];
3606 UINT num_ref_idx_l0_active_minus1;
3607 UINT num_ref_idx_l1_active_minus1;
3608} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
3609
3610typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
3611{
3612 UINT DataSize;
3613 union
3614 {
3615 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
3616 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2* pHEVCPicData;
3617 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
3618 };
3619} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
3620
3621typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
3622{
3623 ID3D12Resource* pDownscaledFrame;
3624 UINT64 Subresource;
3625 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
3626} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
3627
3628typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
3629{
3630 UINT IntraRefreshFrameIndex;
3631 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
3632 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
3633 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
3634 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
3635 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
3636 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
3637 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
3638} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
3639
3640typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
3641{
3642 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
3643 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
3644 ID3D12Resource* pInputFrame;
3645 UINT InputFrameSubresource;
3646 UINT CurrentFrameBitstreamMetadataSize;
3647 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
3648} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
3649
3650typedef enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
3651{
3652 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
3653 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1,
3654} D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
3655
3656typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
3657{
3658 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
3659 UINT ExpectedSubregionCount;
3660 UINT64* pSubregionBitstreamsBaseOffsets;
3661 ID3D12Resource** ppSubregionBitstreams;
3662 ID3D12Resource** ppSubregionSizes;
3663 ID3D12Resource** ppSubregionOffsets;
3664 ID3D12Fence** ppSubregionFences;
3665 UINT64* pSubregionFenceValues;
3666} D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
3667
3668typedef enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
3669{
3670 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
3671 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1,
3672} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
3673
3674typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
3675{
3676 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
3677 union
3678 {
3679 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
3680 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
3681 };
3682} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
3683
3684typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
3685{
3686 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
3687 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
3688 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
3689 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
3690} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
3691
3692typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
3693{
3694 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
3695 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
3696 DXGI_FORMAT EncoderInputFormat;
3697 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
3698 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
3699 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
3700 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3701} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
3702
3703typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
3704{
3705 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
3706 ID3D12Resource* pOutputQPMap;
3707 ID3D12Resource* pOutputSATDMap;
3708 ID3D12Resource* pOutputBitAllocationMap;
3709 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
3710 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
3711} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
3712
3713typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
3714{
3715 ID3D12Resource* pQuantizationMap;
3716} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
3717
3718typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
3719{
3720 BOOL FullFrameIdentical;
3721 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3722 ID3D12Resource* pDirtyRegionsMap;
3723 UINT SourceDPBFrameReference;
3724} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
3725
3726typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
3727{
3728 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
3729 UINT NumHintsPerPixel;
3730 [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMaps;
3731 [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsSubresources;
3732 [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMapsMetadata;
3733 [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsMetadataSubresources;
3734 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
3735 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
3736} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
3737
3738typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
3739{
3740 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
3741 union
3742 {
3743 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX
3744 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
3745 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS
3746 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
3747 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS
3748 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
3749 };
3750} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
3751
3752typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
3753{
3754 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3755 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
3756} D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
3757
3758typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
3759{
3760 ID3D12Resource* pOpaqueLayoutBuffer;
3761} D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
3762
3763// Change this interface UUID when changing the base class in the inheritance
3764[uuid(69aeb5b7-55f2-4012-8b73-3a88d65a204c), object, local, pointer_default(unique)]
3765interface ID3D12VideoEncodeCommandList4
3766 : ID3D12VideoEncodeCommandList3
3767{
3768 void EncodeFrame1(
3769 [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
3770 [annotation("_In_")] ID3D12VideoEncoderHeap1* pHeap,
3771 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1* pInputArguments,
3772 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1* pOutputArguments);
3773
3774 void ResolveEncoderOutputMetadata1(
3775 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1* pInputArguments,
3776 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1* pOutputArguments);
3777
3778 void ResolveInputParamLayout(
3779 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS* pInputArguments,
3780 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS* pOutputArguments);
3781}
3782
3783
3784
3785cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
3786#pragma endregion
3787
3788
3789cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
3790cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
3791cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
3792cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
3793cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
3794cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
3795cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
3796cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
3797cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
3798cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
3799cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
3800cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
3801cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
3802cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
3803cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
3804cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
3805cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
3806cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
3807cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);" )
3808cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
3809cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);" )
3810cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
3811cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);" )
3812cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);" )
3813cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);" )
3814cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);" )
3815cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);" )
3816cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);" )
3817cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);" )
3818cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.h
new file mode 100644
index 0000000..2e2418d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.h
@@ -0,0 +1,1133 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13/* @@MIDL_FILE_HEADING( ) */
14
15
16
17/* verify that the <rpcndr.h> version is high enough to compile this file*/
18#ifndef __REQUIRED_RPCNDR_H_VERSION__
19#define __REQUIRED_RPCNDR_H_VERSION__ 500
20#endif
21
22/* verify that the <rpcsal.h> version is high enough to compile this file*/
23#ifndef __REQUIRED_RPCSAL_H_VERSION__
24#define __REQUIRED_RPCSAL_H_VERSION__ 100
25#endif
26
27#include "rpc.h"
28#include "rpcndr.h"
29
30#ifndef __RPCNDR_H_VERSION__
31#error this stub requires an updated version of <rpcndr.h>
32#endif /* __RPCNDR_H_VERSION__ */
33
34#ifndef COM_NO_WINDOWS_H
35#include "windows.h"
36#include "ole2.h"
37#endif /*COM_NO_WINDOWS_H*/
38
39#ifndef __d3dcommon_h__
40#define __d3dcommon_h__
41
42#if defined(_MSC_VER) && (_MSC_VER >= 1020)
43#pragma once
44#endif
45
46#ifndef DECLSPEC_XFGVIRT
47#if defined(_CONTROL_FLOW_GUARD_XFG)
48#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
49#else
50#define DECLSPEC_XFGVIRT(base, func)
51#endif
52#endif
53
54/* Forward Declarations */
55
56#ifndef __ID3D10Blob_FWD_DEFINED__
57#define __ID3D10Blob_FWD_DEFINED__
58typedef interface ID3D10Blob ID3D10Blob;
59
60#endif /* __ID3D10Blob_FWD_DEFINED__ */
61
62
63#ifndef __ID3DDestructionNotifier_FWD_DEFINED__
64#define __ID3DDestructionNotifier_FWD_DEFINED__
65typedef interface ID3DDestructionNotifier ID3DDestructionNotifier;
66
67#endif /* __ID3DDestructionNotifier_FWD_DEFINED__ */
68
69
70/* header files for imported files */
71#include "oaidl.h"
72#include "ocidl.h"
73
74#ifdef __cplusplus
75extern "C"{
76#endif
77
78
79/* interface __MIDL_itf_d3dcommon_0000_0000 */
80/* [local] */
81
82typedef
83enum D3D_DRIVER_TYPE
84 {
85 D3D_DRIVER_TYPE_UNKNOWN = 0,
86 D3D_DRIVER_TYPE_HARDWARE = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
87 D3D_DRIVER_TYPE_REFERENCE = ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
88 D3D_DRIVER_TYPE_NULL = ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
89 D3D_DRIVER_TYPE_SOFTWARE = ( D3D_DRIVER_TYPE_NULL + 1 ) ,
90 D3D_DRIVER_TYPE_WARP = ( D3D_DRIVER_TYPE_SOFTWARE + 1 )
91 } D3D_DRIVER_TYPE;
92
93typedef
94enum D3D_FEATURE_LEVEL
95 {
96 D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
97 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
98 D3D_FEATURE_LEVEL_9_1 = 0x9100,
99 D3D_FEATURE_LEVEL_9_2 = 0x9200,
100 D3D_FEATURE_LEVEL_9_3 = 0x9300,
101 D3D_FEATURE_LEVEL_10_0 = 0xa000,
102 D3D_FEATURE_LEVEL_10_1 = 0xa100,
103 D3D_FEATURE_LEVEL_11_0 = 0xb000,
104 D3D_FEATURE_LEVEL_11_1 = 0xb100,
105 D3D_FEATURE_LEVEL_12_0 = 0xc000,
106 D3D_FEATURE_LEVEL_12_1 = 0xc100,
107 D3D_FEATURE_LEVEL_12_2 = 0xc200
108 } D3D_FEATURE_LEVEL;
109
110#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048
111#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096
112#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
113#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
114#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
115#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
116#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
117#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
118#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
119#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
120#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
121#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
122#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128
123#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048
124#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192
125typedef
126enum D3D_PRIMITIVE_TOPOLOGY
127 {
128 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
129 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
130 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
131 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
132 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
133 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
134 D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
135 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
136 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
137 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
138 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
139 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
140 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
141 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
142 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
143 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
144 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
145 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
146 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
147 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
148 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
149 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
150 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
151 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
152 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
153 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
154 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
155 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
156 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
157 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
158 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
159 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
160 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
161 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
162 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
163 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
164 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
165 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
166 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
167 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
168 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
169 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
170 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
171 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
172 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
173 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
174 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
175 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
176 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
177 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
178 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
179 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
180 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
181 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
182 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
183 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
184 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
185 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
186 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
187 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
188 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
189 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
190 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
191 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
192 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
193 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
194 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
195 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
196 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
197 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
198 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
199 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
200 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
201 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
202 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
203 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
204 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
205 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
206 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
207 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
208 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
209 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
210 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
211 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
212 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
213 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
214 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
215 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
216 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
217 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
218 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
219 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
220 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
221 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
222 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
223 } D3D_PRIMITIVE_TOPOLOGY;
224
225typedef
226enum D3D_PRIMITIVE
227 {
228 D3D_PRIMITIVE_UNDEFINED = 0,
229 D3D_PRIMITIVE_POINT = 1,
230 D3D_PRIMITIVE_LINE = 2,
231 D3D_PRIMITIVE_TRIANGLE = 3,
232 D3D_PRIMITIVE_LINE_ADJ = 6,
233 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
234 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
235 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
236 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
237 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
238 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
239 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
240 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
241 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
242 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
243 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
244 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
245 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
246 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
247 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
248 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
249 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
250 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
251 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
252 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
253 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
254 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
255 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
256 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
257 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
258 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
259 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
260 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
261 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
262 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
263 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
264 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
265 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
266 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
267 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
268 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
269 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
270 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
271 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
272 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
273 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
274 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
275 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
276 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
277 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
278 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
279 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
280 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
281 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
282 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
283 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
284 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
285 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
286 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
287 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
288 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
289 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
290 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
291 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
292 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
293 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
294 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
295 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
296 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
297 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
298 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
299 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
300 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
301 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
302 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
303 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
304 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
305 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
306 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
307 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
308 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
309 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
310 } D3D_PRIMITIVE;
311
312typedef
313enum D3D_SRV_DIMENSION
314 {
315 D3D_SRV_DIMENSION_UNKNOWN = 0,
316 D3D_SRV_DIMENSION_BUFFER = 1,
317 D3D_SRV_DIMENSION_TEXTURE1D = 2,
318 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
319 D3D_SRV_DIMENSION_TEXTURE2D = 4,
320 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
321 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
322 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
323 D3D_SRV_DIMENSION_TEXTURE3D = 8,
324 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
325 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
326 D3D_SRV_DIMENSION_BUFFEREX = 11,
327 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
328 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
329 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
330 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
331 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
332 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
333 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
334 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
335 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
336 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
337 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
338 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
339 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
340 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
341 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
342 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
343 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
344 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
345 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
346 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
347 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
348 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
349 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
350 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
351 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
352 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
353 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
354 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
355 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
356 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
357 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
358 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
359 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX
360 } D3D_SRV_DIMENSION;
361
362#define D3D_SHADER_FEATURE_DOUBLES 0x00001
363#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002
364#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004
365#define D3D_SHADER_FEATURE_64_UAVS 0x00008
366#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010
367#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020
368#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040
369#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080
370#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100
371#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200
372#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400
373#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800
374#define D3D_SHADER_FEATURE_ROVS 0x01000
375#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000
376#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000
377#define D3D_SHADER_FEATURE_INT64_OPS 0x08000
378#define D3D_SHADER_FEATURE_VIEW_ID 0x10000
379#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000
380#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000
381#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000
382#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000
383#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000
384#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000
385#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000
386#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000
387#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000
388#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000
389#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000
390#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
391#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000
392#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000
393#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
394#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull
395#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull
396#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull
397typedef struct _D3D_SHADER_MACRO
398 {
399 LPCSTR Name;
400 LPCSTR Definition;
401 } D3D_SHADER_MACRO;
402
403typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
404
405DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
406
407
408extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec;
409extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec;
410
411#ifndef __ID3D10Blob_INTERFACE_DEFINED__
412#define __ID3D10Blob_INTERFACE_DEFINED__
413
414/* interface ID3D10Blob */
415/* [unique][local][object][uuid] */
416
417
418EXTERN_C const IID IID_ID3D10Blob;
419
420#if defined(__cplusplus) && !defined(CINTERFACE)
421
422 MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
423 ID3D10Blob : public IUnknown
424 {
425 public:
426 virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0;
427
428 virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0;
429
430 };
431
432
433#else /* C style interface */
434
435 typedef struct ID3D10BlobVtbl
436 {
437 BEGIN_INTERFACE
438
439 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
440 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
441 ID3D10Blob * This,
442 /* [in] */ REFIID riid,
443 /* [annotation][iid_is][out] */
444 _COM_Outptr_ void **ppvObject);
445
446 DECLSPEC_XFGVIRT(IUnknown, AddRef)
447 ULONG ( STDMETHODCALLTYPE *AddRef )(
448 ID3D10Blob * This);
449
450 DECLSPEC_XFGVIRT(IUnknown, Release)
451 ULONG ( STDMETHODCALLTYPE *Release )(
452 ID3D10Blob * This);
453
454 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferPointer)
455 LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )(
456 ID3D10Blob * This);
457
458 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferSize)
459 SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )(
460 ID3D10Blob * This);
461
462 END_INTERFACE
463 } ID3D10BlobVtbl;
464
465 interface ID3D10Blob
466 {
467 CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
468 };
469
470
471
472#ifdef COBJMACROS
473
474
475#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \
476 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
477
478#define ID3D10Blob_AddRef(This) \
479 ( (This)->lpVtbl -> AddRef(This) )
480
481#define ID3D10Blob_Release(This) \
482 ( (This)->lpVtbl -> Release(This) )
483
484
485#define ID3D10Blob_GetBufferPointer(This) \
486 ( (This)->lpVtbl -> GetBufferPointer(This) )
487
488#define ID3D10Blob_GetBufferSize(This) \
489 ( (This)->lpVtbl -> GetBufferSize(This) )
490
491#endif /* COBJMACROS */
492
493
494#endif /* C style interface */
495
496
497
498
499#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */
500
501
502/* interface __MIDL_itf_d3dcommon_0000_0001 */
503/* [local] */
504
505typedef interface ID3D10Blob* LPD3D10BLOB;
506typedef ID3D10Blob ID3DBlob;
507
508typedef ID3DBlob* LPD3DBLOB;
509#define IID_ID3DBlob IID_ID3D10Blob
510typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )(
511 void *pData);
512
513
514
515extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec;
516extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec;
517
518#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__
519#define __ID3DDestructionNotifier_INTERFACE_DEFINED__
520
521/* interface ID3DDestructionNotifier */
522/* [unique][local][object][uuid] */
523
524
525EXTERN_C const IID IID_ID3DDestructionNotifier;
526
527#if defined(__cplusplus) && !defined(CINTERFACE)
528
529 MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3")
530 ID3DDestructionNotifier : public IUnknown
531 {
532 public:
533 virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback(
534 /* [annotation] */
535 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
536 /* [annotation] */
537 _In_ void *pData,
538 /* [annotation] */
539 _Out_ UINT *pCallbackID) = 0;
540
541 virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback(
542 /* [annotation] */
543 _In_ UINT callbackID) = 0;
544
545 };
546
547
548#else /* C style interface */
549
550 typedef struct ID3DDestructionNotifierVtbl
551 {
552 BEGIN_INTERFACE
553
554 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
555 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
556 ID3DDestructionNotifier * This,
557 /* [in] */ REFIID riid,
558 /* [annotation][iid_is][out] */
559 _COM_Outptr_ void **ppvObject);
560
561 DECLSPEC_XFGVIRT(IUnknown, AddRef)
562 ULONG ( STDMETHODCALLTYPE *AddRef )(
563 ID3DDestructionNotifier * This);
564
565 DECLSPEC_XFGVIRT(IUnknown, Release)
566 ULONG ( STDMETHODCALLTYPE *Release )(
567 ID3DDestructionNotifier * This);
568
569 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, RegisterDestructionCallback)
570 HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )(
571 ID3DDestructionNotifier * This,
572 /* [annotation] */
573 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
574 /* [annotation] */
575 _In_ void *pData,
576 /* [annotation] */
577 _Out_ UINT *pCallbackID);
578
579 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, UnregisterDestructionCallback)
580 HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )(
581 ID3DDestructionNotifier * This,
582 /* [annotation] */
583 _In_ UINT callbackID);
584
585 END_INTERFACE
586 } ID3DDestructionNotifierVtbl;
587
588 interface ID3DDestructionNotifier
589 {
590 CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl;
591 };
592
593
594
595#ifdef COBJMACROS
596
597
598#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \
599 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
600
601#define ID3DDestructionNotifier_AddRef(This) \
602 ( (This)->lpVtbl -> AddRef(This) )
603
604#define ID3DDestructionNotifier_Release(This) \
605 ( (This)->lpVtbl -> Release(This) )
606
607
608#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \
609 ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) )
610
611#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \
612 ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) )
613
614#endif /* COBJMACROS */
615
616
617#endif /* C style interface */
618
619
620
621
622#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */
623
624
625/* interface __MIDL_itf_d3dcommon_0000_0002 */
626/* [local] */
627
628typedef
629enum _D3D_INCLUDE_TYPE
630 {
631 D3D_INCLUDE_LOCAL = 0,
632 D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) ,
633 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
634 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
635 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
636 } D3D_INCLUDE_TYPE;
637
638typedef interface ID3DInclude ID3DInclude;
639#undef INTERFACE
640#define INTERFACE ID3DInclude
641DECLARE_INTERFACE(ID3DInclude)
642{
643 STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
644 STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
645};
646typedef ID3DInclude* LPD3DINCLUDE;
647typedef
648enum _D3D_SHADER_VARIABLE_CLASS
649 {
650 D3D_SVC_SCALAR = 0,
651 D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) ,
652 D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) ,
653 D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) ,
654 D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
655 D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) ,
656 D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) ,
657 D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
658 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
659 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
660 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
661 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
662 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
663 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
664 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
665 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
666 D3D_SVC_FORCE_DWORD = 0x7fffffff
667 } D3D_SHADER_VARIABLE_CLASS;
668
669typedef
670enum _D3D_SHADER_VARIABLE_FLAGS
671 {
672 D3D_SVF_USERPACKED = 1,
673 D3D_SVF_USED = 2,
674 D3D_SVF_INTERFACE_POINTER = 4,
675 D3D_SVF_INTERFACE_PARAMETER = 8,
676 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
677 D3D10_SVF_USED = D3D_SVF_USED,
678 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
679 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
680 D3D_SVF_FORCE_DWORD = 0x7fffffff
681 } D3D_SHADER_VARIABLE_FLAGS;
682
683typedef
684enum _D3D_SHADER_VARIABLE_TYPE
685 {
686 D3D_SVT_VOID = 0,
687 D3D_SVT_BOOL = 1,
688 D3D_SVT_INT = 2,
689 D3D_SVT_FLOAT = 3,
690 D3D_SVT_STRING = 4,
691 D3D_SVT_TEXTURE = 5,
692 D3D_SVT_TEXTURE1D = 6,
693 D3D_SVT_TEXTURE2D = 7,
694 D3D_SVT_TEXTURE3D = 8,
695 D3D_SVT_TEXTURECUBE = 9,
696 D3D_SVT_SAMPLER = 10,
697 D3D_SVT_SAMPLER1D = 11,
698 D3D_SVT_SAMPLER2D = 12,
699 D3D_SVT_SAMPLER3D = 13,
700 D3D_SVT_SAMPLERCUBE = 14,
701 D3D_SVT_PIXELSHADER = 15,
702 D3D_SVT_VERTEXSHADER = 16,
703 D3D_SVT_PIXELFRAGMENT = 17,
704 D3D_SVT_VERTEXFRAGMENT = 18,
705 D3D_SVT_UINT = 19,
706 D3D_SVT_UINT8 = 20,
707 D3D_SVT_GEOMETRYSHADER = 21,
708 D3D_SVT_RASTERIZER = 22,
709 D3D_SVT_DEPTHSTENCIL = 23,
710 D3D_SVT_BLEND = 24,
711 D3D_SVT_BUFFER = 25,
712 D3D_SVT_CBUFFER = 26,
713 D3D_SVT_TBUFFER = 27,
714 D3D_SVT_TEXTURE1DARRAY = 28,
715 D3D_SVT_TEXTURE2DARRAY = 29,
716 D3D_SVT_RENDERTARGETVIEW = 30,
717 D3D_SVT_DEPTHSTENCILVIEW = 31,
718 D3D_SVT_TEXTURE2DMS = 32,
719 D3D_SVT_TEXTURE2DMSARRAY = 33,
720 D3D_SVT_TEXTURECUBEARRAY = 34,
721 D3D_SVT_HULLSHADER = 35,
722 D3D_SVT_DOMAINSHADER = 36,
723 D3D_SVT_INTERFACE_POINTER = 37,
724 D3D_SVT_COMPUTESHADER = 38,
725 D3D_SVT_DOUBLE = 39,
726 D3D_SVT_RWTEXTURE1D = 40,
727 D3D_SVT_RWTEXTURE1DARRAY = 41,
728 D3D_SVT_RWTEXTURE2D = 42,
729 D3D_SVT_RWTEXTURE2DARRAY = 43,
730 D3D_SVT_RWTEXTURE3D = 44,
731 D3D_SVT_RWBUFFER = 45,
732 D3D_SVT_BYTEADDRESS_BUFFER = 46,
733 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
734 D3D_SVT_STRUCTURED_BUFFER = 48,
735 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
736 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
737 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
738 D3D_SVT_MIN8FLOAT = 52,
739 D3D_SVT_MIN10FLOAT = 53,
740 D3D_SVT_MIN16FLOAT = 54,
741 D3D_SVT_MIN12INT = 55,
742 D3D_SVT_MIN16INT = 56,
743 D3D_SVT_MIN16UINT = 57,
744 D3D_SVT_INT16 = 58,
745 D3D_SVT_UINT16 = 59,
746 D3D_SVT_FLOAT16 = 60,
747 D3D_SVT_INT64 = 61,
748 D3D_SVT_UINT64 = 62,
749 D3D10_SVT_VOID = D3D_SVT_VOID,
750 D3D10_SVT_BOOL = D3D_SVT_BOOL,
751 D3D10_SVT_INT = D3D_SVT_INT,
752 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
753 D3D10_SVT_STRING = D3D_SVT_STRING,
754 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
755 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
756 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
757 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
758 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
759 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
760 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
761 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
762 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
763 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
764 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
765 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
766 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
767 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
768 D3D10_SVT_UINT = D3D_SVT_UINT,
769 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
770 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
771 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
772 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
773 D3D10_SVT_BLEND = D3D_SVT_BLEND,
774 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
775 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
776 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
777 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
778 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
779 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
780 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
781 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
782 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
783 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
784 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
785 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
786 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
787 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
788 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
789 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
790 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
791 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
792 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
793 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
794 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
795 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
796 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
797 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
798 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
799 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
800 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
801 D3D_SVT_FORCE_DWORD = 0x7fffffff
802 } D3D_SHADER_VARIABLE_TYPE;
803
804typedef
805enum _D3D_SHADER_INPUT_FLAGS
806 {
807 D3D_SIF_USERPACKED = 0x1,
808 D3D_SIF_COMPARISON_SAMPLER = 0x2,
809 D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
810 D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
811 D3D_SIF_TEXTURE_COMPONENTS = 0xc,
812 D3D_SIF_UNUSED = 0x10,
813 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
814 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
815 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
816 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
817 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
818 D3D_SIF_FORCE_DWORD = 0x7fffffff
819 } D3D_SHADER_INPUT_FLAGS;
820
821typedef
822enum _D3D_SHADER_INPUT_TYPE
823 {
824 D3D_SIT_CBUFFER = 0,
825 D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) ,
826 D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) ,
827 D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) ,
828 D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) ,
829 D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) ,
830 D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) ,
831 D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
832 D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) ,
833 D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
834 D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
835 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
836 D3D_SIT_RTACCELERATIONSTRUCTURE = ( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1 ) ,
837 D3D_SIT_UAV_FEEDBACKTEXTURE = ( D3D_SIT_RTACCELERATIONSTRUCTURE + 1 ) ,
838 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
839 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
840 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
841 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
842 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
843 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
844 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
845 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
846 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
847 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
848 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
849 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
850 } D3D_SHADER_INPUT_TYPE;
851
852typedef
853enum _D3D_SHADER_CBUFFER_FLAGS
854 {
855 D3D_CBF_USERPACKED = 1,
856 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
857 D3D_CBF_FORCE_DWORD = 0x7fffffff
858 } D3D_SHADER_CBUFFER_FLAGS;
859
860typedef
861enum _D3D_CBUFFER_TYPE
862 {
863 D3D_CT_CBUFFER = 0,
864 D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) ,
865 D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) ,
866 D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
867 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
868 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
869 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
870 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
871 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
872 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO
873 } D3D_CBUFFER_TYPE;
874
875typedef
876enum D3D_NAME
877 {
878 D3D_NAME_UNDEFINED = 0,
879 D3D_NAME_POSITION = 1,
880 D3D_NAME_CLIP_DISTANCE = 2,
881 D3D_NAME_CULL_DISTANCE = 3,
882 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
883 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
884 D3D_NAME_VERTEX_ID = 6,
885 D3D_NAME_PRIMITIVE_ID = 7,
886 D3D_NAME_INSTANCE_ID = 8,
887 D3D_NAME_IS_FRONT_FACE = 9,
888 D3D_NAME_SAMPLE_INDEX = 10,
889 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
890 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
891 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
892 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
893 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
894 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
895 D3D_NAME_BARYCENTRICS = 23,
896 D3D_NAME_SHADINGRATE = 24,
897 D3D_NAME_CULLPRIMITIVE = 25,
898 D3D_NAME_TARGET = 64,
899 D3D_NAME_DEPTH = 65,
900 D3D_NAME_COVERAGE = 66,
901 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
902 D3D_NAME_DEPTH_LESS_EQUAL = 68,
903 D3D_NAME_STENCIL_REF = 69,
904 D3D_NAME_INNER_COVERAGE = 70,
905 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
906 D3D10_NAME_POSITION = D3D_NAME_POSITION,
907 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
908 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
909 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
910 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
911 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
912 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
913 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
914 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
915 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
916 D3D10_NAME_TARGET = D3D_NAME_TARGET,
917 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
918 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
919 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
920 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
921 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
922 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
923 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
924 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
925 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
926 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
927 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
928 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
929 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
930 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
931 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE
932 } D3D_NAME;
933
934typedef
935enum D3D_RESOURCE_RETURN_TYPE
936 {
937 D3D_RETURN_TYPE_UNORM = 1,
938 D3D_RETURN_TYPE_SNORM = 2,
939 D3D_RETURN_TYPE_SINT = 3,
940 D3D_RETURN_TYPE_UINT = 4,
941 D3D_RETURN_TYPE_FLOAT = 5,
942 D3D_RETURN_TYPE_MIXED = 6,
943 D3D_RETURN_TYPE_DOUBLE = 7,
944 D3D_RETURN_TYPE_CONTINUED = 8,
945 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
946 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
947 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
948 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
949 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
950 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
951 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
952 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
953 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
954 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
955 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
956 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
957 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
958 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED
959 } D3D_RESOURCE_RETURN_TYPE;
960
961typedef
962enum D3D_REGISTER_COMPONENT_TYPE
963 {
964 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
965 D3D_REGISTER_COMPONENT_UINT32 = 1,
966 D3D_REGISTER_COMPONENT_SINT32 = 2,
967 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
968 D3D_REGISTER_COMPONENT_UINT16 = 4,
969 D3D_REGISTER_COMPONENT_SINT16 = 5,
970 D3D_REGISTER_COMPONENT_FLOAT16 = 6,
971 D3D_REGISTER_COMPONENT_UINT64 = 7,
972 D3D_REGISTER_COMPONENT_SINT64 = 8,
973 D3D_REGISTER_COMPONENT_FLOAT64 = 9,
974 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
975 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
976 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
977 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
978 D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
979 D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
980 D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
981 D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
982 D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
983 D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64
984 } D3D_REGISTER_COMPONENT_TYPE;
985
986typedef
987enum D3D_TESSELLATOR_DOMAIN
988 {
989 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
990 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
991 D3D_TESSELLATOR_DOMAIN_TRI = 2,
992 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
993 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
994 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
995 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
996 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD
997 } D3D_TESSELLATOR_DOMAIN;
998
999typedef
1000enum D3D_TESSELLATOR_PARTITIONING
1001 {
1002 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
1003 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
1004 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
1005 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
1006 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
1007 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
1008 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
1009 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
1010 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
1011 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
1012 } D3D_TESSELLATOR_PARTITIONING;
1013
1014typedef
1015enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
1016 {
1017 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
1018 D3D_TESSELLATOR_OUTPUT_POINT = 1,
1019 D3D_TESSELLATOR_OUTPUT_LINE = 2,
1020 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
1021 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
1022 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
1023 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
1024 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
1025 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1026 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1027 } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
1028
1029typedef
1030enum D3D_MIN_PRECISION
1031 {
1032 D3D_MIN_PRECISION_DEFAULT = 0,
1033 D3D_MIN_PRECISION_FLOAT_16 = 1,
1034 D3D_MIN_PRECISION_FLOAT_2_8 = 2,
1035 D3D_MIN_PRECISION_RESERVED = 3,
1036 D3D_MIN_PRECISION_SINT_16 = 4,
1037 D3D_MIN_PRECISION_UINT_16 = 5,
1038 D3D_MIN_PRECISION_ANY_16 = 0xf0,
1039 D3D_MIN_PRECISION_ANY_10 = 0xf1
1040 } D3D_MIN_PRECISION;
1041
1042typedef
1043enum D3D_INTERPOLATION_MODE
1044 {
1045 D3D_INTERPOLATION_UNDEFINED = 0,
1046 D3D_INTERPOLATION_CONSTANT = 1,
1047 D3D_INTERPOLATION_LINEAR = 2,
1048 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
1049 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
1050 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
1051 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
1052 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7
1053 } D3D_INTERPOLATION_MODE;
1054
1055typedef
1056enum _D3D_PARAMETER_FLAGS
1057 {
1058 D3D_PF_NONE = 0,
1059 D3D_PF_IN = 0x1,
1060 D3D_PF_OUT = 0x2,
1061 D3D_PF_FORCE_DWORD = 0x7fffffff
1062 } D3D_PARAMETER_FLAGS;
1063
1064typedef
1065enum D3D_FORMAT_LAYOUT
1066 {
1067 D3DFL_STANDARD = 0,
1068 D3DFL_CUSTOM = -1
1069 } D3D_FORMAT_LAYOUT;
1070
1071typedef
1072enum D3D_FORMAT_TYPE_LEVEL
1073 {
1074 D3DFTL_NO_TYPE = 0,
1075 D3DFTL_PARTIAL_TYPE = -2,
1076 D3DFTL_FULL_TYPE = -1
1077 } D3D_FORMAT_TYPE_LEVEL;
1078
1079typedef
1080enum D3D_FORMAT_COMPONENT_NAME
1081 {
1082 D3DFCN_R = -4,
1083 D3DFCN_G = -3,
1084 D3DFCN_B = -2,
1085 D3DFCN_A = -1,
1086 D3DFCN_D = 0,
1087 D3DFCN_S = 1,
1088 D3DFCN_X = 2
1089 } D3D_FORMAT_COMPONENT_NAME;
1090
1091typedef
1092enum D3D_FORMAT_COMPONENT_INTERPRETATION
1093 {
1094 D3DFCI_TYPELESS = 0,
1095 D3DFCI_FLOAT = -4,
1096 D3DFCI_SNORM = -3,
1097 D3DFCI_UNORM = -2,
1098 D3DFCI_SINT = -1,
1099 D3DFCI_UINT = 1,
1100 D3DFCI_UNORM_SRGB = 2,
1101 D3DFCI_BIASED_FIXED_2_8 = 3
1102 } D3D_FORMAT_COMPONENT_INTERPRETATION;
1103
1104DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
1105DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);
1106DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);
1107DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);
1108#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)
1109#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)
1110#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)
1111#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)
1112#define D3D_COMPONENT_MASK_X 1
1113#define D3D_COMPONENT_MASK_Y 2
1114#define D3D_COMPONENT_MASK_Z 4
1115#define D3D_COMPONENT_MASK_W 8
1116DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);
1117DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);
1118
1119
1120extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec;
1121extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec;
1122
1123/* Additional Prototypes for ALL interfaces */
1124
1125/* end of Additional Prototypes */
1126
1127#ifdef __cplusplus
1128}
1129#endif
1130
1131#endif
1132
1133
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.idl
new file mode 100644
index 0000000..bfa375d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.idl
@@ -0,0 +1,991 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10//----------------------------------------------------------------------------
11//
12// D3D-version-neutral runtime information.
13//
14//----------------------------------------------------------------------------
15
16typedef enum D3D_DRIVER_TYPE
17{
18 D3D_DRIVER_TYPE_UNKNOWN,
19 D3D_DRIVER_TYPE_HARDWARE,
20 D3D_DRIVER_TYPE_REFERENCE,
21 D3D_DRIVER_TYPE_NULL,
22 D3D_DRIVER_TYPE_SOFTWARE,
23 D3D_DRIVER_TYPE_WARP,
24} D3D_DRIVER_TYPE;
25
26typedef enum D3D_FEATURE_LEVEL
27{
28 D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
29 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
30 D3D_FEATURE_LEVEL_9_1 = 0x9100,
31 D3D_FEATURE_LEVEL_9_2 = 0x9200,
32 D3D_FEATURE_LEVEL_9_3 = 0x9300,
33 D3D_FEATURE_LEVEL_10_0 = 0xa000,
34 D3D_FEATURE_LEVEL_10_1 = 0xa100,
35 D3D_FEATURE_LEVEL_11_0 = 0xb000,
36 D3D_FEATURE_LEVEL_11_1 = 0xb100,
37 D3D_FEATURE_LEVEL_12_0 = 0xc000,
38 D3D_FEATURE_LEVEL_12_1 = 0xc100,
39 D3D_FEATURE_LEVEL_12_2 = 0xc200
40} D3D_FEATURE_LEVEL;
41
42cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048")
43cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096")
44cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048")
45cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096")
46cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512")
47cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096")
48cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256")
49cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2")
50cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535")
51cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575")
52cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1")
53cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4")
54cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128")
55cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048")
56cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192")
57
58typedef enum D3D_PRIMITIVE_TOPOLOGY
59{
60 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
61 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
62 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
63 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
64 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
65 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
66 D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
67 // Adjacency values should be equal to (0x8 & non-adjacency):
68 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
69 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
70 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
71 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
72 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
73 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
74 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
75 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
76 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
77 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
78 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
79 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
80 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
81 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
82 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
83 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
84 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
85 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
86 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
87 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
88 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
89 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
90 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
91 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
92 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
93 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
94 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
95 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
96 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
97 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
98 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
99 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
100 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
101 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
102 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
103 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
104
105 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
106 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
107 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
108 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
109 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
110 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
111 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
112 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
113 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
114 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
115
116 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
117 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
118 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
119 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
120 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
121 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
122 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
123 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
124 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
125 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
126 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
127 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
128 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
129 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
130 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
131 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
132 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
133 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
134 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
135 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
136 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
137 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
138 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
139 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
140 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
141 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
142 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
143 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
144 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
145 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
146 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
147 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
148 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
149 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
150 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
151 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
152 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
153 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
154 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
155 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
156 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
157 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
158} D3D_PRIMITIVE_TOPOLOGY;
159
160typedef enum D3D_PRIMITIVE
161{
162 D3D_PRIMITIVE_UNDEFINED = 0,
163 D3D_PRIMITIVE_POINT = 1,
164 D3D_PRIMITIVE_LINE = 2,
165 D3D_PRIMITIVE_TRIANGLE = 3,
166 // Adjacency values should be equal to (0x4 & non-adjacency):
167 D3D_PRIMITIVE_LINE_ADJ = 6,
168 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
169 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
170 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
171 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
172 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
173 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
174 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
175 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
176 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
177 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
178 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
179 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
180 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
181 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
182 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
183 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
184 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
185 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
186 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
187 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
188 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
189 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
190 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
191 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
192 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
193 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
194 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
195 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
196 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
197 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
198 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
199 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
200 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
201
202 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
203 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
204 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
205 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
206 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
207 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
208
209 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
210 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
211 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
212 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
213 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
214 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
215 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
216 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
217 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
218 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
219 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
220 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
221 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
222 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
223 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
224 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
225 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
226 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
227 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
228 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
229 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
230 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
231 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
232 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
233 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
234 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
235 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
236 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
237 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
238 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
239 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
240 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
241 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
242 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
243 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
244 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
245 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
246 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
247} D3D_PRIMITIVE;
248
249typedef enum D3D_SRV_DIMENSION
250{
251 D3D_SRV_DIMENSION_UNKNOWN = 0,
252 D3D_SRV_DIMENSION_BUFFER = 1,
253 D3D_SRV_DIMENSION_TEXTURE1D = 2,
254 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
255 D3D_SRV_DIMENSION_TEXTURE2D = 4,
256 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
257 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
258 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
259 D3D_SRV_DIMENSION_TEXTURE3D = 8,
260 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
261 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
262 D3D_SRV_DIMENSION_BUFFEREX = 11,
263
264 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
265 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
266 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
267 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
268 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
269 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
270 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
271 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
272 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
273 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
274
275 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
276 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
277 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
278 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
279 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
280 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
281 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
282 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
283 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
284 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
285 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
286
287 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
288 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
289 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
290 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
291 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
292 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
293 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
294 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
295 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
296 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
297 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
298 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
299} D3D_SRV_DIMENSION;
300
301// Bits in shaders indicating features they use which the runtime checks against current device support:
302cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES 0x00001")
303cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
304cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004")
305cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS 0x00008")
306cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010")
307cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020")
308cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040")
309cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080")
310cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100")
311cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200")
312cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400")
313cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800")
314cpp_quote("#define D3D_SHADER_FEATURE_ROVS 0x01000")
315cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
316cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000")
317cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS 0x08000")
318cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID 0x10000")
319cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000")
320cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000")
321cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000")
322cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000")
323cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000")
324cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000")
325cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000")
326cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000")
327cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000")
328cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000")
329cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000")
330cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000")
331cpp_quote("#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000")
332cpp_quote("#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000")
333cpp_quote("#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000")
334cpp_quote("#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull")
335
336// This section is for flags that do not directly indicate a required feature,
337// but are used to indicate something about the shader.
338
339// Flag for any derivative use. This allows call-graph validation
340// in the runtime to detect misuse of derivatives for an entry point that cannot
341// support it, or to determine when the flag
342// D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS is required.
343cpp_quote("#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull")
344
345cpp_quote("#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull")
346
347
348// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
349// When adding entries here, make sure they don't conflict with what's there.
350
351//----------------------------------------------------------------------------
352//
353// Shader compilation information.
354//
355//----------------------------------------------------------------------------
356
357//----------------------------------------------------------------------------
358// D3D_SHADER_MACRO:
359// ----------
360// Preprocessor macro definition. The application pass in a NULL-terminated
361// array of this structure to various D3D APIs. This enables the application
362// to #define tokens at runtime, before the file is parsed.
363//----------------------------------------------------------------------------
364
365typedef struct _D3D_SHADER_MACRO
366{
367 LPCSTR Name;
368 LPCSTR Definition;
369} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
370
371//----------------------------------------------------------------------------
372// ID3DBlob:
373// ------------
374// The buffer object is used by D3D to return arbitrary size data.
375// For compatibility with D3D10 this interface is also called ID3D10Blob,
376// but the version-neutral form is preferred.
377//
378// GetBufferPointer -
379// Returns a pointer to the beginning of the buffer.
380//
381// GetBufferSize -
382// Returns the size of the buffer, in bytes.
383//----------------------------------------------------------------------------
384
385// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
386cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
387
388[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
389interface ID3D10Blob : IUnknown
390{
391 LPVOID GetBufferPointer();
392 SIZE_T GetBufferSize();
393};
394
395cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
396
397typedef ID3D10Blob ID3DBlob;
398cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
399cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
400
401// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
402typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
403
404[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
405interface ID3DDestructionNotifier
406 : IUnknown
407{
408 HRESULT RegisterDestructionCallback(
409 [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
410 [annotation("_In_")] void* pData,
411 [annotation("_Out_")] UINT* pCallbackID
412 );
413 HRESULT UnregisterDestructionCallback(
414 [annotation("_In_")] UINT callbackID
415 );
416};
417
418typedef enum _D3D_INCLUDE_TYPE
419{
420 D3D_INCLUDE_LOCAL,
421 D3D_INCLUDE_SYSTEM,
422
423 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
424 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
425
426 // force 32-bit size enum
427 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
428} D3D_INCLUDE_TYPE;
429
430//----------------------------------------------------------------------------
431// ID3DInclude:
432// -------------
433// This interface is intended to be implemented by the application, and can
434// be used by various D3D APIs. This enables application-specific handling
435// of #include directives in source files.
436//
437// Open()
438// Opens an include file. If successful, it should fill in ppData and
439// pBytes. The data pointer returned must remain valid until Close is
440// subsequently called. The name of the file is encoded in UTF-8 format.
441// Close()
442// Closes an include file. If Open was successful, Close is guaranteed
443// to be called before the API using this interface returns.
444//----------------------------------------------------------------------------
445
446cpp_quote("typedef interface ID3DInclude ID3DInclude;")
447
448cpp_quote("#undef INTERFACE")
449cpp_quote("#define INTERFACE ID3DInclude")
450
451cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
452cpp_quote("{")
453cpp_quote(" STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
454cpp_quote(" STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
455cpp_quote("};")
456
457cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
458
459//----------------------------------------------------------------------------
460//
461// Shader reflection information.
462//
463//----------------------------------------------------------------------------
464
465typedef enum _D3D_SHADER_VARIABLE_CLASS
466{
467 D3D_SVC_SCALAR,
468 D3D_SVC_VECTOR,
469 D3D_SVC_MATRIX_ROWS,
470 D3D_SVC_MATRIX_COLUMNS,
471 D3D_SVC_OBJECT,
472 D3D_SVC_STRUCT,
473 D3D_SVC_INTERFACE_CLASS,
474 D3D_SVC_INTERFACE_POINTER,
475
476 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
477 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
478 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
479 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
480 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
481 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
482
483 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
484 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
485
486 // force 32-bit size enum
487 D3D_SVC_FORCE_DWORD = 0x7fffffff
488} D3D_SHADER_VARIABLE_CLASS;
489
490typedef enum _D3D_SHADER_VARIABLE_FLAGS
491{
492 D3D_SVF_USERPACKED = 1,
493 D3D_SVF_USED = 2,
494
495 D3D_SVF_INTERFACE_POINTER = 4,
496 D3D_SVF_INTERFACE_PARAMETER = 8,
497
498 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
499 D3D10_SVF_USED = D3D_SVF_USED,
500
501 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
502 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
503
504 // force 32-bit size enum
505 D3D_SVF_FORCE_DWORD = 0x7fffffff
506} D3D_SHADER_VARIABLE_FLAGS;
507
508typedef enum _D3D_SHADER_VARIABLE_TYPE
509{
510 D3D_SVT_VOID = 0,
511 D3D_SVT_BOOL = 1,
512 D3D_SVT_INT = 2,
513 D3D_SVT_FLOAT = 3,
514 D3D_SVT_STRING = 4,
515 D3D_SVT_TEXTURE = 5,
516 D3D_SVT_TEXTURE1D = 6,
517 D3D_SVT_TEXTURE2D = 7,
518 D3D_SVT_TEXTURE3D = 8,
519 D3D_SVT_TEXTURECUBE = 9,
520 D3D_SVT_SAMPLER = 10,
521 D3D_SVT_SAMPLER1D = 11,
522 D3D_SVT_SAMPLER2D = 12,
523 D3D_SVT_SAMPLER3D = 13,
524 D3D_SVT_SAMPLERCUBE = 14,
525 D3D_SVT_PIXELSHADER = 15,
526 D3D_SVT_VERTEXSHADER = 16,
527 D3D_SVT_PIXELFRAGMENT = 17,
528 D3D_SVT_VERTEXFRAGMENT = 18,
529 D3D_SVT_UINT = 19,
530 D3D_SVT_UINT8 = 20,
531 D3D_SVT_GEOMETRYSHADER = 21,
532 D3D_SVT_RASTERIZER = 22,
533 D3D_SVT_DEPTHSTENCIL = 23,
534 D3D_SVT_BLEND = 24,
535 D3D_SVT_BUFFER = 25,
536 D3D_SVT_CBUFFER = 26,
537 D3D_SVT_TBUFFER = 27,
538 D3D_SVT_TEXTURE1DARRAY = 28,
539 D3D_SVT_TEXTURE2DARRAY = 29,
540 D3D_SVT_RENDERTARGETVIEW = 30,
541 D3D_SVT_DEPTHSTENCILVIEW = 31,
542
543 D3D_SVT_TEXTURE2DMS = 32,
544 D3D_SVT_TEXTURE2DMSARRAY = 33,
545
546 D3D_SVT_TEXTURECUBEARRAY = 34,
547
548 D3D_SVT_HULLSHADER = 35,
549 D3D_SVT_DOMAINSHADER = 36,
550
551 D3D_SVT_INTERFACE_POINTER = 37,
552 D3D_SVT_COMPUTESHADER = 38,
553
554 D3D_SVT_DOUBLE = 39,
555
556 D3D_SVT_RWTEXTURE1D = 40,
557 D3D_SVT_RWTEXTURE1DARRAY = 41,
558 D3D_SVT_RWTEXTURE2D = 42,
559 D3D_SVT_RWTEXTURE2DARRAY = 43,
560 D3D_SVT_RWTEXTURE3D = 44,
561 D3D_SVT_RWBUFFER = 45,
562
563 D3D_SVT_BYTEADDRESS_BUFFER = 46,
564 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
565 D3D_SVT_STRUCTURED_BUFFER = 48,
566 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
567 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
568 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
569
570 D3D_SVT_MIN8FLOAT = 52,
571 D3D_SVT_MIN10FLOAT = 53,
572 D3D_SVT_MIN16FLOAT = 54,
573 D3D_SVT_MIN12INT = 55,
574 D3D_SVT_MIN16INT = 56,
575 D3D_SVT_MIN16UINT = 57,
576
577 D3D_SVT_INT16 = 58,
578 D3D_SVT_UINT16 = 59,
579 D3D_SVT_FLOAT16 = 60,
580 D3D_SVT_INT64 = 61,
581 D3D_SVT_UINT64 = 62,
582
583 D3D10_SVT_VOID = D3D_SVT_VOID,
584 D3D10_SVT_BOOL = D3D_SVT_BOOL,
585 D3D10_SVT_INT = D3D_SVT_INT,
586 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
587 D3D10_SVT_STRING = D3D_SVT_STRING,
588 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
589 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
590 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
591 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
592 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
593 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
594 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
595 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
596 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
597 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
598 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
599 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
600 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
601 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
602 D3D10_SVT_UINT = D3D_SVT_UINT,
603 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
604 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
605 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
606 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
607 D3D10_SVT_BLEND = D3D_SVT_BLEND,
608 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
609 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
610 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
611 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
612 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
613 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
614 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
615
616 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
617 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
618
619 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
620
621 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
622 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
623
624 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
625 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
626
627 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
628
629 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
630 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
631 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
632 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
633 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
634 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
635
636 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
637 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
638 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
639 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
640 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
641 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
642
643 // force 32-bit size enum
644 D3D_SVT_FORCE_DWORD = 0x7fffffff
645} D3D_SHADER_VARIABLE_TYPE;
646
647typedef enum _D3D_SHADER_INPUT_FLAGS
648{
649 D3D_SIF_USERPACKED = 0x01,
650 D3D_SIF_COMPARISON_SAMPLER = 0x02, // is this a comparison sampler?
651 D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
652 D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
653 D3D_SIF_TEXTURE_COMPONENTS = 0x0c,
654 D3D_SIF_UNUSED = 0x10,
655
656 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
657 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
658 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
659 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
660 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
661
662 // force 32-bit size enum
663 D3D_SIF_FORCE_DWORD = 0x7fffffff
664} D3D_SHADER_INPUT_FLAGS;
665
666typedef enum _D3D_SHADER_INPUT_TYPE
667{
668 D3D_SIT_CBUFFER,
669 D3D_SIT_TBUFFER,
670 D3D_SIT_TEXTURE,
671 D3D_SIT_SAMPLER,
672 D3D_SIT_UAV_RWTYPED,
673 D3D_SIT_STRUCTURED,
674 D3D_SIT_UAV_RWSTRUCTURED,
675 D3D_SIT_BYTEADDRESS,
676 D3D_SIT_UAV_RWBYTEADDRESS,
677 D3D_SIT_UAV_APPEND_STRUCTURED,
678 D3D_SIT_UAV_CONSUME_STRUCTURED,
679 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
680 D3D_SIT_RTACCELERATIONSTRUCTURE,
681 D3D_SIT_UAV_FEEDBACKTEXTURE,
682
683 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
684 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
685 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
686 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
687
688 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
689 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
690 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
691 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
692 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
693 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
694 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
695 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
696} D3D_SHADER_INPUT_TYPE;
697
698typedef enum _D3D_SHADER_CBUFFER_FLAGS
699{
700 D3D_CBF_USERPACKED = 1,
701
702 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
703
704 // force 32-bit size enum
705 D3D_CBF_FORCE_DWORD = 0x7fffffff
706} D3D_SHADER_CBUFFER_FLAGS;
707
708typedef enum _D3D_CBUFFER_TYPE
709{
710 D3D_CT_CBUFFER,
711 D3D_CT_TBUFFER,
712 D3D_CT_INTERFACE_POINTERS,
713 D3D_CT_RESOURCE_BIND_INFO,
714
715 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
716 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
717
718 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
719 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
720 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
721 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
722} D3D_CBUFFER_TYPE;
723
724typedef enum D3D_NAME
725{
726 D3D_NAME_UNDEFINED = 0,
727
728 // Names meaningful to both HLSL and hardware
729 D3D_NAME_POSITION = 1,
730 D3D_NAME_CLIP_DISTANCE = 2,
731 D3D_NAME_CULL_DISTANCE = 3,
732 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
733 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
734 D3D_NAME_VERTEX_ID = 6,
735 D3D_NAME_PRIMITIVE_ID = 7,
736 D3D_NAME_INSTANCE_ID = 8,
737 D3D_NAME_IS_FRONT_FACE = 9,
738 D3D_NAME_SAMPLE_INDEX = 10,
739 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
740 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
741 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
742 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
743 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
744 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
745 D3D_NAME_BARYCENTRICS = 23,
746 D3D_NAME_SHADINGRATE = 24,
747 D3D_NAME_CULLPRIMITIVE = 25,
748
749 // Names meaningful to HLSL only
750 D3D_NAME_TARGET = 64,
751 D3D_NAME_DEPTH = 65,
752 D3D_NAME_COVERAGE = 66,
753 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
754 D3D_NAME_DEPTH_LESS_EQUAL = 68,
755 D3D_NAME_STENCIL_REF = 69,
756 D3D_NAME_INNER_COVERAGE = 70,
757
758 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
759 D3D10_NAME_POSITION = D3D_NAME_POSITION,
760 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
761 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
762 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
763 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
764 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
765 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
766 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
767 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
768 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
769 D3D10_NAME_TARGET = D3D_NAME_TARGET,
770 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
771 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
772
773 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
774 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
775 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
776 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
777 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
778 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
779 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
780 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
781
782 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
783 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
784
785 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
786 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
787 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
788} D3D_NAME;
789
790typedef enum D3D_RESOURCE_RETURN_TYPE
791{
792 D3D_RETURN_TYPE_UNORM = 1,
793 D3D_RETURN_TYPE_SNORM = 2,
794 D3D_RETURN_TYPE_SINT = 3,
795 D3D_RETURN_TYPE_UINT = 4,
796 D3D_RETURN_TYPE_FLOAT = 5,
797 D3D_RETURN_TYPE_MIXED = 6,
798 D3D_RETURN_TYPE_DOUBLE = 7,
799 D3D_RETURN_TYPE_CONTINUED = 8,
800
801 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
802 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
803 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
804 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
805 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
806 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
807
808 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
809 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
810 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
811 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
812 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
813 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
814 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
815 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
816} D3D_RESOURCE_RETURN_TYPE;
817
818typedef enum D3D_REGISTER_COMPONENT_TYPE
819{
820 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
821 D3D_REGISTER_COMPONENT_UINT32 = 1,
822 D3D_REGISTER_COMPONENT_SINT32 = 2,
823 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
824 D3D_REGISTER_COMPONENT_UINT16 = 4,
825 D3D_REGISTER_COMPONENT_SINT16 = 5,
826 D3D_REGISTER_COMPONENT_FLOAT16 = 6,
827 D3D_REGISTER_COMPONENT_UINT64 = 7,
828 D3D_REGISTER_COMPONENT_SINT64 = 8,
829 D3D_REGISTER_COMPONENT_FLOAT64 = 9,
830
831 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
832 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
833 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
834 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
835 D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
836 D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
837 D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
838 D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
839 D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
840 D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64,
841} D3D_REGISTER_COMPONENT_TYPE;
842
843typedef enum D3D_TESSELLATOR_DOMAIN
844{
845 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
846 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
847 D3D_TESSELLATOR_DOMAIN_TRI = 2,
848 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
849
850 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
851 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
852 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
853 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
854} D3D_TESSELLATOR_DOMAIN;
855
856typedef enum D3D_TESSELLATOR_PARTITIONING
857{
858 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
859 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
860 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
861 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
862 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
863
864 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
865 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
866 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
867 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
868 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
869} D3D_TESSELLATOR_PARTITIONING;
870
871typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
872{
873 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
874 D3D_TESSELLATOR_OUTPUT_POINT = 1,
875 D3D_TESSELLATOR_OUTPUT_LINE = 2,
876 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
877 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
878
879 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
880 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
881 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
882 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
883 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
884} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
885
886typedef enum D3D_MIN_PRECISION
887{
888 D3D_MIN_PRECISION_DEFAULT = 0, // Default precision for the shader model
889 D3D_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
890 D3D_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
891 D3D_MIN_PRECISION_RESERVED = 3, // Reserved for future use
892 D3D_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
893 D3D_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
894
895 // These values are abstractions of width only for use in situations
896 // where a general width is needed instead of specific types. They
897 // will never be used in shader operands.
898 D3D_MIN_PRECISION_ANY_16 = 0xf0,
899 D3D_MIN_PRECISION_ANY_10 = 0xf1,
900} D3D_MIN_PRECISION;
901
902typedef enum D3D_INTERPOLATION_MODE
903{
904 D3D_INTERPOLATION_UNDEFINED = 0,
905 D3D_INTERPOLATION_CONSTANT = 1,
906 D3D_INTERPOLATION_LINEAR = 2,
907 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
908 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
909 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
910 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
911 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
912} D3D_INTERPOLATION_MODE;
913
914// Parameter flags.
915typedef enum _D3D_PARAMETER_FLAGS
916{
917 D3D_PF_NONE = 0x00000000,
918 D3D_PF_IN = 0x00000001,
919 D3D_PF_OUT = 0x00000002,
920 D3D_PF_FORCE_DWORD = 0x7fffffff
921} D3D_PARAMETER_FLAGS;
922
923// Format Layout Properties
924typedef enum D3D_FORMAT_LAYOUT
925{
926 D3DFL_STANDARD = 0, // standard layout
927 D3DFL_CUSTOM = -1 // custom layout
928 // Note, 1 bit allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
929 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
930} D3D_FORMAT_LAYOUT;
931
932typedef enum D3D_FORMAT_TYPE_LEVEL
933{
934 D3DFTL_NO_TYPE = 0,
935 D3DFTL_PARTIAL_TYPE = -2,
936 D3DFTL_FULL_TYPE = -1,
937 // Note, 2 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
938 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
939} D3D_FORMAT_TYPE_LEVEL;
940
941typedef enum D3D_FORMAT_COMPONENT_NAME
942{
943 D3DFCN_R = -4,
944 D3DFCN_G = -3,
945 D3DFCN_B = -2,
946 D3DFCN_A = -1,
947 D3DFCN_D = 0,
948 D3DFCN_S = 1,
949 D3DFCN_X = 2,
950 // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
951 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
952} D3D_FORMAT_COMPONENT_NAME;
953
954typedef enum D3D_FORMAT_COMPONENT_INTERPRETATION
955{
956 D3DFCI_TYPELESS = 0,
957 D3DFCI_FLOAT = -4,
958 D3DFCI_SNORM = -3,
959 D3DFCI_UNORM = -2,
960 D3DFCI_SINT = -1,
961 D3DFCI_UINT = 1,
962 D3DFCI_UNORM_SRGB = 2,
963 D3DFCI_BIASED_FIXED_2_8 = 3,
964 // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
965 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
966} D3D_FORMAT_COMPONENT_INTERPRETATION;
967
968// Well-Known Private Data IDs (WKPDID_*):
969
970// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
971//
972// const char c_szName[] = "texture.jpg";
973// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
974cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
975cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
976cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
977cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
978
979cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
980cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
981cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
982cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
983
984cpp_quote("#define D3D_COMPONENT_MASK_X 1")
985cpp_quote("#define D3D_COMPONENT_MASK_Y 2")
986cpp_quote("#define D3D_COMPONENT_MASK_Z 4")
987cpp_quote("#define D3D_COMPONENT_MASK_W 8")
988
989cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
990cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
991
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.h
new file mode 100644
index 0000000..671866a
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.h
@@ -0,0 +1,998 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3dshadercacheregistration_h__
39#define __d3dshadercacheregistration_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3DShaderCacheInstallerClient_FWD_DEFINED__
56#define __ID3DShaderCacheInstallerClient_FWD_DEFINED__
57typedef interface ID3DShaderCacheInstallerClient ID3DShaderCacheInstallerClient;
58
59#endif /* __ID3DShaderCacheInstallerClient_FWD_DEFINED__ */
60
61
62#ifndef __ID3DShaderCacheComponent_FWD_DEFINED__
63#define __ID3DShaderCacheComponent_FWD_DEFINED__
64typedef interface ID3DShaderCacheComponent ID3DShaderCacheComponent;
65
66#endif /* __ID3DShaderCacheComponent_FWD_DEFINED__ */
67
68
69#ifndef __ID3DShaderCacheApplication_FWD_DEFINED__
70#define __ID3DShaderCacheApplication_FWD_DEFINED__
71typedef interface ID3DShaderCacheApplication ID3DShaderCacheApplication;
72
73#endif /* __ID3DShaderCacheApplication_FWD_DEFINED__ */
74
75
76#ifndef __ID3DShaderCacheInstaller_FWD_DEFINED__
77#define __ID3DShaderCacheInstaller_FWD_DEFINED__
78typedef interface ID3DShaderCacheInstaller ID3DShaderCacheInstaller;
79
80#endif /* __ID3DShaderCacheInstaller_FWD_DEFINED__ */
81
82
83#ifndef __ID3DShaderCacheExplorer_FWD_DEFINED__
84#define __ID3DShaderCacheExplorer_FWD_DEFINED__
85typedef interface ID3DShaderCacheExplorer ID3DShaderCacheExplorer;
86
87#endif /* __ID3DShaderCacheExplorer_FWD_DEFINED__ */
88
89
90#ifndef __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
91#define __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
92typedef interface ID3DShaderCacheInstallerFactory ID3DShaderCacheInstallerFactory;
93
94#endif /* __ID3DShaderCacheInstallerFactory_FWD_DEFINED__ */
95
96
97/* header files for imported files */
98#include "oaidl.h"
99#include "ocidl.h"
100
101#ifdef __cplusplus
102extern "C"{
103#endif
104
105
106/* interface __MIDL_itf_d3dshadercacheregistration_0000_0000 */
107/* [local] */
108
109#pragma once
110DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);
111typedef
112enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
113 {
114 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER = 0,
115 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM = ( D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER + 1 )
116 } D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
117
118
119
120
121extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_c_ifspec;
122extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_s_ifspec;
123
124#ifndef __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
125#define __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
126
127/* interface ID3DShaderCacheInstallerClient */
128/* [unique][local][object][uuid] */
129
130
131EXTERN_C const IID IID_ID3DShaderCacheInstallerClient;
132
133#if defined(__cplusplus) && !defined(CINTERFACE)
134
135 MIDL_INTERFACE("a16ee930-d9f6-4222-a514-244473e5d266")
136 ID3DShaderCacheInstallerClient
137 {
138 public:
139 BEGIN_INTERFACE
140 virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
141 _Inout_ SIZE_T *pNameLength,
142 _Out_writes_opt_(*pNameLength) wchar_t *pName) = 0;
143
144 virtual D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE STDMETHODCALLTYPE GetInstallerScope( void) = 0;
145
146 virtual HRESULT STDMETHODCALLTYPE HandleDriverUpdate(
147 _In_ ID3DShaderCacheInstaller *pInstaller) = 0;
148
149 END_INTERFACE
150 };
151
152
153#else /* C style interface */
154
155 typedef struct ID3DShaderCacheInstallerClientVtbl
156 {
157 BEGIN_INTERFACE
158
159 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerName)
160 HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
161 ID3DShaderCacheInstallerClient * This,
162 _Inout_ SIZE_T *pNameLength,
163 _Out_writes_opt_(*pNameLength) wchar_t *pName);
164
165 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerScope)
166 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE ( STDMETHODCALLTYPE *GetInstallerScope )(
167 ID3DShaderCacheInstallerClient * This);
168
169 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, HandleDriverUpdate)
170 HRESULT ( STDMETHODCALLTYPE *HandleDriverUpdate )(
171 ID3DShaderCacheInstallerClient * This,
172 _In_ ID3DShaderCacheInstaller *pInstaller);
173
174 END_INTERFACE
175 } ID3DShaderCacheInstallerClientVtbl;
176
177 interface ID3DShaderCacheInstallerClient
178 {
179 CONST_VTBL struct ID3DShaderCacheInstallerClientVtbl *lpVtbl;
180 };
181
182
183
184#ifdef COBJMACROS
185
186
187#define ID3DShaderCacheInstallerClient_GetInstallerName(This,pNameLength,pName) \
188 ( (This)->lpVtbl -> GetInstallerName(This,pNameLength,pName) )
189
190#define ID3DShaderCacheInstallerClient_GetInstallerScope(This) \
191 ( (This)->lpVtbl -> GetInstallerScope(This) )
192
193#define ID3DShaderCacheInstallerClient_HandleDriverUpdate(This,pInstaller) \
194 ( (This)->lpVtbl -> HandleDriverUpdate(This,pInstaller) )
195
196#endif /* COBJMACROS */
197
198
199#endif /* C style interface */
200
201
202
203
204#endif /* __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__ */
205
206
207/* interface __MIDL_itf_d3dshadercacheregistration_0000_0001 */
208/* [local] */
209
210typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
211 {
212 const wchar_t *pAdapterFamily;
213 const wchar_t *pPsdbPath;
214 } D3D_SHADER_CACHE_PSDB_PROPERTIES;
215
216
217
218extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_c_ifspec;
219extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_s_ifspec;
220
221#ifndef __ID3DShaderCacheComponent_INTERFACE_DEFINED__
222#define __ID3DShaderCacheComponent_INTERFACE_DEFINED__
223
224/* interface ID3DShaderCacheComponent */
225/* [unique][local][object][uuid] */
226
227
228EXTERN_C const IID IID_ID3DShaderCacheComponent;
229
230#if defined(__cplusplus) && !defined(CINTERFACE)
231
232 MIDL_INTERFACE("eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828")
233 ID3DShaderCacheComponent : public IUnknown
234 {
235 public:
236 virtual HRESULT STDMETHODCALLTYPE GetComponentName(
237 _Out_ const wchar_t **pName) = 0;
238
239 virtual HRESULT STDMETHODCALLTYPE GetStateObjectDatabasePath(
240 _Out_ const wchar_t **pPath) = 0;
241
242 virtual HRESULT STDMETHODCALLTYPE GetPrecompiledCachePath(
243 _In_ const wchar_t *pAdapterFamily,
244 _Inout_ const wchar_t **pPath) = 0;
245
246 virtual UINT STDMETHODCALLTYPE GetPrecompiledShaderDatabaseCount( void) = 0;
247
248 virtual HRESULT STDMETHODCALLTYPE GetPrecompiledShaderDatabases(
249 UINT ArraySize,
250 _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs) = 0;
251
252 };
253
254
255#else /* C style interface */
256
257 typedef struct ID3DShaderCacheComponentVtbl
258 {
259 BEGIN_INTERFACE
260
261 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
262 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
263 ID3DShaderCacheComponent * This,
264 REFIID riid,
265 _COM_Outptr_ void **ppvObject);
266
267 DECLSPEC_XFGVIRT(IUnknown, AddRef)
268 ULONG ( STDMETHODCALLTYPE *AddRef )(
269 ID3DShaderCacheComponent * This);
270
271 DECLSPEC_XFGVIRT(IUnknown, Release)
272 ULONG ( STDMETHODCALLTYPE *Release )(
273 ID3DShaderCacheComponent * This);
274
275 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetComponentName)
276 HRESULT ( STDMETHODCALLTYPE *GetComponentName )(
277 ID3DShaderCacheComponent * This,
278 _Out_ const wchar_t **pName);
279
280 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetStateObjectDatabasePath)
281 HRESULT ( STDMETHODCALLTYPE *GetStateObjectDatabasePath )(
282 ID3DShaderCacheComponent * This,
283 _Out_ const wchar_t **pPath);
284
285 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledCachePath)
286 HRESULT ( STDMETHODCALLTYPE *GetPrecompiledCachePath )(
287 ID3DShaderCacheComponent * This,
288 _In_ const wchar_t *pAdapterFamily,
289 _Inout_ const wchar_t **pPath);
290
291 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabaseCount)
292 UINT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabaseCount )(
293 ID3DShaderCacheComponent * This);
294
295 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabases)
296 HRESULT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabases )(
297 ID3DShaderCacheComponent * This,
298 UINT ArraySize,
299 _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs);
300
301 END_INTERFACE
302 } ID3DShaderCacheComponentVtbl;
303
304 interface ID3DShaderCacheComponent
305 {
306 CONST_VTBL struct ID3DShaderCacheComponentVtbl *lpVtbl;
307 };
308
309
310
311#ifdef COBJMACROS
312
313
314#define ID3DShaderCacheComponent_QueryInterface(This,riid,ppvObject) \
315 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
316
317#define ID3DShaderCacheComponent_AddRef(This) \
318 ( (This)->lpVtbl -> AddRef(This) )
319
320#define ID3DShaderCacheComponent_Release(This) \
321 ( (This)->lpVtbl -> Release(This) )
322
323
324#define ID3DShaderCacheComponent_GetComponentName(This,pName) \
325 ( (This)->lpVtbl -> GetComponentName(This,pName) )
326
327#define ID3DShaderCacheComponent_GetStateObjectDatabasePath(This,pPath) \
328 ( (This)->lpVtbl -> GetStateObjectDatabasePath(This,pPath) )
329
330#define ID3DShaderCacheComponent_GetPrecompiledCachePath(This,pAdapterFamily,pPath) \
331 ( (This)->lpVtbl -> GetPrecompiledCachePath(This,pAdapterFamily,pPath) )
332
333#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabaseCount(This) \
334 ( (This)->lpVtbl -> GetPrecompiledShaderDatabaseCount(This) )
335
336#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) \
337 ( (This)->lpVtbl -> GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) )
338
339#endif /* COBJMACROS */
340
341
342#endif /* C style interface */
343
344
345
346
347#endif /* __ID3DShaderCacheComponent_INTERFACE_DEFINED__ */
348
349
350/* interface __MIDL_itf_d3dshadercacheregistration_0000_0002 */
351/* [local] */
352
353typedef
354enum D3D_SHADER_CACHE_TARGET_FLAGS
355 {
356 D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0
357 } D3D_SHADER_CACHE_TARGET_FLAGS;
358
359DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )
360typedef union D3D_VERSION_NUMBER
361 {
362 UINT64 Version;
363 UINT16 VersionParts[ 4 ];
364 } D3D_VERSION_NUMBER;
365
366typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
367 {
368 wchar_t szAdapterFamily[ 128 ];
369 UINT64 MinimumABISupportVersion;
370 UINT64 MaximumABISupportVersion;
371 D3D_VERSION_NUMBER CompilerVersion;
372 D3D_VERSION_NUMBER ApplicationProfileVersion;
373 } D3D_SHADER_CACHE_COMPILER_PROPERTIES;
374
375typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
376 {
377 const wchar_t *pExeFilename;
378 const wchar_t *pName;
379 D3D_VERSION_NUMBER Version;
380 const wchar_t *pEngineName;
381 D3D_VERSION_NUMBER EngineVersion;
382 } D3D_SHADER_CACHE_APPLICATION_DESC;
383
384
385
386extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_c_ifspec;
387extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_s_ifspec;
388
389#ifndef __ID3DShaderCacheApplication_INTERFACE_DEFINED__
390#define __ID3DShaderCacheApplication_INTERFACE_DEFINED__
391
392/* interface ID3DShaderCacheApplication */
393/* [unique][local][object][uuid] */
394
395
396EXTERN_C const IID IID_ID3DShaderCacheApplication;
397
398#if defined(__cplusplus) && !defined(CINTERFACE)
399
400 MIDL_INTERFACE("fc688ee2-1b35-4913-93be-1ca3fa7df39e")
401 ID3DShaderCacheApplication : public IUnknown
402 {
403 public:
404 virtual HRESULT STDMETHODCALLTYPE GetExePath(
405 _Out_ const wchar_t **pExePath) = 0;
406
407 virtual HRESULT STDMETHODCALLTYPE GetDesc(
408 _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc) = 0;
409
410 virtual HRESULT STDMETHODCALLTYPE RegisterComponent(
411 _In_ const wchar_t *pName,
412 _In_ const wchar_t *pStateObjectDBPath,
413 _In_ UINT NumPSDB,
414 _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
415 REFIID riid,
416 _COM_Outptr_ void **ppvComponent) = 0;
417
418 virtual HRESULT STDMETHODCALLTYPE RemoveComponent(
419 _In_ ID3DShaderCacheComponent *pComponent) = 0;
420
421 virtual UINT STDMETHODCALLTYPE GetComponentCount( void) = 0;
422
423 virtual HRESULT STDMETHODCALLTYPE GetComponent(
424 _In_ UINT index,
425 REFIID riid,
426 _COM_Outptr_ void **ppvComponent) = 0;
427
428 virtual UINT STDMETHODCALLTYPE GetPrecompileTargetCount(
429 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
430
431 virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
432 _In_ UINT ArraySize,
433 _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
434 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
435
436 virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
437 _Out_ const wchar_t **pInstallerName) = 0;
438
439 };
440
441
442#else /* C style interface */
443
444 typedef struct ID3DShaderCacheApplicationVtbl
445 {
446 BEGIN_INTERFACE
447
448 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
449 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
450 ID3DShaderCacheApplication * This,
451 REFIID riid,
452 _COM_Outptr_ void **ppvObject);
453
454 DECLSPEC_XFGVIRT(IUnknown, AddRef)
455 ULONG ( STDMETHODCALLTYPE *AddRef )(
456 ID3DShaderCacheApplication * This);
457
458 DECLSPEC_XFGVIRT(IUnknown, Release)
459 ULONG ( STDMETHODCALLTYPE *Release )(
460 ID3DShaderCacheApplication * This);
461
462 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetExePath)
463 HRESULT ( STDMETHODCALLTYPE *GetExePath )(
464 ID3DShaderCacheApplication * This,
465 _Out_ const wchar_t **pExePath);
466
467 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetDesc)
468 HRESULT ( STDMETHODCALLTYPE *GetDesc )(
469 ID3DShaderCacheApplication * This,
470 _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc);
471
472 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RegisterComponent)
473 HRESULT ( STDMETHODCALLTYPE *RegisterComponent )(
474 ID3DShaderCacheApplication * This,
475 _In_ const wchar_t *pName,
476 _In_ const wchar_t *pStateObjectDBPath,
477 _In_ UINT NumPSDB,
478 _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
479 REFIID riid,
480 _COM_Outptr_ void **ppvComponent);
481
482 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RemoveComponent)
483 HRESULT ( STDMETHODCALLTYPE *RemoveComponent )(
484 ID3DShaderCacheApplication * This,
485 _In_ ID3DShaderCacheComponent *pComponent);
486
487 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponentCount)
488 UINT ( STDMETHODCALLTYPE *GetComponentCount )(
489 ID3DShaderCacheApplication * This);
490
491 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponent)
492 HRESULT ( STDMETHODCALLTYPE *GetComponent )(
493 ID3DShaderCacheApplication * This,
494 _In_ UINT index,
495 REFIID riid,
496 _COM_Outptr_ void **ppvComponent);
497
498 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargetCount)
499 UINT ( STDMETHODCALLTYPE *GetPrecompileTargetCount )(
500 ID3DShaderCacheApplication * This,
501 D3D_SHADER_CACHE_TARGET_FLAGS flags);
502
503 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargets)
504 HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
505 ID3DShaderCacheApplication * This,
506 _In_ UINT ArraySize,
507 _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
508 D3D_SHADER_CACHE_TARGET_FLAGS flags);
509
510 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetInstallerName)
511 HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
512 ID3DShaderCacheApplication * This,
513 _Out_ const wchar_t **pInstallerName);
514
515 END_INTERFACE
516 } ID3DShaderCacheApplicationVtbl;
517
518 interface ID3DShaderCacheApplication
519 {
520 CONST_VTBL struct ID3DShaderCacheApplicationVtbl *lpVtbl;
521 };
522
523
524
525#ifdef COBJMACROS
526
527
528#define ID3DShaderCacheApplication_QueryInterface(This,riid,ppvObject) \
529 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
530
531#define ID3DShaderCacheApplication_AddRef(This) \
532 ( (This)->lpVtbl -> AddRef(This) )
533
534#define ID3DShaderCacheApplication_Release(This) \
535 ( (This)->lpVtbl -> Release(This) )
536
537
538#define ID3DShaderCacheApplication_GetExePath(This,pExePath) \
539 ( (This)->lpVtbl -> GetExePath(This,pExePath) )
540
541#define ID3DShaderCacheApplication_GetDesc(This,pApplicationDesc) \
542 ( (This)->lpVtbl -> GetDesc(This,pApplicationDesc) )
543
544#define ID3DShaderCacheApplication_RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) \
545 ( (This)->lpVtbl -> RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) )
546
547#define ID3DShaderCacheApplication_RemoveComponent(This,pComponent) \
548 ( (This)->lpVtbl -> RemoveComponent(This,pComponent) )
549
550#define ID3DShaderCacheApplication_GetComponentCount(This) \
551 ( (This)->lpVtbl -> GetComponentCount(This) )
552
553#define ID3DShaderCacheApplication_GetComponent(This,index,riid,ppvComponent) \
554 ( (This)->lpVtbl -> GetComponent(This,index,riid,ppvComponent) )
555
556#define ID3DShaderCacheApplication_GetPrecompileTargetCount(This,flags) \
557 ( (This)->lpVtbl -> GetPrecompileTargetCount(This,flags) )
558
559#define ID3DShaderCacheApplication_GetPrecompileTargets(This,ArraySize,pArray,flags) \
560 ( (This)->lpVtbl -> GetPrecompileTargets(This,ArraySize,pArray,flags) )
561
562#define ID3DShaderCacheApplication_GetInstallerName(This,pInstallerName) \
563 ( (This)->lpVtbl -> GetInstallerName(This,pInstallerName) )
564
565#endif /* COBJMACROS */
566
567
568#endif /* C style interface */
569
570
571
572
573#endif /* __ID3DShaderCacheApplication_INTERFACE_DEFINED__ */
574
575
576/* interface __MIDL_itf_d3dshadercacheregistration_0000_0003 */
577/* [local] */
578
579typedef struct SC_HANDLE__ *SC_HANDLE;
580
581
582
583extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_c_ifspec;
584extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_s_ifspec;
585
586#ifndef __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
587#define __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
588
589/* interface ID3DShaderCacheInstaller */
590/* [unique][local][object][uuid] */
591
592
593EXTERN_C const IID IID_ID3DShaderCacheInstaller;
594
595#if defined(__cplusplus) && !defined(CINTERFACE)
596
597 MIDL_INTERFACE("bbe30de1-6318-4526-ae17-776693191bb4")
598 ID3DShaderCacheInstaller : public IUnknown
599 {
600 public:
601 virtual HRESULT STDMETHODCALLTYPE RegisterDriverUpdateListener( void) = 0;
602
603 virtual HRESULT STDMETHODCALLTYPE UnregisterDriverUpdateListener( void) = 0;
604
605 virtual HRESULT STDMETHODCALLTYPE RegisterServiceDriverUpdateTrigger(
606 SC_HANDLE hServiceHandle) = 0;
607
608 virtual HRESULT STDMETHODCALLTYPE UnregisterServiceDriverUpdateTrigger(
609 SC_HANDLE hServiceHandle) = 0;
610
611 virtual HRESULT STDMETHODCALLTYPE RegisterApplication(
612 _In_ const wchar_t *pExePath,
613 _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
614 REFIID riid,
615 _COM_Outptr_ void **ppvApp) = 0;
616
617 virtual HRESULT STDMETHODCALLTYPE RemoveApplication(
618 _In_ ID3DShaderCacheApplication *pApplication) = 0;
619
620 virtual UINT STDMETHODCALLTYPE GetApplicationCount( void) = 0;
621
622 virtual HRESULT STDMETHODCALLTYPE GetApplication(
623 _In_ UINT index,
624 REFIID riid,
625 _COM_Outptr_ void **ppvApp) = 0;
626
627 virtual HRESULT STDMETHODCALLTYPE ClearAllState( void) = 0;
628
629 virtual UINT STDMETHODCALLTYPE GetMaxPrecompileTargetCount( void) = 0;
630
631 virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
632 _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
633 _Inout_ UINT *pArraySize,
634 _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
635 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
636
637 };
638
639
640#else /* C style interface */
641
642 typedef struct ID3DShaderCacheInstallerVtbl
643 {
644 BEGIN_INTERFACE
645
646 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
647 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
648 ID3DShaderCacheInstaller * This,
649 REFIID riid,
650 _COM_Outptr_ void **ppvObject);
651
652 DECLSPEC_XFGVIRT(IUnknown, AddRef)
653 ULONG ( STDMETHODCALLTYPE *AddRef )(
654 ID3DShaderCacheInstaller * This);
655
656 DECLSPEC_XFGVIRT(IUnknown, Release)
657 ULONG ( STDMETHODCALLTYPE *Release )(
658 ID3DShaderCacheInstaller * This);
659
660 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterDriverUpdateListener)
661 HRESULT ( STDMETHODCALLTYPE *RegisterDriverUpdateListener )(
662 ID3DShaderCacheInstaller * This);
663
664 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterDriverUpdateListener)
665 HRESULT ( STDMETHODCALLTYPE *UnregisterDriverUpdateListener )(
666 ID3DShaderCacheInstaller * This);
667
668 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterServiceDriverUpdateTrigger)
669 HRESULT ( STDMETHODCALLTYPE *RegisterServiceDriverUpdateTrigger )(
670 ID3DShaderCacheInstaller * This,
671 SC_HANDLE hServiceHandle);
672
673 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterServiceDriverUpdateTrigger)
674 HRESULT ( STDMETHODCALLTYPE *UnregisterServiceDriverUpdateTrigger )(
675 ID3DShaderCacheInstaller * This,
676 SC_HANDLE hServiceHandle);
677
678 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterApplication)
679 HRESULT ( STDMETHODCALLTYPE *RegisterApplication )(
680 ID3DShaderCacheInstaller * This,
681 _In_ const wchar_t *pExePath,
682 _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
683 REFIID riid,
684 _COM_Outptr_ void **ppvApp);
685
686 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RemoveApplication)
687 HRESULT ( STDMETHODCALLTYPE *RemoveApplication )(
688 ID3DShaderCacheInstaller * This,
689 _In_ ID3DShaderCacheApplication *pApplication);
690
691 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplicationCount)
692 UINT ( STDMETHODCALLTYPE *GetApplicationCount )(
693 ID3DShaderCacheInstaller * This);
694
695 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplication)
696 HRESULT ( STDMETHODCALLTYPE *GetApplication )(
697 ID3DShaderCacheInstaller * This,
698 _In_ UINT index,
699 REFIID riid,
700 _COM_Outptr_ void **ppvApp);
701
702 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, ClearAllState)
703 HRESULT ( STDMETHODCALLTYPE *ClearAllState )(
704 ID3DShaderCacheInstaller * This);
705
706 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetMaxPrecompileTargetCount)
707 UINT ( STDMETHODCALLTYPE *GetMaxPrecompileTargetCount )(
708 ID3DShaderCacheInstaller * This);
709
710 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetPrecompileTargets)
711 HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
712 ID3DShaderCacheInstaller * This,
713 _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
714 _Inout_ UINT *pArraySize,
715 _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
716 D3D_SHADER_CACHE_TARGET_FLAGS flags);
717
718 END_INTERFACE
719 } ID3DShaderCacheInstallerVtbl;
720
721 interface ID3DShaderCacheInstaller
722 {
723 CONST_VTBL struct ID3DShaderCacheInstallerVtbl *lpVtbl;
724 };
725
726
727
728#ifdef COBJMACROS
729
730
731#define ID3DShaderCacheInstaller_QueryInterface(This,riid,ppvObject) \
732 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
733
734#define ID3DShaderCacheInstaller_AddRef(This) \
735 ( (This)->lpVtbl -> AddRef(This) )
736
737#define ID3DShaderCacheInstaller_Release(This) \
738 ( (This)->lpVtbl -> Release(This) )
739
740
741#define ID3DShaderCacheInstaller_RegisterDriverUpdateListener(This) \
742 ( (This)->lpVtbl -> RegisterDriverUpdateListener(This) )
743
744#define ID3DShaderCacheInstaller_UnregisterDriverUpdateListener(This) \
745 ( (This)->lpVtbl -> UnregisterDriverUpdateListener(This) )
746
747#define ID3DShaderCacheInstaller_RegisterServiceDriverUpdateTrigger(This,hServiceHandle) \
748 ( (This)->lpVtbl -> RegisterServiceDriverUpdateTrigger(This,hServiceHandle) )
749
750#define ID3DShaderCacheInstaller_UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) \
751 ( (This)->lpVtbl -> UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) )
752
753#define ID3DShaderCacheInstaller_RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) \
754 ( (This)->lpVtbl -> RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) )
755
756#define ID3DShaderCacheInstaller_RemoveApplication(This,pApplication) \
757 ( (This)->lpVtbl -> RemoveApplication(This,pApplication) )
758
759#define ID3DShaderCacheInstaller_GetApplicationCount(This) \
760 ( (This)->lpVtbl -> GetApplicationCount(This) )
761
762#define ID3DShaderCacheInstaller_GetApplication(This,index,riid,ppvApp) \
763 ( (This)->lpVtbl -> GetApplication(This,index,riid,ppvApp) )
764
765#define ID3DShaderCacheInstaller_ClearAllState(This) \
766 ( (This)->lpVtbl -> ClearAllState(This) )
767
768#define ID3DShaderCacheInstaller_GetMaxPrecompileTargetCount(This) \
769 ( (This)->lpVtbl -> GetMaxPrecompileTargetCount(This) )
770
771#define ID3DShaderCacheInstaller_GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) \
772 ( (This)->lpVtbl -> GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) )
773
774#endif /* COBJMACROS */
775
776
777#endif /* C style interface */
778
779
780
781
782#endif /* __ID3DShaderCacheInstaller_INTERFACE_DEFINED__ */
783
784
785#ifndef __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
786#define __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
787
788/* interface ID3DShaderCacheExplorer */
789/* [unique][local][object][uuid] */
790
791
792EXTERN_C const IID IID_ID3DShaderCacheExplorer;
793
794#if defined(__cplusplus) && !defined(CINTERFACE)
795
796 MIDL_INTERFACE("90432322-32f5-487f-9264-e9390fa58b2a")
797 ID3DShaderCacheExplorer : public IUnknown
798 {
799 public:
800 virtual HRESULT STDMETHODCALLTYPE GetApplicationFromExePath(
801 _In_ const wchar_t *pFullExePath,
802 REFIID riid,
803 _COM_Outptr_ void **ppvApp) = 0;
804
805 };
806
807
808#else /* C style interface */
809
810 typedef struct ID3DShaderCacheExplorerVtbl
811 {
812 BEGIN_INTERFACE
813
814 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
815 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
816 ID3DShaderCacheExplorer * This,
817 REFIID riid,
818 _COM_Outptr_ void **ppvObject);
819
820 DECLSPEC_XFGVIRT(IUnknown, AddRef)
821 ULONG ( STDMETHODCALLTYPE *AddRef )(
822 ID3DShaderCacheExplorer * This);
823
824 DECLSPEC_XFGVIRT(IUnknown, Release)
825 ULONG ( STDMETHODCALLTYPE *Release )(
826 ID3DShaderCacheExplorer * This);
827
828 DECLSPEC_XFGVIRT(ID3DShaderCacheExplorer, GetApplicationFromExePath)
829 HRESULT ( STDMETHODCALLTYPE *GetApplicationFromExePath )(
830 ID3DShaderCacheExplorer * This,
831 _In_ const wchar_t *pFullExePath,
832 REFIID riid,
833 _COM_Outptr_ void **ppvApp);
834
835 END_INTERFACE
836 } ID3DShaderCacheExplorerVtbl;
837
838 interface ID3DShaderCacheExplorer
839 {
840 CONST_VTBL struct ID3DShaderCacheExplorerVtbl *lpVtbl;
841 };
842
843
844
845#ifdef COBJMACROS
846
847
848#define ID3DShaderCacheExplorer_QueryInterface(This,riid,ppvObject) \
849 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
850
851#define ID3DShaderCacheExplorer_AddRef(This) \
852 ( (This)->lpVtbl -> AddRef(This) )
853
854#define ID3DShaderCacheExplorer_Release(This) \
855 ( (This)->lpVtbl -> Release(This) )
856
857
858#define ID3DShaderCacheExplorer_GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) \
859 ( (This)->lpVtbl -> GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) )
860
861#endif /* COBJMACROS */
862
863
864#endif /* C style interface */
865
866
867
868
869#endif /* __ID3DShaderCacheExplorer_INTERFACE_DEFINED__ */
870
871
872#ifndef __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
873#define __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
874
875/* interface ID3DShaderCacheInstallerFactory */
876/* [unique][local][object][uuid] */
877
878
879EXTERN_C const IID IID_ID3DShaderCacheInstallerFactory;
880
881#if defined(__cplusplus) && !defined(CINTERFACE)
882
883 MIDL_INTERFACE("09b2dfe4-840f-401a-804c-0dd8aadc9e9f")
884 ID3DShaderCacheInstallerFactory : public IUnknown
885 {
886 public:
887 virtual HRESULT STDMETHODCALLTYPE CreateInstaller(
888 _In_ ID3DShaderCacheInstallerClient *pClient,
889 REFIID riid,
890 _COM_Outptr_ void **ppvInstaller) = 0;
891
892 virtual HRESULT STDMETHODCALLTYPE CreateExplorer(
893 IUnknown *pUnknown,
894 REFIID riid,
895 _COM_Outptr_ void **ppvExplorer) = 0;
896
897 };
898
899
900#else /* C style interface */
901
902 typedef struct ID3DShaderCacheInstallerFactoryVtbl
903 {
904 BEGIN_INTERFACE
905
906 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
907 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
908 ID3DShaderCacheInstallerFactory * This,
909 REFIID riid,
910 _COM_Outptr_ void **ppvObject);
911
912 DECLSPEC_XFGVIRT(IUnknown, AddRef)
913 ULONG ( STDMETHODCALLTYPE *AddRef )(
914 ID3DShaderCacheInstallerFactory * This);
915
916 DECLSPEC_XFGVIRT(IUnknown, Release)
917 ULONG ( STDMETHODCALLTYPE *Release )(
918 ID3DShaderCacheInstallerFactory * This);
919
920 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateInstaller)
921 HRESULT ( STDMETHODCALLTYPE *CreateInstaller )(
922 ID3DShaderCacheInstallerFactory * This,
923 _In_ ID3DShaderCacheInstallerClient *pClient,
924 REFIID riid,
925 _COM_Outptr_ void **ppvInstaller);
926
927 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateExplorer)
928 HRESULT ( STDMETHODCALLTYPE *CreateExplorer )(
929 ID3DShaderCacheInstallerFactory * This,
930 IUnknown *pUnknown,
931 REFIID riid,
932 _COM_Outptr_ void **ppvExplorer);
933
934 END_INTERFACE
935 } ID3DShaderCacheInstallerFactoryVtbl;
936
937 interface ID3DShaderCacheInstallerFactory
938 {
939 CONST_VTBL struct ID3DShaderCacheInstallerFactoryVtbl *lpVtbl;
940 };
941
942
943
944#ifdef COBJMACROS
945
946
947#define ID3DShaderCacheInstallerFactory_QueryInterface(This,riid,ppvObject) \
948 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
949
950#define ID3DShaderCacheInstallerFactory_AddRef(This) \
951 ( (This)->lpVtbl -> AddRef(This) )
952
953#define ID3DShaderCacheInstallerFactory_Release(This) \
954 ( (This)->lpVtbl -> Release(This) )
955
956
957#define ID3DShaderCacheInstallerFactory_CreateInstaller(This,pClient,riid,ppvInstaller) \
958 ( (This)->lpVtbl -> CreateInstaller(This,pClient,riid,ppvInstaller) )
959
960#define ID3DShaderCacheInstallerFactory_CreateExplorer(This,pUnknown,riid,ppvExplorer) \
961 ( (This)->lpVtbl -> CreateExplorer(This,pUnknown,riid,ppvExplorer) )
962
963#endif /* COBJMACROS */
964
965
966#endif /* C style interface */
967
968
969
970
971#endif /* __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__ */
972
973
974/* interface __MIDL_itf_d3dshadercacheregistration_0000_0006 */
975/* [local] */
976
977DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);
978DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);
979DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);
980DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);
981DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);
982DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);
983
984
985extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_c_ifspec;
986extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_s_ifspec;
987
988/* Additional Prototypes for ALL interfaces */
989
990/* end of Additional Prototypes */
991
992#ifdef __cplusplus
993}
994#endif
995
996#endif
997
998
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.idl
new file mode 100644
index 0000000..7dcc53d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.idl
@@ -0,0 +1,195 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7#pragma once
8import "oaidl.idl";
9import "ocidl.idl";
10
11cpp_quote("DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);")
12
13typedef enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
14{
15 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER,
16 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM
17} D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
18
19interface ID3DShaderCacheInstaller;
20
21// This interface is implemented by the game installer
22[uuid(a16ee930-d9f6-4222-a514-244473e5d266), object, local, pointer_default(unique)]
23interface ID3DShaderCacheInstallerClient
24{
25 HRESULT GetInstallerName(
26 [annotation("_Inout_")] SIZE_T* pNameLength,
27 [annotation("_Out_writes_opt_(*pNameLength)")] wchar_t* pName);
28
29 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE GetInstallerScope();
30
31 HRESULT HandleDriverUpdate(
32 [annotation("_In_")] ID3DShaderCacheInstaller* pInstaller);
33};
34
35typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
36{
37 const wchar_t* pAdapterFamily;
38 const wchar_t* pPsdbPath;
39} D3D_SHADER_CACHE_PSDB_PROPERTIES;
40
41[uuid(eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828), object, local, pointer_default(unique)]
42interface ID3DShaderCacheComponent : IUnknown
43{
44 HRESULT GetComponentName(
45 [annotation("_Out_")] const wchar_t** pName);
46
47 HRESULT GetStateObjectDatabasePath(
48 [annotation("_Out_")] const wchar_t** pPath);
49
50 HRESULT GetPrecompiledCachePath(
51 [annotation("_In_")] const wchar_t* pAdapterFamily,
52 [annotation("_Inout_")] const wchar_t** pPath);
53
54 UINT GetPrecompiledShaderDatabaseCount();
55
56 HRESULT GetPrecompiledShaderDatabases(
57 UINT ArraySize,
58 [annotation("_Out_writes_(ArraySize)")] D3D_SHADER_CACHE_PSDB_PROPERTIES * pPSDBs);
59};
60
61typedef enum D3D_SHADER_CACHE_TARGET_FLAGS
62{
63 D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0,
64}D3D_SHADER_CACHE_TARGET_FLAGS;
65cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )")
66
67typedef union D3D_VERSION_NUMBER
68{
69 UINT64 Version;
70 UINT16 VersionParts[4];
71} D3D_VERSION_NUMBER;
72
73typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
74{
75 wchar_t szAdapterFamily[128];
76 UINT64 MinimumABISupportVersion;
77 UINT64 MaximumABISupportVersion;
78 D3D_VERSION_NUMBER CompilerVersion;
79 D3D_VERSION_NUMBER ApplicationProfileVersion;
80} D3D_SHADER_CACHE_COMPILER_PROPERTIES;
81
82typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
83{
84 const wchar_t* pExeFilename;
85 const wchar_t* pName;
86 D3D_VERSION_NUMBER Version;
87 const wchar_t* pEngineName;
88 D3D_VERSION_NUMBER EngineVersion;
89} D3D_SHADER_CACHE_APPLICATION_DESC;
90
91[uuid(fc688ee2-1b35-4913-93be-1ca3fa7df39e), object, local, pointer_default(unique)]
92interface ID3DShaderCacheApplication : IUnknown
93{
94 HRESULT GetExePath(
95 [annotation("_Out_")] const wchar_t** pExePath);
96
97 HRESULT GetDesc(
98 [annotation("_Out_")] D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc);
99
100 HRESULT RegisterComponent(
101 [annotation("_In_")] const wchar_t* pName,
102 [annotation("_In_")] const wchar_t* pStateObjectDBPath,
103 [annotation("_In_")] UINT NumPSDB,
104 [annotation("_In_reads_(NumPSDB)")] const D3D_SHADER_CACHE_PSDB_PROPERTIES* pPSDBs,
105 [in] REFIID riid,
106 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvComponent);
107
108 HRESULT RemoveComponent(
109 [annotation("_In_")] ID3DShaderCacheComponent* pComponent);
110
111 UINT GetComponentCount();
112
113 HRESULT GetComponent(
114 [annotation("_In_")] UINT index,
115 [in] REFIID riid,
116 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvComponent);
117
118 UINT GetPrecompileTargetCount(D3D_SHADER_CACHE_TARGET_FLAGS flags);
119
120 HRESULT GetPrecompileTargets(
121 [annotation("_In_")] UINT ArraySize,
122 [annotation("_In_reads_(ArraySize)")] D3D_SHADER_CACHE_COMPILER_PROPERTIES* pArray,
123 D3D_SHADER_CACHE_TARGET_FLAGS flags);
124
125 HRESULT GetInstallerName(
126 [annotation("_Out_")] const wchar_t** pInstallerName);
127};
128
129typedef struct SC_HANDLE__ *SC_HANDLE;
130[uuid(bbe30de1-6318-4526-ae17-776693191bb4), object, local, pointer_default(unique)]
131interface ID3DShaderCacheInstaller : IUnknown
132{
133 HRESULT RegisterDriverUpdateListener();
134 HRESULT UnregisterDriverUpdateListener();
135
136 HRESULT RegisterServiceDriverUpdateTrigger(SC_HANDLE hServiceHandle);
137 HRESULT UnregisterServiceDriverUpdateTrigger(SC_HANDLE hServiceHandle);
138
139 HRESULT RegisterApplication(
140 [annotation("_In_")] const wchar_t* pExePath,
141 [annotation("_In_")] const D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc,
142 [in] REFIID riid,
143 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
144
145 HRESULT RemoveApplication(
146 [annotation("_In_")] ID3DShaderCacheApplication* pApplication); // Expected: ID3DShaderCacheApplication
147
148 UINT GetApplicationCount();
149
150 HRESULT GetApplication(
151 [annotation("_In_")] UINT index,
152 [in] REFIID riid,
153 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
154
155 HRESULT ClearAllState();
156
157 UINT GetMaxPrecompileTargetCount();
158
159 HRESULT GetPrecompileTargets(
160 [annotation("_In_opt_")] const D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc,
161 [annotation("_Inout_")] UINT* pArraySize,
162 [annotation("_Out_writes_(*pArraySize)")] D3D_SHADER_CACHE_COMPILER_PROPERTIES* pArray,
163 D3D_SHADER_CACHE_TARGET_FLAGS flags);
164};
165
166[uuid(90432322-32f5-487f-9264-e9390fa58b2a), object, local, pointer_default(unique)]
167interface ID3DShaderCacheExplorer : IUnknown
168{
169 HRESULT GetApplicationFromExePath(
170 [annotation("_In_")] const wchar_t* pFullExePath,
171 [in] REFIID riid,
172 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
173};
174
175[uuid(09b2dfe4-840f-401a-804c-0dd8aadc9e9f), object, local, pointer_default(unique)]
176interface ID3DShaderCacheInstallerFactory : IUnknown
177{
178 HRESULT CreateInstaller(
179 [annotation("_In_")] ID3DShaderCacheInstallerClient* pClient,
180 [in] REFIID riid,
181 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvInstaller);
182
183 HRESULT CreateExplorer(
184 [in] IUnknown* pUnknown, // Expected: ID3D12Device, IDXCoreAdapter, IDXGIAdapter
185 [in] REFIID riid,
186 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvExplorer); // Expected: ID3DShaderCacheExplorer
187};
188
189
190cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);" )
191cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);" )
192cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);" )
193cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);" )
194cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);" )
195cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12.h
new file mode 100644
index 0000000..e8ec24e
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12.h
@@ -0,0 +1,36 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_H__
9#define __D3DX12_H__
10
11#include "d3d12.h"
12
13#if defined( __cplusplus )
14
15#include "d3dx12_barriers.h"
16#include "d3dx12_core.h"
17#include "d3dx12_default.h"
18#include "d3dx12_pipeline_state_stream.h"
19#include "d3dx12_render_pass.h"
20#include "d3dx12_resource_helpers.h"
21#include "d3dx12_root_signature.h"
22#include "d3dx12_property_format_table.h"
23
24#ifndef D3DX12_NO_STATE_OBJECT_HELPERS
25#include "d3dx12_state_object.h"
26#endif // !D3DX12_NO_STATE_OBJECT_HELPERS
27
28#ifndef D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
29#include "d3dx12_check_feature_support.h"
30#endif // !D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
31
32#endif // defined( __cplusplus )
33
34#endif //__D3DX12_H__
35
36
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_barriers.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_barriers.h
new file mode 100644
index 0000000..1bd7a74
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_barriers.h
@@ -0,0 +1,193 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_BARRIERS_H__
9#define __D3DX12_BARRIERS_H__
10
11#if defined( __cplusplus )
12
13#include "d3d12.h"
14
15//------------------------------------------------------------------------------------------------
16struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
17{
18 CD3DX12_RESOURCE_BARRIER() = default;
19 explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
20 D3D12_RESOURCE_BARRIER(o)
21 {}
22 static inline CD3DX12_RESOURCE_BARRIER Transition(
23 _In_ ID3D12Resource* pResource,
24 D3D12_RESOURCE_STATES stateBefore,
25 D3D12_RESOURCE_STATES stateAfter,
26 UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
27 D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept
28 {
29 CD3DX12_RESOURCE_BARRIER result = {};
30 D3D12_RESOURCE_BARRIER &barrier = result;
31 result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
32 result.Flags = flags;
33 barrier.Transition.pResource = pResource;
34 barrier.Transition.StateBefore = stateBefore;
35 barrier.Transition.StateAfter = stateAfter;
36 barrier.Transition.Subresource = subresource;
37 return result;
38 }
39 static inline CD3DX12_RESOURCE_BARRIER Aliasing(
40 _In_opt_ ID3D12Resource* pResourceBefore,
41 _In_opt_ ID3D12Resource* pResourceAfter) noexcept
42 {
43 CD3DX12_RESOURCE_BARRIER result = {};
44 D3D12_RESOURCE_BARRIER &barrier = result;
45 result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
46 barrier.Aliasing.pResourceBefore = pResourceBefore;
47 barrier.Aliasing.pResourceAfter = pResourceAfter;
48 return result;
49 }
50 static inline CD3DX12_RESOURCE_BARRIER UAV(
51 _In_opt_ ID3D12Resource* pResource) noexcept
52 {
53 CD3DX12_RESOURCE_BARRIER result = {};
54 D3D12_RESOURCE_BARRIER &barrier = result;
55 result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
56 barrier.UAV.pResource = pResource;
57 return result;
58 }
59};
60
61#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
62
63//================================================================================================
64// D3DX12 Enhanced Barrier Helpers
65//================================================================================================
66
67class CD3DX12_BARRIER_SUBRESOURCE_RANGE : public D3D12_BARRIER_SUBRESOURCE_RANGE
68{
69public:
70 CD3DX12_BARRIER_SUBRESOURCE_RANGE() = default;
71 CD3DX12_BARRIER_SUBRESOURCE_RANGE(const D3D12_BARRIER_SUBRESOURCE_RANGE &o) noexcept :
72 D3D12_BARRIER_SUBRESOURCE_RANGE(o)
73 {}
74 explicit CD3DX12_BARRIER_SUBRESOURCE_RANGE(UINT Subresource) noexcept :
75 D3D12_BARRIER_SUBRESOURCE_RANGE{ Subresource, 0, 0, 0, 0, 0 }
76 {}
77 CD3DX12_BARRIER_SUBRESOURCE_RANGE(
78 UINT firstMipLevel,
79 UINT numMips,
80 UINT firstArraySlice,
81 UINT numArraySlices,
82 UINT firstPlane = 0,
83 UINT numPlanes = 1) noexcept :
84 D3D12_BARRIER_SUBRESOURCE_RANGE
85 {
86 firstMipLevel,
87 numMips,
88 firstArraySlice,
89 numArraySlices,
90 firstPlane,
91 numPlanes
92 }
93 {}
94};
95
96class CD3DX12_GLOBAL_BARRIER : public D3D12_GLOBAL_BARRIER
97{
98public:
99 CD3DX12_GLOBAL_BARRIER() = default;
100 CD3DX12_GLOBAL_BARRIER(const D3D12_GLOBAL_BARRIER &o) noexcept : D3D12_GLOBAL_BARRIER(o){}
101 CD3DX12_GLOBAL_BARRIER(
102 D3D12_BARRIER_SYNC syncBefore,
103 D3D12_BARRIER_SYNC syncAfter,
104 D3D12_BARRIER_ACCESS accessBefore,
105 D3D12_BARRIER_ACCESS accessAfter) noexcept : D3D12_GLOBAL_BARRIER {
106 syncBefore,
107 syncAfter,
108 accessBefore,
109 accessAfter
110 }
111 {}
112};
113
114class CD3DX12_BUFFER_BARRIER : public D3D12_BUFFER_BARRIER
115{
116public:
117 CD3DX12_BUFFER_BARRIER() = default;
118 CD3DX12_BUFFER_BARRIER(const D3D12_BUFFER_BARRIER &o) noexcept : D3D12_BUFFER_BARRIER(o){}
119 CD3DX12_BUFFER_BARRIER(
120 D3D12_BARRIER_SYNC syncBefore,
121 D3D12_BARRIER_SYNC syncAfter,
122 D3D12_BARRIER_ACCESS accessBefore,
123 D3D12_BARRIER_ACCESS accessAfter,
124 ID3D12Resource *pRes) noexcept : D3D12_BUFFER_BARRIER {
125 syncBefore,
126 syncAfter,
127 accessBefore,
128 accessAfter,
129 pRes,
130 0, ULLONG_MAX
131 }
132 {}
133};
134
135class CD3DX12_TEXTURE_BARRIER : public D3D12_TEXTURE_BARRIER
136{
137public:
138 CD3DX12_TEXTURE_BARRIER() = default;
139 CD3DX12_TEXTURE_BARRIER(const D3D12_TEXTURE_BARRIER &o) noexcept : D3D12_TEXTURE_BARRIER(o){}
140 CD3DX12_TEXTURE_BARRIER(
141 D3D12_BARRIER_SYNC syncBefore,
142 D3D12_BARRIER_SYNC syncAfter,
143 D3D12_BARRIER_ACCESS accessBefore,
144 D3D12_BARRIER_ACCESS accessAfter,
145 D3D12_BARRIER_LAYOUT layoutBefore,
146 D3D12_BARRIER_LAYOUT layoutAfter,
147 ID3D12Resource *pRes,
148 const D3D12_BARRIER_SUBRESOURCE_RANGE &subresources,
149 D3D12_TEXTURE_BARRIER_FLAGS flag = D3D12_TEXTURE_BARRIER_FLAG_NONE) noexcept : D3D12_TEXTURE_BARRIER {
150 syncBefore,
151 syncAfter,
152 accessBefore,
153 accessAfter,
154 layoutBefore,
155 layoutAfter,
156 pRes,
157 subresources,
158 flag
159 }
160 {}
161};
162
163class CD3DX12_BARRIER_GROUP : public D3D12_BARRIER_GROUP
164{
165public:
166 CD3DX12_BARRIER_GROUP() = default;
167 CD3DX12_BARRIER_GROUP(const D3D12_BARRIER_GROUP &o) noexcept : D3D12_BARRIER_GROUP(o){}
168 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_BUFFER_BARRIER *pBarriers) noexcept
169 {
170 Type = D3D12_BARRIER_TYPE_BUFFER;
171 NumBarriers = numBarriers;
172 pBufferBarriers = pBarriers;
173 }
174 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_TEXTURE_BARRIER *pBarriers) noexcept
175 {
176 Type = D3D12_BARRIER_TYPE_TEXTURE;
177 NumBarriers = numBarriers;
178 pTextureBarriers = pBarriers;
179 }
180 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_GLOBAL_BARRIER *pBarriers) noexcept
181 {
182 Type = D3D12_BARRIER_TYPE_GLOBAL;
183 NumBarriers = numBarriers;
184 pGlobalBarriers = pBarriers;
185 }
186};
187#endif // D3D12_SDK_VERSION >= 608
188
189
190#endif // defined( __cplusplus )
191
192#endif // __D3DX12_BARRIERS_H__
193
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_check_feature_support.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_check_feature_support.h
new file mode 100644
index 0000000..725fb7f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_check_feature_support.h
@@ -0,0 +1,1162 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15
16//================================================================================================
17// D3DX12 Check Feature Support
18//================================================================================================
19
20#include <vector>
21
22class CD3DX12FeatureSupport
23{
24public: // Function declaration
25 // Default constructor that creates an empty object
26 CD3DX12FeatureSupport() noexcept;
27
28 // Initialize data from the given device
29 HRESULT Init(ID3D12Device* pDevice);
30
31 // Retreives the status of the object. If an error occurred in the initialization process, the function returns the error code.
32 HRESULT GetStatus() const noexcept { return m_hStatus; }
33
34 // Getter functions for each feature class
35 // D3D12_OPTIONS
36 BOOL DoublePrecisionFloatShaderOps() const noexcept;
37 BOOL OutputMergerLogicOp() const noexcept;
38 D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport() const noexcept;
39 D3D12_TILED_RESOURCES_TIER TiledResourcesTier() const noexcept;
40 D3D12_RESOURCE_BINDING_TIER ResourceBindingTier() const noexcept;
41 BOOL PSSpecifiedStencilRefSupported() const noexcept;
42 BOOL TypedUAVLoadAdditionalFormats() const noexcept;
43 BOOL ROVsSupported() const noexcept;
44 D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier() const noexcept;
45 BOOL StandardSwizzle64KBSupported() const noexcept;
46 BOOL CrossAdapterRowMajorTextureSupported() const noexcept;
47 BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation() const noexcept;
48 D3D12_RESOURCE_HEAP_TIER ResourceHeapTier() const noexcept;
49 D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier() const noexcept;
50 UINT MaxGPUVirtualAddressBitsPerResource() const noexcept;
51
52 // FEATURE_LEVELS
53 D3D_FEATURE_LEVEL MaxSupportedFeatureLevel() const noexcept;
54
55 // FORMAT_SUPPORT
56 HRESULT FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const;
57
58 // MUTLTISAMPLE_QUALITY_LEVELS
59 HRESULT MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const;
60
61 // FORMAT_INFO
62 HRESULT FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const;
63
64 // GPU_VIRTUAL_ADDRESS_SUPPORT
65 UINT MaxGPUVirtualAddressBitsPerProcess() const noexcept;
66
67 // SHADER_MODEL
68 D3D_SHADER_MODEL HighestShaderModel() const noexcept;
69
70 // D3D12_OPTIONS1
71 BOOL WaveOps() const noexcept;
72 UINT WaveLaneCountMin() const noexcept;
73 UINT WaveLaneCountMax() const noexcept;
74 UINT TotalLaneCount() const noexcept;
75 BOOL ExpandedComputeResourceStates() const noexcept;
76 BOOL Int64ShaderOps() const noexcept;
77
78 // PROTECTED_RESOURCE_SESSION_SUPPORT
79 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS ProtectedResourceSessionSupport(UINT NodeIndex = 0) const;
80
81 // ROOT_SIGNATURE
82 D3D_ROOT_SIGNATURE_VERSION HighestRootSignatureVersion() const noexcept;
83
84 // ARCHITECTURE1
85 BOOL TileBasedRenderer(UINT NodeIndex = 0) const;
86 BOOL UMA(UINT NodeIndex = 0) const;
87 BOOL CacheCoherentUMA(UINT NodeIndex = 0) const;
88 BOOL IsolatedMMU(UINT NodeIndex = 0) const;
89
90 // D3D12_OPTIONS2
91 BOOL DepthBoundsTestSupported() const noexcept;
92 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier() const noexcept;
93
94 // SHADER_CACHE
95 D3D12_SHADER_CACHE_SUPPORT_FLAGS ShaderCacheSupportFlags() const noexcept;
96
97 // COMMAND_QUEUE_PRIORITY
98 BOOL CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority);
99
100 // D3D12_OPTIONS3
101 BOOL CopyQueueTimestampQueriesSupported() const noexcept;
102 BOOL CastingFullyTypedFormatSupported() const noexcept;
103 D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags() const noexcept;
104 D3D12_VIEW_INSTANCING_TIER ViewInstancingTier() const noexcept;
105 BOOL BarycentricsSupported() const noexcept;
106
107 // EXISTING_HEAPS
108 BOOL ExistingHeapsSupported() const noexcept;
109
110 // D3D12_OPTIONS4
111 BOOL MSAA64KBAlignedTextureSupported() const noexcept;
112 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier() const noexcept;
113 BOOL Native16BitShaderOpsSupported() const noexcept;
114
115 // SERIALIZATION
116 D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier(UINT NodeIndex = 0) const;
117
118 // CROSS_NODE
119 // CrossNodeSharingTier handled in D3D12Options
120 BOOL CrossNodeAtomicShaderInstructions() const noexcept;
121
122 // D3D12_OPTIONS5
123 BOOL SRVOnlyTiledResourceTier3() const noexcept;
124 D3D12_RENDER_PASS_TIER RenderPassesTier() const noexcept;
125 D3D12_RAYTRACING_TIER RaytracingTier() const noexcept;
126
127#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
128 // DISPLAYABLE
129 BOOL DisplayableTexture() const noexcept;
130 // SharedResourceCompatibilityTier handled in D3D12Options4
131#endif
132
133 // D3D12_OPTIONS6
134 BOOL AdditionalShadingRatesSupported() const noexcept;
135 BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing() const noexcept;
136 D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier() const noexcept;
137 UINT ShadingRateImageTileSize() const noexcept;
138 BOOL BackgroundProcessingSupported() const noexcept;
139
140 // QUERY_META_COMMAND
141 HRESULT QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const;
142
143 // D3D12_OPTIONS7
144 D3D12_MESH_SHADER_TIER MeshShaderTier() const noexcept;
145 D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier() const noexcept;
146
147 // PROTECTED_RESOURCE_SESSION_TYPE_COUNT
148 UINT ProtectedResourceSessionTypeCount(UINT NodeIndex = 0) const;
149
150 // PROTECTED_RESOURCE_SESSION_TYPES
151 std::vector<GUID> ProtectedResourceSessionTypes(UINT NodeIndex = 0) const;
152
153#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
154 // D3D12_OPTIONS8
155 BOOL UnalignedBlockTexturesSupported() const noexcept;
156
157 // D3D12_OPTIONS9
158 BOOL MeshShaderPipelineStatsSupported() const noexcept;
159 BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex() const noexcept;
160 BOOL AtomicInt64OnTypedResourceSupported() const noexcept;
161 BOOL AtomicInt64OnGroupSharedSupported() const noexcept;
162 BOOL DerivativesInMeshAndAmplificationShadersSupported() const noexcept;
163 D3D12_WAVE_MMA_TIER WaveMMATier() const noexcept;
164#endif
165
166#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
167 // D3D12_OPTIONS10
168 BOOL VariableRateShadingSumCombinerSupported() const noexcept;
169 BOOL MeshShaderPerPrimitiveShadingRateSupported() const noexcept;
170
171 // D3D12_OPTIONS11
172 BOOL AtomicInt64OnDescriptorHeapResourceSupported() const noexcept;
173#endif
174
175#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
176 // D3D12_OPTIONS12
177 D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives() const noexcept;
178 BOOL EnhancedBarriersSupported() const noexcept;
179 BOOL RelaxedFormatCastingSupported() const noexcept;
180#endif
181
182#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
183 // D3D12_OPTIONS13
184 BOOL UnrestrictedBufferTextureCopyPitchSupported() const noexcept;
185 BOOL UnrestrictedVertexElementAlignmentSupported() const noexcept;
186 BOOL InvertedViewportHeightFlipsYSupported() const noexcept;
187 BOOL InvertedViewportDepthFlipsZSupported() const noexcept;
188 BOOL TextureCopyBetweenDimensionsSupported() const noexcept;
189 BOOL AlphaBlendFactorSupported() const noexcept;
190#endif
191
192#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
193 // D3D12_OPTIONS14
194 BOOL AdvancedTextureOpsSupported() const noexcept;
195 BOOL WriteableMSAATexturesSupported() const noexcept;
196 BOOL IndependentFrontAndBackStencilRefMaskSupported() const noexcept;
197
198 // D3D12_OPTIONS15
199 BOOL TriangleFanSupported() const noexcept;
200 BOOL DynamicIndexBufferStripCutSupported() const noexcept;
201#endif
202
203#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
204 // D3D12_OPTIONS16
205 BOOL DynamicDepthBiasSupported() const noexcept;
206#endif
207#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
208 BOOL GPUUploadHeapSupported() const noexcept;
209
210 // D3D12_OPTIONS17
211 BOOL NonNormalizedCoordinateSamplersSupported() const noexcept;
212 BOOL ManualWriteTrackingResourceSupported() const noexcept;
213
214 // D3D12_OPTIONS18
215 BOOL RenderPassesValid() const noexcept;
216#endif
217
218#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
219 BOOL MismatchingOutputDimensionsSupported() const noexcept;
220 UINT SupportedSampleCountsWithNoOutputs() const noexcept;
221 BOOL PointSamplingAddressesNeverRoundUp() const noexcept;
222 BOOL RasterizerDesc2Supported() const noexcept;
223 BOOL NarrowQuadrilateralLinesSupported() const noexcept;
224 BOOL AnisoFilterWithPointMipSupported() const noexcept;
225 UINT MaxSamplerDescriptorHeapSize() const noexcept;
226 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers() const noexcept;
227 UINT MaxViewDescriptorHeapSize() const noexcept;
228#endif
229
230#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
231 BOOL ComputeOnlyWriteWatchSupported() const noexcept;
232#endif
233
234#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
235 D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier() const noexcept;
236 D3D12_WORK_GRAPHS_TIER WorkGraphsTier() const noexcept;
237#endif
238
239#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
240 D3D12_TIGHT_ALIGNMENT_TIER TightAlignmentSupportTier() const noexcept;
241#endif
242
243private: // Private structs and helpers declaration
244 struct ProtectedResourceSessionTypesLocal : D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
245 {
246 std::vector<GUID> TypeVec;
247 };
248
249 // Helper function to decide the highest shader model supported by the system
250 // Stores the result in m_dShaderModel
251 // Must be updated whenever a new shader model is added to the d3d12.h header
252 HRESULT QueryHighestShaderModel();
253
254 // Helper function to decide the highest root signature supported
255 // Must be updated whenever a new root signature version is added to the d3d12.h header
256 HRESULT QueryHighestRootSignatureVersion();
257
258 // Helper funcion to decide the highest feature level
259 HRESULT QueryHighestFeatureLevel();
260
261 // Helper function to initialize local protected resource session types structs
262 HRESULT QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count);
263
264private: // Member data
265 // Pointer to the underlying device
266 ID3D12Device* m_pDevice;
267
268 // Stores the error code from initialization
269 HRESULT m_hStatus;
270
271 // Feature support data structs
272 D3D12_FEATURE_DATA_D3D12_OPTIONS m_dOptions;
273 D3D_FEATURE_LEVEL m_eMaxFeatureLevel;
274 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT m_dGPUVASupport;
275 D3D12_FEATURE_DATA_SHADER_MODEL m_dShaderModel;
276 D3D12_FEATURE_DATA_D3D12_OPTIONS1 m_dOptions1;
277 std::vector<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT> m_dProtectedResourceSessionSupport;
278 D3D12_FEATURE_DATA_ROOT_SIGNATURE m_dRootSignature;
279 std::vector<D3D12_FEATURE_DATA_ARCHITECTURE1> m_dArchitecture1;
280 D3D12_FEATURE_DATA_D3D12_OPTIONS2 m_dOptions2;
281 D3D12_FEATURE_DATA_SHADER_CACHE m_dShaderCache;
282 D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY m_dCommandQueuePriority;
283 D3D12_FEATURE_DATA_D3D12_OPTIONS3 m_dOptions3;
284 D3D12_FEATURE_DATA_EXISTING_HEAPS m_dExistingHeaps;
285 D3D12_FEATURE_DATA_D3D12_OPTIONS4 m_dOptions4;
286 std::vector<D3D12_FEATURE_DATA_SERIALIZATION> m_dSerialization; // Cat2 NodeIndex
287 D3D12_FEATURE_DATA_CROSS_NODE m_dCrossNode;
288 D3D12_FEATURE_DATA_D3D12_OPTIONS5 m_dOptions5;
289#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
290 D3D12_FEATURE_DATA_DISPLAYABLE m_dDisplayable;
291#endif
292 D3D12_FEATURE_DATA_D3D12_OPTIONS6 m_dOptions6;
293 D3D12_FEATURE_DATA_D3D12_OPTIONS7 m_dOptions7;
294 std::vector<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT> m_dProtectedResourceSessionTypeCount; // Cat2 NodeIndex
295 std::vector<ProtectedResourceSessionTypesLocal> m_dProtectedResourceSessionTypes; // Cat3
296#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
297 D3D12_FEATURE_DATA_D3D12_OPTIONS8 m_dOptions8;
298 D3D12_FEATURE_DATA_D3D12_OPTIONS9 m_dOptions9;
299#endif
300#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
301 D3D12_FEATURE_DATA_D3D12_OPTIONS10 m_dOptions10;
302 D3D12_FEATURE_DATA_D3D12_OPTIONS11 m_dOptions11;
303#endif
304#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
305 D3D12_FEATURE_DATA_D3D12_OPTIONS12 m_dOptions12;
306#endif
307#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
308 D3D12_FEATURE_DATA_D3D12_OPTIONS13 m_dOptions13;
309#endif
310#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
311 D3D12_FEATURE_DATA_D3D12_OPTIONS14 m_dOptions14;
312 D3D12_FEATURE_DATA_D3D12_OPTIONS15 m_dOptions15;
313#endif
314#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
315 D3D12_FEATURE_DATA_D3D12_OPTIONS16 m_dOptions16;
316#endif
317#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
318 D3D12_FEATURE_DATA_D3D12_OPTIONS17 m_dOptions17;
319#endif
320#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
321 D3D12_FEATURE_DATA_D3D12_OPTIONS18 m_dOptions18;
322#endif
323#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
324 D3D12_FEATURE_DATA_D3D12_OPTIONS19 m_dOptions19;
325#endif
326#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
327 D3D12_FEATURE_DATA_D3D12_OPTIONS20 m_dOptions20;
328#endif
329#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
330 D3D12_FEATURE_DATA_D3D12_OPTIONS21 m_dOptions21;
331#endif
332#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
333 D3D12_FEATURE_DATA_TIGHT_ALIGNMENT m_dTightAlignment;
334#endif
335};
336
337// Implementations for CD3DX12FeatureSupport functions
338
339// Macro to set up a getter function for each entry in feature support data
340// The getter function will have the same name as the feature option name
341#define FEATURE_SUPPORT_GET(RETTYPE,FEATURE,OPTION) \
342inline RETTYPE CD3DX12FeatureSupport::OPTION() const noexcept \
343{ \
344 return FEATURE.OPTION; \
345}
346
347// Macro to set up a getter function for each entry in feature support data
348// Also specifies the name for the function which can be different from the feature name
349#define FEATURE_SUPPORT_GET_NAME(RETTYPE,FEATURE,OPTION,NAME) \
350inline RETTYPE CD3DX12FeatureSupport::NAME() const noexcept \
351{\
352 return FEATURE.OPTION; \
353}
354
355// Macro to set up a getter function for feature data indexed by the graphics node ID
356// The default parameter is 0, or the first availabe graphics device node
357#define FEATURE_SUPPORT_GET_NODE_INDEXED(RETTYPE,FEATURE,OPTION) \
358inline RETTYPE CD3DX12FeatureSupport::OPTION(UINT NodeIndex) const \
359{\
360 return FEATURE[NodeIndex].OPTION; \
361}
362
363// Macro to set up a getter function for feature data indexed by NodeIndex
364// Allows a custom name for the getter function
365#define FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(RETTYPE,FEATURE,OPTION,NAME) \
366inline RETTYPE CD3DX12FeatureSupport::NAME(UINT NodeIndex) const \
367{\
368 return FEATURE[NodeIndex].OPTION; \
369}
370
371inline CD3DX12FeatureSupport::CD3DX12FeatureSupport() noexcept
372: m_pDevice(nullptr)
373, m_hStatus(E_INVALIDARG)
374, m_dOptions{}
375, m_eMaxFeatureLevel{}
376, m_dGPUVASupport{}
377, m_dShaderModel{}
378, m_dOptions1{}
379, m_dRootSignature{}
380, m_dOptions2{}
381, m_dShaderCache{}
382, m_dCommandQueuePriority{}
383, m_dOptions3{}
384, m_dExistingHeaps{}
385, m_dOptions4{}
386, m_dCrossNode{}
387, m_dOptions5{}
388#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
389, m_dDisplayable{}
390#endif
391, m_dOptions6{}
392, m_dOptions7{}
393#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
394, m_dOptions8{}
395, m_dOptions9{}
396#endif
397#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
398, m_dOptions10{}
399, m_dOptions11{}
400#endif
401#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
402, m_dOptions12{}
403#endif
404#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
405, m_dOptions13{}
406#endif
407#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
408, m_dOptions14{}
409, m_dOptions15{}
410#endif
411#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
412, m_dOptions16{}
413#endif
414#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
415, m_dOptions17{}
416#endif
417#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
418, m_dOptions18{}
419#endif
420#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
421, m_dOptions19{}
422#endif
423#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
424, m_dOptions20{}
425#endif
426#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
427, m_dOptions21{}
428#endif
429#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
430, m_dTightAlignment{}
431#endif
432{}
433
434inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
435{
436 if (!pDevice)
437 {
438 m_hStatus = E_INVALIDARG;
439 return m_hStatus;
440 }
441
442 m_pDevice = pDevice;
443
444 // Initialize static feature support data structures
445 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &m_dOptions, sizeof(m_dOptions))))
446 {
447 m_dOptions = {};
448 }
449
450 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT, &m_dGPUVASupport, sizeof(m_dGPUVASupport))))
451 {
452 m_dGPUVASupport = {};
453 }
454
455 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &m_dOptions1, sizeof(m_dOptions1))))
456 {
457 m_dOptions1 = {};
458 }
459
460 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS2, &m_dOptions2, sizeof(m_dOptions2))))
461 {
462 m_dOptions2 = {};
463 }
464
465 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_CACHE, &m_dShaderCache, sizeof(m_dShaderCache))))
466 {
467 m_dShaderCache = {};
468 }
469
470 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3, &m_dOptions3, sizeof(m_dOptions3))))
471 {
472 m_dOptions3 = {};
473 }
474
475 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_EXISTING_HEAPS, &m_dExistingHeaps, sizeof(m_dExistingHeaps))))
476 {
477 m_dExistingHeaps = {};
478 }
479
480 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS4, &m_dOptions4, sizeof(m_dOptions4))))
481 {
482 m_dOptions4 = {};
483 }
484
485 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_CROSS_NODE, &m_dCrossNode, sizeof(m_dCrossNode))))
486 {
487 m_dCrossNode = {};
488 }
489
490 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS5, &m_dOptions5, sizeof(m_dOptions5))))
491 {
492 m_dOptions5 = {};
493 }
494
495#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
496 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_DISPLAYABLE, &m_dDisplayable, sizeof(m_dDisplayable))))
497 {
498 m_dDisplayable = {};
499 }
500#endif
501
502 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS6, &m_dOptions6, sizeof(m_dOptions6))))
503 {
504 m_dOptions6 = {};
505 }
506
507 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS7, &m_dOptions7, sizeof(m_dOptions7))))
508 {
509 m_dOptions7 = {};
510 }
511
512#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
513 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS8, &m_dOptions8, sizeof(m_dOptions8))))
514 {
515 m_dOptions8 = {};
516 }
517
518 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS9, &m_dOptions9, sizeof(m_dOptions9))))
519 {
520 m_dOptions9 = {};
521 }
522#endif
523
524#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
525 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS10, &m_dOptions10, sizeof(m_dOptions10))))
526 {
527 m_dOptions10 = {};
528 }
529
530 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS11, &m_dOptions11, sizeof(m_dOptions11))))
531 {
532 m_dOptions11 = {};
533 }
534#endif
535
536#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
537 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &m_dOptions12, sizeof(m_dOptions12))))
538 {
539 m_dOptions12 = {};
540 m_dOptions12.MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE::D3D12_TRI_STATE_UNKNOWN;
541 }
542#endif
543
544#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
545 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS13, &m_dOptions13, sizeof(m_dOptions13))))
546 {
547 m_dOptions13 = {};
548 }
549#endif
550
551#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
552 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS14, &m_dOptions14, sizeof(m_dOptions14))))
553 {
554 m_dOptions14 = {};
555 }
556
557 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS15, &m_dOptions15, sizeof(m_dOptions15))))
558 {
559 m_dOptions15 = {};
560 }
561#endif
562
563#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
564 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS16, &m_dOptions16, sizeof(m_dOptions16))))
565 {
566 m_dOptions16 = {};
567 }
568#endif
569
570#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
571 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS17, &m_dOptions17, sizeof(m_dOptions17))))
572 {
573 m_dOptions17 = {};
574 }
575
576 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS18, &m_dOptions18, sizeof(m_dOptions18))))
577 {
578 m_dOptions18.RenderPassesValid = false;
579 }
580#endif
581
582#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
583 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS19, &m_dOptions19, sizeof(m_dOptions19))))
584 {
585 m_dOptions19 = {};
586 m_dOptions19.SupportedSampleCountsWithNoOutputs = 1;
587 m_dOptions19.MaxSamplerDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
588 m_dOptions19.MaxSamplerDescriptorHeapSizeWithStaticSamplers = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
589 m_dOptions19.MaxViewDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1;
590 }
591#endif
592
593#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
594 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS20, &m_dOptions20, sizeof(m_dOptions20))))
595 {
596 m_dOptions20 = {};
597 }
598#endif
599
600#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
601 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS21, &m_dOptions21, sizeof(m_dOptions21))))
602 {
603 m_dOptions21 = {};
604 }
605#endif
606
607#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
608 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT, &m_dTightAlignment, sizeof(m_dTightAlignment))))
609 {
610 m_dTightAlignment = {};
611 }
612#endif
613
614 // Initialize per-node feature support data structures
615 const UINT uNodeCount = m_pDevice->GetNodeCount();
616 m_dProtectedResourceSessionSupport.resize(uNodeCount);
617 m_dArchitecture1.resize(uNodeCount);
618 m_dSerialization.resize(uNodeCount);
619 m_dProtectedResourceSessionTypeCount.resize(uNodeCount);
620 m_dProtectedResourceSessionTypes.resize(uNodeCount);
621 for (UINT NodeIndex = 0; NodeIndex < uNodeCount; NodeIndex++)
622 {
623 m_dProtectedResourceSessionSupport[NodeIndex].NodeIndex = NodeIndex;
624 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT, &m_dProtectedResourceSessionSupport[NodeIndex], sizeof(m_dProtectedResourceSessionSupport[NodeIndex]))))
625 {
626 m_dProtectedResourceSessionSupport[NodeIndex].Support = D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE;
627 }
628
629 m_dArchitecture1[NodeIndex].NodeIndex = NodeIndex;
630 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE1, &m_dArchitecture1[NodeIndex], sizeof(m_dArchitecture1[NodeIndex]))))
631 {
632 D3D12_FEATURE_DATA_ARCHITECTURE dArchLocal = {};
633 dArchLocal.NodeIndex = NodeIndex;
634 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE, &dArchLocal, sizeof(dArchLocal))))
635 {
636 dArchLocal.TileBasedRenderer = false;
637 dArchLocal.UMA = false;
638 dArchLocal.CacheCoherentUMA = false;
639 }
640
641 m_dArchitecture1[NodeIndex].TileBasedRenderer = dArchLocal.TileBasedRenderer;
642 m_dArchitecture1[NodeIndex].UMA = dArchLocal.UMA;
643 m_dArchitecture1[NodeIndex].CacheCoherentUMA = dArchLocal.CacheCoherentUMA;
644 m_dArchitecture1[NodeIndex].IsolatedMMU = false;
645 }
646
647 m_dSerialization[NodeIndex].NodeIndex = NodeIndex;
648 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SERIALIZATION, &m_dSerialization[NodeIndex], sizeof(m_dSerialization[NodeIndex]))))
649 {
650 m_dSerialization[NodeIndex].HeapSerializationTier = D3D12_HEAP_SERIALIZATION_TIER_0;
651 }
652
653 m_dProtectedResourceSessionTypeCount[NodeIndex].NodeIndex = NodeIndex;
654 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT, &m_dProtectedResourceSessionTypeCount[NodeIndex], sizeof(m_dProtectedResourceSessionTypeCount[NodeIndex]))))
655 {
656 m_dProtectedResourceSessionTypeCount[NodeIndex].Count = 0;
657 }
658
659 // Special procedure to initialize local protected resource session types structs
660 // Must wait until session type count initialized
661 QueryProtectedResourceSessionTypes(NodeIndex, m_dProtectedResourceSessionTypeCount[NodeIndex].Count);
662 }
663
664 // Initialize features that requires highest version check
665 if (FAILED(m_hStatus = QueryHighestShaderModel()))
666 {
667 return m_hStatus;
668 }
669
670 if (FAILED(m_hStatus = QueryHighestRootSignatureVersion()))
671 {
672 return m_hStatus;
673 }
674
675 // Initialize Feature Levels data
676 if (FAILED(m_hStatus = QueryHighestFeatureLevel()))
677 {
678 return m_hStatus;
679 }
680
681 return m_hStatus;
682}
683
684// 0: D3D12_OPTIONS
685FEATURE_SUPPORT_GET(BOOL, m_dOptions, DoublePrecisionFloatShaderOps);
686FEATURE_SUPPORT_GET(BOOL, m_dOptions, OutputMergerLogicOp);
687FEATURE_SUPPORT_GET(D3D12_SHADER_MIN_PRECISION_SUPPORT, m_dOptions, MinPrecisionSupport);
688FEATURE_SUPPORT_GET(D3D12_TILED_RESOURCES_TIER, m_dOptions, TiledResourcesTier);
689FEATURE_SUPPORT_GET(D3D12_RESOURCE_BINDING_TIER, m_dOptions, ResourceBindingTier);
690FEATURE_SUPPORT_GET(BOOL, m_dOptions, PSSpecifiedStencilRefSupported);
691FEATURE_SUPPORT_GET(BOOL, m_dOptions, TypedUAVLoadAdditionalFormats);
692FEATURE_SUPPORT_GET(BOOL, m_dOptions, ROVsSupported);
693FEATURE_SUPPORT_GET(D3D12_CONSERVATIVE_RASTERIZATION_TIER, m_dOptions, ConservativeRasterizationTier);
694FEATURE_SUPPORT_GET(BOOL, m_dOptions, StandardSwizzle64KBSupported);
695FEATURE_SUPPORT_GET(BOOL, m_dOptions, CrossAdapterRowMajorTextureSupported);
696FEATURE_SUPPORT_GET(BOOL, m_dOptions, VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation);
697FEATURE_SUPPORT_GET(D3D12_RESOURCE_HEAP_TIER, m_dOptions, ResourceHeapTier);
698
699// Special procedure for handling caps that is also part of other features
700inline D3D12_CROSS_NODE_SHARING_TIER CD3DX12FeatureSupport::CrossNodeSharingTier() const noexcept
701{
702 if (m_dCrossNode.SharingTier > D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED)
703 {
704 return m_dCrossNode.SharingTier;
705 }
706 else
707 {
708 return m_dOptions.CrossNodeSharingTier;
709 }
710}
711
712inline UINT CD3DX12FeatureSupport::MaxGPUVirtualAddressBitsPerResource() const noexcept
713{
714 if (m_dOptions.MaxGPUVirtualAddressBitsPerResource > 0)
715 {
716 return m_dOptions.MaxGPUVirtualAddressBitsPerResource;
717 }
718 else
719 {
720 return m_dGPUVASupport.MaxGPUVirtualAddressBitsPerResource;
721 }
722}
723
724// 1: Architecture
725// Combined with Architecture1
726
727// 2: Feature Levels
728// Simply returns the highest supported feature level
729inline D3D_FEATURE_LEVEL CD3DX12FeatureSupport::MaxSupportedFeatureLevel() const noexcept
730{
731 return m_eMaxFeatureLevel;
732}
733
734// 3: Feature Format Support
735inline HRESULT CD3DX12FeatureSupport::FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const
736{
737 D3D12_FEATURE_DATA_FORMAT_SUPPORT dFormatSupport;
738 dFormatSupport.Format = Format;
739
740 // It is possible that the function call returns an error
741 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &dFormatSupport, sizeof(D3D12_FEATURE_DATA_FORMAT_SUPPORT));
742
743 Support1 = dFormatSupport.Support1;
744 Support2 = dFormatSupport.Support2; // Two outputs. Probably better just to take in the struct as an argument?
745
746 return result;
747}
748
749// 4: Multisample Quality Levels
750inline HRESULT CD3DX12FeatureSupport::MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const
751{
752 D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS dMultisampleQualityLevels;
753 dMultisampleQualityLevels.Format = Format;
754 dMultisampleQualityLevels.SampleCount = SampleCount;
755 dMultisampleQualityLevels.Flags = Flags;
756
757 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &dMultisampleQualityLevels, sizeof(D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS));
758
759 if (SUCCEEDED(result))
760 {
761 NumQualityLevels = dMultisampleQualityLevels.NumQualityLevels;
762 }
763 else
764 {
765 NumQualityLevels = 0;
766 }
767
768 return result;
769}
770
771// 5: Format Info
772inline HRESULT CD3DX12FeatureSupport::FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const
773{
774 D3D12_FEATURE_DATA_FORMAT_INFO dFormatInfo;
775 dFormatInfo.Format = Format;
776
777 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &dFormatInfo, sizeof(D3D12_FEATURE_DATA_FORMAT_INFO));
778 if (FAILED(result))
779 {
780 PlaneCount = 0;
781 }
782 else
783 {
784 PlaneCount = dFormatInfo.PlaneCount;
785 }
786 return result;
787}
788
789// 6: GPU Virtual Address Support
790// MaxGPUVirtualAddressBitsPerResource handled in D3D12Options
791FEATURE_SUPPORT_GET(UINT, m_dGPUVASupport, MaxGPUVirtualAddressBitsPerProcess);
792
793// 7: Shader Model
794inline D3D_SHADER_MODEL CD3DX12FeatureSupport::HighestShaderModel() const noexcept
795{
796 return m_dShaderModel.HighestShaderModel;
797}
798
799// 8: D3D12 Options1
800FEATURE_SUPPORT_GET(BOOL, m_dOptions1, WaveOps);
801FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMin);
802FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMax);
803FEATURE_SUPPORT_GET(UINT, m_dOptions1, TotalLaneCount);
804FEATURE_SUPPORT_GET(BOOL, m_dOptions1, ExpandedComputeResourceStates);
805FEATURE_SUPPORT_GET(BOOL, m_dOptions1, Int64ShaderOps);
806
807// 10: Protected Resource Session Support
808inline D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS CD3DX12FeatureSupport::ProtectedResourceSessionSupport(UINT NodeIndex) const
809{
810 return m_dProtectedResourceSessionSupport[NodeIndex].Support;
811}
812
813// 12: Root Signature
814inline D3D_ROOT_SIGNATURE_VERSION CD3DX12FeatureSupport::HighestRootSignatureVersion() const noexcept
815{
816 return m_dRootSignature.HighestVersion;
817}
818
819// 16: Architecture1
820// Same data fields can be queried from m_dArchitecture
821FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, TileBasedRenderer);
822FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, UMA);
823FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, CacheCoherentUMA);
824FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, IsolatedMMU);
825
826// 18: D3D12 Options2
827FEATURE_SUPPORT_GET(BOOL, m_dOptions2, DepthBoundsTestSupported);
828FEATURE_SUPPORT_GET(D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER, m_dOptions2, ProgrammableSamplePositionsTier);
829
830// 19: Shader Cache
831FEATURE_SUPPORT_GET_NAME(D3D12_SHADER_CACHE_SUPPORT_FLAGS, m_dShaderCache, SupportFlags, ShaderCacheSupportFlags);
832
833// 20: Command Queue Priority
834inline BOOL CD3DX12FeatureSupport::CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority)
835{
836 m_dCommandQueuePriority.CommandListType = CommandListType;
837 m_dCommandQueuePriority.Priority = Priority;
838
839 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_COMMAND_QUEUE_PRIORITY, &m_dCommandQueuePriority, sizeof(D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY))))
840 {
841 return false;
842 }
843
844 return m_dCommandQueuePriority.PriorityForTypeIsSupported;
845}
846
847// 21: D3D12 Options3
848FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CopyQueueTimestampQueriesSupported);
849FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CastingFullyTypedFormatSupported);
850FEATURE_SUPPORT_GET(D3D12_COMMAND_LIST_SUPPORT_FLAGS, m_dOptions3, WriteBufferImmediateSupportFlags);
851FEATURE_SUPPORT_GET(D3D12_VIEW_INSTANCING_TIER, m_dOptions3, ViewInstancingTier);
852FEATURE_SUPPORT_GET(BOOL, m_dOptions3, BarycentricsSupported);
853
854// 22: Existing Heaps
855FEATURE_SUPPORT_GET_NAME(BOOL, m_dExistingHeaps, Supported, ExistingHeapsSupported);
856
857// 23: D3D12 Options4
858FEATURE_SUPPORT_GET(BOOL, m_dOptions4, MSAA64KBAlignedTextureSupported);
859FEATURE_SUPPORT_GET(D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER, m_dOptions4, SharedResourceCompatibilityTier);
860FEATURE_SUPPORT_GET(BOOL, m_dOptions4, Native16BitShaderOpsSupported);
861
862// 24: Serialization
863FEATURE_SUPPORT_GET_NODE_INDEXED(D3D12_HEAP_SERIALIZATION_TIER, m_dSerialization, HeapSerializationTier);
864
865// 25: Cross Node
866// CrossNodeSharingTier handled in D3D12Options
867FEATURE_SUPPORT_GET_NAME(BOOL, m_dCrossNode, AtomicShaderInstructions, CrossNodeAtomicShaderInstructions);
868
869// 27: D3D12 Options5
870FEATURE_SUPPORT_GET(BOOL, m_dOptions5, SRVOnlyTiledResourceTier3);
871FEATURE_SUPPORT_GET(D3D12_RENDER_PASS_TIER, m_dOptions5, RenderPassesTier);
872FEATURE_SUPPORT_GET(D3D12_RAYTRACING_TIER, m_dOptions5, RaytracingTier);
873
874#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
875// 28: Displayable
876FEATURE_SUPPORT_GET(BOOL, m_dDisplayable, DisplayableTexture);
877// SharedResourceCompatibilityTier handled in D3D12Options4
878#endif
879
880// 30: D3D12 Options6
881FEATURE_SUPPORT_GET(BOOL, m_dOptions6, AdditionalShadingRatesSupported);
882FEATURE_SUPPORT_GET(BOOL, m_dOptions6, PerPrimitiveShadingRateSupportedWithViewportIndexing);
883FEATURE_SUPPORT_GET(D3D12_VARIABLE_SHADING_RATE_TIER, m_dOptions6, VariableShadingRateTier);
884FEATURE_SUPPORT_GET(UINT, m_dOptions6, ShadingRateImageTileSize);
885FEATURE_SUPPORT_GET(BOOL, m_dOptions6, BackgroundProcessingSupported);
886
887// 31: Query Meta Command
888// Keep the original call routine
889inline HRESULT CD3DX12FeatureSupport::QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const
890{
891 return m_pDevice->CheckFeatureSupport(D3D12_FEATURE_QUERY_META_COMMAND, &dQueryMetaCommand, sizeof(D3D12_FEATURE_DATA_QUERY_META_COMMAND));
892}
893
894// 32: D3D12 Options7
895FEATURE_SUPPORT_GET(D3D12_MESH_SHADER_TIER, m_dOptions7, MeshShaderTier);
896FEATURE_SUPPORT_GET(D3D12_SAMPLER_FEEDBACK_TIER, m_dOptions7, SamplerFeedbackTier);
897
898// 33: Protected Resource Session Type Count
899FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(UINT, m_dProtectedResourceSessionTypeCount, Count, ProtectedResourceSessionTypeCount);
900
901// 34: Protected Resource Session Types
902FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(std::vector<GUID>, m_dProtectedResourceSessionTypes, TypeVec, ProtectedResourceSessionTypes);
903
904#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
905// 36: Options8
906FEATURE_SUPPORT_GET(BOOL, m_dOptions8, UnalignedBlockTexturesSupported);
907
908// 37: Options9
909FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderPipelineStatsSupported);
910FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderSupportsFullRangeRenderTargetArrayIndex);
911FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnTypedResourceSupported);
912FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnGroupSharedSupported);
913FEATURE_SUPPORT_GET(BOOL, m_dOptions9, DerivativesInMeshAndAmplificationShadersSupported);
914FEATURE_SUPPORT_GET(D3D12_WAVE_MMA_TIER, m_dOptions9, WaveMMATier);
915#endif
916
917#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
918// 39: Options10
919FEATURE_SUPPORT_GET(BOOL, m_dOptions10, VariableRateShadingSumCombinerSupported);
920FEATURE_SUPPORT_GET(BOOL, m_dOptions10, MeshShaderPerPrimitiveShadingRateSupported);
921
922// 40: Options11
923FEATURE_SUPPORT_GET(BOOL, m_dOptions11, AtomicInt64OnDescriptorHeapResourceSupported);
924#endif
925
926#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
927// 41: Options12
928FEATURE_SUPPORT_GET(D3D12_TRI_STATE, m_dOptions12, MSPrimitivesPipelineStatisticIncludesCulledPrimitives);
929FEATURE_SUPPORT_GET(BOOL, m_dOptions12, EnhancedBarriersSupported);
930FEATURE_SUPPORT_GET(BOOL, m_dOptions12, RelaxedFormatCastingSupported);
931#endif
932
933#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
934// 42: Options13
935FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedBufferTextureCopyPitchSupported);
936FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedVertexElementAlignmentSupported);
937FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportHeightFlipsYSupported);
938FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportDepthFlipsZSupported);
939FEATURE_SUPPORT_GET(BOOL, m_dOptions13, TextureCopyBetweenDimensionsSupported);
940FEATURE_SUPPORT_GET(BOOL, m_dOptions13, AlphaBlendFactorSupported);
941#endif
942
943#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
944// 43: Options14
945FEATURE_SUPPORT_GET(BOOL, m_dOptions14, AdvancedTextureOpsSupported);
946FEATURE_SUPPORT_GET(BOOL, m_dOptions14, WriteableMSAATexturesSupported);
947FEATURE_SUPPORT_GET(BOOL, m_dOptions14, IndependentFrontAndBackStencilRefMaskSupported);
948
949// 44: Options15
950FEATURE_SUPPORT_GET(BOOL, m_dOptions15, TriangleFanSupported);
951FEATURE_SUPPORT_GET(BOOL, m_dOptions15, DynamicIndexBufferStripCutSupported);
952#endif
953
954#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
955// 45: Options16
956FEATURE_SUPPORT_GET(BOOL, m_dOptions16, DynamicDepthBiasSupported);
957#endif
958#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
959FEATURE_SUPPORT_GET(BOOL, m_dOptions16, GPUUploadHeapSupported);
960
961// 46: Options17
962FEATURE_SUPPORT_GET(BOOL, m_dOptions17, NonNormalizedCoordinateSamplersSupported);
963FEATURE_SUPPORT_GET(BOOL, m_dOptions17, ManualWriteTrackingResourceSupported);
964
965// 47: Option18
966FEATURE_SUPPORT_GET(BOOL, m_dOptions18, RenderPassesValid);
967#endif
968
969#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
970FEATURE_SUPPORT_GET(BOOL, m_dOptions19, MismatchingOutputDimensionsSupported);
971FEATURE_SUPPORT_GET(UINT, m_dOptions19, SupportedSampleCountsWithNoOutputs);
972FEATURE_SUPPORT_GET(BOOL, m_dOptions19, PointSamplingAddressesNeverRoundUp);
973FEATURE_SUPPORT_GET(BOOL, m_dOptions19, RasterizerDesc2Supported);
974FEATURE_SUPPORT_GET(BOOL, m_dOptions19, NarrowQuadrilateralLinesSupported);
975FEATURE_SUPPORT_GET(BOOL, m_dOptions19, AnisoFilterWithPointMipSupported);
976FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSize);
977FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSizeWithStaticSamplers);
978FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxViewDescriptorHeapSize);
979#endif
980
981#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
982// 49: Options20
983FEATURE_SUPPORT_GET(BOOL, m_dOptions20, ComputeOnlyWriteWatchSupported);
984#endif
985
986#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
987// 50: Options21
988FEATURE_SUPPORT_GET(D3D12_EXECUTE_INDIRECT_TIER, m_dOptions21, ExecuteIndirectTier);
989FEATURE_SUPPORT_GET(D3D12_WORK_GRAPHS_TIER, m_dOptions21, WorkGraphsTier);
990#endif
991
992#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
993// 51: TightAlignment
994FEATURE_SUPPORT_GET_NAME(D3D12_TIGHT_ALIGNMENT_TIER, m_dTightAlignment, SupportTier, TightAlignmentSupportTier);
995#endif
996
997// Helper function to decide the highest shader model supported by the system
998// Stores the result in m_dShaderModel
999// Must be updated whenever a new shader model is added to the d3d12.h header
1000inline HRESULT CD3DX12FeatureSupport::QueryHighestShaderModel()
1001{
1002 // Check support in descending order
1003 HRESULT result;
1004
1005 const D3D_SHADER_MODEL allModelVersions[] =
1006 {
1007#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
1008 D3D_SHADER_MODEL_6_9,
1009#endif
1010#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1011 D3D_SHADER_MODEL_6_8,
1012#endif
1013#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
1014 D3D_SHADER_MODEL_6_7,
1015#endif
1016 D3D_SHADER_MODEL_6_6,
1017 D3D_SHADER_MODEL_6_5,
1018 D3D_SHADER_MODEL_6_4,
1019 D3D_SHADER_MODEL_6_3,
1020 D3D_SHADER_MODEL_6_2,
1021 D3D_SHADER_MODEL_6_1,
1022 D3D_SHADER_MODEL_6_0,
1023 D3D_SHADER_MODEL_5_1
1024 };
1025 constexpr size_t numModelVersions = sizeof(allModelVersions) / sizeof(D3D_SHADER_MODEL);
1026
1027 for (size_t i = 0; i < numModelVersions; i++)
1028 {
1029 m_dShaderModel.HighestShaderModel = allModelVersions[i];
1030 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &m_dShaderModel, sizeof(D3D12_FEATURE_DATA_SHADER_MODEL));
1031 if (result != E_INVALIDARG)
1032 {
1033 // Indicates that the version is recognizable by the runtime and stored in the struct
1034 // Also terminate on unexpected error code
1035 if (FAILED(result))
1036 {
1037 m_dShaderModel.HighestShaderModel = static_cast<D3D_SHADER_MODEL>(0);
1038 }
1039 return result;
1040 }
1041 }
1042
1043 // Shader model may not be supported. Continue the rest initializations
1044 m_dShaderModel.HighestShaderModel = static_cast<D3D_SHADER_MODEL>(0);
1045 return S_OK;
1046}
1047
1048// Helper function to decide the highest root signature supported
1049// Must be updated whenever a new root signature version is added to the d3d12.h header
1050inline HRESULT CD3DX12FeatureSupport::QueryHighestRootSignatureVersion()
1051{
1052 HRESULT result;
1053
1054 const D3D_ROOT_SIGNATURE_VERSION allRootSignatureVersions[] =
1055 {
1056#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1057 D3D_ROOT_SIGNATURE_VERSION_1_2,
1058#endif
1059 D3D_ROOT_SIGNATURE_VERSION_1_1,
1060 D3D_ROOT_SIGNATURE_VERSION_1_0,
1061 D3D_ROOT_SIGNATURE_VERSION_1,
1062 };
1063 constexpr size_t numRootSignatureVersions = sizeof(allRootSignatureVersions) / sizeof(D3D_ROOT_SIGNATURE_VERSION);
1064
1065 for (size_t i = 0; i < numRootSignatureVersions; i++)
1066 {
1067 m_dRootSignature.HighestVersion = allRootSignatureVersions[i];
1068 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ROOT_SIGNATURE, &m_dRootSignature, sizeof(D3D12_FEATURE_DATA_ROOT_SIGNATURE));
1069 if (result != E_INVALIDARG)
1070 {
1071 if (FAILED(result))
1072 {
1073 m_dRootSignature.HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(0);
1074 }
1075 // If succeeded, the highest version is already written into the member struct
1076 return result;
1077 }
1078 }
1079
1080 // No version left. Set to invalid value and continue.
1081 m_dRootSignature.HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(0);
1082 return S_OK;
1083}
1084
1085// Helper funcion to decide the highest feature level
1086inline HRESULT CD3DX12FeatureSupport::QueryHighestFeatureLevel()
1087{
1088 HRESULT result;
1089
1090 // Check against a list of all feature levels present in d3dcommon.h
1091 // Needs to be updated for future feature levels
1092 const D3D_FEATURE_LEVEL allLevels[] =
1093 {
1094#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
1095 D3D_FEATURE_LEVEL_12_2,
1096#endif
1097 D3D_FEATURE_LEVEL_12_1,
1098 D3D_FEATURE_LEVEL_12_0,
1099 D3D_FEATURE_LEVEL_11_1,
1100 D3D_FEATURE_LEVEL_11_0,
1101 D3D_FEATURE_LEVEL_10_1,
1102 D3D_FEATURE_LEVEL_10_0,
1103 D3D_FEATURE_LEVEL_9_3,
1104 D3D_FEATURE_LEVEL_9_2,
1105 D3D_FEATURE_LEVEL_9_1,
1106#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 5)
1107 D3D_FEATURE_LEVEL_1_0_CORE,
1108#endif
1109#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
1110 D3D_FEATURE_LEVEL_1_0_GENERIC
1111#endif
1112 };
1113
1114 D3D12_FEATURE_DATA_FEATURE_LEVELS dFeatureLevel;
1115 dFeatureLevel.NumFeatureLevels = static_cast<UINT>(sizeof(allLevels) / sizeof(D3D_FEATURE_LEVEL));
1116 dFeatureLevel.pFeatureLevelsRequested = allLevels;
1117
1118 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS, &dFeatureLevel, sizeof(D3D12_FEATURE_DATA_FEATURE_LEVELS));
1119 if (SUCCEEDED(result))
1120 {
1121 m_eMaxFeatureLevel = dFeatureLevel.MaxSupportedFeatureLevel;
1122 }
1123 else
1124 {
1125 m_eMaxFeatureLevel = static_cast<D3D_FEATURE_LEVEL>(0);
1126
1127 if (result == DXGI_ERROR_UNSUPPORTED)
1128 {
1129 // Indicates that none supported. Continue initialization
1130 result = S_OK;
1131 }
1132 }
1133 return result;
1134}
1135
1136// Helper function to initialize local protected resource session types structs
1137inline HRESULT CD3DX12FeatureSupport::QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count)
1138{
1139 auto& CurrentPRSTypes = m_dProtectedResourceSessionTypes[NodeIndex];
1140 CurrentPRSTypes.NodeIndex = NodeIndex;
1141 CurrentPRSTypes.Count = Count;
1142 CurrentPRSTypes.TypeVec.resize(CurrentPRSTypes.Count);
1143 CurrentPRSTypes.pTypes = CurrentPRSTypes.TypeVec.data();
1144
1145 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES, &m_dProtectedResourceSessionTypes[NodeIndex], sizeof(D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES));
1146 if (FAILED(result))
1147 {
1148 // Resize TypeVec to empty
1149 CurrentPRSTypes.TypeVec.clear();
1150 }
1151
1152 return result;
1153}
1154
1155#undef FEATURE_SUPPORT_GET
1156#undef FEATURE_SUPPORT_GET_NAME
1157#undef FEATURE_SUPPORT_GET_NODE_INDEXED
1158#undef FEATURE_SUPPORT_GET_NODE_INDEXED_NAME
1159
1160// end CD3DX12FeatureSupport
1161
1162
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_core.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_core.h
new file mode 100644
index 0000000..092a039
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_core.h
@@ -0,0 +1,2072 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include <string.h>
15#include "d3d12.h"
16#include "d3dx12_default.h"
17
18//------------------------------------------------------------------------------------------------
19#ifndef D3DX12_ASSERT
20 #ifdef assert
21 #define D3DX12_ASSERT(x) assert(x)
22 #else
23 #define D3DX12_ASSERT(x)
24 #endif
25#endif
26
27//------------------------------------------------------------------------------------------------
28template <typename t_CommandListType>
29inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) noexcept
30{
31 // This cast is useful for passing strongly typed command list pointers into
32 // ExecuteCommandLists.
33 // This cast is valid as long as the const-ness is respected. D3D12 APIs do
34 // respect the const-ness of their arguments.
35 return reinterpret_cast<ID3D12CommandList * const *>(pp);
36}
37
38#ifdef D3DX12_USE_ARRAY_COM_PTR
39#include <vector>
40//------------------------------------------------------------------------------------------------
41// CArrayComPtr - Useful RAII container of raw IUnknown pointers.
42template<typename _T>
43class CArrayComPtr
44{
45 std::vector<_T *> m_array;
46
47public:
48 class CProxyPtr
49 {
50 _T *&pObj;
51
52 CProxyPtr(_T *&obj) :
53 pObj(obj) {}
54
55 public:
56 operator _T*() { return pObj; }
57 _T **operator&() { return &pObj; }
58 CProxyPtr &operator=(_T*&obj)
59 {
60 if(pObj)
61 pObj->Release();
62
63 pObj = obj;
64
65 if(pObj)
66 pObj->AddRef();
67 }
68
69 friend class CArrayComPtr<_T>;
70 };
71
72public:
73 CArrayComPtr() = default;
74
75 CArrayComPtr(size_t size) :
76 m_array(size) {
77 }
78
79 CArrayComPtr(const CArrayComPtr &o)
80 {
81 m_array = o.m_array;
82 for (size_t i = 0; i < m_array.size(); ++i)
83 {
84 m_array[i]->AddRef();
85 }
86 }
87
88 CArrayComPtr(CArrayComPtr &&o) = default;
89
90 ~CArrayComPtr()
91 {
92 for (auto ptr : m_array)
93 {
94 if (ptr)
95 {
96 ptr->Release();
97 }
98 }
99 }
100
101 _T *const *Get() { return m_array.data(); }
102
103 void Assign(size_t index, _T *ptr)
104 {
105 if (index >= m_array.size())
106 {
107 Resize(index + 1);
108 }
109
110 // Release the old pointer if it exists
111 if (m_array[index])
112 {
113 m_array[index]->Release();
114 }
115
116 // Assign the new pointer and AddRef it if not null
117 m_array[index] = ptr;
118 if (ptr)
119 {
120 ptr->AddRef();
121 }
122 }
123
124 void Resize(size_t size)
125 {
126 // If shrinking, release any pointers that will be discarded
127 if (size < m_array.size())
128 {
129 for (size_t i = size; i < m_array.size(); ++i)
130 {
131 if (m_array[i])
132 {
133 m_array[i]->Release();
134 }
135 }
136 }
137
138 // Resize the vector, initializing new elements to nullptr
139 m_array.resize(size, nullptr);
140 }
141
142 void PushBack(_T *ptr)
143 {
144 // AddRef if not null
145 if (ptr)
146 {
147 ptr->AddRef();
148 }
149 m_array.push_back(ptr);
150 }
151
152 CProxyPtr operator[](size_t index)
153 {
154 return CProxyPtr(m_array[index]);
155 }
156};
157#endif
158//------------------------------------------------------------------------------------------------
159inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
160{
161 return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
162 l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
163}
164
165//------------------------------------------------------------------------------------------------
166inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
167{ return !( l == r ); }
168
169//------------------------------------------------------------------------------------------------
170struct CD3DX12_RECT : public D3D12_RECT
171{
172 CD3DX12_RECT() = default;
173 explicit CD3DX12_RECT( const D3D12_RECT& o ) noexcept :
174 D3D12_RECT( o )
175 {}
176 explicit CD3DX12_RECT(
177 LONG Left,
178 LONG Top,
179 LONG Right,
180 LONG Bottom ) noexcept
181 {
182 left = Left;
183 top = Top;
184 right = Right;
185 bottom = Bottom;
186 }
187};
188
189//------------------------------------------------------------------------------------------------
190struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT
191{
192 CD3DX12_VIEWPORT() = default;
193 explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) noexcept :
194 D3D12_VIEWPORT( o )
195 {}
196 explicit CD3DX12_VIEWPORT(
197 FLOAT topLeftX,
198 FLOAT topLeftY,
199 FLOAT width,
200 FLOAT height,
201 FLOAT minDepth = D3D12_MIN_DEPTH,
202 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
203 {
204 TopLeftX = topLeftX;
205 TopLeftY = topLeftY;
206 Width = width;
207 Height = height;
208 MinDepth = minDepth;
209 MaxDepth = maxDepth;
210 }
211 explicit CD3DX12_VIEWPORT(
212 _In_ ID3D12Resource* pResource,
213 UINT mipSlice = 0,
214 FLOAT topLeftX = 0.0f,
215 FLOAT topLeftY = 0.0f,
216 FLOAT minDepth = D3D12_MIN_DEPTH,
217 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
218 {
219#if defined(_MSC_VER) || !defined(_WIN32)
220 const auto Desc = pResource->GetDesc();
221#else
222 D3D12_RESOURCE_DESC tmpDesc;
223 const auto& Desc = *pResource->GetDesc(&tmpDesc);
224#endif
225 const UINT64 SubresourceWidth = Desc.Width >> mipSlice;
226 const UINT64 SubresourceHeight = Desc.Height >> mipSlice;
227 switch (Desc.Dimension)
228 {
229 case D3D12_RESOURCE_DIMENSION_BUFFER:
230 TopLeftX = topLeftX;
231 TopLeftY = 0.0f;
232 Width = float(Desc.Width) - topLeftX;
233 Height = 1.0f;
234 break;
235 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
236 TopLeftX = topLeftX;
237 TopLeftY = 0.0f;
238 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
239 Height = 1.0f;
240 break;
241 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
242 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
243 TopLeftX = topLeftX;
244 TopLeftY = topLeftY;
245 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
246 Height = (SubresourceHeight ? float(SubresourceHeight) : 1.0f) - topLeftY;
247 break;
248 default: break;
249 }
250
251 MinDepth = minDepth;
252 MaxDepth = maxDepth;
253 }
254};
255
256//------------------------------------------------------------------------------------------------
257struct CD3DX12_BOX : public D3D12_BOX
258{
259 CD3DX12_BOX() = default;
260 explicit CD3DX12_BOX( const D3D12_BOX& o ) noexcept :
261 D3D12_BOX( o )
262 {}
263 explicit CD3DX12_BOX(
264 LONG Left,
265 LONG Right ) noexcept
266 {
267 left = static_cast<UINT>(Left);
268 top = 0;
269 front = 0;
270 right = static_cast<UINT>(Right);
271 bottom = 1;
272 back = 1;
273 }
274 explicit CD3DX12_BOX(
275 LONG Left,
276 LONG Top,
277 LONG Right,
278 LONG Bottom ) noexcept
279 {
280 left = static_cast<UINT>(Left);
281 top = static_cast<UINT>(Top);
282 front = 0;
283 right = static_cast<UINT>(Right);
284 bottom = static_cast<UINT>(Bottom);
285 back = 1;
286 }
287 explicit CD3DX12_BOX(
288 LONG Left,
289 LONG Top,
290 LONG Front,
291 LONG Right,
292 LONG Bottom,
293 LONG Back ) noexcept
294 {
295 left = static_cast<UINT>(Left);
296 top = static_cast<UINT>(Top);
297 front = static_cast<UINT>(Front);
298 right = static_cast<UINT>(Right);
299 bottom = static_cast<UINT>(Bottom);
300 back = static_cast<UINT>(Back);
301 }
302};
303inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
304{
305 return l.left == r.left && l.top == r.top && l.front == r.front &&
306 l.right == r.right && l.bottom == r.bottom && l.back == r.back;
307}
308inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
309{ return !( l == r ); }
310
311//------------------------------------------------------------------------------------------------
312struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
313{
314 CD3DX12_DEPTH_STENCIL_DESC() = default;
315 explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept :
316 D3D12_DEPTH_STENCIL_DESC( o )
317 {}
318 explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) noexcept
319 {
320 DepthEnable = TRUE;
321 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
322 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
323 StencilEnable = FALSE;
324 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
325 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
326 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
327 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
328 FrontFace = defaultStencilOp;
329 BackFace = defaultStencilOp;
330 }
331 explicit CD3DX12_DEPTH_STENCIL_DESC(
332 BOOL depthEnable,
333 D3D12_DEPTH_WRITE_MASK depthWriteMask,
334 D3D12_COMPARISON_FUNC depthFunc,
335 BOOL stencilEnable,
336 UINT8 stencilReadMask,
337 UINT8 stencilWriteMask,
338 D3D12_STENCIL_OP frontStencilFailOp,
339 D3D12_STENCIL_OP frontStencilDepthFailOp,
340 D3D12_STENCIL_OP frontStencilPassOp,
341 D3D12_COMPARISON_FUNC frontStencilFunc,
342 D3D12_STENCIL_OP backStencilFailOp,
343 D3D12_STENCIL_OP backStencilDepthFailOp,
344 D3D12_STENCIL_OP backStencilPassOp,
345 D3D12_COMPARISON_FUNC backStencilFunc ) noexcept
346 {
347 DepthEnable = depthEnable;
348 DepthWriteMask = depthWriteMask;
349 DepthFunc = depthFunc;
350 StencilEnable = stencilEnable;
351 StencilReadMask = stencilReadMask;
352 StencilWriteMask = stencilWriteMask;
353 FrontFace.StencilFailOp = frontStencilFailOp;
354 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
355 FrontFace.StencilPassOp = frontStencilPassOp;
356 FrontFace.StencilFunc = frontStencilFunc;
357 BackFace.StencilFailOp = backStencilFailOp;
358 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
359 BackFace.StencilPassOp = backStencilPassOp;
360 BackFace.StencilFunc = backStencilFunc;
361 }
362};
363
364//------------------------------------------------------------------------------------------------
365struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1
366{
367 CD3DX12_DEPTH_STENCIL_DESC1() = default;
368 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept :
369 D3D12_DEPTH_STENCIL_DESC1( o )
370 {}
371 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
372 {
373 DepthEnable = o.DepthEnable;
374 DepthWriteMask = o.DepthWriteMask;
375 DepthFunc = o.DepthFunc;
376 StencilEnable = o.StencilEnable;
377 StencilReadMask = o.StencilReadMask;
378 StencilWriteMask = o.StencilWriteMask;
379 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
380 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
381 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
382 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
383 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
384 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
385 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
386 BackFace.StencilFunc = o.BackFace.StencilFunc;
387 DepthBoundsTestEnable = FALSE;
388 }
389 explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) noexcept
390 {
391 DepthEnable = TRUE;
392 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
393 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
394 StencilEnable = FALSE;
395 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
396 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
397 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
398 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
399 FrontFace = defaultStencilOp;
400 BackFace = defaultStencilOp;
401 DepthBoundsTestEnable = FALSE;
402 }
403 explicit CD3DX12_DEPTH_STENCIL_DESC1(
404 BOOL depthEnable,
405 D3D12_DEPTH_WRITE_MASK depthWriteMask,
406 D3D12_COMPARISON_FUNC depthFunc,
407 BOOL stencilEnable,
408 UINT8 stencilReadMask,
409 UINT8 stencilWriteMask,
410 D3D12_STENCIL_OP frontStencilFailOp,
411 D3D12_STENCIL_OP frontStencilDepthFailOp,
412 D3D12_STENCIL_OP frontStencilPassOp,
413 D3D12_COMPARISON_FUNC frontStencilFunc,
414 D3D12_STENCIL_OP backStencilFailOp,
415 D3D12_STENCIL_OP backStencilDepthFailOp,
416 D3D12_STENCIL_OP backStencilPassOp,
417 D3D12_COMPARISON_FUNC backStencilFunc,
418 BOOL depthBoundsTestEnable ) noexcept
419 {
420 DepthEnable = depthEnable;
421 DepthWriteMask = depthWriteMask;
422 DepthFunc = depthFunc;
423 StencilEnable = stencilEnable;
424 StencilReadMask = stencilReadMask;
425 StencilWriteMask = stencilWriteMask;
426 FrontFace.StencilFailOp = frontStencilFailOp;
427 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
428 FrontFace.StencilPassOp = frontStencilPassOp;
429 FrontFace.StencilFunc = frontStencilFunc;
430 BackFace.StencilFailOp = backStencilFailOp;
431 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
432 BackFace.StencilPassOp = backStencilPassOp;
433 BackFace.StencilFunc = backStencilFunc;
434 DepthBoundsTestEnable = depthBoundsTestEnable;
435 }
436 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
437 {
438 D3D12_DEPTH_STENCIL_DESC D;
439 D.DepthEnable = DepthEnable;
440 D.DepthWriteMask = DepthWriteMask;
441 D.DepthFunc = DepthFunc;
442 D.StencilEnable = StencilEnable;
443 D.StencilReadMask = StencilReadMask;
444 D.StencilWriteMask = StencilWriteMask;
445 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
446 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
447 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
448 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
449 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
450 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
451 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
452 D.BackFace.StencilFunc = BackFace.StencilFunc;
453 return D;
454 }
455};
456
457//------------------------------------------------------------------------------------------------
458#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
459struct CD3DX12_DEPTH_STENCIL_DESC2 : public D3D12_DEPTH_STENCIL_DESC2
460{
461 CD3DX12_DEPTH_STENCIL_DESC2() = default;
462 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC2& o ) noexcept :
463 D3D12_DEPTH_STENCIL_DESC2( o )
464 {}
465 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept
466 {
467 DepthEnable = o.DepthEnable;
468 DepthWriteMask = o.DepthWriteMask;
469 DepthFunc = o.DepthFunc;
470 StencilEnable = o.StencilEnable;
471 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
472 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
473 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
474 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
475 FrontFace.StencilReadMask = o.StencilReadMask;
476 FrontFace.StencilWriteMask = o.StencilWriteMask;
477
478 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
479 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
480 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
481 BackFace.StencilFunc = o.BackFace.StencilFunc;
482 BackFace.StencilReadMask = o.StencilReadMask;
483 BackFace.StencilWriteMask = o.StencilWriteMask;
484 DepthBoundsTestEnable = o.DepthBoundsTestEnable;
485 }
486 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
487 {
488 DepthEnable = o.DepthEnable;
489 DepthWriteMask = o.DepthWriteMask;
490 DepthFunc = o.DepthFunc;
491 StencilEnable = o.StencilEnable;
492
493 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
494 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
495 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
496 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
497 FrontFace.StencilReadMask = o.StencilReadMask;
498 FrontFace.StencilWriteMask = o.StencilWriteMask;
499
500 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
501 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
502 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
503 BackFace.StencilFunc = o.BackFace.StencilFunc;
504 BackFace.StencilReadMask = o.StencilReadMask;
505 BackFace.StencilWriteMask = o.StencilWriteMask;
506
507 DepthBoundsTestEnable = FALSE;
508 }
509 explicit CD3DX12_DEPTH_STENCIL_DESC2( CD3DX12_DEFAULT ) noexcept
510 {
511 DepthEnable = TRUE;
512 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
513 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
514 StencilEnable = FALSE;
515 const D3D12_DEPTH_STENCILOP_DESC1 defaultStencilOp =
516 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS, D3D12_DEFAULT_STENCIL_READ_MASK, D3D12_DEFAULT_STENCIL_WRITE_MASK };
517 FrontFace = defaultStencilOp;
518 BackFace = defaultStencilOp;
519 DepthBoundsTestEnable = FALSE;
520 }
521 explicit CD3DX12_DEPTH_STENCIL_DESC2(
522 BOOL depthEnable,
523 D3D12_DEPTH_WRITE_MASK depthWriteMask,
524 D3D12_COMPARISON_FUNC depthFunc,
525 BOOL stencilEnable,
526 D3D12_STENCIL_OP frontStencilFailOp,
527 D3D12_STENCIL_OP frontStencilDepthFailOp,
528 D3D12_STENCIL_OP frontStencilPassOp,
529 D3D12_COMPARISON_FUNC frontStencilFunc,
530 UINT8 frontStencilReadMask,
531 UINT8 frontStencilWriteMask,
532 D3D12_STENCIL_OP backStencilFailOp,
533 D3D12_STENCIL_OP backStencilDepthFailOp,
534 D3D12_STENCIL_OP backStencilPassOp,
535 D3D12_COMPARISON_FUNC backStencilFunc,
536 UINT8 backStencilReadMask,
537 UINT8 backStencilWriteMask,
538 BOOL depthBoundsTestEnable ) noexcept
539 {
540 DepthEnable = depthEnable;
541 DepthWriteMask = depthWriteMask;
542 DepthFunc = depthFunc;
543 StencilEnable = stencilEnable;
544
545 FrontFace.StencilFailOp = frontStencilFailOp;
546 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
547 FrontFace.StencilPassOp = frontStencilPassOp;
548 FrontFace.StencilFunc = frontStencilFunc;
549 FrontFace.StencilReadMask = frontStencilReadMask;
550 FrontFace.StencilWriteMask = frontStencilWriteMask;
551
552 BackFace.StencilFailOp = backStencilFailOp;
553 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
554 BackFace.StencilPassOp = backStencilPassOp;
555 BackFace.StencilFunc = backStencilFunc;
556 BackFace.StencilReadMask = backStencilReadMask;
557 BackFace.StencilWriteMask = backStencilWriteMask;
558
559 DepthBoundsTestEnable = depthBoundsTestEnable;
560 }
561
562 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
563 {
564 D3D12_DEPTH_STENCIL_DESC D;
565 D.DepthEnable = DepthEnable;
566 D.DepthWriteMask = DepthWriteMask;
567 D.DepthFunc = DepthFunc;
568 D.StencilEnable = StencilEnable;
569 D.StencilReadMask = FrontFace.StencilReadMask;
570 D.StencilWriteMask = FrontFace.StencilWriteMask;
571 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
572 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
573 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
574 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
575 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
576 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
577 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
578 D.BackFace.StencilFunc = BackFace.StencilFunc;
579 return D;
580 }
581};
582#endif // D3D12_SDK_VERSION >= 606
583
584//------------------------------------------------------------------------------------------------
585struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
586{
587 CD3DX12_BLEND_DESC() = default;
588 explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) noexcept :
589 D3D12_BLEND_DESC( o )
590 {}
591 explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) noexcept
592 {
593 AlphaToCoverageEnable = FALSE;
594 IndependentBlendEnable = FALSE;
595 const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
596 {
597 FALSE,FALSE,
598 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
599 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
600 D3D12_LOGIC_OP_NOOP,
601 D3D12_COLOR_WRITE_ENABLE_ALL,
602 };
603 for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
604 RenderTarget[ i ] = defaultRenderTargetBlendDesc;
605 }
606};
607
608//------------------------------------------------------------------------------------------------
609struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
610{
611 CD3DX12_RASTERIZER_DESC() = default;
612 explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) noexcept :
613 D3D12_RASTERIZER_DESC( o )
614 {}
615 explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) noexcept
616 {
617 FillMode = D3D12_FILL_MODE_SOLID;
618 CullMode = D3D12_CULL_MODE_BACK;
619 FrontCounterClockwise = FALSE;
620 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
621 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
622 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
623 DepthClipEnable = TRUE;
624 MultisampleEnable = FALSE;
625 AntialiasedLineEnable = FALSE;
626 ForcedSampleCount = 0;
627 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
628 }
629 explicit CD3DX12_RASTERIZER_DESC(
630 D3D12_FILL_MODE fillMode,
631 D3D12_CULL_MODE cullMode,
632 BOOL frontCounterClockwise,
633 INT depthBias,
634 FLOAT depthBiasClamp,
635 FLOAT slopeScaledDepthBias,
636 BOOL depthClipEnable,
637 BOOL multisampleEnable,
638 BOOL antialiasedLineEnable,
639 UINT forcedSampleCount,
640 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
641 {
642 FillMode = fillMode;
643 CullMode = cullMode;
644 FrontCounterClockwise = frontCounterClockwise;
645 DepthBias = depthBias;
646 DepthBiasClamp = depthBiasClamp;
647 SlopeScaledDepthBias = slopeScaledDepthBias;
648 DepthClipEnable = depthClipEnable;
649 MultisampleEnable = multisampleEnable;
650 AntialiasedLineEnable = antialiasedLineEnable;
651 ForcedSampleCount = forcedSampleCount;
652 ConservativeRaster = conservativeRaster;
653 }
654};
655
656
657//------------------------------------------------------------------------------------------------
658#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
659struct CD3DX12_RASTERIZER_DESC1 : public D3D12_RASTERIZER_DESC1
660{
661 CD3DX12_RASTERIZER_DESC1() = default;
662 explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC1& o) noexcept :
663 D3D12_RASTERIZER_DESC1(o)
664
665 {
666 }
667 explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC& o) noexcept
668 {
669 FillMode = o.FillMode;
670 CullMode = o.CullMode;
671 FrontCounterClockwise = o.FrontCounterClockwise;
672 DepthBias = static_cast<FLOAT>(o.DepthBias);
673 DepthBiasClamp = o.DepthBiasClamp;
674 SlopeScaledDepthBias = o.SlopeScaledDepthBias;
675 DepthClipEnable = o.DepthClipEnable;
676 MultisampleEnable = o.MultisampleEnable;
677 AntialiasedLineEnable = o.AntialiasedLineEnable;
678 ForcedSampleCount = o.ForcedSampleCount;
679 ConservativeRaster = o.ConservativeRaster;
680 }
681 explicit CD3DX12_RASTERIZER_DESC1(CD3DX12_DEFAULT) noexcept
682 {
683 FillMode = D3D12_FILL_MODE_SOLID;
684 CullMode = D3D12_CULL_MODE_BACK;
685 FrontCounterClockwise = FALSE;
686 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
687 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
688 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
689 DepthClipEnable = TRUE;
690 MultisampleEnable = FALSE;
691 AntialiasedLineEnable = FALSE;
692 ForcedSampleCount = 0;
693 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
694 }
695 explicit CD3DX12_RASTERIZER_DESC1(
696 D3D12_FILL_MODE fillMode,
697 D3D12_CULL_MODE cullMode,
698 BOOL frontCounterClockwise,
699 FLOAT depthBias,
700 FLOAT depthBiasClamp,
701 FLOAT slopeScaledDepthBias,
702 BOOL depthClipEnable,
703 BOOL multisampleEnable,
704 BOOL antialiasedLineEnable,
705 UINT forcedSampleCount,
706 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
707 {
708 FillMode = fillMode;
709 CullMode = cullMode;
710 FrontCounterClockwise = frontCounterClockwise;
711 DepthBias = depthBias;
712 DepthBiasClamp = depthBiasClamp;
713 SlopeScaledDepthBias = slopeScaledDepthBias;
714 DepthClipEnable = depthClipEnable;
715 MultisampleEnable = multisampleEnable;
716 AntialiasedLineEnable = antialiasedLineEnable;
717 ForcedSampleCount = forcedSampleCount;
718 ConservativeRaster = conservativeRaster;
719 }
720
721
722 operator D3D12_RASTERIZER_DESC() const noexcept
723 {
724 D3D12_RASTERIZER_DESC o;
725
726 o.FillMode = FillMode;
727 o.CullMode = CullMode;
728 o.FrontCounterClockwise = FrontCounterClockwise;
729 o.DepthBias = static_cast<INT>(DepthBias);
730 o.DepthBiasClamp = DepthBiasClamp;
731 o.SlopeScaledDepthBias = SlopeScaledDepthBias;
732 o.DepthClipEnable = DepthClipEnable;
733 o.MultisampleEnable = MultisampleEnable;
734 o.AntialiasedLineEnable = AntialiasedLineEnable;
735 o.ForcedSampleCount = ForcedSampleCount;
736 o.ConservativeRaster = ConservativeRaster;
737
738 return o;
739 }
740};
741#endif // D3D12_SDK_VERSION >= 608
742
743//------------------------------------------------------------------------------------------------
744#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
745struct CD3DX12_RASTERIZER_DESC2 : public D3D12_RASTERIZER_DESC2
746{
747 CD3DX12_RASTERIZER_DESC2() = default;
748 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC2& o) noexcept :
749 D3D12_RASTERIZER_DESC2(o)
750
751 {
752 }
753 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC1& o) noexcept
754 {
755 FillMode = o.FillMode;
756 CullMode = o.CullMode;
757 FrontCounterClockwise = o.FrontCounterClockwise;
758 DepthBias = o.DepthBias;
759 DepthBiasClamp = o.DepthBiasClamp;
760 SlopeScaledDepthBias = o.SlopeScaledDepthBias;
761 DepthClipEnable = o.DepthClipEnable;
762 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
763 if (o.MultisampleEnable)
764 {
765 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE;
766 }
767 else if (o.AntialiasedLineEnable)
768 {
769 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED;
770 }
771 ForcedSampleCount = o.ForcedSampleCount;
772 ConservativeRaster = o.ConservativeRaster;
773 }
774 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC& o) noexcept
775 : CD3DX12_RASTERIZER_DESC2(CD3DX12_RASTERIZER_DESC1(o))
776 {
777 }
778 explicit CD3DX12_RASTERIZER_DESC2(CD3DX12_DEFAULT) noexcept
779 {
780 FillMode = D3D12_FILL_MODE_SOLID;
781 CullMode = D3D12_CULL_MODE_BACK;
782 FrontCounterClockwise = FALSE;
783 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
784 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
785 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
786 DepthClipEnable = TRUE;
787 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
788 ForcedSampleCount = 0;
789 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
790 }
791 explicit CD3DX12_RASTERIZER_DESC2(
792 D3D12_FILL_MODE fillMode,
793 D3D12_CULL_MODE cullMode,
794 BOOL frontCounterClockwise,
795 FLOAT depthBias,
796 FLOAT depthBiasClamp,
797 FLOAT slopeScaledDepthBias,
798 BOOL depthClipEnable,
799 D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode,
800 UINT forcedSampleCount,
801 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
802 {
803 FillMode = fillMode;
804 CullMode = cullMode;
805 FrontCounterClockwise = frontCounterClockwise;
806 DepthBias = depthBias;
807 DepthBiasClamp = depthBiasClamp;
808 SlopeScaledDepthBias = slopeScaledDepthBias;
809 DepthClipEnable = depthClipEnable;
810 LineRasterizationMode = lineRasterizationMode;
811 ForcedSampleCount = forcedSampleCount;
812 ConservativeRaster = conservativeRaster;
813 }
814
815
816 operator D3D12_RASTERIZER_DESC1() const noexcept
817 {
818 D3D12_RASTERIZER_DESC1 o;
819
820 o.FillMode = FillMode;
821 o.CullMode = CullMode;
822 o.FrontCounterClockwise = FrontCounterClockwise;
823 o.DepthBias = DepthBias;
824 o.DepthBiasClamp = DepthBiasClamp;
825 o.SlopeScaledDepthBias = SlopeScaledDepthBias;
826 o.DepthClipEnable = DepthClipEnable;
827 o.MultisampleEnable = FALSE;
828 o.AntialiasedLineEnable = FALSE;
829 if (LineRasterizationMode == D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED)
830 {
831 o.AntialiasedLineEnable = TRUE;
832 }
833 else if (LineRasterizationMode != D3D12_LINE_RASTERIZATION_MODE_ALIASED)
834 {
835 o.MultisampleEnable = TRUE;
836 }
837 o.ForcedSampleCount = ForcedSampleCount;
838 o.ConservativeRaster = ConservativeRaster;
839
840 return o;
841 }
842 operator D3D12_RASTERIZER_DESC() const noexcept
843 {
844 return static_cast<D3D12_RASTERIZER_DESC>(CD3DX12_RASTERIZER_DESC1(static_cast<D3D12_RASTERIZER_DESC1>(*this)));
845 }
846};
847#endif // D3D12_SDK_VERSION >= 610
848
849//------------------------------------------------------------------------------------------------
850struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
851{
852 CD3DX12_RESOURCE_ALLOCATION_INFO() = default;
853 explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) noexcept :
854 D3D12_RESOURCE_ALLOCATION_INFO( o )
855 {}
856 CD3DX12_RESOURCE_ALLOCATION_INFO(
857 UINT64 size,
858 UINT64 alignment ) noexcept
859 {
860 SizeInBytes = size;
861 Alignment = alignment;
862 }
863};
864
865//------------------------------------------------------------------------------------------------
866struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
867{
868 CD3DX12_HEAP_PROPERTIES() = default;
869 explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) noexcept :
870 D3D12_HEAP_PROPERTIES(o)
871 {}
872 CD3DX12_HEAP_PROPERTIES(
873 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
874 D3D12_MEMORY_POOL memoryPoolPreference,
875 UINT creationNodeMask = 1,
876 UINT nodeMask = 1 ) noexcept
877 {
878 Type = D3D12_HEAP_TYPE_CUSTOM;
879 CPUPageProperty = cpuPageProperty;
880 MemoryPoolPreference = memoryPoolPreference;
881 CreationNodeMask = creationNodeMask;
882 VisibleNodeMask = nodeMask;
883 }
884 explicit CD3DX12_HEAP_PROPERTIES(
885 D3D12_HEAP_TYPE type,
886 UINT creationNodeMask = 1,
887 UINT nodeMask = 1 ) noexcept
888 {
889 Type = type;
890 CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
891 MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
892 CreationNodeMask = creationNodeMask;
893 VisibleNodeMask = nodeMask;
894 }
895 bool IsCPUAccessible() const noexcept
896 {
897 return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK
898#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
899 || Type == D3D12_HEAP_TYPE_GPU_UPLOAD
900#endif
901 || (Type == D3D12_HEAP_TYPE_CUSTOM &&
902 (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
903 }
904};
905inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
906{
907 return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
908 l.MemoryPoolPreference == r.MemoryPoolPreference &&
909 l.CreationNodeMask == r.CreationNodeMask &&
910 l.VisibleNodeMask == r.VisibleNodeMask;
911}
912inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
913{ return !( l == r ); }
914
915//------------------------------------------------------------------------------------------------
916struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
917{
918 CD3DX12_HEAP_DESC() = default;
919 explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) noexcept :
920 D3D12_HEAP_DESC(o)
921 {}
922 CD3DX12_HEAP_DESC(
923 UINT64 size,
924 D3D12_HEAP_PROPERTIES properties,
925 UINT64 alignment = 0,
926 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
927 {
928 SizeInBytes = size;
929 Properties = properties;
930 Alignment = alignment;
931 Flags = flags;
932 }
933 CD3DX12_HEAP_DESC(
934 UINT64 size,
935 D3D12_HEAP_TYPE type,
936 UINT64 alignment = 0,
937 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
938 {
939 SizeInBytes = size;
940 Properties = CD3DX12_HEAP_PROPERTIES( type );
941 Alignment = alignment;
942 Flags = flags;
943 }
944 CD3DX12_HEAP_DESC(
945 UINT64 size,
946 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
947 D3D12_MEMORY_POOL memoryPoolPreference,
948 UINT64 alignment = 0,
949 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
950 {
951 SizeInBytes = size;
952 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
953 Alignment = alignment;
954 Flags = flags;
955 }
956 CD3DX12_HEAP_DESC(
957 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
958 D3D12_HEAP_PROPERTIES properties,
959 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
960 {
961 SizeInBytes = resAllocInfo.SizeInBytes;
962 Properties = properties;
963 Alignment = resAllocInfo.Alignment;
964 Flags = flags;
965 }
966 CD3DX12_HEAP_DESC(
967 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
968 D3D12_HEAP_TYPE type,
969 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
970 {
971 SizeInBytes = resAllocInfo.SizeInBytes;
972 Properties = CD3DX12_HEAP_PROPERTIES( type );
973 Alignment = resAllocInfo.Alignment;
974 Flags = flags;
975 }
976 CD3DX12_HEAP_DESC(
977 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
978 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
979 D3D12_MEMORY_POOL memoryPoolPreference,
980 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
981 {
982 SizeInBytes = resAllocInfo.SizeInBytes;
983 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
984 Alignment = resAllocInfo.Alignment;
985 Flags = flags;
986 }
987 bool IsCPUAccessible() const noexcept
988 { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); }
989};
990inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
991{
992 return l.SizeInBytes == r.SizeInBytes &&
993 l.Properties == r.Properties &&
994 l.Alignment == r.Alignment &&
995 l.Flags == r.Flags;
996}
997inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
998{ return !( l == r ); }
999
1000//------------------------------------------------------------------------------------------------
1001struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
1002{
1003 CD3DX12_CLEAR_VALUE() = default;
1004 explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) noexcept :
1005 D3D12_CLEAR_VALUE(o)
1006 {}
1007 CD3DX12_CLEAR_VALUE(
1008 DXGI_FORMAT format,
1009 const FLOAT color[4] ) noexcept
1010 {
1011 Format = format;
1012 memcpy( Color, color, sizeof( Color ) );
1013 }
1014 CD3DX12_CLEAR_VALUE(
1015 DXGI_FORMAT format,
1016 FLOAT depth,
1017 UINT8 stencil ) noexcept
1018 {
1019 Format = format;
1020 memset( &Color, 0, sizeof( Color ) );
1021 /* Use memcpy to preserve NAN values */
1022 memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) );
1023 DepthStencil.Stencil = stencil;
1024 }
1025};
1026
1027//------------------------------------------------------------------------------------------------
1028inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) noexcept
1029{
1030 if (a.Format != b.Format) return false;
1031 if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT
1032 || a.Format == DXGI_FORMAT_D16_UNORM
1033 || a.Format == DXGI_FORMAT_D32_FLOAT
1034 || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
1035 {
1036 return (a.DepthStencil.Depth == b.DepthStencil.Depth) &&
1037 (a.DepthStencil.Stencil == b.DepthStencil.Stencil);
1038 } else {
1039 return (a.Color[0] == b.Color[0]) &&
1040 (a.Color[1] == b.Color[1]) &&
1041 (a.Color[2] == b.Color[2]) &&
1042 (a.Color[3] == b.Color[3]);
1043 }
1044}
1045
1046//------------------------------------------------------------------------------------------------
1047struct CD3DX12_RANGE : public D3D12_RANGE
1048{
1049 CD3DX12_RANGE() = default;
1050 explicit CD3DX12_RANGE(const D3D12_RANGE &o) noexcept :
1051 D3D12_RANGE(o)
1052 {}
1053 CD3DX12_RANGE(
1054 SIZE_T begin,
1055 SIZE_T end ) noexcept
1056 {
1057 Begin = begin;
1058 End = end;
1059 }
1060};
1061
1062//------------------------------------------------------------------------------------------------
1063struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
1064{
1065 CD3DX12_RANGE_UINT64() = default;
1066 explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) noexcept :
1067 D3D12_RANGE_UINT64(o)
1068 {}
1069 CD3DX12_RANGE_UINT64(
1070 UINT64 begin,
1071 UINT64 end ) noexcept
1072 {
1073 Begin = begin;
1074 End = end;
1075 }
1076};
1077
1078//------------------------------------------------------------------------------------------------
1079struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64
1080{
1081 CD3DX12_SUBRESOURCE_RANGE_UINT64() = default;
1082 explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) noexcept :
1083 D3D12_SUBRESOURCE_RANGE_UINT64(o)
1084 {}
1085 CD3DX12_SUBRESOURCE_RANGE_UINT64(
1086 UINT subresource,
1087 const D3D12_RANGE_UINT64& range ) noexcept
1088 {
1089 Subresource = subresource;
1090 Range = range;
1091 }
1092 CD3DX12_SUBRESOURCE_RANGE_UINT64(
1093 UINT subresource,
1094 UINT64 begin,
1095 UINT64 end ) noexcept
1096 {
1097 Subresource = subresource;
1098 Range.Begin = begin;
1099 Range.End = end;
1100 }
1101};
1102
1103//------------------------------------------------------------------------------------------------
1104struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE
1105{
1106 CD3DX12_SHADER_BYTECODE() = default;
1107 explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) noexcept :
1108 D3D12_SHADER_BYTECODE(o)
1109 {}
1110 CD3DX12_SHADER_BYTECODE(
1111 _In_ ID3DBlob* pShaderBlob ) noexcept
1112 {
1113 pShaderBytecode = pShaderBlob->GetBufferPointer();
1114 BytecodeLength = pShaderBlob->GetBufferSize();
1115 }
1116 CD3DX12_SHADER_BYTECODE(
1117 const void* _pShaderBytecode,
1118 SIZE_T bytecodeLength ) noexcept
1119 {
1120 pShaderBytecode = _pShaderBytecode;
1121 BytecodeLength = bytecodeLength;
1122 }
1123};
1124
1125//------------------------------------------------------------------------------------------------
1126struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
1127{
1128 CD3DX12_TILED_RESOURCE_COORDINATE() = default;
1129 explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) noexcept :
1130 D3D12_TILED_RESOURCE_COORDINATE(o)
1131 {}
1132 CD3DX12_TILED_RESOURCE_COORDINATE(
1133 UINT x,
1134 UINT y,
1135 UINT z,
1136 UINT subresource ) noexcept
1137 {
1138 X = x;
1139 Y = y;
1140 Z = z;
1141 Subresource = subresource;
1142 }
1143};
1144
1145//------------------------------------------------------------------------------------------------
1146struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
1147{
1148 CD3DX12_TILE_REGION_SIZE() = default;
1149 explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) noexcept :
1150 D3D12_TILE_REGION_SIZE(o)
1151 {}
1152 CD3DX12_TILE_REGION_SIZE(
1153 UINT numTiles,
1154 BOOL useBox,
1155 UINT width,
1156 UINT16 height,
1157 UINT16 depth ) noexcept
1158 {
1159 NumTiles = numTiles;
1160 UseBox = useBox;
1161 Width = width;
1162 Height = height;
1163 Depth = depth;
1164 }
1165};
1166
1167//------------------------------------------------------------------------------------------------
1168struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
1169{
1170 CD3DX12_SUBRESOURCE_TILING() = default;
1171 explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) noexcept :
1172 D3D12_SUBRESOURCE_TILING(o)
1173 {}
1174 CD3DX12_SUBRESOURCE_TILING(
1175 UINT widthInTiles,
1176 UINT16 heightInTiles,
1177 UINT16 depthInTiles,
1178 UINT startTileIndexInOverallResource ) noexcept
1179 {
1180 WidthInTiles = widthInTiles;
1181 HeightInTiles = heightInTiles;
1182 DepthInTiles = depthInTiles;
1183 StartTileIndexInOverallResource = startTileIndexInOverallResource;
1184 }
1185};
1186
1187//------------------------------------------------------------------------------------------------
1188struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
1189{
1190 CD3DX12_TILE_SHAPE() = default;
1191 explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) noexcept :
1192 D3D12_TILE_SHAPE(o)
1193 {}
1194 CD3DX12_TILE_SHAPE(
1195 UINT widthInTexels,
1196 UINT heightInTexels,
1197 UINT depthInTexels ) noexcept
1198 {
1199 WidthInTexels = widthInTexels;
1200 HeightInTexels = heightInTexels;
1201 DepthInTexels = depthInTexels;
1202 }
1203};
1204
1205//------------------------------------------------------------------------------------------------
1206struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
1207{
1208 CD3DX12_PACKED_MIP_INFO() = default;
1209 explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) noexcept :
1210 D3D12_PACKED_MIP_INFO(o)
1211 {}
1212 CD3DX12_PACKED_MIP_INFO(
1213 UINT8 numStandardMips,
1214 UINT8 numPackedMips,
1215 UINT numTilesForPackedMips,
1216 UINT startTileIndexInOverallResource ) noexcept
1217 {
1218 NumStandardMips = numStandardMips;
1219 NumPackedMips = numPackedMips;
1220 NumTilesForPackedMips = numTilesForPackedMips;
1221 StartTileIndexInOverallResource = startTileIndexInOverallResource;
1222 }
1223};
1224
1225//------------------------------------------------------------------------------------------------
1226struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
1227{
1228 CD3DX12_SUBRESOURCE_FOOTPRINT() = default;
1229 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) noexcept :
1230 D3D12_SUBRESOURCE_FOOTPRINT(o)
1231 {}
1232 CD3DX12_SUBRESOURCE_FOOTPRINT(
1233 DXGI_FORMAT format,
1234 UINT width,
1235 UINT height,
1236 UINT depth,
1237 UINT rowPitch ) noexcept
1238 {
1239 Format = format;
1240 Width = width;
1241 Height = height;
1242 Depth = depth;
1243 RowPitch = rowPitch;
1244 }
1245 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(
1246 const D3D12_RESOURCE_DESC& resDesc,
1247 UINT rowPitch ) noexcept
1248 {
1249 Format = resDesc.Format;
1250 Width = UINT( resDesc.Width );
1251 Height = resDesc.Height;
1252 Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1u);
1253 RowPitch = rowPitch;
1254 }
1255};
1256
1257//------------------------------------------------------------------------------------------------
1258struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
1259{
1260 CD3DX12_TEXTURE_COPY_LOCATION() = default;
1261 explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) noexcept :
1262 D3D12_TEXTURE_COPY_LOCATION(o)
1263 {}
1264 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) noexcept
1265 {
1266 pResource = pRes;
1267 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
1268 PlacedFootprint = {};
1269 }
1270 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) noexcept
1271 {
1272 pResource = pRes;
1273 Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
1274 PlacedFootprint = Footprint;
1275 }
1276 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) noexcept
1277 {
1278 pResource = pRes;
1279 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
1280 PlacedFootprint = {};
1281 SubresourceIndex = Sub;
1282 }
1283};
1284
1285//------------------------------------------------------------------------------------------------
1286constexpr UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) noexcept
1287{
1288 return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
1289}
1290
1291//------------------------------------------------------------------------------------------------
1292inline UINT8 D3D12GetFormatPlaneCount(
1293 _In_ ID3D12Device* pDevice,
1294 DXGI_FORMAT Format
1295 ) noexcept
1296{
1297 D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 };
1298 if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
1299 {
1300 return 0;
1301 }
1302 return formatInfo.PlaneCount;
1303}
1304
1305//------------------------------------------------------------------------------------------------
1306struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
1307{
1308 CD3DX12_RESOURCE_DESC() = default;
1309 explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) noexcept :
1310 D3D12_RESOURCE_DESC( o )
1311 {}
1312 CD3DX12_RESOURCE_DESC(
1313 D3D12_RESOURCE_DIMENSION dimension,
1314 UINT64 alignment,
1315 UINT64 width,
1316 UINT height,
1317 UINT16 depthOrArraySize,
1318 UINT16 mipLevels,
1319 DXGI_FORMAT format,
1320 UINT sampleCount,
1321 UINT sampleQuality,
1322 D3D12_TEXTURE_LAYOUT layout,
1323 D3D12_RESOURCE_FLAGS flags ) noexcept
1324 {
1325 Dimension = dimension;
1326 Alignment = alignment;
1327 Width = width;
1328 Height = height;
1329 DepthOrArraySize = depthOrArraySize;
1330 MipLevels = mipLevels;
1331 Format = format;
1332 SampleDesc.Count = sampleCount;
1333 SampleDesc.Quality = sampleQuality;
1334 Layout = layout;
1335 Flags = flags;
1336 }
1337 static inline CD3DX12_RESOURCE_DESC Buffer(
1338 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1339 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1340 {
1341 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1342 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1343 }
1344 static inline CD3DX12_RESOURCE_DESC Buffer(
1345 UINT64 width,
1346 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1347 UINT64 alignment = 0 ) noexcept
1348 {
1349 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1350 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1351 }
1352 static inline CD3DX12_RESOURCE_DESC Tex1D(
1353 DXGI_FORMAT format,
1354 UINT64 width,
1355 UINT16 arraySize = 1,
1356 UINT16 mipLevels = 0,
1357 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1358 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1359 UINT64 alignment = 0 ) noexcept
1360 {
1361 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1362 mipLevels, format, 1, 0, layout, flags );
1363 }
1364 static inline CD3DX12_RESOURCE_DESC Tex2D(
1365 DXGI_FORMAT format,
1366 UINT64 width,
1367 UINT height,
1368 UINT16 arraySize = 1,
1369 UINT16 mipLevels = 0,
1370 UINT sampleCount = 1,
1371 UINT sampleQuality = 0,
1372 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1373 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1374 UINT64 alignment = 0 ) noexcept
1375 {
1376 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1377 mipLevels, format, sampleCount, sampleQuality, layout, flags );
1378 }
1379 static inline CD3DX12_RESOURCE_DESC Tex3D(
1380 DXGI_FORMAT format,
1381 UINT64 width,
1382 UINT height,
1383 UINT16 depth,
1384 UINT16 mipLevels = 0,
1385 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1386 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1387 UINT64 alignment = 0 ) noexcept
1388 {
1389 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1390 mipLevels, format, 1, 0, layout, flags );
1391 }
1392 inline UINT16 Depth() const noexcept
1393 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1394 inline UINT16 ArraySize() const noexcept
1395 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1396 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1397 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1398 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1399 { return static_cast<UINT>(MipLevels) * ArraySize() * PlaneCount(pDevice); }
1400 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1401 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1402};
1403inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1404{
1405 return l.Dimension == r.Dimension &&
1406 l.Alignment == r.Alignment &&
1407 l.Width == r.Width &&
1408 l.Height == r.Height &&
1409 l.DepthOrArraySize == r.DepthOrArraySize &&
1410 l.MipLevels == r.MipLevels &&
1411 l.Format == r.Format &&
1412 l.SampleDesc.Count == r.SampleDesc.Count &&
1413 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1414 l.Layout == r.Layout &&
1415 l.Flags == r.Flags;
1416}
1417inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1418{ return !( l == r ); }
1419
1420//------------------------------------------------------------------------------------------------
1421struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
1422{
1423 CD3DX12_RESOURCE_DESC1() = default;
1424 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
1425 D3D12_RESOURCE_DESC1( o )
1426 {}
1427 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC& o ) noexcept
1428 {
1429 Dimension = o.Dimension;
1430 Alignment = o.Alignment;
1431 Width = o.Width;
1432 Height = o.Height;
1433 DepthOrArraySize = o.DepthOrArraySize;
1434 MipLevels = o.MipLevels;
1435 Format = o.Format;
1436 SampleDesc = o.SampleDesc;
1437 Layout = o.Layout;
1438 Flags = o.Flags;
1439 SamplerFeedbackMipRegion = {};
1440 }
1441 CD3DX12_RESOURCE_DESC1(
1442 D3D12_RESOURCE_DIMENSION dimension,
1443 UINT64 alignment,
1444 UINT64 width,
1445 UINT height,
1446 UINT16 depthOrArraySize,
1447 UINT16 mipLevels,
1448 DXGI_FORMAT format,
1449 UINT sampleCount,
1450 UINT sampleQuality,
1451 D3D12_TEXTURE_LAYOUT layout,
1452 D3D12_RESOURCE_FLAGS flags,
1453 UINT samplerFeedbackMipRegionWidth = 0,
1454 UINT samplerFeedbackMipRegionHeight = 0,
1455 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1456 {
1457 Dimension = dimension;
1458 Alignment = alignment;
1459 Width = width;
1460 Height = height;
1461 DepthOrArraySize = depthOrArraySize;
1462 MipLevels = mipLevels;
1463 Format = format;
1464 SampleDesc.Count = sampleCount;
1465 SampleDesc.Quality = sampleQuality;
1466 Layout = layout;
1467 Flags = flags;
1468 SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
1469 SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
1470 SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
1471 }
1472
1473 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1474 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1475 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1476 {
1477 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1478 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1479 }
1480 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1481 UINT64 width,
1482 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1483 UINT64 alignment = 0 ) noexcept
1484 {
1485 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1486 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1487 }
1488 static inline CD3DX12_RESOURCE_DESC1 Tex1D(
1489 DXGI_FORMAT format,
1490 UINT64 width,
1491 UINT16 arraySize = 1,
1492 UINT16 mipLevels = 0,
1493 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1494 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1495 UINT64 alignment = 0 ) noexcept
1496 {
1497 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1498 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1499 }
1500 static inline CD3DX12_RESOURCE_DESC1 Tex2D(
1501 DXGI_FORMAT format,
1502 UINT64 width,
1503 UINT height,
1504 UINT16 arraySize = 1,
1505 UINT16 mipLevels = 0,
1506 UINT sampleCount = 1,
1507 UINT sampleQuality = 0,
1508 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1509 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1510 UINT64 alignment = 0,
1511 UINT samplerFeedbackMipRegionWidth = 0,
1512 UINT samplerFeedbackMipRegionHeight = 0,
1513 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1514 {
1515 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1516 mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
1517 samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
1518 }
1519 static inline CD3DX12_RESOURCE_DESC1 Tex3D(
1520 DXGI_FORMAT format,
1521 UINT64 width,
1522 UINT height,
1523 UINT16 depth,
1524 UINT16 mipLevels = 0,
1525 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1526 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1527 UINT64 alignment = 0 ) noexcept
1528 {
1529 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1530 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1531 }
1532 inline UINT16 Depth() const noexcept
1533 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1534 inline UINT16 ArraySize() const noexcept
1535 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1536 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1537 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1538 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1539 { return static_cast<UINT>(MipLevels) * ArraySize() * PlaneCount(pDevice); }
1540 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1541 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1542};
1543inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1544{
1545 return l.Dimension == r.Dimension &&
1546 l.Alignment == r.Alignment &&
1547 l.Width == r.Width &&
1548 l.Height == r.Height &&
1549 l.DepthOrArraySize == r.DepthOrArraySize &&
1550 l.MipLevels == r.MipLevels &&
1551 l.Format == r.Format &&
1552 l.SampleDesc.Count == r.SampleDesc.Count &&
1553 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1554 l.Layout == r.Layout &&
1555 l.Flags == r.Flags &&
1556 l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
1557 l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
1558 l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
1559}
1560inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1561{ return !( l == r ); }
1562
1563//------------------------------------------------------------------------------------------------
1564// Fills in the mipmap and alignment values of pDesc when either members are zero
1565// Used to replace an implicit field to an explicit (0 mip map = max mip map level)
1566// If expansion has occured, returns LclDesc, else returns the original pDesc
1567inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
1568 CD3DX12_RESOURCE_DESC1& LclDesc,
1569 const CD3DX12_RESOURCE_DESC1* pDesc,
1570 const bool tightAlignmentSupported = false,
1571 const bool alignAsCommitted = false)
1572{
1573 // Expand mip levels:
1574 if (pDesc->MipLevels == 0 || pDesc->Alignment == 0)
1575 {
1576 LclDesc = *pDesc;
1577 if (pDesc->MipLevels == 0)
1578 {
1579 auto MaxMipLevels = [](UINT64 uiMaxDimension) -> UINT16
1580 {
1581 UINT16 uiRet = 0;
1582 while (uiMaxDimension > 0)
1583 {
1584 uiRet++;
1585 uiMaxDimension >>= 1;
1586 }
1587 return uiRet;
1588 };
1589 auto Max = [](UINT64 const& a, UINT64 const& b)
1590 {
1591 return (a < b) ? b : a;
1592 };
1593
1594 LclDesc.MipLevels = MaxMipLevels(
1595 Max(LclDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? LclDesc.DepthOrArraySize : 1,
1596 Max(LclDesc.Width, LclDesc.Height)));
1597 }
1598 if (pDesc->Alignment == 0)
1599 {
1600 if (pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE
1601 || pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE
1602 )
1603 {
1604 LclDesc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
1605 }
1606 else if (!(tightAlignmentSupported && (pDesc->Flags & D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT))
1607 || (pDesc->Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER))
1608 {
1609 LclDesc.Alignment =
1610 (pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
1611 }
1612 else
1613 {
1614 // Tight alignment is supported and we aren't a cross adapter resource, now just need to set the alignment field to the minimum alignment for each type
1615 if(alignAsCommitted)
1616 LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT;
1617 else
1618 LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT;
1619 }
1620 }
1621 return &LclDesc;
1622 }
1623 else
1624 {
1625 return pDesc;
1626 }
1627}
1628
1629
1630//------------------------------------------------------------------------------------------------
1631struct CD3DX12_SHADER_RESOURCE_VIEW_DESC : public D3D12_SHADER_RESOURCE_VIEW_DESC
1632{
1633 CD3DX12_SHADER_RESOURCE_VIEW_DESC() = default;
1634 explicit CD3DX12_SHADER_RESOURCE_VIEW_DESC( const D3D12_SHADER_RESOURCE_VIEW_DESC& o ) noexcept :
1635 D3D12_SHADER_RESOURCE_VIEW_DESC(o)
1636 {}
1637
1638 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC StructuredBuffer(
1639 UINT NumElements,
1640 UINT StructureByteStride,
1641 UINT64 FirstElement = 0) noexcept
1642 {
1643 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1644 desc.Format = DXGI_FORMAT_UNKNOWN;
1645 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1646 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1647 desc.Buffer.FirstElement = FirstElement;
1648 desc.Buffer.NumElements = NumElements;
1649 desc.Buffer.StructureByteStride = StructureByteStride;
1650 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
1651 return desc;
1652 }
1653
1654 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RawBuffer(
1655 UINT NumElements,
1656 UINT64 FirstElement = 0) noexcept
1657 {
1658 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1659 desc.Format = DXGI_FORMAT_R32_UINT;
1660 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1661 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1662 desc.Buffer.FirstElement = FirstElement;
1663 desc.Buffer.NumElements = NumElements;
1664 desc.Buffer.StructureByteStride = 0;
1665 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_RAW;
1666 return desc;
1667 }
1668
1669 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TypedBuffer(
1670 DXGI_FORMAT Format,
1671 UINT NumElements,
1672 UINT64 FirstElement = 0,
1673 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1674 {
1675 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1676 desc.Format = Format;
1677 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1678 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1679 desc.Buffer.FirstElement = FirstElement;
1680 desc.Buffer.NumElements = NumElements;
1681 desc.Buffer.StructureByteStride = 0;
1682 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
1683 return desc;
1684 }
1685
1686 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1D(
1687 DXGI_FORMAT Format,
1688 UINT MipLevels = -1,
1689 UINT MostDetailedMip = 0,
1690 FLOAT ResourceMinLODClamp = 0.0f,
1691 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1692 {
1693 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1694 desc.Format = Format;
1695 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1D;
1696 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1697 desc.Texture1D.MostDetailedMip = MostDetailedMip;
1698 desc.Texture1D.MipLevels = MipLevels;
1699 desc.Texture1D.ResourceMinLODClamp = ResourceMinLODClamp;
1700 return desc;
1701 }
1702
1703 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1DArray(
1704 DXGI_FORMAT Format,
1705 UINT ArraySize = -1,
1706 UINT MipLevels = -1,
1707 UINT FirstArraySlice = 0,
1708 UINT MostDetailedMip = 0,
1709 FLOAT ResourceMinLODClamp = 0.0f,
1710 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1711 {
1712 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1713 desc.Format = Format;
1714 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1DARRAY;
1715 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1716 desc.Texture1DArray.MostDetailedMip = MostDetailedMip;
1717 desc.Texture1DArray.MipLevels = MipLevels;
1718 desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
1719 desc.Texture1DArray.ArraySize = ArraySize;
1720 desc.Texture1DArray.ResourceMinLODClamp = ResourceMinLODClamp;
1721 return desc;
1722 }
1723
1724 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2D(
1725 DXGI_FORMAT Format,
1726 UINT MipLevels = -1,
1727 UINT MostDetailedMip = 0,
1728 UINT PlaneSlice = 0,
1729 FLOAT ResourceMinLODClamp = 0.0f,
1730 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1731 {
1732 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1733 desc.Format = Format;
1734 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
1735 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1736 desc.Texture2D.MostDetailedMip = MostDetailedMip;
1737 desc.Texture2D.MipLevels = MipLevels;
1738 desc.Texture2D.PlaneSlice = PlaneSlice;
1739 desc.Texture2D.ResourceMinLODClamp = ResourceMinLODClamp;
1740 return desc;
1741 }
1742
1743 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DArray(
1744 DXGI_FORMAT Format,
1745 UINT ArraySize = -1,
1746 UINT MipLevels = -1,
1747 UINT FirstArraySlice = 0,
1748 UINT MostDetailedMip = 0,
1749 UINT PlaneSlice = 0,
1750 FLOAT ResourceMinLODClamp = 0.0f,
1751 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1752 {
1753 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1754 desc.Format = Format;
1755 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY;
1756 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1757 desc.Texture2DArray.MostDetailedMip = MostDetailedMip;
1758 desc.Texture2DArray.MipLevels = MipLevels;
1759 desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
1760 desc.Texture2DArray.ArraySize = ArraySize;
1761 desc.Texture2DArray.PlaneSlice = PlaneSlice;
1762 desc.Texture2DArray.ResourceMinLODClamp = ResourceMinLODClamp;
1763 return desc;
1764 }
1765
1766 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMS(
1767 DXGI_FORMAT Format,
1768 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1769 {
1770 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1771 desc.Format = Format;
1772 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMS;
1773 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1774 // desc.Texture2DMS.UnusedField_NothingToDefine = 0;
1775 return desc;
1776 }
1777
1778 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMSArray(
1779 DXGI_FORMAT Format,
1780 UINT ArraySize,
1781 UINT FirstArraySlice = 0,
1782 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1783 {
1784 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1785 desc.Format = Format;
1786 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY;
1787 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1788 desc.Texture2DMSArray.ArraySize = ArraySize;
1789 desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
1790 return desc;
1791 }
1792
1793 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex3D(
1794 DXGI_FORMAT Format,
1795 UINT MipLevels = -1,
1796 UINT MostDetailedMip = 0,
1797 FLOAT ResourceMinLODClamp = 0.0f,
1798 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1799 {
1800 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1801 desc.Format = Format;
1802 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE3D;
1803 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1804 desc.Texture3D.MostDetailedMip = MostDetailedMip;
1805 desc.Texture3D.MipLevels = MipLevels;
1806 desc.Texture3D.ResourceMinLODClamp = ResourceMinLODClamp;
1807 return desc;
1808 }
1809
1810 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCube(
1811 DXGI_FORMAT Format,
1812 UINT MipLevels = -1,
1813 UINT MostDetailedMip = 0,
1814 FLOAT ResourceMinLODClamp = 0.0f,
1815 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1816 {
1817 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1818 desc.Format = Format;
1819 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBE;
1820 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1821 desc.TextureCube.MostDetailedMip = MostDetailedMip;
1822 desc.TextureCube.MipLevels = MipLevels;
1823 desc.TextureCube.ResourceMinLODClamp = ResourceMinLODClamp;
1824 return desc;
1825 }
1826
1827 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCubeArray(
1828 DXGI_FORMAT Format,
1829 UINT NumCubes,
1830 UINT MipLevels = -1,
1831 UINT First2DArrayFace = 0,
1832 UINT MostDetailedMip = 0,
1833 FLOAT ResourceMinLODClamp = 0.0f,
1834 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1835 {
1836 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1837 desc.Format = Format;
1838 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBEARRAY;
1839 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1840 desc.TextureCubeArray.NumCubes = NumCubes;
1841 desc.TextureCubeArray.MostDetailedMip = MostDetailedMip;
1842 desc.TextureCubeArray.MipLevels = MipLevels;
1843 desc.TextureCubeArray.First2DArrayFace = First2DArrayFace;
1844 desc.TextureCubeArray.ResourceMinLODClamp = ResourceMinLODClamp;
1845 return desc;
1846 }
1847
1848 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RaytracingAccelStruct(
1849 D3D12_GPU_VIRTUAL_ADDRESS Location) noexcept
1850 {
1851 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1852 desc.Format = DXGI_FORMAT_UNKNOWN;
1853 desc.ViewDimension = D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE;
1854 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1855 desc.RaytracingAccelerationStructure.Location = Location;
1856 return desc;
1857 }
1858};
1859
1860//------------------------------------------------------------------------------------------------
1861struct CD3DX12_UNORDERED_ACCESS_VIEW_DESC : public D3D12_UNORDERED_ACCESS_VIEW_DESC
1862{
1863 CD3DX12_UNORDERED_ACCESS_VIEW_DESC() = default;
1864 explicit CD3DX12_UNORDERED_ACCESS_VIEW_DESC( const D3D12_UNORDERED_ACCESS_VIEW_DESC& o ) noexcept :
1865 D3D12_UNORDERED_ACCESS_VIEW_DESC(o)
1866 {}
1867
1868 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC StructuredBuffer(
1869 UINT NumElements,
1870 UINT StructureByteStride,
1871 UINT64 FirstElement = 0,
1872 UINT64 CounterOffsetInBytes = 0) noexcept
1873 {
1874 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1875 desc.Format = DXGI_FORMAT_UNKNOWN;
1876 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1877 desc.Buffer.FirstElement = FirstElement;
1878 desc.Buffer.NumElements = NumElements;
1879 desc.Buffer.StructureByteStride = StructureByteStride;
1880 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
1881 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1882 return desc;
1883 }
1884
1885 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC RawBuffer(
1886 UINT NumElements,
1887 UINT64 FirstElement = 0,
1888 UINT64 CounterOffsetInBytes = 0) noexcept
1889 {
1890 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1891 desc.Format = DXGI_FORMAT_R32_UINT;
1892 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1893 desc.Buffer.FirstElement = FirstElement;
1894 desc.Buffer.NumElements = NumElements;
1895 desc.Buffer.StructureByteStride = 0;
1896 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_RAW;
1897 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1898 return desc;
1899 }
1900
1901 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC TypedBuffer(
1902 DXGI_FORMAT Format,
1903 UINT NumElements,
1904 UINT64 FirstElement = 0,
1905 UINT64 CounterOffsetInBytes = 0) noexcept
1906 {
1907 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1908 desc.Format = Format;
1909 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1910 desc.Buffer.FirstElement = FirstElement;
1911 desc.Buffer.NumElements = NumElements;
1912 desc.Buffer.StructureByteStride = 0;
1913 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
1914 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1915 return desc;
1916 }
1917
1918 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1D(
1919 DXGI_FORMAT Format,
1920 UINT MipSlice = 0) noexcept
1921 {
1922 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1923 desc.Format = Format;
1924 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1D;
1925 desc.Texture1D.MipSlice = MipSlice;
1926 return desc;
1927 }
1928
1929 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1DArray(
1930 DXGI_FORMAT Format,
1931 UINT ArraySize = -1,
1932 UINT FirstArraySlice = 0,
1933 UINT MipSlice = 0) noexcept
1934 {
1935 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1936 desc.Format = Format;
1937 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1DARRAY;
1938 desc.Texture1DArray.MipSlice = MipSlice;
1939 desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
1940 desc.Texture1DArray.ArraySize = ArraySize;
1941 return desc;
1942 }
1943
1944 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2D(
1945 DXGI_FORMAT Format,
1946 UINT MipSlice = 0,
1947 UINT PlaneSlice = 0) noexcept
1948 {
1949 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1950 desc.Format = Format;
1951 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D;
1952 desc.Texture2D.MipSlice = MipSlice;
1953 desc.Texture2D.PlaneSlice = PlaneSlice;
1954 return desc;
1955 }
1956
1957 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DArray(
1958 DXGI_FORMAT Format,
1959 UINT ArraySize = -1,
1960 UINT FirstArraySlice = 0,
1961 UINT MipSlice = 0,
1962 UINT PlaneSlice = 0) noexcept
1963 {
1964 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1965 desc.Format = Format;
1966 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DARRAY;
1967 desc.Texture2DArray.MipSlice = MipSlice;
1968 desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
1969 desc.Texture2DArray.ArraySize = ArraySize;
1970 desc.Texture2DArray.PlaneSlice = PlaneSlice;
1971 return desc;
1972 }
1973
1974 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMS(
1975 DXGI_FORMAT Format) noexcept
1976 {
1977 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1978 desc.Format = Format;
1979 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMS;
1980 //desc.Texture2DMS.UnusedField_NothingToDefine = 0;
1981 return desc;
1982 }
1983
1984 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMSArray(
1985 DXGI_FORMAT Format,
1986 UINT ArraySize = -1,
1987 UINT FirstArraySlice = 0) noexcept
1988 {
1989 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1990 desc.Format = Format;
1991 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY;
1992 desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
1993 desc.Texture2DMSArray.ArraySize = ArraySize;
1994 return desc;
1995 }
1996
1997 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex3D(
1998 DXGI_FORMAT Format,
1999 UINT WSize = -1,
2000 UINT FirstWSlice = 0,
2001 UINT MipSlice = 0) noexcept
2002 {
2003 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
2004 desc.Format = Format;
2005 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE3D;
2006 desc.Texture3D.MipSlice = MipSlice;
2007 desc.Texture3D.FirstWSlice = FirstWSlice;
2008 desc.Texture3D.WSize = WSize;
2009 return desc;
2010 }
2011};
2012
2013//------------------------------------------------------------------------------------------------
2014struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
2015{
2016 CD3DX12_VIEW_INSTANCING_DESC() = default;
2017 explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) noexcept :
2018 D3D12_VIEW_INSTANCING_DESC( o )
2019 {}
2020 explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) noexcept
2021 {
2022 ViewInstanceCount = 0;
2023 pViewInstanceLocations = nullptr;
2024 Flags = D3D12_VIEW_INSTANCING_FLAG_NONE;
2025 }
2026 explicit CD3DX12_VIEW_INSTANCING_DESC(
2027 UINT InViewInstanceCount,
2028 const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations,
2029 D3D12_VIEW_INSTANCING_FLAGS InFlags) noexcept
2030 {
2031 ViewInstanceCount = InViewInstanceCount;
2032 pViewInstanceLocations = InViewInstanceLocations;
2033 Flags = InFlags;
2034 }
2035};
2036
2037//------------------------------------------------------------------------------------------------
2038struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
2039{
2040 CD3DX12_RT_FORMAT_ARRAY() = default;
2041 explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) noexcept
2042 : D3D12_RT_FORMAT_ARRAY(o)
2043 {}
2044 explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) noexcept
2045 {
2046 NumRenderTargets = NumFormats;
2047 memcpy(RTFormats, pFormats, sizeof(RTFormats));
2048 // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
2049 }
2050};
2051
2052//------------------------------------------------------------------------------------------------
2053struct CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC : public D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
2054{
2055 CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC() = default;
2056 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& o) noexcept :
2057 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC(o)
2058 {
2059 }
2060 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( CD3DX12_DEFAULT ) noexcept
2061 {
2062 pSerializedBlob = nullptr;
2063 SerializedBlobSizeInBytes = 0;
2064 }
2065 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( const void* pData, SIZE_T size) noexcept
2066 {
2067 pSerializedBlob = pData;
2068 SerializedBlobSizeInBytes = size;
2069 }
2070};
2071
2072
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_default.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_default.h
new file mode 100644
index 0000000..2b74d70
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_default.h
@@ -0,0 +1,12 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10struct CD3DX12_DEFAULT {};
11extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
12
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_pipeline_state_stream.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_pipeline_state_stream.h
new file mode 100644
index 0000000..456583b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_pipeline_state_stream.h
@@ -0,0 +1,1718 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_default.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17
18//------------------------------------------------------------------------------------------------
19// Pipeline State Stream Helpers
20//------------------------------------------------------------------------------------------------
21
22//------------------------------------------------------------------------------------------------
23// Stream Subobjects, i.e. elements of a stream
24
25struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
26struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
27
28#ifdef _MSC_VER
29#pragma warning(push)
30#pragma warning(disable : 4324)
31#endif
32template <typename InnerStructType, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type, typename DefaultArg = InnerStructType>
33class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
34{
35private:
36 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE pssType;
37 InnerStructType pssInner;
38public:
39 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : pssType(Type), pssInner(DefaultArg()) {}
40 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : pssType(Type), pssInner(i) {}
41 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { pssType = Type; pssInner = i; return *this; }
42 operator InnerStructType const&() const noexcept { return pssInner; }
43 operator InnerStructType&() noexcept { return pssInner; }
44 InnerStructType* operator&() noexcept { return &pssInner; }
45 InnerStructType const* operator&() const noexcept { return &pssInner; }
46};
47#ifdef _MSC_VER
48#pragma warning(pop)
49#endif
50typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
51typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
52typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
53typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
54typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INDEX_BUFFER_STRIP_CUT_VALUE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE> CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE;
55typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
56typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
57typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
58typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
59typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
60typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
61typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
62typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
63typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
64typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
65typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
66typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
67typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
68#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
69typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2;
70#endif
71typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
72typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
73#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
74typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1;
75#endif
76#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
77typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2;
78#endif
79typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
80typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
81typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
82typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
83typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
84#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
85typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT<CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE;
86#endif
87
88//------------------------------------------------------------------------------------------------
89// Stream Parser Helpers
90
91struct ID3DX12PipelineParserCallbacks
92{
93 // Subobject Callbacks
94 virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {}
95 virtual void NodeMaskCb(UINT) {}
96 virtual void RootSignatureCb(ID3D12RootSignature*) {}
97 virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {}
98 virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {}
99 virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {}
100 virtual void VSCb(const D3D12_SHADER_BYTECODE&) {}
101 virtual void GSCb(const D3D12_SHADER_BYTECODE&) {}
102 virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {}
103 virtual void HSCb(const D3D12_SHADER_BYTECODE&) {}
104 virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
105 virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
106 virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
107 virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
108 virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
109 virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
110 virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
111 virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
112#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
113 virtual void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2&) {}
114#endif
115 virtual void DSVFormatCb(DXGI_FORMAT) {}
116 virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {}
117#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
118 virtual void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1&) {}
119#endif
120#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
121 virtual void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2&) {}
122#endif
123 virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {}
124 virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {}
125 virtual void SampleMaskCb(UINT) {}
126 virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
127 virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
128#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
129 virtual void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC&) {}
130#endif
131
132 // Error Callbacks
133 virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
134 virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
135 virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
136#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
137 virtual void FinalizeCb() {}
138#endif
139
140 virtual ~ID3DX12PipelineParserCallbacks() = default;
141};
142
143struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
144{
145 ID3D12RootSignature* pRootSignature;
146 D3D12_SHADER_BYTECODE AS;
147 D3D12_SHADER_BYTECODE MS;
148 D3D12_SHADER_BYTECODE PS;
149 D3D12_BLEND_DESC BlendState;
150 UINT SampleMask;
151 D3D12_RASTERIZER_DESC RasterizerState;
152 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
153 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
154 UINT NumRenderTargets;
155 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
156 DXGI_FORMAT DSVFormat;
157 DXGI_SAMPLE_DESC SampleDesc;
158 UINT NodeMask;
159 D3D12_CACHED_PIPELINE_STATE CachedPSO;
160 D3D12_PIPELINE_STATE_FLAGS Flags;
161};
162
163#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
164struct CD3DX12_PIPELINE_STATE_STREAM6
165{
166 CD3DX12_PIPELINE_STATE_STREAM6() = default;
167 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
168 CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
169 : Flags(Desc.Flags)
170 , NodeMask(Desc.NodeMask)
171 , pRootSignature(Desc.pRootSignature)
172 , InputLayout(Desc.InputLayout)
173 , IBStripCutValue(Desc.IBStripCutValue)
174 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
175 , VS(Desc.VS)
176 , GS(Desc.GS)
177 , StreamOutput(Desc.StreamOutput)
178 , HS(Desc.HS)
179 , DS(Desc.DS)
180 , PS(Desc.PS)
181 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
182 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
183 , DSVFormat(Desc.DSVFormat)
184 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
185 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
186 , SampleDesc(Desc.SampleDesc)
187 , SampleMask(Desc.SampleMask)
188 , CachedPSO(Desc.CachedPSO)
189 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
190 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
191 {
192 }
193 CD3DX12_PIPELINE_STATE_STREAM6(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
194 : Flags(Desc.Flags)
195 , NodeMask(Desc.NodeMask)
196 , pRootSignature(Desc.pRootSignature)
197 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
198 , PS(Desc.PS)
199 , AS(Desc.AS)
200 , MS(Desc.MS)
201 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
202 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
203 , DSVFormat(Desc.DSVFormat)
204 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
205 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
206 , SampleDesc(Desc.SampleDesc)
207 , SampleMask(Desc.SampleMask)
208 , CachedPSO(Desc.CachedPSO)
209 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
210 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
211 {
212 }
213 CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
214 : Flags(Desc.Flags)
215 , NodeMask(Desc.NodeMask)
216 , pRootSignature(Desc.pRootSignature)
217 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
218 , CachedPSO(Desc.CachedPSO)
219 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
220 {
221 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
222 }
223 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
224 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
225 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
226 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
227 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
228 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
229 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
230 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
231 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
232 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
233 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
234 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
235 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
236 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
237 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
238 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
239 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
240 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
241 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
242 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
243 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
244 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
245 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
246 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
247 CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE SerializedRootSignature;
248
249 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
250 {
251 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
252 D.Flags = this->Flags;
253 D.NodeMask = this->NodeMask;
254 D.pRootSignature = this->pRootSignature;
255 D.InputLayout = this->InputLayout;
256 D.IBStripCutValue = this->IBStripCutValue;
257 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
258 D.VS = this->VS;
259 D.GS = this->GS;
260 D.StreamOutput = this->StreamOutput;
261 D.HS = this->HS;
262 D.DS = this->DS;
263 D.PS = this->PS;
264 D.BlendState = this->BlendState;
265 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
266 D.DSVFormat = this->DSVFormat;
267 D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
268 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
269 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
270 D.SampleDesc = this->SampleDesc;
271 D.SampleMask = this->SampleMask;
272 D.CachedPSO = this->CachedPSO;
273 return D;
274 }
275 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
276 {
277 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
278 D.Flags = this->Flags;
279 D.NodeMask = this->NodeMask;
280 D.pRootSignature = this->pRootSignature;
281 D.CS = this->CS;
282 D.CachedPSO = this->CachedPSO;
283 return D;
284 }
285};
286#endif
287
288#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
289// Use CD3DX12_PIPELINE_STATE_STREAM5 for D3D12_RASTERIZER_DESC2 when CheckFeatureSupport returns true for Options19::RasterizerDesc2Supported is true
290// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
291// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
292// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
293// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
294// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
295struct CD3DX12_PIPELINE_STATE_STREAM5
296{
297 CD3DX12_PIPELINE_STATE_STREAM5() = default;
298 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
299 CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
300 : Flags(Desc.Flags)
301 , NodeMask(Desc.NodeMask)
302 , pRootSignature(Desc.pRootSignature)
303 , InputLayout(Desc.InputLayout)
304 , IBStripCutValue(Desc.IBStripCutValue)
305 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
306 , VS(Desc.VS)
307 , GS(Desc.GS)
308 , StreamOutput(Desc.StreamOutput)
309 , HS(Desc.HS)
310 , DS(Desc.DS)
311 , PS(Desc.PS)
312 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
313 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
314 , DSVFormat(Desc.DSVFormat)
315 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
316 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
317 , SampleDesc(Desc.SampleDesc)
318 , SampleMask(Desc.SampleMask)
319 , CachedPSO(Desc.CachedPSO)
320 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
321 {}
322 CD3DX12_PIPELINE_STATE_STREAM5(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
323 : Flags(Desc.Flags)
324 , NodeMask(Desc.NodeMask)
325 , pRootSignature(Desc.pRootSignature)
326 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
327 , PS(Desc.PS)
328 , AS(Desc.AS)
329 , MS(Desc.MS)
330 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
331 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
332 , DSVFormat(Desc.DSVFormat)
333 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
334 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
335 , SampleDesc(Desc.SampleDesc)
336 , SampleMask(Desc.SampleMask)
337 , CachedPSO(Desc.CachedPSO)
338 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
339 {}
340 CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
341 : Flags(Desc.Flags)
342 , NodeMask(Desc.NodeMask)
343 , pRootSignature(Desc.pRootSignature)
344 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
345 , CachedPSO(Desc.CachedPSO)
346 {
347 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
348 }
349 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
350 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
351 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
352 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
353 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
354 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
355 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
356 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
357 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
358 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
359 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
360 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
361 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
362 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
363 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
364 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
365 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
366 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
367 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
368 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
369 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
370 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
371 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
372 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
373
374 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
375 {
376 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
377 D.Flags = this->Flags;
378 D.NodeMask = this->NodeMask;
379 D.pRootSignature = this->pRootSignature;
380 D.InputLayout = this->InputLayout;
381 D.IBStripCutValue = this->IBStripCutValue;
382 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
383 D.VS = this->VS;
384 D.GS = this->GS;
385 D.StreamOutput = this->StreamOutput;
386 D.HS = this->HS;
387 D.DS = this->DS;
388 D.PS = this->PS;
389 D.BlendState = this->BlendState;
390 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
391 D.DSVFormat = this->DSVFormat;
392 D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
393 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
394 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
395 D.SampleDesc = this->SampleDesc;
396 D.SampleMask = this->SampleMask;
397 D.CachedPSO = this->CachedPSO;
398 return D;
399 }
400 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
401 {
402 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
403 D.Flags = this->Flags;
404 D.NodeMask = this->NodeMask;
405 D.pRootSignature = this->pRootSignature;
406 D.CS = this->CS;
407 D.CachedPSO = this->CachedPSO;
408 return D;
409 }
410};
411#endif // D3D12_SDK_VERSION >= 610
412
413#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
414// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
415// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
416// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
417// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
418// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
419struct CD3DX12_PIPELINE_STATE_STREAM4
420{
421 CD3DX12_PIPELINE_STATE_STREAM4() = default;
422 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
423 CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
424 : Flags(Desc.Flags)
425 , NodeMask(Desc.NodeMask)
426 , pRootSignature(Desc.pRootSignature)
427 , InputLayout(Desc.InputLayout)
428 , IBStripCutValue(Desc.IBStripCutValue)
429 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
430 , VS(Desc.VS)
431 , GS(Desc.GS)
432 , StreamOutput(Desc.StreamOutput)
433 , HS(Desc.HS)
434 , DS(Desc.DS)
435 , PS(Desc.PS)
436 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
437 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
438 , DSVFormat(Desc.DSVFormat)
439 , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
440 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
441 , SampleDesc(Desc.SampleDesc)
442 , SampleMask(Desc.SampleMask)
443 , CachedPSO(Desc.CachedPSO)
444 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
445 {}
446 CD3DX12_PIPELINE_STATE_STREAM4(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
447 : Flags(Desc.Flags)
448 , NodeMask(Desc.NodeMask)
449 , pRootSignature(Desc.pRootSignature)
450 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
451 , PS(Desc.PS)
452 , AS(Desc.AS)
453 , MS(Desc.MS)
454 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
455 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
456 , DSVFormat(Desc.DSVFormat)
457 , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
458 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
459 , SampleDesc(Desc.SampleDesc)
460 , SampleMask(Desc.SampleMask)
461 , CachedPSO(Desc.CachedPSO)
462 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
463 {}
464 CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
465 : Flags(Desc.Flags)
466 , NodeMask(Desc.NodeMask)
467 , pRootSignature(Desc.pRootSignature)
468 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
469 , CachedPSO(Desc.CachedPSO)
470 {
471 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
472 }
473 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
474 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
475 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
476 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
477 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
478 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
479 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
480 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
481 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
482 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
483 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
484 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
485 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
486 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
487 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
488 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
489 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
490 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
491 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1 RasterizerState;
492 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
493 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
494 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
495 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
496 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
497
498 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
499 {
500 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
501 D.Flags = this->Flags;
502 D.NodeMask = this->NodeMask;
503 D.pRootSignature = this->pRootSignature;
504 D.InputLayout = this->InputLayout;
505 D.IBStripCutValue = this->IBStripCutValue;
506 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
507 D.VS = this->VS;
508 D.GS = this->GS;
509 D.StreamOutput = this->StreamOutput;
510 D.HS = this->HS;
511 D.DS = this->DS;
512 D.PS = this->PS;
513 D.BlendState = this->BlendState;
514 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
515 D.DSVFormat = this->DSVFormat;
516 D.RasterizerState = CD3DX12_RASTERIZER_DESC1(D3D12_RASTERIZER_DESC1(this->RasterizerState));
517 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
518 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
519 D.SampleDesc = this->SampleDesc;
520 D.SampleMask = this->SampleMask;
521 D.CachedPSO = this->CachedPSO;
522 return D;
523 }
524 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
525 {
526 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
527 D.Flags = this->Flags;
528 D.NodeMask = this->NodeMask;
529 D.pRootSignature = this->pRootSignature;
530 D.CS = this->CS;
531 D.CachedPSO = this->CachedPSO;
532 return D;
533 }
534};
535#endif // D3D12_SDK_VERSION >= 608
536
537#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
538// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
539// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
540// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
541// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
542struct CD3DX12_PIPELINE_STATE_STREAM3
543{
544 CD3DX12_PIPELINE_STATE_STREAM3() = default;
545 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
546 CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
547 : Flags(Desc.Flags)
548 , NodeMask(Desc.NodeMask)
549 , pRootSignature(Desc.pRootSignature)
550 , InputLayout(Desc.InputLayout)
551 , IBStripCutValue(Desc.IBStripCutValue)
552 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
553 , VS(Desc.VS)
554 , GS(Desc.GS)
555 , StreamOutput(Desc.StreamOutput)
556 , HS(Desc.HS)
557 , DS(Desc.DS)
558 , PS(Desc.PS)
559 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
560 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
561 , DSVFormat(Desc.DSVFormat)
562 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
563 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
564 , SampleDesc(Desc.SampleDesc)
565 , SampleMask(Desc.SampleMask)
566 , CachedPSO(Desc.CachedPSO)
567 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
568 {}
569 CD3DX12_PIPELINE_STATE_STREAM3(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
570 : Flags(Desc.Flags)
571 , NodeMask(Desc.NodeMask)
572 , pRootSignature(Desc.pRootSignature)
573 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
574 , PS(Desc.PS)
575 , AS(Desc.AS)
576 , MS(Desc.MS)
577 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
578 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
579 , DSVFormat(Desc.DSVFormat)
580 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
581 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
582 , SampleDesc(Desc.SampleDesc)
583 , SampleMask(Desc.SampleMask)
584 , CachedPSO(Desc.CachedPSO)
585 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
586 {}
587 CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
588 : Flags(Desc.Flags)
589 , NodeMask(Desc.NodeMask)
590 , pRootSignature(Desc.pRootSignature)
591 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
592 , CachedPSO(Desc.CachedPSO)
593 {
594 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
595 }
596 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
597 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
598 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
599 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
600 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
601 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
602 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
603 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
604 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
605 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
606 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
607 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
608 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
609 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
610 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
611 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
612 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
613 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
614 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
615 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
616 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
617 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
618 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
619 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
620
621 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
622 {
623 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
624 D.Flags = this->Flags;
625 D.NodeMask = this->NodeMask;
626 D.pRootSignature = this->pRootSignature;
627 D.InputLayout = this->InputLayout;
628 D.IBStripCutValue = this->IBStripCutValue;
629 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
630 D.VS = this->VS;
631 D.GS = this->GS;
632 D.StreamOutput = this->StreamOutput;
633 D.HS = this->HS;
634 D.DS = this->DS;
635 D.PS = this->PS;
636 D.BlendState = this->BlendState;
637 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
638 D.DSVFormat = this->DSVFormat;
639 D.RasterizerState = this->RasterizerState;
640 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
641 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
642 D.SampleDesc = this->SampleDesc;
643 D.SampleMask = this->SampleMask;
644 D.CachedPSO = this->CachedPSO;
645 return D;
646 }
647 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
648 {
649 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
650 D.Flags = this->Flags;
651 D.NodeMask = this->NodeMask;
652 D.pRootSignature = this->pRootSignature;
653 D.CS = this->CS;
654 D.CachedPSO = this->CachedPSO;
655 return D;
656 }
657};
658#endif // D3D12_SDK_VERSION >= 606
659
660// CD3DX12_PIPELINE_STATE_STREAM2 Works on OS Build 19041+ (where there is a new mesh shader pipeline).
661// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
662// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
663struct CD3DX12_PIPELINE_STATE_STREAM2
664{
665 CD3DX12_PIPELINE_STATE_STREAM2() = default;
666 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
667 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
668 : Flags(Desc.Flags)
669 , NodeMask(Desc.NodeMask)
670 , pRootSignature(Desc.pRootSignature)
671 , InputLayout(Desc.InputLayout)
672 , IBStripCutValue(Desc.IBStripCutValue)
673 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
674 , VS(Desc.VS)
675 , GS(Desc.GS)
676 , StreamOutput(Desc.StreamOutput)
677 , HS(Desc.HS)
678 , DS(Desc.DS)
679 , PS(Desc.PS)
680 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
681 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
682 , DSVFormat(Desc.DSVFormat)
683 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
684 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
685 , SampleDesc(Desc.SampleDesc)
686 , SampleMask(Desc.SampleMask)
687 , CachedPSO(Desc.CachedPSO)
688 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
689 {}
690 CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
691 : Flags(Desc.Flags)
692 , NodeMask(Desc.NodeMask)
693 , pRootSignature(Desc.pRootSignature)
694 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
695 , PS(Desc.PS)
696 , AS(Desc.AS)
697 , MS(Desc.MS)
698 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
699 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
700 , DSVFormat(Desc.DSVFormat)
701 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
702 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
703 , SampleDesc(Desc.SampleDesc)
704 , SampleMask(Desc.SampleMask)
705 , CachedPSO(Desc.CachedPSO)
706 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
707 {}
708 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
709 : Flags(Desc.Flags)
710 , NodeMask(Desc.NodeMask)
711 , pRootSignature(Desc.pRootSignature)
712 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
713 , CachedPSO(Desc.CachedPSO)
714 {
715 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
716 }
717 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
718 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
719 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
720 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
721 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
722 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
723 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
724 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
725 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
726 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
727 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
728 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
729 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
730 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
731 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
732 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
733 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
734 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
735 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
736 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
737 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
738 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
739 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
740 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
741 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
742 {
743 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
744 D.Flags = this->Flags;
745 D.NodeMask = this->NodeMask;
746 D.pRootSignature = this->pRootSignature;
747 D.InputLayout = this->InputLayout;
748 D.IBStripCutValue = this->IBStripCutValue;
749 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
750 D.VS = this->VS;
751 D.GS = this->GS;
752 D.StreamOutput = this->StreamOutput;
753 D.HS = this->HS;
754 D.DS = this->DS;
755 D.PS = this->PS;
756 D.BlendState = this->BlendState;
757 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
758 D.DSVFormat = this->DSVFormat;
759 D.RasterizerState = this->RasterizerState;
760 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
761 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
762 D.SampleDesc = this->SampleDesc;
763 D.SampleMask = this->SampleMask;
764 D.CachedPSO = this->CachedPSO;
765 return D;
766 }
767 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
768 {
769 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
770 D.Flags = this->Flags;
771 D.NodeMask = this->NodeMask;
772 D.pRootSignature = this->pRootSignature;
773 D.CS = this->CS;
774 D.CachedPSO = this->CachedPSO;
775 return D;
776 }
777};
778
779// CD3DX12_PIPELINE_STATE_STREAM1 Works on OS Build 16299+ (where there is a new view instancing subobject).
780// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
781struct CD3DX12_PIPELINE_STATE_STREAM1
782{
783 CD3DX12_PIPELINE_STATE_STREAM1() = default;
784 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
785 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
786 : Flags(Desc.Flags)
787 , NodeMask(Desc.NodeMask)
788 , pRootSignature(Desc.pRootSignature)
789 , InputLayout(Desc.InputLayout)
790 , IBStripCutValue(Desc.IBStripCutValue)
791 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
792 , VS(Desc.VS)
793 , GS(Desc.GS)
794 , StreamOutput(Desc.StreamOutput)
795 , HS(Desc.HS)
796 , DS(Desc.DS)
797 , PS(Desc.PS)
798 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
799 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
800 , DSVFormat(Desc.DSVFormat)
801 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
802 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
803 , SampleDesc(Desc.SampleDesc)
804 , SampleMask(Desc.SampleMask)
805 , CachedPSO(Desc.CachedPSO)
806 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
807 {}
808 CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
809 : Flags(Desc.Flags)
810 , NodeMask(Desc.NodeMask)
811 , pRootSignature(Desc.pRootSignature)
812 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
813 , PS(Desc.PS)
814 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
815 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
816 , DSVFormat(Desc.DSVFormat)
817 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
818 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
819 , SampleDesc(Desc.SampleDesc)
820 , SampleMask(Desc.SampleMask)
821 , CachedPSO(Desc.CachedPSO)
822 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
823 {}
824 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
825 : Flags(Desc.Flags)
826 , NodeMask(Desc.NodeMask)
827 , pRootSignature(Desc.pRootSignature)
828 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
829 , CachedPSO(Desc.CachedPSO)
830 {
831 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
832 }
833 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
834 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
835 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
836 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
837 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
838 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
839 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
840 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
841 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
842 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
843 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
844 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
845 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
846 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
847 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
848 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
849 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
850 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
851 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
852 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
853 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
854 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
855 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
856 {
857 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
858 D.Flags = this->Flags;
859 D.NodeMask = this->NodeMask;
860 D.pRootSignature = this->pRootSignature;
861 D.InputLayout = this->InputLayout;
862 D.IBStripCutValue = this->IBStripCutValue;
863 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
864 D.VS = this->VS;
865 D.GS = this->GS;
866 D.StreamOutput = this->StreamOutput;
867 D.HS = this->HS;
868 D.DS = this->DS;
869 D.PS = this->PS;
870 D.BlendState = this->BlendState;
871 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
872 D.DSVFormat = this->DSVFormat;
873 D.RasterizerState = this->RasterizerState;
874 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
875 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
876 D.SampleDesc = this->SampleDesc;
877 D.SampleMask = this->SampleMask;
878 D.CachedPSO = this->CachedPSO;
879 return D;
880 }
881 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
882 {
883 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
884 D.Flags = this->Flags;
885 D.NodeMask = this->NodeMask;
886 D.pRootSignature = this->pRootSignature;
887 D.CS = this->CS;
888 D.CachedPSO = this->CachedPSO;
889 return D;
890 }
891};
892
893
894struct CD3DX12_PIPELINE_MESH_STATE_STREAM
895{
896 CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
897 CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
898 : Flags(Desc.Flags)
899 , NodeMask(Desc.NodeMask)
900 , pRootSignature(Desc.pRootSignature)
901 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
902 , PS(Desc.PS)
903 , AS(Desc.AS)
904 , MS(Desc.MS)
905 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
906 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
907 , DSVFormat(Desc.DSVFormat)
908 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
909 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
910 , SampleDesc(Desc.SampleDesc)
911 , SampleMask(Desc.SampleMask)
912 , CachedPSO(Desc.CachedPSO)
913 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
914 {}
915 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
916 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
917 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
918 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
919 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
920 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
921 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
922 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
923 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
924 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
925 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
926 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
927 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
928 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
929 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
930 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
931 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
932 {
933 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
934 D.Flags = this->Flags;
935 D.NodeMask = this->NodeMask;
936 D.pRootSignature = this->pRootSignature;
937 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
938 D.PS = this->PS;
939 D.AS = this->AS;
940 D.MS = this->MS;
941 D.BlendState = this->BlendState;
942 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
943 D.DSVFormat = this->DSVFormat;
944 D.RasterizerState = this->RasterizerState;
945 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
946 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
947 D.SampleDesc = this->SampleDesc;
948 D.SampleMask = this->SampleMask;
949 D.CachedPSO = this->CachedPSO;
950 return D;
951 }
952};
953
954// CD3DX12_PIPELINE_STATE_STREAM works on OS Build 15063+ but does not support new subobject(s) added in OS Build 16299+.
955// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
956struct CD3DX12_PIPELINE_STATE_STREAM
957{
958 CD3DX12_PIPELINE_STATE_STREAM() = default;
959 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
960 : Flags(Desc.Flags)
961 , NodeMask(Desc.NodeMask)
962 , pRootSignature(Desc.pRootSignature)
963 , InputLayout(Desc.InputLayout)
964 , IBStripCutValue(Desc.IBStripCutValue)
965 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
966 , VS(Desc.VS)
967 , GS(Desc.GS)
968 , StreamOutput(Desc.StreamOutput)
969 , HS(Desc.HS)
970 , DS(Desc.DS)
971 , PS(Desc.PS)
972 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
973 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
974 , DSVFormat(Desc.DSVFormat)
975 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
976 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
977 , SampleDesc(Desc.SampleDesc)
978 , SampleMask(Desc.SampleMask)
979 , CachedPSO(Desc.CachedPSO)
980 {}
981 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
982 : Flags(Desc.Flags)
983 , NodeMask(Desc.NodeMask)
984 , pRootSignature(Desc.pRootSignature)
985 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
986 , CachedPSO(Desc.CachedPSO)
987 {}
988 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
989 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
990 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
991 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
992 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
993 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
994 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
995 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
996 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
997 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
998 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
999 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
1000 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
1001 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
1002 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
1003 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
1004 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
1005 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
1006 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
1007 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
1008 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
1009 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
1010 {
1011 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
1012 D.Flags = this->Flags;
1013 D.NodeMask = this->NodeMask;
1014 D.pRootSignature = this->pRootSignature;
1015 D.InputLayout = this->InputLayout;
1016 D.IBStripCutValue = this->IBStripCutValue;
1017 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
1018 D.VS = this->VS;
1019 D.GS = this->GS;
1020 D.StreamOutput = this->StreamOutput;
1021 D.HS = this->HS;
1022 D.DS = this->DS;
1023 D.PS = this->PS;
1024 D.BlendState = this->BlendState;
1025 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
1026 D.DSVFormat = this->DSVFormat;
1027 D.RasterizerState = this->RasterizerState;
1028 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
1029 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
1030 D.SampleDesc = this->SampleDesc;
1031 D.SampleMask = this->SampleMask;
1032 D.CachedPSO = this->CachedPSO;
1033 return D;
1034 }
1035 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
1036 {
1037 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
1038 D.Flags = this->Flags;
1039 D.NodeMask = this->NodeMask;
1040 D.pRootSignature = this->pRootSignature;
1041 D.CS = this->CS;
1042 D.CachedPSO = this->CachedPSO;
1043 return D;
1044 }
1045};
1046
1047
1048struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1049{
1050 CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
1051 CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
1052 : SeenDSS(false)
1053 {
1054 // Adjust defaults to account for absent members.
1055 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1056
1057 // Depth disabled if no DSV format specified.
1058 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
1059 }
1060
1061 // ID3DX12PipelineParserCallbacks
1062 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
1063 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
1064 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
1065 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
1066 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
1067 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
1068 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
1069 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
1070 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
1071 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
1072 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
1073 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
1074 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
1075 void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
1076 void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
1077 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
1078 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1079 {
1080 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1081 SeenDSS = true;
1082 }
1083 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1084 {
1085 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1086 SeenDSS = true;
1087 }
1088 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1089 {
1090 PipelineStream.DSVFormat = DSVFormat;
1091 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1092 {
1093 // Re-enable depth for the default state.
1094 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
1095 }
1096 }
1097 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
1098 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
1099 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
1100 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
1101 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
1102 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
1103
1104private:
1105 bool SeenDSS;
1106};
1107
1108#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1109struct CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1110{
1111 CD3DX12_PIPELINE_STATE_STREAM3 PipelineStream;
1112 CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER() noexcept
1113 : SeenDSS(false)
1114 {
1115 // Adjust defaults to account for absent members.
1116 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1117
1118 // Depth disabled if no DSV format specified.
1119 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1120 }
1121
1122 // ID3DX12PipelineParserCallbacks
1123 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1124 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1125 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1126 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1127 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1128 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1129 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1130 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1131 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1132 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1133 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1134 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1135 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1136 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1137 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1138 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1139 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1140 {
1141 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1142 SeenDSS = true;
1143 }
1144 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1145 {
1146 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1147 SeenDSS = true;
1148 }
1149 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1150 {
1151 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1152 SeenDSS = true;
1153 }
1154 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1155 {
1156 PipelineStream.DSVFormat = DSVFormat;
1157 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1158 {
1159 // Re-enable depth for the default state.
1160 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1161 }
1162 }
1163 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState); }
1164 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1165 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1166 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1167 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1168 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1169
1170private:
1171 bool SeenDSS;
1172};
1173#endif // D3D12_SDK_VERSION >= 606
1174
1175#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1176struct CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1177{
1178 CD3DX12_PIPELINE_STATE_STREAM4 PipelineStream;
1179 CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER() noexcept
1180 : SeenDSS(false)
1181 {
1182 // Adjust defaults to account for absent members.
1183 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1184
1185 // Depth disabled if no DSV format specified.
1186 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1187 }
1188
1189 // ID3DX12PipelineParserCallbacks
1190 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1191 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1192 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1193 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1194 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1195 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1196 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1197 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1198 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1199 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1200 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1201 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1202 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1203 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1204 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1205 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1206 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1207 {
1208 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1209 SeenDSS = true;
1210 }
1211 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1212 {
1213 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1214 SeenDSS = true;
1215 }
1216 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1217 {
1218 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1219 SeenDSS = true;
1220 }
1221 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1222 {
1223 PipelineStream.DSVFormat = DSVFormat;
1224 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1225 {
1226 // Re-enable depth for the default state.
1227 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1228 }
1229 }
1230 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
1231 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
1232 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1233 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1234 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1235 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1236 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1237
1238private:
1239 bool SeenDSS;
1240};
1241#endif // D3D12_SDK_VERSION >= 608
1242
1243#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
1244// This SDK 613 version has better primitive topology default handling than the v610 equivalent below.
1245struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1246{
1247 CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
1248 CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
1249 : SeenDSS(false),
1250 SeenMS(false),
1251 SeenTopology(false)
1252 {
1253 // Adjust defaults to account for absent members.
1254 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1255
1256 // Depth disabled if no DSV format specified.
1257 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1258 }
1259
1260 // ID3DX12PipelineParserCallbacks
1261 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1262 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1263 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1264 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1265 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1266 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
1267 {
1268 PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
1269 SeenTopology = true;
1270 }
1271 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1272 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1273 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1274 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1275 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1276 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1277 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1278 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1279 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
1280 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1281 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1282 {
1283 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1284 SeenDSS = true;
1285 }
1286 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1287 {
1288 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1289 SeenDSS = true;
1290 }
1291 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1292 {
1293 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1294 SeenDSS = true;
1295 }
1296 void DSVFormatCb(DXGI_FORMAT DSVFormat) override {PipelineStream.DSVFormat = DSVFormat;}
1297 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1298 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1299 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1300 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1301 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1302 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1303 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1304 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1305 void FinalizeCb() override
1306 {
1307 if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
1308 {
1309 // Re-enable depth for the default state.
1310 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1311 }
1312 if (!SeenTopology && SeenMS)
1313 {
1314 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
1315 }
1316 }
1317
1318private:
1319 bool SeenDSS;
1320 bool SeenMS;
1321 bool SeenTopology;
1322};
1323#elif defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
1324struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1325{
1326 CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
1327 CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
1328 : SeenDSS(false)
1329 {
1330 // Adjust defaults to account for absent members.
1331 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1332
1333 // Depth disabled if no DSV format specified.
1334 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1335 }
1336
1337 // ID3DX12PipelineParserCallbacks
1338 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1339 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1340 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1341 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1342 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1343 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1344 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1345 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1346 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1347 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1348 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1349 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1350 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1351 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1352 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1353 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1354 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1355 {
1356 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1357 SeenDSS = true;
1358 }
1359 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1360 {
1361 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1362 SeenDSS = true;
1363 }
1364 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1365 {
1366 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1367 SeenDSS = true;
1368 }
1369 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1370 {
1371 PipelineStream.DSVFormat = DSVFormat;
1372 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1373 {
1374 // Re-enable depth for the default state.
1375 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1376 }
1377 }
1378 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1379 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1380 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1381 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1382 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1383 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1384 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1385 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1386
1387private:
1388 bool SeenDSS;
1389};
1390#endif // D3D12_SDK_VERSION >= 610
1391
1392#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1393struct CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1394{
1395 CD3DX12_PIPELINE_STATE_STREAM6 PipelineStream;
1396 CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER() noexcept
1397 : SeenDSS(false),
1398 SeenMS(false),
1399 SeenTopology(false)
1400 {
1401 // Adjust defaults to account for absent members.
1402 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1403
1404 // Depth disabled if no DSV format specified.
1405 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1406 }
1407
1408 // ID3DX12PipelineParserCallbacks
1409 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1410 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1411 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1412 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1413 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1414 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
1415 {
1416 PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
1417 SeenTopology = true;
1418 }
1419 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1420 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1421 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1422 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1423 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1424 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1425 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1426 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1427 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
1428 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1429 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1430 {
1431 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1432 SeenDSS = true;
1433 }
1434 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1435 {
1436 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1437 SeenDSS = true;
1438 }
1439 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1440 {
1441 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1442 SeenDSS = true;
1443 }
1444 void DSVFormatCb(DXGI_FORMAT DSVFormat) override { PipelineStream.DSVFormat = DSVFormat; }
1445 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1446 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1447 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1448 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1449 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1450 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1451 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1452 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1453 void FinalizeCb() override
1454 {
1455 if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
1456 {
1457 // Re-enable depth for the default state.
1458 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1459 }
1460 if (!SeenTopology && SeenMS)
1461 {
1462 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
1463 }
1464 }
1465 void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& SerializedRootSignature) override { PipelineStream.SerializedRootSignature = CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(SerializedRootSignature); }
1466
1467private:
1468 bool SeenDSS;
1469 bool SeenMS;
1470 bool SeenTopology;
1471};
1472#endif // D3D12_SDK_VERSION >= 618
1473
1474struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1475{
1476 CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
1477 CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept
1478 : SeenDSS(false)
1479 {
1480 // Adjust defaults to account for absent members.
1481 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1482
1483 // Depth disabled if no DSV format specified.
1484 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
1485 }
1486
1487 // ID3DX12PipelineParserCallbacks
1488 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
1489 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
1490 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
1491 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
1492 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
1493 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
1494 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
1495 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
1496 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
1497 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
1498 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
1499 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
1500 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
1501 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
1502 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1503 {
1504 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1505 SeenDSS = true;
1506 }
1507 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1508 {
1509 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1510 SeenDSS = true;
1511 }
1512 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1513 {
1514 PipelineStream.DSVFormat = DSVFormat;
1515 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1516 {
1517 // Re-enable depth for the default state.
1518 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
1519 }
1520 }
1521 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
1522 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
1523 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
1524 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
1525 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
1526 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
1527
1528private:
1529 bool SeenDSS;
1530};
1531
1532
1533inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
1534{
1535 switch (SubobjectType)
1536 {
1537 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
1538 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1539#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1540 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
1541 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1542#endif
1543#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1544 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
1545 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER;
1546#endif
1547 default:
1548 return SubobjectType;
1549 }
1550}
1551
1552inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks)
1553{
1554 if (pCallbacks == nullptr)
1555 {
1556 return E_INVALIDARG;
1557 }
1558
1559 if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr)
1560 {
1561 pCallbacks->ErrorBadInputParameter(1); // first parameter issue
1562 return E_INVALIDARG;
1563 }
1564
1565 bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {};
1566 for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject)
1567 {
1568 BYTE* pStream = static_cast<BYTE*>(Desc.pPipelineStateSubobjectStream)+CurOffset;
1569 auto SubobjectType = *reinterpret_cast<D3D12_PIPELINE_STATE_SUBOBJECT_TYPE*>(pStream);
1570 if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID)
1571 {
1572 pCallbacks->ErrorUnknownSubobject(SubobjectType);
1573 return E_INVALIDARG;
1574 }
1575 if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)])
1576 {
1577 pCallbacks->ErrorDuplicateSubobject(SubobjectType);
1578 return E_INVALIDARG; // disallow subobject duplicates in a stream
1579 }
1580 SubobjectSeen[SubobjectType] = true;
1581 switch (SubobjectType)
1582 {
1583 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE:
1584 pCallbacks->RootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature)*>(pStream));
1585 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature);
1586 break;
1587 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS:
1588 pCallbacks->VSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::VS)*>(pStream));
1589 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS);
1590 break;
1591 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS:
1592 pCallbacks->PSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PS)*>(pStream));
1593 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS);
1594 break;
1595 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS:
1596 pCallbacks->DSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DS)*>(pStream));
1597 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS);
1598 break;
1599 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS:
1600 pCallbacks->HSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::HS)*>(pStream));
1601 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS);
1602 break;
1603 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS:
1604 pCallbacks->GSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::GS)*>(pStream));
1605 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS);
1606 break;
1607 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS:
1608 pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
1609 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
1610 break;
1611 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
1612 pCallbacks->ASCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::AS)*>(pStream));
1613 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
1614 break;
1615 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
1616 pCallbacks->MSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::MS)*>(pStream));
1617 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
1618 break;
1619 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
1620 pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
1621 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
1622 break;
1623 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND:
1624 pCallbacks->BlendStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::BlendState)*>(pStream));
1625 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState);
1626 break;
1627 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK:
1628 pCallbacks->SampleMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleMask)*>(pStream));
1629 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask);
1630 break;
1631 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER:
1632 pCallbacks->RasterizerStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState)*>(pStream));
1633 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState);
1634 break;
1635#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1636 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
1637 pCallbacks->RasterizerState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState)*>(pStream));
1638 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState);
1639 break;
1640#endif
1641#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
1642 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2:
1643 pCallbacks->RasterizerState2Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState)*>(pStream));
1644 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState);
1645 break;
1646#endif
1647 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL:
1648 pCallbacks->DepthStencilStateCb(*reinterpret_cast<CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL*>(pStream));
1649 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL);
1650 break;
1651 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
1652 pCallbacks->DepthStencilState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState)*>(pStream));
1653 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState);
1654 break;
1655#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1656 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
1657 pCallbacks->DepthStencilState2Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState)*>(pStream));
1658 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState);
1659 break;
1660#endif
1661 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT:
1662 pCallbacks->InputLayoutCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::InputLayout)*>(pStream));
1663 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout);
1664 break;
1665 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE:
1666 pCallbacks->IBStripCutValueCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue)*>(pStream));
1667 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue);
1668 break;
1669 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY:
1670 pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType)*>(pStream));
1671 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType);
1672 break;
1673 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS:
1674 pCallbacks->RTVFormatsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats)*>(pStream));
1675 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats);
1676 break;
1677 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT:
1678 pCallbacks->DSVFormatCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat)*>(pStream));
1679 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat);
1680 break;
1681 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC:
1682 pCallbacks->SampleDescCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc)*>(pStream));
1683 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc);
1684 break;
1685 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK:
1686 pCallbacks->NodeMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::NodeMask)*>(pStream));
1687 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask);
1688 break;
1689 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO:
1690 pCallbacks->CachedPSOCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO)*>(pStream));
1691 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO);
1692 break;
1693 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS:
1694 pCallbacks->FlagsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::Flags)*>(pStream));
1695 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags);
1696 break;
1697 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING:
1698 pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream));
1699 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
1700 break;
1701#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1702 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE:
1703 pCallbacks->SerializedRootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature)*>(pStream));
1704 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature);
1705 break;
1706#endif
1707 default:
1708 pCallbacks->ErrorUnknownSubobject(SubobjectType);
1709 return E_INVALIDARG;
1710 }
1711 }
1712#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
1713 pCallbacks->FinalizeCb();
1714#endif
1715
1716 return S_OK;
1717}
1718
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_property_format_table.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_property_format_table.h
new file mode 100644
index 0000000..66c7600
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_property_format_table.h
@@ -0,0 +1,128 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7#ifndef __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
8#define __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
9#include "d3d12.h"
10#define MAP_ALIGN_REQUIREMENT 16 // Map is required to return 16-byte aligned addresses
11
12struct D3D12_PROPERTY_LAYOUT_FORMAT_TABLE
13{
14public:
15 // ----------------------------------------------------------------------------
16 // Information describing everything about a D3D Resource Format
17 // ----------------------------------------------------------------------------
18 typedef struct FORMAT_DETAIL
19 {
20 DXGI_FORMAT DXGIFormat;
21 DXGI_FORMAT ParentFormat;
22 const DXGI_FORMAT* pDefaultFormatCastSet; // This is dependent on FL/driver version, but is here to save a lot of space
23 UINT8 BitsPerComponent[4]; // only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
24 UINT8 BitsPerUnit;
25 BYTE SRGBFormat : 1;
26 UINT WidthAlignment : 4; // number of texels to align to in a mip level.
27 UINT HeightAlignment : 4; // Top level dimensions must be a multiple of these
28 UINT DepthAlignment : 1; // values.
29 D3D_FORMAT_LAYOUT Layout : 1;
30 D3D_FORMAT_TYPE_LEVEL TypeLevel : 2;
31 D3D_FORMAT_COMPONENT_NAME ComponentName0 : 3; // RED ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
32 D3D_FORMAT_COMPONENT_NAME ComponentName1 : 3; // GREEN ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
33 D3D_FORMAT_COMPONENT_NAME ComponentName2 : 3; // BLUE ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
34 D3D_FORMAT_COMPONENT_NAME ComponentName3 : 3; // ALPHA ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
35 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation0 : 3; // only used for D3DFTL_FULL_TYPE
36 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation1 : 3; // only used for D3DFTL_FULL_TYPE
37 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation2 : 3; // only used for D3DFTL_FULL_TYPE
38 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation3 : 3; // only used for D3DFTL_FULL_TYPE
39 bool bDX9VertexOrIndexFormat : 1;
40 bool bDX9TextureFormat : 1;
41 bool bFloatNormFormat : 1;
42 bool bPlanar : 1;
43 bool bYUV : 1;
44 bool bDependantFormatCastSet : 1; // This indicates that the format cast set is dependent on FL/driver version
45 bool bInternal : 1;
46 } FORMAT_DETAIL;
47
48private:
49 static const FORMAT_DETAIL s_FormatDetail[];
50 static const UINT s_NumFormats;
51 static const LPCSTR s_FormatNames[]; // separate from above structure so it can be compiled out of runtime.
52public:
53 static UINT GetNumFormats();
54 static const FORMAT_DETAIL* GetFormatTable();
55 static D3D_FEATURE_LEVEL GetHighestDefinedFeatureLevel();
56
57 static DXGI_FORMAT GetFormat (SIZE_T Index);
58 static bool FormatExists (DXGI_FORMAT Format);
59 static bool FormatExistsInHeader (DXGI_FORMAT Format, bool bExternalHeader = true);
60 static UINT GetByteAlignment (DXGI_FORMAT Format);
61 static bool IsBlockCompressFormat (DXGI_FORMAT Format);
62 static LPCSTR GetName (DXGI_FORMAT Format, bool bHideInternalFormats = true);
63 static bool IsSRGBFormat (DXGI_FORMAT Format);
64 static UINT GetBitsPerStencil (DXGI_FORMAT Format);
65 static UINT GetBitsPerDepth (DXGI_FORMAT Format);
66 static void GetFormatReturnTypes (DXGI_FORMAT Format, D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations); // return array of 4 components
67 static UINT GetNumComponentsInFormat(DXGI_FORMAT Format);
68 static UINT GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
69
70 // Converts the sequential component index (range from 0 to GetNumComponentsInFormat()) to
71 // the absolute component index (range 0 to 3).
72 static UINT Sequential2AbsoluteComponentIndex (DXGI_FORMAT Format, UINT SequentialComponentIndex);
73 static bool CanBeCastEvenFullyTyped (DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl);
74 static UINT8 GetAddressingBitsPerAlignedSize (DXGI_FORMAT Format);
75 static DXGI_FORMAT GetParentFormat (DXGI_FORMAT Format);
76 static const DXGI_FORMAT* GetFormatCastSet (DXGI_FORMAT Format);
77 static D3D_FORMAT_LAYOUT GetLayout (DXGI_FORMAT Format);
78 static D3D_FORMAT_TYPE_LEVEL GetTypeLevel (DXGI_FORMAT Format);
79 static UINT GetBitsPerUnit (DXGI_FORMAT Format);
80 static UINT GetBitsPerUnitThrow (DXGI_FORMAT Format);
81 static UINT GetBitsPerElement (DXGI_FORMAT Format); // Legacy function used to support D3D10on9 only. Do not use.
82 static UINT GetWidthAlignment (DXGI_FORMAT Format);
83 static UINT GetHeightAlignment (DXGI_FORMAT Format);
84 static UINT GetDepthAlignment (DXGI_FORMAT Format);
85 static BOOL Planar (DXGI_FORMAT Format);
86 static BOOL NonOpaquePlanar (DXGI_FORMAT Format);
87 static BOOL YUV (DXGI_FORMAT Format);
88 static BOOL Opaque (DXGI_FORMAT Format);
89 static bool FamilySupportsStencil (DXGI_FORMAT Format);
90 static UINT NonOpaquePlaneCount (DXGI_FORMAT Format);
91 static BOOL DX9VertexOrIndexFormat (DXGI_FORMAT Format);
92 static BOOL DX9TextureFormat (DXGI_FORMAT Format);
93 static BOOL FloatNormTextureFormat (DXGI_FORMAT Format);
94 static bool DepthOnlyFormat (DXGI_FORMAT format);
95 static UINT8 GetPlaneCount (DXGI_FORMAT Format);
96 static bool MotionEstimatorAllowedInputFormat (DXGI_FORMAT Format);
97 static bool SupportsSamplerFeedback (DXGI_FORMAT Format);
98 static bool DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format);
99 static UINT8 GetPlaneSliceFromViewFormat (DXGI_FORMAT ResourceFormat, DXGI_FORMAT ViewFormat);
100 static bool FloatAndNotFloatFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
101 static bool SNORMAndUNORMFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
102 static bool ValidCastToR32UAV (DXGI_FORMAT from, DXGI_FORMAT to);
103 static bool IsSupportedTextureDisplayableFormat (DXGI_FORMAT, bool bMediaFormatOnly);
104 static D3D_FORMAT_COMPONENT_INTERPRETATION GetFormatComponentInterpretation (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
105 static UINT GetBitsPerComponent (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
106 static D3D_FORMAT_COMPONENT_NAME GetComponentName (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
107 static HRESULT CalculateExtraPlanarRows (DXGI_FORMAT format, UINT plane0Height, _Out_ UINT& totalHeight);
108 static HRESULT CalculateMinimumRowMajorRowPitch (DXGI_FORMAT Format, UINT Width, _Out_ UINT& RowPitch);
109 static HRESULT CalculateMinimumRowMajorSlicePitch (DXGI_FORMAT Format, UINT ContextBasedRowPitch, UINT Height, _Out_ UINT& SlicePitch);
110 static void GetYCbCrChromaSubsampling (DXGI_FORMAT Format, _Out_ UINT& HorizontalSubsampling, _Out_ UINT& VerticalSubsampling);
111
112 static HRESULT CalculateResourceSize (UINT width, UINT height, UINT depth, DXGI_FORMAT format, UINT mipLevels, UINT subresources, _Out_ SIZE_T& totalByteSize, _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST* pDst = nullptr);
113 static void GetTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
114 static void Get4KTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
115 static void GetMipDimensions (UINT8 mipSlice, _Inout_ UINT64* pWidth, _Inout_opt_ UINT64* pHeight = nullptr, _Inout_opt_ UINT64* pDepth = nullptr);
116 static void GetPlaneSubsampledSizeAndFormatForCopyableLayout(UINT PlaneSlice, DXGI_FORMAT Format, UINT Width, UINT Height, _Out_ DXGI_FORMAT& PlaneFormat, _Out_ UINT& MinPlanePitchWidth, _Out_ UINT& PlaneWidth, _Out_ UINT& PlaneHeight);
117
118 static UINT GetDetailTableIndex (DXGI_FORMAT Format);
119 static UINT GetDetailTableIndexNoThrow (DXGI_FORMAT Format);
120 static UINT GetDetailTableIndexThrow (DXGI_FORMAT Format);
121 static bool SupportsDepth (DXGI_FORMAT Format);
122 static bool SupportsStencil (DXGI_FORMAT Format);
123private:
124 static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format);
125
126};
127
128#endif \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_render_pass.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_render_pass.h
new file mode 100644
index 0000000..c88fbdf
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_render_pass.h
@@ -0,0 +1,105 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
16inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
17{
18 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
19}
20
21inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
22{
23 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
24}
25
26inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
27{
28 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
29}
30#endif
31
32inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) noexcept
33{
34 return a.ClearValue == b.ClearValue;
35}
36
37inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) noexcept
38{
39 if (a.pSrcResource != b.pSrcResource) return false;
40 if (a.pDstResource != b.pDstResource) return false;
41 if (a.SubresourceCount != b.SubresourceCount) return false;
42 if (a.Format != b.Format) return false;
43 if (a.ResolveMode != b.ResolveMode) return false;
44 if (a.PreserveResolveSource != b.PreserveResolveSource) return false;
45 return true;
46}
47
48inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) noexcept
49{
50 if (a.Type != b.Type) return false;
51 switch (a.Type)
52 {
53 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR:
54 if (!(a.Clear == b.Clear)) return false;
55 break;
56#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
57 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
58 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
59 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
60 if (!(a.PreserveLocal == b.PreserveLocal)) return false;
61 break;
62#endif
63 default:
64 break;
65 }
66 return true;
67}
68
69inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS& a, const D3D12_RENDER_PASS_ENDING_ACCESS& b) noexcept
70{
71 if (a.Type != b.Type) return false;
72 switch (a.Type)
73 {
74 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE:
75 if (!(a.Resolve == b.Resolve)) return false;
76 break;
77#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
78 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
79 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
80 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
81 if (!(a.PreserveLocal == b.PreserveLocal)) return false;
82 break;
83#endif
84 default:
85 break;
86 }
87 return true;
88}
89
90inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) noexcept
91{
92 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
93 if (!(a.BeginningAccess == b.BeginningAccess)) return false;
94 if (!(a.EndingAccess == b.EndingAccess)) return false;
95 return true;
96}
97inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) noexcept
98{
99 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
100 if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false;
101 if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false;
102 if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false;
103 if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false;
104 return true;
105}
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_resource_helpers.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_resource_helpers.h
new file mode 100644
index 0000000..5c1c980
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_resource_helpers.h
@@ -0,0 +1,612 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_property_format_table.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17//------------------------------------------------------------------------------------------------
18template <typename T, typename U, typename V>
19inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
20{
21 MipSlice = static_cast<T>(Subresource % MipLevels);
22 ArraySlice = static_cast<U>((Subresource / MipLevels) % ArraySize);
23 PlaneSlice = static_cast<V>(Subresource / (MipLevels * ArraySize));
24}
25
26//------------------------------------------------------------------------------------------------
27// Row-by-row memcpy
28inline void MemcpySubresource(
29 _In_ const D3D12_MEMCPY_DEST* pDest,
30 _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
31 SIZE_T RowSizeInBytes,
32 UINT NumRows,
33 UINT NumSlices) noexcept
34{
35 for (UINT z = 0; z < NumSlices; ++z)
36 {
37 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
38 auto pSrcSlice = static_cast<const BYTE*>(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z);
39 for (UINT y = 0; y < NumRows; ++y)
40 {
41 memcpy(pDestSlice + pDest->RowPitch * y,
42 pSrcSlice + pSrc->RowPitch * LONG_PTR(y),
43 RowSizeInBytes);
44 }
45 }
46}
47
48//------------------------------------------------------------------------------------------------
49// Row-by-row memcpy
50inline void MemcpySubresource(
51 _In_ const D3D12_MEMCPY_DEST* pDest,
52 _In_ const void* pResourceData,
53 _In_ const D3D12_SUBRESOURCE_INFO* pSrc,
54 SIZE_T RowSizeInBytes,
55 UINT NumRows,
56 UINT NumSlices) noexcept
57{
58 for (UINT z = 0; z < NumSlices; ++z)
59 {
60 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
61 auto pSrcSlice = (static_cast<const BYTE*>(pResourceData) + pSrc->Offset) + pSrc->DepthPitch * ULONG_PTR(z);
62 for (UINT y = 0; y < NumRows; ++y)
63 {
64 memcpy(pDestSlice + pDest->RowPitch * y,
65 pSrcSlice + pSrc->RowPitch * ULONG_PTR(y),
66 RowSizeInBytes);
67 }
68 }
69}
70
71//------------------------------------------------------------------------------------------------
72// Returns required size of a buffer to be used for data upload
73inline UINT64 GetRequiredIntermediateSize(
74 _In_ ID3D12Resource* pDestinationResource,
75 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
76 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) noexcept
77{
78#if defined(_MSC_VER) || !defined(_WIN32)
79 const auto Desc = pDestinationResource->GetDesc();
80#else
81 D3D12_RESOURCE_DESC tmpDesc;
82 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
83#endif
84 UINT64 RequiredSize = 0;
85
86 ID3D12Device* pDevice = nullptr;
87 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
88 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
89 pDevice->Release();
90
91 return RequiredSize;
92}
93
94//------------------------------------------------------------------------------------------------
95// All arrays must be populated (e.g. by calling GetCopyableFootprints)
96inline UINT64 UpdateSubresources(
97 _In_ ID3D12GraphicsCommandList* pCmdList,
98 _In_ ID3D12Resource* pDestinationResource,
99 _In_ ID3D12Resource* pIntermediate,
100 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
101 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
102 UINT64 RequiredSize,
103 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
104 _In_reads_(NumSubresources) const UINT* pNumRows,
105 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
106 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
107{
108 // Minor validation
109#if defined(_MSC_VER) || !defined(_WIN32)
110 const auto IntermediateDesc = pIntermediate->GetDesc();
111 const auto DestinationDesc = pDestinationResource->GetDesc();
112#else
113 D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
114 const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
115 const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
116#endif
117 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
118 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
119 RequiredSize > SIZE_T(-1) ||
120 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
121 (FirstSubresource != 0 || NumSubresources != 1)))
122 {
123 return 0;
124 }
125
126 BYTE* pData;
127 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
128 if (FAILED(hr))
129 {
130 return 0;
131 }
132
133 for (UINT i = 0; i < NumSubresources; ++i)
134 {
135 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
136 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
137 MemcpySubresource(&DestData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
138 }
139 pIntermediate->Unmap(0, nullptr);
140
141 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
142 {
143 pCmdList->CopyBufferRegion(
144 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
145 }
146 else
147 {
148 for (UINT i = 0; i < NumSubresources; ++i)
149 {
150 const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
151 const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
152 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
153 }
154 }
155 return RequiredSize;
156}
157
158//------------------------------------------------------------------------------------------------
159// All arrays must be populated (e.g. by calling GetCopyableFootprints)
160inline UINT64 UpdateSubresources(
161 _In_ ID3D12GraphicsCommandList* pCmdList,
162 _In_ ID3D12Resource* pDestinationResource,
163 _In_ ID3D12Resource* pIntermediate,
164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
166 UINT64 RequiredSize,
167 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
168 _In_reads_(NumSubresources) const UINT* pNumRows,
169 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
170 _In_ const void* pResourceData,
171 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
172{
173 // Minor validation
174#if defined(_MSC_VER) || !defined(_WIN32)
175 const auto IntermediateDesc = pIntermediate->GetDesc();
176 const auto DestinationDesc = pDestinationResource->GetDesc();
177#else
178 D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
179 const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
180 const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
181#endif
182 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
183 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
184 RequiredSize > SIZE_T(-1) ||
185 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
186 (FirstSubresource != 0 || NumSubresources != 1)))
187 {
188 return 0;
189 }
190
191 BYTE* pData;
192 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
193 if (FAILED(hr))
194 {
195 return 0;
196 }
197
198 for (UINT i = 0; i < NumSubresources; ++i)
199 {
200 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
201 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
202 MemcpySubresource(&DestData, pResourceData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
203 }
204 pIntermediate->Unmap(0, nullptr);
205
206 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
207 {
208 pCmdList->CopyBufferRegion(
209 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
210 }
211 else
212 {
213 for (UINT i = 0; i < NumSubresources; ++i)
214 {
215 const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
216 const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
217 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
218 }
219 }
220 return RequiredSize;
221}
222
223//------------------------------------------------------------------------------------------------
224// Heap-allocating UpdateSubresources implementation
225inline UINT64 UpdateSubresources(
226 _In_ ID3D12GraphicsCommandList* pCmdList,
227 _In_ ID3D12Resource* pDestinationResource,
228 _In_ ID3D12Resource* pIntermediate,
229 UINT64 IntermediateOffset,
230 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
231 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
232 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
233{
234 UINT64 RequiredSize = 0;
235 const auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
236 if (MemToAlloc > SIZE_MAX)
237 {
238 return 0;
239 }
240 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
241 if (pMem == nullptr)
242 {
243 return 0;
244 }
245 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
246 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
247 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
248
249#if defined(_MSC_VER) || !defined(_WIN32)
250 const auto Desc = pDestinationResource->GetDesc();
251#else
252 D3D12_RESOURCE_DESC tmpDesc;
253 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
254#endif
255 ID3D12Device* pDevice = nullptr;
256 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
257 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
258 pDevice->Release();
259
260 const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
261 HeapFree(GetProcessHeap(), 0, pMem);
262 return Result;
263}
264
265//------------------------------------------------------------------------------------------------
266// Heap-allocating UpdateSubresources implementation
267inline UINT64 UpdateSubresources(
268 _In_ ID3D12GraphicsCommandList* pCmdList,
269 _In_ ID3D12Resource* pDestinationResource,
270 _In_ ID3D12Resource* pIntermediate,
271 UINT64 IntermediateOffset,
272 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
273 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
274 _In_ const void* pResourceData,
275 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
276{
277 UINT64 RequiredSize = 0;
278 const auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
279 if (MemToAlloc > SIZE_MAX)
280 {
281 return 0;
282 }
283 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
284 if (pMem == nullptr)
285 {
286 return 0;
287 }
288 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
289 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
290 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
291
292#if defined(_MSC_VER) || !defined(_WIN32)
293 const auto Desc = pDestinationResource->GetDesc();
294#else
295 D3D12_RESOURCE_DESC tmpDesc;
296 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
297#endif
298 ID3D12Device* pDevice = nullptr;
299 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
300 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
301 pDevice->Release();
302
303 const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pResourceData, pSrcData);
304 HeapFree(GetProcessHeap(), 0, pMem);
305 return Result;
306}
307
308//------------------------------------------------------------------------------------------------
309// Stack-allocating UpdateSubresources implementation
310template <UINT MaxSubresources>
311inline UINT64 UpdateSubresources(
312 _In_ ID3D12GraphicsCommandList* pCmdList,
313 _In_ ID3D12Resource* pDestinationResource,
314 _In_ ID3D12Resource* pIntermediate,
315 UINT64 IntermediateOffset,
316 _In_range_(0,MaxSubresources) UINT FirstSubresource,
317 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
318 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
319{
320 UINT64 RequiredSize = 0;
321 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
322 UINT NumRows[MaxSubresources];
323 UINT64 RowSizesInBytes[MaxSubresources];
324
325#if defined(_MSC_VER) || !defined(_WIN32)
326 const auto Desc = pDestinationResource->GetDesc();
327#else
328 D3D12_RESOURCE_DESC tmpDesc;
329 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
330#endif
331 ID3D12Device* pDevice = nullptr;
332 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
333 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
334 pDevice->Release();
335
336 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
337}
338
339//------------------------------------------------------------------------------------------------
340// Stack-allocating UpdateSubresources implementation
341template <UINT MaxSubresources>
342inline UINT64 UpdateSubresources(
343 _In_ ID3D12GraphicsCommandList* pCmdList,
344 _In_ ID3D12Resource* pDestinationResource,
345 _In_ ID3D12Resource* pIntermediate,
346 UINT64 IntermediateOffset,
347 _In_range_(0,MaxSubresources) UINT FirstSubresource,
348 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
349 _In_ const void* pResourceData,
350 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
351{
352 UINT64 RequiredSize = 0;
353 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
354 UINT NumRows[MaxSubresources];
355 UINT64 RowSizesInBytes[MaxSubresources];
356
357#if defined(_MSC_VER) || !defined(_WIN32)
358 const auto Desc = pDestinationResource->GetDesc();
359#else
360 D3D12_RESOURCE_DESC tmpDesc;
361 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
362#endif
363 ID3D12Device* pDevice = nullptr;
364 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
365 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
366 pDevice->Release();
367
368 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pResourceData, pSrcData);
369}
370
371//------------------------------------------------------------------------------------------------
372constexpr bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) noexcept
373{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; }
374
375//------------------------------------------------------------------------------------------------
376template< typename T >
377inline T D3DX12Align(T uValue, T uAlign)
378{
379 // Assert power of 2 alignment
380 D3DX12_ASSERT(0 == (uAlign & (uAlign - 1)));
381 T uMask = uAlign - 1;
382 T uResult = (uValue + uMask) & ~uMask;
383 D3DX12_ASSERT(uResult >= uValue);
384 D3DX12_ASSERT(0 == (uResult % uAlign));
385 return uResult;
386}
387
388//------------------------------------------------------------------------------------------------
389template< typename T >
390inline T D3DX12AlignAtLeast(T uValue, T uAlign)
391{
392 T aligned = D3DX12Align(uValue, uAlign);
393 return aligned > uAlign ? aligned : uAlign;
394}
395
396inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
397 D3D12_RESOURCE_DESC1& LclDesc,
398 const D3D12_RESOURCE_DESC1* pDesc,
399 const bool tightAlignmentSupported = false,
400 const bool alignAsCommitted = false)
401{
402 return D3DX12ConditionallyExpandAPIDesc(static_cast<CD3DX12_RESOURCE_DESC1&>(LclDesc), static_cast<const CD3DX12_RESOURCE_DESC1*>(pDesc), tightAlignmentSupported, alignAsCommitted);
403}
404
405#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
406//------------------------------------------------------------------------------------------------
407// The difference between D3DX12GetCopyableFootprints and ID3D12Device::GetCopyableFootprints
408// is that this one loses a lot of error checking by assuming the arguments are correct
409inline bool D3DX12GetCopyableFootprints(
410 _In_ const D3D12_RESOURCE_DESC1& ResourceDesc,
411 _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
412 _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
413 UINT64 BaseOffset,
414 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
415 _Out_writes_opt_(NumSubresources) UINT* pNumRows,
416 _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
417 _Out_opt_ UINT64* pTotalBytes)
418{
419 constexpr UINT64 uint64_max = ~0ull;
420 UINT64 TotalBytes = uint64_max;
421 UINT uSubRes = 0;
422
423 bool bResourceOverflow = false;
424 TotalBytes = 0;
425
426 const DXGI_FORMAT Format = ResourceDesc.Format;
427
428 CD3DX12_RESOURCE_DESC1 LresourceDesc;
429 const CD3DX12_RESOURCE_DESC1& resourceDesc = *D3DX12ConditionallyExpandAPIDesc(LresourceDesc, &ResourceDesc);
430
431 // Check if its a valid format
432 D3DX12_ASSERT(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(Format));
433
434 // D3DX12GetCopyableFootprints does not support buffers with width larger than UINT_MAX.
435 if (ResourceDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER && ResourceDesc.Width >= UINT_MAX)
436 {
437 return false;
438 }
439
440 const UINT WidthAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment( Format );
441 const UINT HeightAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment( Format );
442 const UINT16 DepthAlignment = UINT16( D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment( Format ) );
443
444 for (; uSubRes < NumSubresources; ++uSubRes)
445 {
446 bool bOverflow = false;
447 UINT Subresource = FirstSubresource + uSubRes;
448
449 D3DX12_ASSERT(resourceDesc.MipLevels != 0);
450 UINT subresourceCount = resourceDesc.MipLevels * resourceDesc.ArraySize() * D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(resourceDesc.Format);
451
452 if (Subresource > subresourceCount)
453 {
454 break;
455 }
456
457 TotalBytes = D3DX12Align< UINT64 >( TotalBytes, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT );
458
459 UINT MipLevel, ArraySlice, PlaneSlice;
460 D3D12DecomposeSubresource(Subresource, resourceDesc.MipLevels, resourceDesc.ArraySize(), /*_Out_*/MipLevel, /*_Out_*/ArraySlice, /*_Out_*/PlaneSlice);
461
462 const UINT64 Width = D3DX12AlignAtLeast<UINT64>(resourceDesc.Width >> MipLevel, WidthAlignment);
463 const UINT Height = D3DX12AlignAtLeast(resourceDesc.Height >> MipLevel, HeightAlignment);
464 const UINT16 Depth = D3DX12AlignAtLeast<UINT16>(resourceDesc.Depth() >> MipLevel, DepthAlignment);
465
466 // Adjust for the current PlaneSlice. Most formats have only one plane.
467 DXGI_FORMAT PlaneFormat;
468 UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight;
469 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(PlaneSlice, Format, (UINT)Width, Height, /*_Out_*/ PlaneFormat, /*_Out_*/ MinPlanePitchWidth, /* _Out_ */ PlaneWidth, /*_Out_*/ PlaneHeight);
470
471 D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement = {};
472 auto& Placement = pLayouts ? pLayouts[uSubRes].Footprint : LocalPlacement;
473 Placement.Format = PlaneFormat;
474 Placement.Width = PlaneWidth;
475 Placement.Height = PlaneHeight;
476 Placement.Depth = Depth;
477
478 // Calculate row pitch
479 UINT MinPlaneRowPitch = 0;
480 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, MinPlanePitchWidth, MinPlaneRowPitch);
481
482 // Formats with more than one plane choose a larger pitch alignment to ensure that each plane begins on the row
483 // immediately following the previous plane while still adhering to subresource alignment restrictions.
484 static_assert( D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT >= D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
485 && ((D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT % D3D12_TEXTURE_DATA_PITCH_ALIGNMENT) == 0),
486 "D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT must be >= and evenly divisible by D3D12_TEXTURE_DATA_PITCH_ALIGNMENT." );
487
488 Placement.RowPitch = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format)
489 ? D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT )
490 : D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT );
491
492 if (pRowSizeInBytes)
493 {
494 UINT PlaneRowSize = 0;
495 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, PlaneWidth, PlaneRowSize);
496
497 pRowSizeInBytes[uSubRes] = PlaneRowSize;
498 }
499
500 // Number of rows (accounting for block compression and additional planes)
501 UINT NumRows = 0;
502 if (D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format))
503 {
504 NumRows = PlaneHeight;
505 }
506 else
507 {
508 D3DX12_ASSERT(Height % HeightAlignment == 0);
509 NumRows = Height / HeightAlignment;
510 }
511
512 if (pNumRows)
513 {
514 pNumRows[uSubRes] = NumRows;
515 }
516
517 // Offsetting
518 if (pLayouts)
519 {
520 pLayouts[uSubRes].Offset = (bOverflow ? uint64_max : TotalBytes + BaseOffset);
521 }
522
523 const UINT16 NumSlices = Depth;
524 const UINT64 SubresourceSize = (NumRows * NumSlices - 1) * Placement.RowPitch + MinPlaneRowPitch;
525
526 // uint64 addition with overflow checking
527 TotalBytes = TotalBytes + SubresourceSize;
528 if(TotalBytes < SubresourceSize)
529 {
530 TotalBytes = uint64_max;
531 }
532 bResourceOverflow = bResourceOverflow || bOverflow;
533 }
534
535 // Overflow error
536 if (bResourceOverflow)
537 {
538 TotalBytes = uint64_max;
539 }
540
541
542 if (pLayouts)
543 {
544 memset( pLayouts + uSubRes, -1, sizeof( *pLayouts ) * (NumSubresources - uSubRes) );
545 }
546 if (pNumRows)
547 {
548 memset(pNumRows + uSubRes, -1, sizeof(*pNumRows) * (NumSubresources - uSubRes));
549 }
550 if (pRowSizeInBytes)
551 {
552 memset(pRowSizeInBytes + uSubRes, -1, sizeof(*pRowSizeInBytes) * (NumSubresources - uSubRes));
553 }
554 if (pTotalBytes)
555 {
556 *pTotalBytes = TotalBytes;
557 }
558 if(TotalBytes == uint64_max)
559 {
560 return false;
561 }
562 return true;
563}
564
565//------------------------------------------------------------------------------------------------
566inline D3D12_RESOURCE_DESC1 D3DX12ResourceDesc0ToDesc1(D3D12_RESOURCE_DESC const& desc0)
567{
568 D3D12_RESOURCE_DESC1 desc1;
569 desc1.Dimension = desc0.Dimension;
570 desc1.Alignment = desc0.Alignment;
571 desc1.Width = desc0.Width;
572 desc1.Height = desc0.Height;
573 desc1.DepthOrArraySize = desc0.DepthOrArraySize;
574 desc1.MipLevels = desc0.MipLevels;
575 desc1.Format = desc0.Format;
576 desc1.SampleDesc.Count = desc0.SampleDesc.Count;
577 desc1.SampleDesc.Quality = desc0.SampleDesc.Quality;
578 desc1.Layout = desc0.Layout;
579 desc1.Flags = desc0.Flags;
580 desc1.SamplerFeedbackMipRegion.Width = 0;
581 desc1.SamplerFeedbackMipRegion.Height = 0;
582 desc1.SamplerFeedbackMipRegion.Depth = 0;
583 return desc1;
584}
585
586//------------------------------------------------------------------------------------------------
587inline bool D3DX12GetCopyableFootprints(
588 _In_ const D3D12_RESOURCE_DESC& pResourceDesc,
589 _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
590 _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
591 UINT64 BaseOffset,
592 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
593 _Out_writes_opt_(NumSubresources) UINT* pNumRows,
594 _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
595 _Out_opt_ UINT64* pTotalBytes)
596{
597 // From D3D12_RESOURCE_DESC to D3D12_RESOURCE_DESC1
598 D3D12_RESOURCE_DESC1 desc = D3DX12ResourceDesc0ToDesc1(pResourceDesc);
599 return D3DX12GetCopyableFootprints(
600 *static_cast<CD3DX12_RESOURCE_DESC1*>(&desc),// From D3D12_RESOURCE_DESC1 to CD3DX12_RESOURCE_DESC1
601 FirstSubresource,
602 NumSubresources,
603 BaseOffset,
604 pLayouts,
605 pNumRows,
606 pRowSizeInBytes,
607 pTotalBytes);
608}
609
610#endif // D3D12_SDK_VERSION >= 606
611
612
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_root_signature.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_root_signature.h
new file mode 100644
index 0000000..e194d30
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_root_signature.h
@@ -0,0 +1,1227 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15#include "d3dx12_default.h"
16
17//------------------------------------------------------------------------------------------------
18struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
19{
20 CD3DX12_DESCRIPTOR_RANGE() = default;
21 explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) noexcept :
22 D3D12_DESCRIPTOR_RANGE(o)
23 {}
24 CD3DX12_DESCRIPTOR_RANGE(
25 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
26 UINT numDescriptors,
27 UINT baseShaderRegister,
28 UINT registerSpace = 0,
29 UINT offsetInDescriptorsFromTableStart =
30 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
31 {
32 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
33 }
34
35 inline void Init(
36 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
37 UINT numDescriptors,
38 UINT baseShaderRegister,
39 UINT registerSpace = 0,
40 UINT offsetInDescriptorsFromTableStart =
41 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
42 {
43 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
44 }
45
46 static inline void Init(
47 _Out_ D3D12_DESCRIPTOR_RANGE &range,
48 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
49 UINT numDescriptors,
50 UINT baseShaderRegister,
51 UINT registerSpace = 0,
52 UINT offsetInDescriptorsFromTableStart =
53 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
54 {
55 range.RangeType = rangeType;
56 range.NumDescriptors = numDescriptors;
57 range.BaseShaderRegister = baseShaderRegister;
58 range.RegisterSpace = registerSpace;
59 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
60 }
61};
62
63//------------------------------------------------------------------------------------------------
64struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
65{
66 CD3DX12_ROOT_DESCRIPTOR_TABLE() = default;
67 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) noexcept :
68 D3D12_ROOT_DESCRIPTOR_TABLE(o)
69 {}
70 CD3DX12_ROOT_DESCRIPTOR_TABLE(
71 UINT numDescriptorRanges,
72 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
73 {
74 Init(numDescriptorRanges, _pDescriptorRanges);
75 }
76
77 inline void Init(
78 UINT numDescriptorRanges,
79 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
80 {
81 Init(*this, numDescriptorRanges, _pDescriptorRanges);
82 }
83
84 static inline void Init(
85 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable,
86 UINT numDescriptorRanges,
87 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
88 {
89 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
90 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
91 }
92};
93
94//------------------------------------------------------------------------------------------------
95struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
96{
97 CD3DX12_ROOT_CONSTANTS() = default;
98 explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) noexcept :
99 D3D12_ROOT_CONSTANTS(o)
100 {}
101 CD3DX12_ROOT_CONSTANTS(
102 UINT num32BitValues,
103 UINT shaderRegister,
104 UINT registerSpace = 0) noexcept
105 {
106 Init(num32BitValues, shaderRegister, registerSpace);
107 }
108
109 inline void Init(
110 UINT num32BitValues,
111 UINT shaderRegister,
112 UINT registerSpace = 0) noexcept
113 {
114 Init(*this, num32BitValues, shaderRegister, registerSpace);
115 }
116
117 static inline void Init(
118 _Out_ D3D12_ROOT_CONSTANTS &rootConstants,
119 UINT num32BitValues,
120 UINT shaderRegister,
121 UINT registerSpace = 0) noexcept
122 {
123 rootConstants.Num32BitValues = num32BitValues;
124 rootConstants.ShaderRegister = shaderRegister;
125 rootConstants.RegisterSpace = registerSpace;
126 }
127};
128
129//------------------------------------------------------------------------------------------------
130struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
131{
132 CD3DX12_ROOT_DESCRIPTOR() = default;
133 explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) noexcept :
134 D3D12_ROOT_DESCRIPTOR(o)
135 {}
136 CD3DX12_ROOT_DESCRIPTOR(
137 UINT shaderRegister,
138 UINT registerSpace = 0) noexcept
139 {
140 Init(shaderRegister, registerSpace);
141 }
142
143 inline void Init(
144 UINT shaderRegister,
145 UINT registerSpace = 0) noexcept
146 {
147 Init(*this, shaderRegister, registerSpace);
148 }
149
150 static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) noexcept
151 {
152 table.ShaderRegister = shaderRegister;
153 table.RegisterSpace = registerSpace;
154 }
155};
156
157//------------------------------------------------------------------------------------------------
158struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
159{
160 CD3DX12_ROOT_PARAMETER() = default;
161 explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) noexcept :
162 D3D12_ROOT_PARAMETER(o)
163 {}
164
165 static inline void InitAsDescriptorTable(
166 _Out_ D3D12_ROOT_PARAMETER &rootParam,
167 UINT numDescriptorRanges,
168 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
169 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
170 {
171 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
172 rootParam.ShaderVisibility = visibility;
173 CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
174 }
175
176 static inline void InitAsConstants(
177 _Out_ D3D12_ROOT_PARAMETER &rootParam,
178 UINT num32BitValues,
179 UINT shaderRegister,
180 UINT registerSpace = 0,
181 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
182 {
183 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
184 rootParam.ShaderVisibility = visibility;
185 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
186 }
187
188 static inline void InitAsConstantBufferView(
189 _Out_ D3D12_ROOT_PARAMETER &rootParam,
190 UINT shaderRegister,
191 UINT registerSpace = 0,
192 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
193 {
194 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
195 rootParam.ShaderVisibility = visibility;
196 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
197 }
198
199 static inline void InitAsShaderResourceView(
200 _Out_ D3D12_ROOT_PARAMETER &rootParam,
201 UINT shaderRegister,
202 UINT registerSpace = 0,
203 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
204 {
205 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
206 rootParam.ShaderVisibility = visibility;
207 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
208 }
209
210 static inline void InitAsUnorderedAccessView(
211 _Out_ D3D12_ROOT_PARAMETER &rootParam,
212 UINT shaderRegister,
213 UINT registerSpace = 0,
214 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
215 {
216 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
217 rootParam.ShaderVisibility = visibility;
218 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
219 }
220
221 inline void InitAsDescriptorTable(
222 UINT numDescriptorRanges,
223 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
224 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
225 {
226 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
227 }
228
229 inline void InitAsConstants(
230 UINT num32BitValues,
231 UINT shaderRegister,
232 UINT registerSpace = 0,
233 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
234 {
235 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
236 }
237
238 inline void InitAsConstantBufferView(
239 UINT shaderRegister,
240 UINT registerSpace = 0,
241 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
242 {
243 InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
244 }
245
246 inline void InitAsShaderResourceView(
247 UINT shaderRegister,
248 UINT registerSpace = 0,
249 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
250 {
251 InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
252 }
253
254 inline void InitAsUnorderedAccessView(
255 UINT shaderRegister,
256 UINT registerSpace = 0,
257 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
258 {
259 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
260 }
261};
262
263//------------------------------------------------------------------------------------------------
264struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
265{
266 CD3DX12_STATIC_SAMPLER_DESC() = default;
267 explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) noexcept :
268 D3D12_STATIC_SAMPLER_DESC(o)
269 {}
270 CD3DX12_STATIC_SAMPLER_DESC(
271 UINT shaderRegister,
272 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
273 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
274 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
275 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
276 FLOAT mipLODBias = 0,
277 UINT maxAnisotropy = 16,
278 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
279 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
280 FLOAT minLOD = 0.f,
281 FLOAT maxLOD = D3D12_FLOAT32_MAX,
282 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
283 UINT registerSpace = 0) noexcept
284 {
285 Init(
286 shaderRegister,
287 filter,
288 addressU,
289 addressV,
290 addressW,
291 mipLODBias,
292 maxAnisotropy,
293 comparisonFunc,
294 borderColor,
295 minLOD,
296 maxLOD,
297 shaderVisibility,
298 registerSpace);
299 }
300
301 static inline void Init(
302 _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc,
303 UINT shaderRegister,
304 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
305 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
306 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
307 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
308 FLOAT mipLODBias = 0,
309 UINT maxAnisotropy = 16,
310 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
311 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
312 FLOAT minLOD = 0.f,
313 FLOAT maxLOD = D3D12_FLOAT32_MAX,
314 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
315 UINT registerSpace = 0) noexcept
316 {
317 samplerDesc.ShaderRegister = shaderRegister;
318 samplerDesc.Filter = filter;
319 samplerDesc.AddressU = addressU;
320 samplerDesc.AddressV = addressV;
321 samplerDesc.AddressW = addressW;
322 samplerDesc.MipLODBias = mipLODBias;
323 samplerDesc.MaxAnisotropy = maxAnisotropy;
324 samplerDesc.ComparisonFunc = comparisonFunc;
325 samplerDesc.BorderColor = borderColor;
326 samplerDesc.MinLOD = minLOD;
327 samplerDesc.MaxLOD = maxLOD;
328 samplerDesc.ShaderVisibility = shaderVisibility;
329 samplerDesc.RegisterSpace = registerSpace;
330 }
331 inline void Init(
332 UINT shaderRegister,
333 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
334 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
335 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
336 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
337 FLOAT mipLODBias = 0,
338 UINT maxAnisotropy = 16,
339 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
340 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
341 FLOAT minLOD = 0.f,
342 FLOAT maxLOD = D3D12_FLOAT32_MAX,
343 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
344 UINT registerSpace = 0) noexcept
345 {
346 Init(
347 *this,
348 shaderRegister,
349 filter,
350 addressU,
351 addressV,
352 addressW,
353 mipLODBias,
354 maxAnisotropy,
355 comparisonFunc,
356 borderColor,
357 minLOD,
358 maxLOD,
359 shaderVisibility,
360 registerSpace);
361 }
362};
363
364//------------------------------------------------------------------------------------------------
365#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
366struct CD3DX12_STATIC_SAMPLER_DESC1 : public D3D12_STATIC_SAMPLER_DESC1
367{
368 CD3DX12_STATIC_SAMPLER_DESC1() = default;
369 explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC &o) noexcept
370 {
371 memcpy(this, &o, sizeof(D3D12_STATIC_SAMPLER_DESC));
372 Flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE;
373 }
374 explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC1 & o) noexcept :
375 D3D12_STATIC_SAMPLER_DESC1(o)
376 {}
377 CD3DX12_STATIC_SAMPLER_DESC1(
378 UINT shaderRegister,
379 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
380 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
381 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
382 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
383 FLOAT mipLODBias = 0,
384 UINT maxAnisotropy = 16,
385 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
386 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
387 FLOAT minLOD = 0.f,
388 FLOAT maxLOD = D3D12_FLOAT32_MAX,
389 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
390 UINT registerSpace = 0,
391 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
392 {
393 Init(
394 shaderRegister,
395 filter,
396 addressU,
397 addressV,
398 addressW,
399 mipLODBias,
400 maxAnisotropy,
401 comparisonFunc,
402 borderColor,
403 minLOD,
404 maxLOD,
405 shaderVisibility,
406 registerSpace,
407 flags);
408 }
409
410 static inline void Init(
411 _Out_ D3D12_STATIC_SAMPLER_DESC1 &samplerDesc,
412 UINT shaderRegister,
413 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
414 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
415 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
416 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
417 FLOAT mipLODBias = 0,
418 UINT maxAnisotropy = 16,
419 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
420 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
421 FLOAT minLOD = 0.f,
422 FLOAT maxLOD = D3D12_FLOAT32_MAX,
423 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
424 UINT registerSpace = 0,
425 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
426 {
427 samplerDesc.ShaderRegister = shaderRegister;
428 samplerDesc.Filter = filter;
429 samplerDesc.AddressU = addressU;
430 samplerDesc.AddressV = addressV;
431 samplerDesc.AddressW = addressW;
432 samplerDesc.MipLODBias = mipLODBias;
433 samplerDesc.MaxAnisotropy = maxAnisotropy;
434 samplerDesc.ComparisonFunc = comparisonFunc;
435 samplerDesc.BorderColor = borderColor;
436 samplerDesc.MinLOD = minLOD;
437 samplerDesc.MaxLOD = maxLOD;
438 samplerDesc.ShaderVisibility = shaderVisibility;
439 samplerDesc.RegisterSpace = registerSpace;
440 samplerDesc.Flags = flags;
441 }
442 inline void Init(
443 UINT shaderRegister,
444 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
445 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
446 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
447 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
448 FLOAT mipLODBias = 0,
449 UINT maxAnisotropy = 16,
450 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
451 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
452 FLOAT minLOD = 0.f,
453 FLOAT maxLOD = D3D12_FLOAT32_MAX,
454 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
455 UINT registerSpace = 0,
456 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
457 {
458 Init(
459 *this,
460 shaderRegister,
461 filter,
462 addressU,
463 addressV,
464 addressW,
465 mipLODBias,
466 maxAnisotropy,
467 comparisonFunc,
468 borderColor,
469 minLOD,
470 maxLOD,
471 shaderVisibility,
472 registerSpace,
473 flags);
474 }
475};
476#endif // D3D12_SDK_VERSION >= 609
477
478//------------------------------------------------------------------------------------------------
479struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
480{
481 CD3DX12_ROOT_SIGNATURE_DESC() = default;
482 explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept :
483 D3D12_ROOT_SIGNATURE_DESC(o)
484 {}
485 CD3DX12_ROOT_SIGNATURE_DESC(
486 UINT numParameters,
487 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
488 UINT numStaticSamplers = 0,
489 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
490 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
491 {
492 Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
493 }
494 CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
495 {
496 Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
497 }
498
499 inline void Init(
500 UINT numParameters,
501 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
502 UINT numStaticSamplers = 0,
503 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
504 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
505 {
506 Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
507 }
508
509 static inline void Init(
510 _Out_ D3D12_ROOT_SIGNATURE_DESC &desc,
511 UINT numParameters,
512 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
513 UINT numStaticSamplers = 0,
514 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
515 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
516 {
517 desc.NumParameters = numParameters;
518 desc.pParameters = _pParameters;
519 desc.NumStaticSamplers = numStaticSamplers;
520 desc.pStaticSamplers = _pStaticSamplers;
521 desc.Flags = flags;
522 }
523};
524
525//------------------------------------------------------------------------------------------------
526struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1
527{
528 CD3DX12_DESCRIPTOR_RANGE1() = default;
529 explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) noexcept :
530 D3D12_DESCRIPTOR_RANGE1(o)
531 {}
532 CD3DX12_DESCRIPTOR_RANGE1(
533 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
534 UINT numDescriptors,
535 UINT baseShaderRegister,
536 UINT registerSpace = 0,
537 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
538 UINT offsetInDescriptorsFromTableStart =
539 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
540 {
541 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
542 }
543
544 inline void Init(
545 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
546 UINT numDescriptors,
547 UINT baseShaderRegister,
548 UINT registerSpace = 0,
549 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
550 UINT offsetInDescriptorsFromTableStart =
551 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
552 {
553 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
554 }
555
556 static inline void Init(
557 _Out_ D3D12_DESCRIPTOR_RANGE1 &range,
558 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
559 UINT numDescriptors,
560 UINT baseShaderRegister,
561 UINT registerSpace = 0,
562 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
563 UINT offsetInDescriptorsFromTableStart =
564 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
565 {
566 range.RangeType = rangeType;
567 range.NumDescriptors = numDescriptors;
568 range.BaseShaderRegister = baseShaderRegister;
569 range.RegisterSpace = registerSpace;
570 range.Flags = flags;
571 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
572 }
573};
574
575//------------------------------------------------------------------------------------------------
576struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1
577{
578 CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default;
579 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) noexcept :
580 D3D12_ROOT_DESCRIPTOR_TABLE1(o)
581 {}
582 CD3DX12_ROOT_DESCRIPTOR_TABLE1(
583 UINT numDescriptorRanges,
584 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
585 {
586 Init(numDescriptorRanges, _pDescriptorRanges);
587 }
588
589 inline void Init(
590 UINT numDescriptorRanges,
591 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
592 {
593 Init(*this, numDescriptorRanges, _pDescriptorRanges);
594 }
595
596 static inline void Init(
597 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable,
598 UINT numDescriptorRanges,
599 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
600 {
601 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
602 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
603 }
604};
605
606//------------------------------------------------------------------------------------------------
607struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1
608{
609 CD3DX12_ROOT_DESCRIPTOR1() = default;
610 explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) noexcept :
611 D3D12_ROOT_DESCRIPTOR1(o)
612 {}
613 CD3DX12_ROOT_DESCRIPTOR1(
614 UINT shaderRegister,
615 UINT registerSpace = 0,
616 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
617 {
618 Init(shaderRegister, registerSpace, flags);
619 }
620
621 inline void Init(
622 UINT shaderRegister,
623 UINT registerSpace = 0,
624 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
625 {
626 Init(*this, shaderRegister, registerSpace, flags);
627 }
628
629 static inline void Init(
630 _Out_ D3D12_ROOT_DESCRIPTOR1 &table,
631 UINT shaderRegister,
632 UINT registerSpace = 0,
633 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
634 {
635 table.ShaderRegister = shaderRegister;
636 table.RegisterSpace = registerSpace;
637 table.Flags = flags;
638 }
639};
640
641//------------------------------------------------------------------------------------------------
642struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1
643{
644 CD3DX12_ROOT_PARAMETER1() = default;
645 explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) noexcept :
646 D3D12_ROOT_PARAMETER1(o)
647 {}
648
649 static inline void InitAsDescriptorTable(
650 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
651 UINT numDescriptorRanges,
652 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
653 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
654 {
655 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
656 rootParam.ShaderVisibility = visibility;
657 CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
658 }
659
660 static inline void InitAsConstants(
661 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
662 UINT num32BitValues,
663 UINT shaderRegister,
664 UINT registerSpace = 0,
665 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
666 {
667 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
668 rootParam.ShaderVisibility = visibility;
669 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
670 }
671
672 static inline void InitAsConstantBufferView(
673 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
674 UINT shaderRegister,
675 UINT registerSpace = 0,
676 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
677 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
678 {
679 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
680 rootParam.ShaderVisibility = visibility;
681 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
682 }
683
684 static inline void InitAsShaderResourceView(
685 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
686 UINT shaderRegister,
687 UINT registerSpace = 0,
688 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
689 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
690 {
691 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
692 rootParam.ShaderVisibility = visibility;
693 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
694 }
695
696 static inline void InitAsUnorderedAccessView(
697 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
698 UINT shaderRegister,
699 UINT registerSpace = 0,
700 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
701 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
702 {
703 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
704 rootParam.ShaderVisibility = visibility;
705 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
706 }
707
708 inline void InitAsDescriptorTable(
709 UINT numDescriptorRanges,
710 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
711 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
712 {
713 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
714 }
715
716 inline void InitAsConstants(
717 UINT num32BitValues,
718 UINT shaderRegister,
719 UINT registerSpace = 0,
720 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
721 {
722 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
723 }
724
725 inline void InitAsConstantBufferView(
726 UINT shaderRegister,
727 UINT registerSpace = 0,
728 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
729 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
730 {
731 InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility);
732 }
733
734 inline void InitAsShaderResourceView(
735 UINT shaderRegister,
736 UINT registerSpace = 0,
737 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
738 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
739 {
740 InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility);
741 }
742
743 inline void InitAsUnorderedAccessView(
744 UINT shaderRegister,
745 UINT registerSpace = 0,
746 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
747 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
748 {
749 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility);
750 }
751};
752
753//------------------------------------------------------------------------------------------------
754struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC
755{
756 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default;
757 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) noexcept :
758 D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o)
759 {}
760 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept
761 {
762 Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
763 Desc_1_0 = o;
764 }
765 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) noexcept
766 {
767 Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
768 Desc_1_1 = o;
769 }
770#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
771 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC2& o) noexcept
772 {
773 Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
774 Desc_1_2 = o;
775 }
776#endif
777 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
778 UINT numParameters,
779 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
780 UINT numStaticSamplers = 0,
781 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
782 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
783 {
784 Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
785 }
786 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
787 UINT numParameters,
788 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
789 UINT numStaticSamplers = 0,
790 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
791 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
792 {
793 Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
794 }
795 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
796 {
797 Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
798 }
799
800 inline void Init_1_0(
801 UINT numParameters,
802 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
803 UINT numStaticSamplers = 0,
804 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
805 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
806 {
807 Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
808 }
809
810 static inline void Init_1_0(
811 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
812 UINT numParameters,
813 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
814 UINT numStaticSamplers = 0,
815 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
816 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
817 {
818 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
819 desc.Desc_1_0.NumParameters = numParameters;
820 desc.Desc_1_0.pParameters = _pParameters;
821 desc.Desc_1_0.NumStaticSamplers = numStaticSamplers;
822 desc.Desc_1_0.pStaticSamplers = _pStaticSamplers;
823 desc.Desc_1_0.Flags = flags;
824 }
825
826 inline void Init_1_1(
827 UINT numParameters,
828 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
829 UINT numStaticSamplers = 0,
830 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
831 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
832 {
833 Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
834 }
835
836 static inline void Init_1_1(
837 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
838 UINT numParameters,
839 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
840 UINT numStaticSamplers = 0,
841 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
842 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
843 {
844 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
845 desc.Desc_1_1.NumParameters = numParameters;
846 desc.Desc_1_1.pParameters = _pParameters;
847 desc.Desc_1_1.NumStaticSamplers = numStaticSamplers;
848 desc.Desc_1_1.pStaticSamplers = _pStaticSamplers;
849 desc.Desc_1_1.Flags = flags;
850 }
851
852#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
853 static inline void Init_1_2(
854 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC& desc,
855 UINT numParameters,
856 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
857 UINT numStaticSamplers = 0,
858 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1* _pStaticSamplers = nullptr,
859 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
860 {
861 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
862 desc.Desc_1_2.NumParameters = numParameters;
863 desc.Desc_1_2.pParameters = _pParameters;
864 desc.Desc_1_2.NumStaticSamplers = numStaticSamplers;
865 desc.Desc_1_2.pStaticSamplers = _pStaticSamplers;
866 desc.Desc_1_2.Flags = flags;
867 }
868#endif
869};
870
871//------------------------------------------------------------------------------------------------
872struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
873{
874 CD3DX12_CPU_DESCRIPTOR_HANDLE() = default;
875 explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) noexcept :
876 D3D12_CPU_DESCRIPTOR_HANDLE(o)
877 {}
878 CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
879 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
880 {
881 InitOffsetted(other, offsetScaledByIncrementSize);
882 }
883 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
884 {
885 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
886 }
887 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
888 {
889 ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
890 return *this;
891 }
892 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
893 {
894 ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize));
895 return *this;
896 }
897 bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
898 {
899 return (ptr == other.ptr);
900 }
901 bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
902 {
903 return (ptr != other.ptr);
904 }
905 CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) noexcept
906 {
907 ptr = other.ptr;
908 return *this;
909 }
910
911 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
912 {
913 InitOffsetted(*this, base, offsetScaledByIncrementSize);
914 }
915
916 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
917 {
918 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
919 }
920
921 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
922 {
923 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
924 }
925
926 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
927 {
928 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
929 }
930};
931
932//------------------------------------------------------------------------------------------------
933struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
934{
935 CD3DX12_GPU_DESCRIPTOR_HANDLE() = default;
936 explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) noexcept :
937 D3D12_GPU_DESCRIPTOR_HANDLE(o)
938 {}
939 CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
940 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
941 {
942 InitOffsetted(other, offsetScaledByIncrementSize);
943 }
944 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
945 {
946 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
947 }
948 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
949 {
950 ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
951 return *this;
952 }
953 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
954 {
955 ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize));
956 return *this;
957 }
958 inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
959 {
960 return (ptr == other.ptr);
961 }
962 inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
963 {
964 return (ptr != other.ptr);
965 }
966 CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) noexcept
967 {
968 ptr = other.ptr;
969 return *this;
970 }
971
972 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
973 {
974 InitOffsetted(*this, base, offsetScaledByIncrementSize);
975 }
976
977 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
978 {
979 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
980 }
981
982 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
983 {
984 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
985 }
986
987 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
988 {
989 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
990 }
991};
992
993//------------------------------------------------------------------------------------------------
994// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update.
995// To help enable root signature 1.1 features when they are available and not require maintaining
996// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
997// 1.1 is not supported.
998#ifdef __clang__
999#pragma clang diagnostic push
1000#pragma clang diagnostic ignored "-Wcovered-switch-default"
1001#endif
1002
1003inline HRESULT D3DX12SerializeVersionedRootSignature(
1004 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
1005 D3D_ROOT_SIGNATURE_VERSION MaxVersion,
1006 _Outptr_ ID3DBlob** ppBlob,
1007 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) noexcept
1008{
1009 if (ppErrorBlob != nullptr)
1010 {
1011 *ppErrorBlob = nullptr;
1012 }
1013
1014 switch (MaxVersion)
1015 {
1016 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1017 switch (pRootSignatureDesc->Version)
1018 {
1019 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1020 return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
1021
1022 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1023#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1024 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1025#endif
1026 {
1027 HRESULT hr = S_OK;
1028 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
1029
1030 const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters;
1031 void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr;
1032 if (ParametersSize > 0 && pParameters == nullptr)
1033 {
1034 hr = E_OUTOFMEMORY;
1035 }
1036 auto pParameters_1_0 = static_cast<D3D12_ROOT_PARAMETER*>(pParameters);
1037
1038 if (SUCCEEDED(hr))
1039 {
1040 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
1041 {
1042 __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters);
1043 pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType;
1044 pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility;
1045
1046 switch (desc_1_1.pParameters[n].ParameterType)
1047 {
1048 case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS:
1049 pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues;
1050 pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace;
1051 pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister;
1052 break;
1053
1054 case D3D12_ROOT_PARAMETER_TYPE_CBV:
1055 case D3D12_ROOT_PARAMETER_TYPE_SRV:
1056 case D3D12_ROOT_PARAMETER_TYPE_UAV:
1057 pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace;
1058 pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister;
1059 break;
1060
1061 case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
1062 {
1063 const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
1064
1065 const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
1066 void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
1067 if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
1068 {
1069 hr = E_OUTOFMEMORY;
1070 }
1071 auto pDescriptorRanges_1_0 = static_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges);
1072
1073 if (SUCCEEDED(hr))
1074 {
1075 for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
1076 {
1077 __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
1078 pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
1079 pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
1080 pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
1081 pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
1082 pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
1083 }
1084 }
1085
1086 D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
1087 table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
1088 table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
1089 }
1090 break;
1091
1092 default:
1093 break;
1094 }
1095 }
1096 }
1097
1098 D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
1099#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1100 if (desc_1_1.NumStaticSamplers > 0 && pRootSignatureDesc->Version == D3D_ROOT_SIGNATURE_VERSION_1_2)
1101 {
1102 const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
1103 pStaticSamplers = static_cast<D3D12_STATIC_SAMPLER_DESC*>(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
1104
1105 if (pStaticSamplers == nullptr)
1106 {
1107 hr = E_OUTOFMEMORY;
1108 }
1109 else
1110 {
1111 const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
1112 for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
1113 {
1114 if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
1115 {
1116 hr = E_INVALIDARG;
1117 break;
1118 }
1119 memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
1120 }
1121 }
1122 }
1123#endif
1124
1125 if (SUCCEEDED(hr))
1126 {
1127 const CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
1128 hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
1129 }
1130
1131 if (pParameters)
1132 {
1133 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
1134 {
1135 if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
1136 {
1137 auto pDescriptorRanges_1_0 = pParameters_1_0[n].DescriptorTable.pDescriptorRanges;
1138 HeapFree(GetProcessHeap(), 0, reinterpret_cast<void*>(const_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges_1_0)));
1139 }
1140 }
1141 HeapFree(GetProcessHeap(), 0, pParameters);
1142 }
1143
1144 if (pStaticSamplers)
1145 {
1146 HeapFree(GetProcessHeap(), 0, pStaticSamplers);
1147 }
1148
1149 return hr;
1150 }
1151
1152 default:
1153 break;
1154 }
1155 break;
1156
1157 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1158 switch (pRootSignatureDesc->Version)
1159 {
1160 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1161 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1162 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
1163
1164#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1165 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1166 {
1167 HRESULT hr = S_OK;
1168 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
1169
1170 D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
1171 if (desc_1_1.NumStaticSamplers > 0)
1172 {
1173 const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
1174 pStaticSamplers = static_cast<D3D12_STATIC_SAMPLER_DESC*>(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
1175
1176 if (pStaticSamplers == nullptr)
1177 {
1178 hr = E_OUTOFMEMORY;
1179 }
1180 else
1181 {
1182 const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
1183 for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
1184 {
1185 if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
1186 {
1187 hr = E_INVALIDARG;
1188 break;
1189 }
1190 memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
1191 }
1192 }
1193 }
1194
1195 if (SUCCEEDED(hr))
1196 {
1197 const CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC desc(desc_1_1.NumParameters, desc_1_1.pParameters, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
1198 hr = D3D12SerializeVersionedRootSignature(&desc, ppBlob, ppErrorBlob);
1199 }
1200
1201 if (pStaticSamplers)
1202 {
1203 HeapFree(GetProcessHeap(), 0, pStaticSamplers);
1204 }
1205
1206 return hr;
1207 }
1208#endif
1209
1210 default:
1211 break;
1212 }
1213 break;
1214
1215#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1216 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1217#endif
1218 default:
1219 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
1220 }
1221
1222 return E_INVALIDARG;
1223}
1224
1225#ifdef __clang__
1226#pragma clang diagnostic pop
1227#endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_state_object.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_state_object.h
new file mode 100644
index 0000000..579ecc8
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_state_object.h
@@ -0,0 +1,2570 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_default.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17
18//================================================================================================
19// D3DX12 State Object Creation Helpers
20//
21// Helper classes for creating new style state objects out of an arbitrary set of subobjects.
22// Uses STL
23//
24// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see its public methods).
25// One of its methods is CreateSubobject(), which has a comment showing a couple of options for
26// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT
27// etc.). The subobject helpers each have methods specific to the subobject for configuring its
28// contents.
29//
30//================================================================================================
31#include <list>
32#include <forward_list>
33#include <vector>
34#include <memory>
35#include <string>
36#include <vector>
37#ifndef D3DX12_USE_ATL
38#include <wrl/client.h>
39#define D3DX12_COM_PTR Microsoft::WRL::ComPtr
40#define D3DX12_COM_PTR_GET(x) x.Get()
41#define D3DX12_COM_PTR_ADDRESSOF(x) x.GetAddressOf()
42#else
43#include <atlbase.h>
44#define D3DX12_COM_PTR ATL::CComPtr
45#define D3DX12_COM_PTR_GET(x) x.p
46#define D3DX12_COM_PTR_ADDRESSOF(x) &x.p
47#endif
48
49//------------------------------------------------------------------------------------------------
50class CD3DX12_STATE_OBJECT_DESC
51{
52public:
53 CD3DX12_STATE_OBJECT_DESC() noexcept
54 {
55 Init(D3D12_STATE_OBJECT_TYPE_COLLECTION);
56 }
57 CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) noexcept
58 {
59 Init(Type);
60 }
61 void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
62 CD3DX12_STATE_OBJECT_DESC(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
63 CD3DX12_STATE_OBJECT_DESC& operator=(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
64 CD3DX12_STATE_OBJECT_DESC(CD3DX12_STATE_OBJECT_DESC&& other) = default;
65 CD3DX12_STATE_OBJECT_DESC& operator=(CD3DX12_STATE_OBJECT_DESC&& other) = default;
66 operator const D3D12_STATE_OBJECT_DESC& ()
67 {
68#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
69 m_RepointedSubobjectVectors.clear();
70 m_RepointedPrograms.clear();
71#endif
72 m_RepointedAssociations.clear();
73 m_SubobjectArray.clear();
74 m_SubobjectArray.reserve(m_Desc.NumSubobjects);
75 // Flatten subobjects into an array (each flattened subobject still has a
76 // member that's a pointer to its desc that's not flattened)
77 for (auto Iter = m_SubobjectList.begin();
78 Iter != m_SubobjectList.end(); Iter++)
79 {
80 m_SubobjectArray.push_back(*Iter);
81 // Store new location in array so we can redirect pointers contained in subobjects
82 Iter->pSubobjectArrayLocation = &m_SubobjectArray.back();
83 }
84 // For subobjects with pointer fields, create a new copy of those subobject definitions
85 // with fixed pointers
86 for (UINT i = 0; i < m_Desc.NumSubobjects; i++)
87 {
88 if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
89 {
90 auto pOriginalSubobjectAssociation =
91 static_cast<const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION*>(m_SubobjectArray[i].pDesc);
92 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation;
93 auto pWrapper =
94 static_cast<const SUBOBJECT_WRAPPER*>(pOriginalSubobjectAssociation->pSubobjectToAssociate);
95 Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation;
96 m_RepointedAssociations.push_back(Repointed);
97 m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
98 }
99#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
100 else if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM)
101 {
102 auto originalGenericProgramDesc =
103 static_cast<const D3D12_GENERIC_PROGRAM_DESC*>(m_SubobjectArray[i].pDesc);
104 D3D12_GENERIC_PROGRAM_DESC Repointed = *originalGenericProgramDesc;
105 if (originalGenericProgramDesc->NumSubobjects > 0)
106 {
107 m_RepointedSubobjectVectors.emplace_back(std::vector<const D3D12_STATE_SUBOBJECT*>());
108 std::vector<D3D12_STATE_SUBOBJECT const*>& repointedGenericProgramSubobjects = m_RepointedSubobjectVectors.back();
109 repointedGenericProgramSubobjects.resize(originalGenericProgramDesc->NumSubobjects);
110 for (UINT s = 0; s < originalGenericProgramDesc->NumSubobjects; s++)
111 {
112 auto pWrapper =
113 static_cast<const SUBOBJECT_WRAPPER*>(originalGenericProgramDesc->ppSubobjects[s]);
114 repointedGenericProgramSubobjects[s] = pWrapper->pSubobjectArrayLocation;
115 }
116 // Below: using ugly way to get pointer in case .data() is not defined
117 Repointed.ppSubobjects = &repointedGenericProgramSubobjects[0];
118 }
119 m_RepointedPrograms.push_back(Repointed);
120 m_SubobjectArray[i].pDesc = &m_RepointedPrograms.back();
121 }
122#endif
123 }
124 // Below: using ugly way to get pointer in case .data() is not defined
125 m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
126 return m_Desc;
127 }
128 operator const D3D12_STATE_OBJECT_DESC* ()
129 {
130 // Cast calls the above final preparation work
131 return &static_cast<const D3D12_STATE_OBJECT_DESC&>(*this);
132 }
133
134 // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT)
135 // whose lifetime is owned by this class.
136 // e.g.
137 //
138 // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
139 // auto Lib0 = Collection1.CreateSubobject<CD3DX12_DXIL_LIBRARY_SUBOBJECT>();
140 // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
141 // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be
142 // // data/engine driven
143 // etc.
144 //
145 // Alternatively, users can instantiate sububject helpers explicitly, such as via local
146 // variables instead, passing the state object desc that should point to it into the helper
147 // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)).
148 // In this alternative scenario, the user must keep the subobject alive as long as the state
149 // object it is associated with is alive, else its pointer references will be stale.
150 // e.g.
151 //
152 // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
153 // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
154 // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports
155 // // - meaning all exports in the libraries
156 // // are exported
157 // etc.
158
159 template<typename T>
160 T* CreateSubobject()
161 {
162 T* pSubobject = new T(*this);
163 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
164 return pSubobject;
165 }
166
167 template<typename T, typename U>
168 T* CreateSubobject(U&& arg)
169 {
170 T* pSubobject = new T(std::forward<U>(arg), *this);
171 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
172 return pSubobject;
173 }
174
175private:
176 D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
177 {
178 SUBOBJECT_WRAPPER Subobject;
179 Subobject.pSubobjectArrayLocation = nullptr;
180 Subobject.Type = Type;
181 Subobject.pDesc = pDesc;
182 m_SubobjectList.push_back(Subobject);
183 m_Desc.NumSubobjects++;
184 return &m_SubobjectList.back();
185 }
186 void Init(D3D12_STATE_OBJECT_TYPE Type) noexcept
187 {
188 SetStateObjectType(Type);
189 m_Desc.pSubobjects = nullptr;
190 m_Desc.NumSubobjects = 0;
191 m_SubobjectList.clear();
192 m_SubobjectArray.clear();
193 m_RepointedAssociations.clear();
194#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
195 m_RepointedSubobjectVectors.clear();
196 m_RepointedPrograms.clear();
197#endif
198 }
199 typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
200 {
201 D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array
202 // for repointing pointers in subobjects
203 } SUBOBJECT_WRAPPER;
204 D3D12_STATE_OBJECT_DESC m_Desc;
205 std::list<SUBOBJECT_WRAPPER> m_SubobjectList; // Pointers to list nodes handed out so
206 // these can be edited live
207 std::vector<D3D12_STATE_SUBOBJECT> m_SubobjectArray; // Built at the end, copying list contents
208
209 std::list<D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION>
210 m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
211 // repointed to flattened array
212
213#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
214 std::list<std::vector<D3D12_STATE_SUBOBJECT const*>>
215 m_RepointedSubobjectVectors;
216 std::list<D3D12_GENERIC_PROGRAM_DESC>
217 m_RepointedPrograms;
218#endif
219
220 template<typename CStr, typename StdStr>
221 class StringContainer
222 {
223 public:
224 CStr LocalCopy(CStr string, bool bSingleString = false)
225 {
226 if (string)
227 {
228 if (bSingleString)
229 {
230 m_Strings.clear();
231 m_Strings.push_back(string);
232 }
233 else
234 {
235 m_Strings.push_back(string);
236 }
237 return m_Strings.back().c_str();
238 }
239 else
240 {
241 return nullptr;
242 }
243 }
244 void clear() noexcept { m_Strings.clear(); }
245 private:
246 std::list<StdStr> m_Strings;
247 };
248
249public:
250 class SUBOBJECT_HELPER_BASE
251 {
252 public:
253 SUBOBJECT_HELPER_BASE() noexcept { Init(); }
254 virtual ~SUBOBJECT_HELPER_BASE() = default;
255 virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
256 SUBOBJECT_HELPER_BASE(const SUBOBJECT_HELPER_BASE& other) = delete;
257 SUBOBJECT_HELPER_BASE& operator=(const SUBOBJECT_HELPER_BASE& other) = delete;
258 SUBOBJECT_HELPER_BASE(SUBOBJECT_HELPER_BASE&& other) = default;
259 SUBOBJECT_HELPER_BASE& operator=(SUBOBJECT_HELPER_BASE&& other) = default;
260 void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
261 {
262 m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
263 }
264 operator const D3D12_STATE_SUBOBJECT& () const noexcept { return *m_pSubobject; }
265 protected:
266 virtual void* Data() noexcept = 0;
267 void Init() noexcept { m_pSubobject = nullptr; }
268 D3D12_STATE_SUBOBJECT* m_pSubobject;
269 };
270
271private:
272 std::list<std::unique_ptr<SUBOBJECT_HELPER_BASE>> m_OwnedSubobjectHelpers;
273
274 friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
275 friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
276 friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT;
277 friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
278 friend class CD3DX12_HIT_GROUP_SUBOBJECT;
279 friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
280 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
281 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
282 friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
283 friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
284 friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
285 friend class CD3DX12_NODE_MASK_SUBOBJECT;
286 //TODO: SDK Version check should include all the newly added subobject type for the public release.
287 // The SDK version check will be changed based on when we release state objects.
288#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
289 friend class CD3DX12_GENERIC_PROGRAM_SUBOBJECT;
290 friend class CD3DX12_WORK_GRAPH_SUBOBJECT;
291 friend class CD3DX12_STREAM_OUTPUT_SUBOBJECT;
292 friend class CD3DX12_BLEND_SUBOBJECT;
293 friend class CD3DX12_RASTERIZER_SUBOBJECT;
294 friend class CD3DX12_DEPTH_STENCIL2_SUBOBJECT;
295 friend class CD3DX12_INPUT_LAYOUT_SUBOBJECT;
296 friend class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT;
297 friend class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT;
298 friend class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT;
299 friend class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT;
300 friend class CD3DX12_SAMPLE_DESC_SUBOBJECT;
301 friend class CD3DX12_FLAGS_SUBOBJECT;
302 friend class CD3DX12_VIEW_INSTANCING_SUBOBJECT;
303 friend class CD3DX12_DEPTH_STENCIL_SUBOBJECT;
304 friend class CD3DX12_DEPTH_STENCIL1_SUBOBJECT;
305 friend class CD3DX12_SAMPLE_MASK_SUBOBJECT;
306 friend class CD3DX12_NODE_OUTPUT_OVERRIDES;
307 friend class CD3DX12_NODE_HELPER_BASE;
308 friend class CD3DX12_SHADER_NODE;
309 friend class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES;
310 friend class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES;
311 friend class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES;
312 friend class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES;
313#endif // D3D12_SDK_VERSION >= 612
314#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
315 friend class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
316 friend class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
317 friend class CD3DX12_COMPILER_EXISTING_COLLECTION_SUBOBJECT;
318 friend class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT;
319#endif
320};
321
322//------------------------------------------------------------------------------------------------
323class CD3DX12_DXIL_LIBRARY_SUBOBJECT
324 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
325{
326public:
327 CD3DX12_DXIL_LIBRARY_SUBOBJECT() noexcept
328 {
329 Init();
330 }
331 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
332 {
333 Init();
334 AddToStateObject(ContainingStateObject);
335 }
336 CD3DX12_DXIL_LIBRARY_SUBOBJECT(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
337 CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
338 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
339 CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
340 void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
341 {
342 static const D3D12_SHADER_BYTECODE Default = {};
343 m_Desc.DXILLibrary = pCode ? *pCode : Default;
344 }
345 void DefineExport(
346 LPCWSTR Name,
347 LPCWSTR ExportToRename = nullptr,
348 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
349 {
350 D3D12_EXPORT_DESC Export;
351 Export.Name = m_Strings.LocalCopy(Name);
352 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
353 Export.Flags = Flags;
354 m_Exports.push_back(Export);
355 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
356 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
357 }
358 template<size_t N>
359 void DefineExports(LPCWSTR(&Exports)[N])
360 {
361 for (UINT i = 0; i < N; i++)
362 {
363 DefineExport(Exports[i]);
364 }
365 }
366 void DefineExports(const LPCWSTR* Exports, UINT N)
367 {
368 for (UINT i = 0; i < N; i++)
369 {
370 DefineExport(Exports[i]);
371 }
372 }
373 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
374 {
375 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
376 }
377 operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
378private:
379 void Init() noexcept
380 {
381 SUBOBJECT_HELPER_BASE::Init();
382 m_Desc = {};
383 m_Strings.clear();
384 m_Exports.clear();
385 }
386 void* Data() noexcept override { return &m_Desc; }
387 D3D12_DXIL_LIBRARY_DESC m_Desc;
388 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
389 std::vector<D3D12_EXPORT_DESC> m_Exports;
390};
391
392//------------------------------------------------------------------------------------------------
393class CD3DX12_EXISTING_COLLECTION_SUBOBJECT
394 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
395{
396public:
397 CD3DX12_EXISTING_COLLECTION_SUBOBJECT() noexcept
398 {
399 Init();
400 }
401 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
402 {
403 Init();
404 AddToStateObject(ContainingStateObject);
405 }
406 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
407 CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
408 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
409 CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
410 void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
411 {
412 m_Desc.pExistingCollection = pExistingCollection;
413 m_CollectionRef = pExistingCollection;
414 }
415 void DefineExport(
416 LPCWSTR Name,
417 LPCWSTR ExportToRename = nullptr,
418 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
419 {
420 D3D12_EXPORT_DESC Export;
421 Export.Name = m_Strings.LocalCopy(Name);
422 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
423 Export.Flags = Flags;
424 m_Exports.push_back(Export);
425 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
426 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
427 }
428 template<size_t N>
429 void DefineExports(LPCWSTR(&Exports)[N])
430 {
431 for (UINT i = 0; i < N; i++)
432 {
433 DefineExport(Exports[i]);
434 }
435 }
436 void DefineExports(const LPCWSTR* Exports, UINT N)
437 {
438 for (UINT i = 0; i < N; i++)
439 {
440 DefineExport(Exports[i]);
441 }
442 }
443 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
444 {
445 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
446 }
447 operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
448private:
449 void Init() noexcept
450 {
451 SUBOBJECT_HELPER_BASE::Init();
452 m_Desc = {};
453 m_CollectionRef = nullptr;
454 m_Strings.clear();
455 m_Exports.clear();
456 }
457 void* Data() noexcept override { return &m_Desc; }
458 D3D12_EXISTING_COLLECTION_DESC m_Desc;
459 D3DX12_COM_PTR<ID3D12StateObject> m_CollectionRef;
460 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
461 std::vector<D3D12_EXPORT_DESC> m_Exports;
462};
463
464//------------------------------------------------------------------------------------------------
465class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT
466 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
467{
468public:
469 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() noexcept
470 {
471 Init();
472 }
473 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
474 {
475 Init();
476 AddToStateObject(ContainingStateObject);
477 }
478 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
479 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
480 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
481 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
482 void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
483 {
484 m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
485 }
486 void AddExport(LPCWSTR Export)
487 {
488 m_Desc.NumExports++;
489 m_Exports.push_back(m_Strings.LocalCopy(Export));
490 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
491 }
492 template<size_t N>
493 void AddExports(LPCWSTR (&Exports)[N])
494 {
495 for (UINT i = 0; i < N; i++)
496 {
497 AddExport(Exports[i]);
498 }
499 }
500 void AddExports(const LPCWSTR* Exports, UINT N)
501 {
502 for (UINT i = 0; i < N; i++)
503 {
504 AddExport(Exports[i]);
505 }
506 }
507 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
508 {
509 return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
510 }
511 operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
512private:
513 void Init() noexcept
514 {
515 SUBOBJECT_HELPER_BASE::Init();
516 m_Desc = {};
517 m_Strings.clear();
518 m_Exports.clear();
519 }
520 void* Data() noexcept override { return &m_Desc; }
521 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
522 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
523 std::vector<LPCWSTR> m_Exports;
524};
525
526//------------------------------------------------------------------------------------------------
527class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
528 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
529{
530public:
531 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() noexcept
532 {
533 Init();
534 }
535 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
536 {
537 Init();
538 AddToStateObject(ContainingStateObject);
539 }
540 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
541 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
542 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
543 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
544 void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
545 {
546 m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
547 }
548 void AddExport(LPCWSTR Export)
549 {
550 m_Desc.NumExports++;
551 m_Exports.push_back(m_Strings.LocalCopy(Export));
552 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
553 }
554 template<size_t N>
555 void AddExports(LPCWSTR (&Exports)[N])
556 {
557 for (UINT i = 0; i < N; i++)
558 {
559 AddExport(Exports[i]);
560 }
561 }
562 void AddExports(const LPCWSTR* Exports, UINT N)
563 {
564 for (UINT i = 0; i < N; i++)
565 {
566 AddExport(Exports[i]);
567 }
568 }
569 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
570 {
571 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
572 }
573 operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
574private:
575 void Init() noexcept
576 {
577 SUBOBJECT_HELPER_BASE::Init();
578 m_Desc = {};
579 m_Strings.clear();
580 m_SubobjectName.clear();
581 m_Exports.clear();
582 }
583 void* Data() noexcept override { return &m_Desc; }
584 D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
585 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
586 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_SubobjectName;
587 std::vector<LPCWSTR> m_Exports;
588};
589
590//------------------------------------------------------------------------------------------------
591class CD3DX12_HIT_GROUP_SUBOBJECT
592 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
593{
594public:
595 CD3DX12_HIT_GROUP_SUBOBJECT() noexcept
596 {
597 Init();
598 }
599 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
600 {
601 Init();
602 AddToStateObject(ContainingStateObject);
603 }
604 CD3DX12_HIT_GROUP_SUBOBJECT(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
605 CD3DX12_HIT_GROUP_SUBOBJECT& operator=(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
606 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
607 CD3DX12_HIT_GROUP_SUBOBJECT& operator=(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
608 void SetHitGroupExport(LPCWSTR exportName)
609 {
610 m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
611 }
612 void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) noexcept { m_Desc.Type = Type; }
613 void SetAnyHitShaderImport(LPCWSTR importName)
614 {
615 m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true);
616 }
617 void SetClosestHitShaderImport(LPCWSTR importName)
618 {
619 m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true);
620 }
621 void SetIntersectionShaderImport(LPCWSTR importName)
622 {
623 m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true);
624 }
625 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
626 {
627 return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
628 }
629 operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
630private:
631 void Init() noexcept
632 {
633 SUBOBJECT_HELPER_BASE::Init();
634 m_Desc = {};
635 for (UINT i = 0; i < m_NumStrings; i++)
636 {
637 m_Strings[i].clear();
638 }
639 }
640 void* Data() noexcept override { return &m_Desc; }
641 D3D12_HIT_GROUP_DESC m_Desc;
642 static constexpr UINT m_NumStrings = 4;
643 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring>
644 m_Strings[m_NumStrings]; // one string for every entrypoint name
645};
646
647//------------------------------------------------------------------------------------------------
648class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
649 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
650{
651public:
652 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
653 : m_Desc({})
654 {
655 Init();
656 }
657 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
658 : m_Desc({})
659 {
660 Init();
661 AddToStateObject(ContainingStateObject);
662 }
663 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc)
664 : m_Desc(desc)
665 {
666 Init();
667 }
668 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
669 : m_Desc(desc)
670 {
671 Init();
672 AddToStateObject(ContainingStateObject);
673 }
674 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
675 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
676 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
677 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
678 void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
679 {
680 m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
681 m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes;
682 }
683 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
684 {
685 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
686 }
687 operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
688 operator D3D12_RAYTRACING_SHADER_CONFIG&() noexcept { return m_Desc; }
689private:
690 void Init() noexcept
691 {
692 SUBOBJECT_HELPER_BASE::Init();
693 }
694 void* Data() noexcept override { return &m_Desc; }
695 D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
696};
697
698//------------------------------------------------------------------------------------------------
699class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
700 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
701{
702public:
703 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
704 : m_Desc({})
705 {
706 Init();
707 }
708 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
709 : m_Desc({})
710 {
711 Init();
712 AddToStateObject(ContainingStateObject);
713 }
714 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc)
715 : m_Desc(desc)
716 {
717 Init();
718 }
719 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
720 : m_Desc(desc)
721 {
722 Init();
723 AddToStateObject(ContainingStateObject);
724 }
725 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
726 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
727 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
728 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
729 void Config(UINT MaxTraceRecursionDepth) noexcept
730 {
731 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
732 }
733 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
734 {
735 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
736 }
737 operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
738 operator D3D12_RAYTRACING_PIPELINE_CONFIG&() noexcept { return m_Desc; }
739private:
740 void Init() noexcept
741 {
742 SUBOBJECT_HELPER_BASE::Init();
743 }
744 void* Data() noexcept override { return &m_Desc; }
745 D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
746};
747
748//------------------------------------------------------------------------------------------------
749class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
750 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
751{
752public:
753 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
754 : m_Desc({})
755 {
756 Init();
757 }
758 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
759 : m_Desc({})
760 {
761 Init();
762 AddToStateObject(ContainingStateObject);
763 }
764 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc)
765 : m_Desc(desc)
766 {
767 Init();
768 }
769 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
770 : m_Desc(desc)
771 {
772 Init();
773 AddToStateObject(ContainingStateObject);
774 }
775 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
776 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
777 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
778 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
779 void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
780 {
781 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
782 m_Desc.Flags = Flags;
783 }
784 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
785 {
786 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
787 }
788 operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
789 operator D3D12_RAYTRACING_PIPELINE_CONFIG1&() noexcept { return m_Desc; }
790private:
791 void Init() noexcept
792 {
793 SUBOBJECT_HELPER_BASE::Init();
794 }
795 void* Data() noexcept override { return &m_Desc; }
796 D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
797};
798
799//------------------------------------------------------------------------------------------------
800class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
801 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
802{
803public:
804 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
805 {
806 Init();
807 }
808 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
809 {
810 Init();
811 AddToStateObject(ContainingStateObject);
812 }
813 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
814 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
815 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
816 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
817 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
818 {
819 m_pRootSig = pRootSig;
820 }
821 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
822 {
823 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
824 }
825 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
826private:
827 void Init() noexcept
828 {
829 SUBOBJECT_HELPER_BASE::Init();
830 m_pRootSig = nullptr;
831 }
832 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
833 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
834};
835
836
837//------------------------------------------------------------------------------------------------
838class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
839 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
840{
841public:
842 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
843 {
844 Init();
845 }
846 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
847 {
848 Init();
849 AddToStateObject(ContainingStateObject);
850 }
851 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
852 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
853 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
854 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
855 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
856 {
857 m_pRootSig = pRootSig;
858 }
859 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
860 {
861 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
862 }
863 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
864private:
865 void Init() noexcept
866 {
867 SUBOBJECT_HELPER_BASE::Init();
868 m_pRootSig = nullptr;
869 }
870 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
871 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
872};
873
874#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
875//------------------------------------------------------------------------------------------------
876class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
877 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
878{
879public:
880 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
881 : m_Desc({})
882 {
883 Init();
884 }
885 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
886 : m_Desc({})
887 {
888 Init();
889 AddToStateObject(ContainingStateObject);
890 }
891 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
892 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
893 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
894 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
895 void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
896 {
897 if (pDesc)
898 {
899 m_Desc.Desc = {};
900 m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
901 m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
902 }
903 }
904 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
905 {
906 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
907 }
908 operator const D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
909 operator D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
910private:
911 void Init() noexcept
912 {
913 SUBOBJECT_HELPER_BASE::Init();
914 m_Desc = {};
915 }
916 void* Data() noexcept override { return &m_Desc; }
917 D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
918};
919
920//------------------------------------------------------------------------------------------------
921class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
922 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
923{
924public:
925 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
926 : m_Desc({})
927 {
928 Init();
929 }
930 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
931 : m_Desc({})
932 {
933 Init();
934 AddToStateObject(ContainingStateObject);
935 }
936 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
937 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
938 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
939 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
940 void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
941 {
942 if (pDesc)
943 {
944 m_Desc.Desc = {};
945 m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
946 m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
947 }
948 }
949 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
950 {
951 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE;
952 }
953 operator const D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
954 operator D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
955private:
956 void Init() noexcept
957 {
958 SUBOBJECT_HELPER_BASE::Init();
959 m_Desc = {};
960 }
961 void* Data() noexcept override { return &m_Desc; }
962 D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
963};
964
965
966//------------------------------------------------------------------------------------------------
967class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT
968 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
969{
970public:
971 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT() noexcept
972 {
973 Init();
974 }
975 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
976 {
977 Init();
978 AddToStateObject(ContainingStateObject);
979 }
980 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
981 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
982 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
983 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
984 void SetExistingCollection(const void* pKey, UINT KeySize) noexcept
985 {
986 const unsigned char* pKeyBytes = static_cast<const unsigned char *>(pKey);
987 m_Key.clear();
988 m_Key.insert(m_Key.begin(), pKeyBytes, pKeyBytes + KeySize);
989 m_Desc.pKey = m_Key.data();
990 m_Desc.KeySize = KeySize;
991 }
992 void DefineExport(
993 LPCWSTR Name,
994 LPCWSTR ExportToRename = nullptr,
995 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
996 {
997 D3D12_EXPORT_DESC Export;
998 Export.Name = m_Strings.LocalCopy(Name);
999 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
1000 Export.Flags = Flags;
1001 m_Exports.push_back(Export);
1002 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
1003 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
1004 }
1005 template<size_t N>
1006 void DefineExports(LPCWSTR(&Exports)[N])
1007 {
1008 for (UINT i = 0; i < N; i++)
1009 {
1010 DefineExport(Exports[i]);
1011 }
1012 }
1013 void DefineExports(const LPCWSTR* Exports, UINT N)
1014 {
1015 for (UINT i = 0; i < N; i++)
1016 {
1017 DefineExport(Exports[i]);
1018 }
1019 }
1020 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1021 {
1022 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY;
1023 }
1024 operator const D3D12_EXISTING_COLLECTION_BY_KEY_DESC&() const noexcept { return m_Desc; }
1025private:
1026 void Init() noexcept
1027 {
1028 SUBOBJECT_HELPER_BASE::Init();
1029 m_Desc = {};
1030 m_Strings.clear();
1031 m_Exports.clear();
1032 }
1033 void* Data() noexcept override { return &m_Desc; }
1034 D3D12_EXISTING_COLLECTION_BY_KEY_DESC m_Desc;
1035 std::vector<unsigned char> m_Key;
1036 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
1037 std::vector<D3D12_EXPORT_DESC> m_Exports;
1038};
1039
1040#endif // defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1041
1042//------------------------------------------------------------------------------------------------
1043class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
1044 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1045{
1046public:
1047 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
1048 : m_Desc({})
1049 {
1050 Init();
1051 }
1052 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1053 : m_Desc({})
1054 {
1055 Init();
1056 AddToStateObject(ContainingStateObject);
1057 }
1058 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc) noexcept
1059 : m_Desc(desc)
1060 {
1061 Init();
1062 }
1063 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1064 : m_Desc(desc)
1065 {
1066 Init();
1067 AddToStateObject(ContainingStateObject);
1068 }
1069 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
1070 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
1071 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
1072 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
1073 void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
1074 {
1075 m_Desc.Flags = Flags;
1076 }
1077 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1078 {
1079 return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
1080 }
1081 operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
1082 operator D3D12_STATE_OBJECT_CONFIG&() noexcept { return m_Desc; }
1083private:
1084 void Init() noexcept
1085 {
1086 SUBOBJECT_HELPER_BASE::Init();
1087 }
1088 void* Data() noexcept override { return &m_Desc; }
1089 D3D12_STATE_OBJECT_CONFIG m_Desc;
1090};
1091
1092//------------------------------------------------------------------------------------------------
1093class CD3DX12_NODE_MASK_SUBOBJECT
1094 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1095{
1096public:
1097 CD3DX12_NODE_MASK_SUBOBJECT() noexcept
1098 : m_Desc({})
1099 {
1100 Init();
1101 }
1102 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1103 : m_Desc({})
1104 {
1105 Init();
1106 AddToStateObject(ContainingStateObject);
1107 }
1108 CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc) noexcept
1109 : m_Desc(desc)
1110 {
1111 Init();
1112 }
1113 CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1114 : m_Desc(desc)
1115 {
1116 Init();
1117 AddToStateObject(ContainingStateObject);
1118 }
1119 CD3DX12_NODE_MASK_SUBOBJECT(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
1120 CD3DX12_NODE_MASK_SUBOBJECT& operator=(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
1121 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
1122 CD3DX12_NODE_MASK_SUBOBJECT& operator=(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
1123 void SetNodeMask(UINT NodeMask) noexcept
1124 {
1125 m_Desc.NodeMask = NodeMask;
1126 }
1127 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1128 {
1129 return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
1130 }
1131 operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
1132 operator D3D12_NODE_MASK&() noexcept { return m_Desc; }
1133private:
1134 void Init() noexcept
1135 {
1136 SUBOBJECT_HELPER_BASE::Init();
1137 }
1138 void* Data() noexcept override { return &m_Desc; }
1139 D3D12_NODE_MASK m_Desc;
1140};
1141
1142#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
1143//------------------------------------------------------------------------------------------------
1144class CD3DX12_STREAM_OUTPUT_SUBOBJECT
1145 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1146{
1147public:
1148 CD3DX12_STREAM_OUTPUT_SUBOBJECT()
1149 {
1150 Init();
1151 }
1152 CD3DX12_STREAM_OUTPUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1153 {
1154 Init();
1155 AddToStateObject(ContainingStateObject);
1156 }
1157 void AddSODeclEntry(const D3D12_SO_DECLARATION_ENTRY &entry)
1158 {
1159 m_soDecalEntries.emplace_back(D3D12_SO_DECLARATION_ENTRY{
1160 entry.Stream,
1161 m_Strings.LocalCopy(entry.SemanticName),
1162 entry.SemanticIndex,
1163 entry.StartComponent,
1164 entry.ComponentCount,
1165 entry.OutputSlot
1166 });
1167 m_Desc.NumEntries++;
1168 // Below: using ugly way to get pointer in case .data() is not defined
1169 m_Desc.pSODeclaration = &m_soDecalEntries[0];
1170 }
1171 void SetSODeclEntries(const D3D12_SO_DECLARATION_ENTRY* soDeclEntries, UINT numEntries)
1172 {
1173 m_soDecalEntries.resize(numEntries);
1174 for (UINT i = 0; i < numEntries; i++)
1175 {
1176 m_soDecalEntries[i] = D3D12_SO_DECLARATION_ENTRY{
1177 soDeclEntries[i].Stream,
1178 m_Strings.LocalCopy(soDeclEntries[i].SemanticName),
1179 soDeclEntries[i].SemanticIndex,
1180 soDeclEntries[i].StartComponent,
1181 soDeclEntries[i].ComponentCount,
1182 soDeclEntries[i].OutputSlot
1183 };
1184 }
1185 m_Desc.NumEntries = numEntries;
1186 // Below: using ugly way to get pointer in case .data() is not defined
1187 if (numEntries > 0)
1188 {
1189 m_Desc.pSODeclaration = &m_soDecalEntries[0];
1190 }
1191 }
1192 void SetBufferStrides(const UINT* bufferStrides, UINT numStrides)
1193 {
1194 for (UINT i = 0; i < numStrides; ++i)
1195 {
1196 m_Strides[i] = bufferStrides[i];
1197 }
1198 m_Desc.pBufferStrides = m_Strides;
1199 m_Desc.NumStrides = numStrides;
1200 }
1201 void SetRasterizedStream(UINT rasterizedStream)
1202 {
1203 m_Desc.RasterizedStream = rasterizedStream;
1204 }
1205 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1206 {
1207 return D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT;
1208 }
1209 operator const D3D12_STREAM_OUTPUT_DESC& () const noexcept { return m_Desc; }
1210
1211private:
1212 void Init()
1213 {
1214 SUBOBJECT_HELPER_BASE::Init();
1215 m_Desc = {};
1216 }
1217 void* Data() noexcept override { return &m_Desc; }
1218 D3D12_STREAM_OUTPUT_DESC m_Desc;
1219 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCSTR, std::string> m_Strings;
1220 std::vector<D3D12_SO_DECLARATION_ENTRY> m_soDecalEntries;
1221 UINT m_Strides[D3D12_SO_STREAM_COUNT];
1222};
1223
1224//------------------------------------------------------------------------------------------------
1225class CD3DX12_BLEND_SUBOBJECT
1226 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1227{
1228public:
1229 CD3DX12_BLEND_SUBOBJECT()
1230 : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
1231 {
1232 Init();
1233 }
1234 CD3DX12_BLEND_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1235 : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
1236 {
1237 Init();
1238 AddToStateObject(ContainingStateObject);
1239 }
1240 CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc)
1241 : m_Desc(desc)
1242 {
1243 Init();
1244 }
1245 CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1246 : m_Desc(desc)
1247 {
1248 Init();
1249 AddToStateObject(ContainingStateObject);
1250 }
1251 void SetAlphaToCoverageEnable(bool alphaToCoverageEnable)
1252 {
1253 m_Desc.AlphaToCoverageEnable = alphaToCoverageEnable;
1254 }
1255 void SetIndependentBlendEnable(bool independentBlendEnable)
1256 {
1257 m_Desc.IndependentBlendEnable = independentBlendEnable;
1258 }
1259 void SetRenderTarget(UINT renderTargetIndex, const D3D12_RENDER_TARGET_BLEND_DESC& renderTargetBlendDesc)
1260 {
1261 m_Desc.RenderTarget[renderTargetIndex].BlendEnable = renderTargetBlendDesc.BlendEnable;
1262 m_Desc.RenderTarget[renderTargetIndex].BlendOp = renderTargetBlendDesc.BlendOp;
1263 m_Desc.RenderTarget[renderTargetIndex].BlendOpAlpha = renderTargetBlendDesc.BlendOpAlpha;
1264 m_Desc.RenderTarget[renderTargetIndex].DestBlend = renderTargetBlendDesc.DestBlend;
1265 m_Desc.RenderTarget[renderTargetIndex].DestBlendAlpha = renderTargetBlendDesc.DestBlendAlpha;
1266 m_Desc.RenderTarget[renderTargetIndex].LogicOp = renderTargetBlendDesc.LogicOp;
1267 m_Desc.RenderTarget[renderTargetIndex].LogicOpEnable = renderTargetBlendDesc.LogicOpEnable;
1268 m_Desc.RenderTarget[renderTargetIndex].RenderTargetWriteMask = renderTargetBlendDesc.RenderTargetWriteMask;
1269 m_Desc.RenderTarget[renderTargetIndex].SrcBlend = renderTargetBlendDesc.SrcBlend;
1270 m_Desc.RenderTarget[renderTargetIndex].SrcBlendAlpha = renderTargetBlendDesc.SrcBlendAlpha;
1271 }
1272 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1273 {
1274 return D3D12_STATE_SUBOBJECT_TYPE_BLEND;
1275 }
1276 operator const D3D12_BLEND_DESC& () const noexcept { return m_Desc; }
1277 operator D3D12_BLEND_DESC& () noexcept { return m_Desc; }
1278private:
1279 void Init() noexcept
1280 {
1281 SUBOBJECT_HELPER_BASE::Init();
1282 }
1283 void* Data() noexcept override { return &m_Desc; }
1284 CD3DX12_BLEND_DESC m_Desc;
1285};
1286
1287//------------------------------------------------------------------------------------------------
1288class CD3DX12_RASTERIZER_SUBOBJECT
1289 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1290{
1291public:
1292 CD3DX12_RASTERIZER_SUBOBJECT()
1293 : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
1294 {
1295 Init();
1296 }
1297 CD3DX12_RASTERIZER_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1298 : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
1299 {
1300 Init();
1301 AddToStateObject(ContainingStateObject);
1302 }
1303 CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc)
1304 : m_Desc(desc)
1305 {
1306 Init();
1307 }
1308 CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1309 : m_Desc(desc)
1310 {
1311 Init();
1312 AddToStateObject(ContainingStateObject);
1313 }
1314 void SetFillMode(D3D12_FILL_MODE fillMode)
1315 {
1316 m_Desc.FillMode = fillMode;
1317 }
1318 void SetCullMode(D3D12_CULL_MODE cullMode)
1319 {
1320 m_Desc.CullMode = cullMode;
1321 }
1322 void SetFrontCounterClockwise(BOOL frontCounterClockwise)
1323 {
1324 m_Desc.FrontCounterClockwise = frontCounterClockwise;
1325 }
1326 void SetDepthBias(FLOAT depthBias)
1327 {
1328 m_Desc.DepthBias = depthBias;
1329 }
1330 void SetDepthBiasClamp(FLOAT depthBiasClamp)
1331 {
1332 m_Desc.DepthBiasClamp = depthBiasClamp;
1333 }
1334 void SetSlopeScaledDepthBias(FLOAT slopeScaledDepthBias)
1335 {
1336 m_Desc.SlopeScaledDepthBias = slopeScaledDepthBias;
1337 }
1338 void SetDepthClipEnable(BOOL depthClipEnable)
1339 {
1340 m_Desc.DepthClipEnable = depthClipEnable;
1341 }
1342 void SetLineRasterizationMode(D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode)
1343 {
1344 m_Desc.LineRasterizationMode = lineRasterizationMode;
1345 }
1346 void SetForcedSampleCount(UINT forcedSampleCount)
1347 {
1348 m_Desc.ForcedSampleCount = forcedSampleCount;
1349 }
1350 void SetConservativeRaster(D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster)
1351 {
1352 m_Desc.ConservativeRaster = conservativeRaster;
1353 }
1354 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1355 {
1356 return D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER;
1357 }
1358 operator const D3D12_RASTERIZER_DESC2& () const noexcept { return m_Desc; }
1359 operator D3D12_RASTERIZER_DESC2& () noexcept { return m_Desc; }
1360private:
1361 void Init() noexcept
1362 {
1363 SUBOBJECT_HELPER_BASE::Init();
1364 }
1365 void* Data() noexcept override { return &m_Desc; }
1366 CD3DX12_RASTERIZER_DESC2 m_Desc;
1367};
1368
1369//------------------------------------------------------------------------------------------------
1370class CD3DX12_DEPTH_STENCIL2_SUBOBJECT
1371 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1372{
1373public:
1374 CD3DX12_DEPTH_STENCIL2_SUBOBJECT()
1375 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
1376 {
1377 Init();
1378 }
1379 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1380 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
1381 {
1382 Init();
1383 AddToStateObject(ContainingStateObject);
1384 }
1385 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc)
1386 : m_Desc(desc)
1387 {
1388 Init();
1389 }
1390 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1391 : m_Desc(desc)
1392 {
1393 Init();
1394 AddToStateObject(ContainingStateObject);
1395 }
1396 void SetDepthEnable(BOOL depthEnable)
1397 {
1398 m_Desc.DepthEnable = depthEnable;
1399 }
1400 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1401 {
1402 m_Desc.DepthWriteMask = depthWriteMask;
1403 }
1404 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1405 {
1406 m_Desc.DepthFunc = depthFunc;
1407 }
1408 void SetStencilEnable(BOOL stencilEnable)
1409 {
1410 m_Desc.StencilEnable = stencilEnable;
1411 }
1412 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC1 frontFace)
1413 {
1414 m_Desc.FrontFace = {
1415 frontFace.StencilFailOp,
1416 frontFace.StencilDepthFailOp,
1417 frontFace.StencilPassOp,
1418 frontFace.StencilFunc,
1419 frontFace.StencilReadMask,
1420 frontFace.StencilWriteMask
1421 };
1422 }
1423 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC1 backFace)
1424 {
1425 m_Desc.BackFace = {
1426 backFace.StencilFailOp,
1427 backFace.StencilDepthFailOp,
1428 backFace.StencilPassOp,
1429 backFace.StencilFunc,
1430 backFace.StencilReadMask,
1431 backFace.StencilWriteMask
1432 };
1433 }
1434 void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
1435 {
1436 m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
1437 }
1438 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1439 {
1440 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2;
1441 }
1442 operator const D3D12_DEPTH_STENCIL_DESC2& () const noexcept { return m_Desc; }
1443 operator D3D12_DEPTH_STENCIL_DESC2& () noexcept { return m_Desc; }
1444private:
1445 void Init() noexcept
1446 {
1447 SUBOBJECT_HELPER_BASE::Init();
1448 }
1449 void* Data() noexcept override { return &m_Desc; }
1450 CD3DX12_DEPTH_STENCIL_DESC2 m_Desc;
1451};
1452
1453//------------------------------------------------------------------------------------------------
1454class CD3DX12_INPUT_LAYOUT_SUBOBJECT
1455 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1456{
1457public:
1458 CD3DX12_INPUT_LAYOUT_SUBOBJECT()
1459 {
1460 Init();
1461 }
1462 CD3DX12_INPUT_LAYOUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1463 {
1464 Init();
1465 AddToStateObject(ContainingStateObject);
1466 }
1467 void AddInputLayoutElementDesc(D3D12_INPUT_ELEMENT_DESC inputLayoutElementDesc)
1468 {
1469 m_inputLayoutElements.emplace_back(
1470 D3D12_INPUT_ELEMENT_DESC{
1471 m_Strings.LocalCopy(inputLayoutElementDesc.SemanticName),
1472 inputLayoutElementDesc.SemanticIndex,
1473 inputLayoutElementDesc.Format,
1474 inputLayoutElementDesc.InputSlot,
1475 inputLayoutElementDesc.AlignedByteOffset,
1476 inputLayoutElementDesc.InputSlotClass,
1477 inputLayoutElementDesc.InstanceDataStepRate
1478 });
1479 ++m_Desc.NumElements;
1480 // Below: using ugly way to get pointer in case .data() is not defined
1481 m_Desc.pInputElementDescs = &m_inputLayoutElements[0];
1482 }
1483 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1484 {
1485 return D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT;
1486 }
1487 operator const D3D12_INPUT_LAYOUT_DESC& () const noexcept { return m_Desc; }
1488private:
1489 void Init() noexcept
1490 {
1491 SUBOBJECT_HELPER_BASE::Init();
1492 m_Desc = {};
1493 m_inputLayoutElements.clear();
1494 }
1495 void* Data() noexcept override { return &m_Desc; }
1496 D3D12_INPUT_LAYOUT_DESC m_Desc;
1497 std::vector<D3D12_INPUT_ELEMENT_DESC> m_inputLayoutElements;
1498 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCSTR, std::string> m_Strings;
1499};
1500
1501//------------------------------------------------------------------------------------------------
1502class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT
1503 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1504{
1505public:
1506 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT()
1507 : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
1508 {
1509 Init();
1510 }
1511 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1512 : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
1513 {
1514 Init();
1515 AddToStateObject(ContainingStateObject);
1516 }
1517 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc)
1518 : m_Desc(desc)
1519 {
1520 Init();
1521 }
1522 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1523 : m_Desc(desc)
1524 {
1525 Init();
1526 AddToStateObject(ContainingStateObject);
1527 }
1528 void SetIBStripCutValue(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE ibStripCutValue)
1529 {
1530 m_Desc = ibStripCutValue;
1531 }
1532 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1533 {
1534 return D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE;
1535 }
1536 operator const D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () const noexcept { return m_Desc; }
1537 operator D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () noexcept { return m_Desc; }
1538private:
1539 void Init() noexcept
1540 {
1541 SUBOBJECT_HELPER_BASE::Init();
1542 }
1543 void* Data() noexcept override { return &m_Desc; }
1544 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE m_Desc;
1545};
1546
1547//------------------------------------------------------------------------------------------------
1548class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT
1549 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1550{
1551public:
1552 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT()
1553 : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
1554 {
1555 Init();
1556 }
1557 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1558 : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
1559 {
1560 Init();
1561 AddToStateObject(ContainingStateObject);
1562 }
1563 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc)
1564 : m_Desc(desc)
1565 {
1566 Init();
1567 }
1568 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1569 : m_Desc(desc)
1570 {
1571 Init();
1572 AddToStateObject(ContainingStateObject);
1573 }
1574 void SetPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE primitiveTopologytype)
1575 {
1576 m_Desc = primitiveTopologytype;
1577 }
1578 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1579 {
1580 return D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY;
1581 }
1582 operator const D3D12_PRIMITIVE_TOPOLOGY_TYPE& () const noexcept { return m_Desc; }
1583 operator D3D12_PRIMITIVE_TOPOLOGY_TYPE& () noexcept { return m_Desc; }
1584private:
1585 void Init() noexcept
1586 {
1587 SUBOBJECT_HELPER_BASE::Init();
1588 }
1589 void* Data() noexcept override { return &m_Desc; }
1590 D3D12_PRIMITIVE_TOPOLOGY_TYPE m_Desc;
1591};
1592
1593//------------------------------------------------------------------------------------------------
1594class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT
1595 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1596{
1597public:
1598 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT()
1599 : m_Desc({})
1600 {
1601 Init();
1602 }
1603 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1604 : m_Desc({})
1605 {
1606 Init();
1607 AddToStateObject(ContainingStateObject);
1608 }
1609 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc)
1610 : m_Desc(desc)
1611 {
1612 Init();
1613 }
1614 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1615 : m_Desc(desc)
1616 {
1617 Init();
1618 AddToStateObject(ContainingStateObject);
1619 }
1620 void SetNumRenderTargets(UINT numRenderTargets)
1621 {
1622 m_Desc.NumRenderTargets = numRenderTargets;
1623 }
1624 void SetRenderTargetFormat(UINT renderTarget, DXGI_FORMAT renderTargetFormat)
1625 {
1626 m_Desc.RTFormats[renderTarget] = renderTargetFormat;
1627 }
1628 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1629 {
1630 return D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS;
1631 }
1632 operator const D3D12_RT_FORMAT_ARRAY& () const noexcept { return m_Desc; }
1633 operator D3D12_RT_FORMAT_ARRAY& () noexcept { return m_Desc; }
1634private:
1635 void Init() noexcept
1636 {
1637 SUBOBJECT_HELPER_BASE::Init();
1638 }
1639 void* Data() noexcept override { return &m_Desc; }
1640 D3D12_RT_FORMAT_ARRAY m_Desc;
1641};
1642
1643//------------------------------------------------------------------------------------------------
1644class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT
1645 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1646{
1647public:
1648 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT()
1649 : m_Desc(DXGI_FORMAT_UNKNOWN)
1650 {
1651 Init();
1652 }
1653 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1654 : m_Desc(DXGI_FORMAT_UNKNOWN)
1655 {
1656 Init();
1657 AddToStateObject(ContainingStateObject);
1658 }
1659 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc)
1660 : m_Desc(desc)
1661 {
1662 Init();
1663 }
1664 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1665 : m_Desc(desc)
1666 {
1667 Init();
1668 AddToStateObject(ContainingStateObject);
1669 }
1670 void SetDepthStencilFormat(DXGI_FORMAT depthStencilFormat)
1671 {
1672 m_Desc = depthStencilFormat;
1673 }
1674 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1675 {
1676 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT;
1677 }
1678 operator const DXGI_FORMAT& () const noexcept { return m_Desc; }
1679 operator DXGI_FORMAT& () noexcept { return m_Desc; }
1680private:
1681 void Init() noexcept
1682 {
1683 SUBOBJECT_HELPER_BASE::Init();
1684 }
1685 void* Data() noexcept override { return &m_Desc; }
1686 DXGI_FORMAT m_Desc;
1687};
1688
1689//------------------------------------------------------------------------------------------------
1690class CD3DX12_SAMPLE_DESC_SUBOBJECT
1691 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1692{
1693public:
1694 CD3DX12_SAMPLE_DESC_SUBOBJECT()
1695 : m_Desc({1, 0})
1696 {
1697 Init();
1698 }
1699 CD3DX12_SAMPLE_DESC_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1700 : m_Desc({1, 0})
1701 {
1702 Init();
1703 AddToStateObject(ContainingStateObject);
1704 }
1705 CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc)
1706 : m_Desc(desc)
1707 {
1708 Init();
1709 }
1710 CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1711 : m_Desc(desc)
1712 {
1713 Init();
1714 AddToStateObject(ContainingStateObject);
1715 }
1716 void SetCount(UINT count)
1717 {
1718 m_Desc.Count = count;
1719 }
1720 void SetQuality(UINT quality)
1721 {
1722 m_Desc.Quality = quality;
1723 }
1724 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1725 {
1726 return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC;
1727 }
1728 operator const DXGI_SAMPLE_DESC& () const noexcept { return m_Desc; }
1729 operator DXGI_SAMPLE_DESC& () noexcept { return m_Desc; }
1730private:
1731 void Init() noexcept
1732 {
1733 SUBOBJECT_HELPER_BASE::Init();
1734 m_Desc = {};
1735 }
1736 void* Data() noexcept override { return &m_Desc; }
1737 DXGI_SAMPLE_DESC m_Desc;
1738};
1739
1740//------------------------------------------------------------------------------------------------
1741class CD3DX12_FLAGS_SUBOBJECT
1742 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1743{
1744public:
1745 CD3DX12_FLAGS_SUBOBJECT()
1746 : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
1747 {
1748 Init();
1749 }
1750 CD3DX12_FLAGS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1751 : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
1752 {
1753 Init();
1754 AddToStateObject(ContainingStateObject);
1755 }
1756 CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc)
1757 : m_Desc(desc)
1758 {
1759 Init();
1760 }
1761 CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1762 : m_Desc(desc)
1763 {
1764 Init();
1765 AddToStateObject(ContainingStateObject);
1766 }
1767 void SetFlags(D3D12_PIPELINE_STATE_FLAGS flags)
1768 {
1769 m_Desc = flags;
1770 }
1771 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1772 {
1773 return D3D12_STATE_SUBOBJECT_TYPE_FLAGS;
1774 }
1775 operator const D3D12_PIPELINE_STATE_FLAGS& () const noexcept { return m_Desc; }
1776 operator D3D12_PIPELINE_STATE_FLAGS& () noexcept { return m_Desc; }
1777private:
1778 void Init() noexcept
1779 {
1780 SUBOBJECT_HELPER_BASE::Init();
1781 }
1782 void* Data() noexcept override { return &m_Desc; }
1783 D3D12_PIPELINE_STATE_FLAGS m_Desc;
1784};
1785
1786//------------------------------------------------------------------------------------------------
1787class CD3DX12_VIEW_INSTANCING_SUBOBJECT
1788 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1789{
1790public:
1791 CD3DX12_VIEW_INSTANCING_SUBOBJECT()
1792 {
1793 Init();
1794 }
1795 CD3DX12_VIEW_INSTANCING_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1796 {
1797 Init();
1798 AddToStateObject(ContainingStateObject);
1799 }
1800 void AddViewInstanceLocation(D3D12_VIEW_INSTANCE_LOCATION viewInstanceLocation)
1801 {
1802 m_Desc.ViewInstanceCount++;
1803 m_viewInstanceLocations.emplace_back(
1804 D3D12_VIEW_INSTANCE_LOCATION
1805 {
1806 viewInstanceLocation.ViewportArrayIndex,
1807 viewInstanceLocation.RenderTargetArrayIndex
1808 }
1809 );
1810 // Below: using ugly way to get pointer in case .data() is not defined
1811 m_Desc.pViewInstanceLocations = &m_viewInstanceLocations[0];
1812 }
1813 void SetFlags(D3D12_VIEW_INSTANCING_FLAGS flags)
1814 {
1815 m_Desc.Flags = flags;
1816 }
1817 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1818 {
1819 return D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING;
1820 }
1821 operator const D3D12_VIEW_INSTANCING_DESC& () const noexcept { return m_Desc; }
1822private:
1823 void Init() noexcept
1824 {
1825 SUBOBJECT_HELPER_BASE::Init();
1826 m_Desc = CD3DX12_VIEW_INSTANCING_DESC(D3D12_DEFAULT);
1827 m_viewInstanceLocations.clear();
1828 }
1829 void* Data() noexcept override { return &m_Desc; }
1830 CD3DX12_VIEW_INSTANCING_DESC m_Desc;
1831 std::vector<D3D12_VIEW_INSTANCE_LOCATION> m_viewInstanceLocations;
1832};
1833
1834//------------------------------------------------------------------------------------------------
1835class CD3DX12_DEPTH_STENCIL_SUBOBJECT
1836 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1837{
1838public:
1839 CD3DX12_DEPTH_STENCIL_SUBOBJECT()
1840 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
1841 {
1842 Init();
1843 }
1844 CD3DX12_DEPTH_STENCIL_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1845 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
1846 {
1847 Init();
1848 AddToStateObject(ContainingStateObject);
1849 }
1850 CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc)
1851 : m_Desc(desc)
1852 {
1853 Init();
1854 }
1855 CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1856 : m_Desc(desc)
1857 {
1858 Init();
1859 AddToStateObject(ContainingStateObject);
1860 }
1861 void SetDepthEnable(BOOL depthEnable)
1862 {
1863 m_Desc.DepthEnable = depthEnable;
1864 }
1865 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1866 {
1867 m_Desc.DepthWriteMask = depthWriteMask;
1868 }
1869 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1870 {
1871 m_Desc.DepthFunc = depthFunc;
1872 }
1873 void SetStencilEnable(BOOL stencilEnable)
1874 {
1875 m_Desc.StencilEnable = stencilEnable;
1876 }
1877 void SetStencilReadMask(UINT8 stencilReadMask)
1878 {
1879 m_Desc.StencilReadMask = stencilReadMask;
1880 }
1881 void SetStencilWriteMask(UINT8 stencilWriteMask)
1882 {
1883 m_Desc.StencilWriteMask = stencilWriteMask;
1884 }
1885 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
1886 {
1887 m_Desc.FrontFace = {
1888 frontFace.StencilFailOp,
1889 frontFace.StencilDepthFailOp,
1890 frontFace.StencilPassOp,
1891 frontFace.StencilFunc
1892 };
1893 }
1894 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
1895 {
1896 m_Desc.BackFace = {
1897 backFace.StencilFailOp,
1898 backFace.StencilDepthFailOp,
1899 backFace.StencilPassOp,
1900 backFace.StencilFunc
1901 };
1902 }
1903 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1904 {
1905 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1906 }
1907 operator const D3D12_DEPTH_STENCIL_DESC& () const noexcept { return m_Desc; }
1908 operator D3D12_DEPTH_STENCIL_DESC& () noexcept { return m_Desc; }
1909private:
1910 void Init() noexcept
1911 {
1912 SUBOBJECT_HELPER_BASE::Init();
1913 }
1914 void* Data() noexcept override { return &m_Desc; }
1915 CD3DX12_DEPTH_STENCIL_DESC m_Desc;
1916};
1917
1918//------------------------------------------------------------------------------------------------
1919class CD3DX12_DEPTH_STENCIL1_SUBOBJECT
1920 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1921{
1922public:
1923 CD3DX12_DEPTH_STENCIL1_SUBOBJECT()
1924 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
1925 {
1926 Init();
1927 }
1928 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1929 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
1930 {
1931 Init();
1932 AddToStateObject(ContainingStateObject);
1933 }
1934 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc)
1935 : m_Desc(desc)
1936 {
1937 Init();
1938 }
1939 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1940 : m_Desc(desc)
1941 {
1942 Init();
1943 AddToStateObject(ContainingStateObject);
1944 }
1945 void SetDepthEnable(BOOL depthEnable)
1946 {
1947 m_Desc.DepthEnable = depthEnable;
1948 }
1949 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1950 {
1951 m_Desc.DepthWriteMask = depthWriteMask;
1952 }
1953 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1954 {
1955 m_Desc.DepthFunc = depthFunc;
1956 }
1957 void SetStencilEnable(BOOL stencilEnable)
1958 {
1959 m_Desc.StencilEnable = stencilEnable;
1960 }
1961 void SetStencilReadMask(UINT8 stencilReadMask)
1962 {
1963 m_Desc.StencilReadMask = stencilReadMask;
1964 }
1965 void SetStencilWriteMask(UINT8 stencilWriteMask)
1966 {
1967 m_Desc.StencilWriteMask = stencilWriteMask;
1968 }
1969 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
1970 {
1971 m_Desc.FrontFace = {
1972 frontFace.StencilFailOp,
1973 frontFace.StencilDepthFailOp,
1974 frontFace.StencilPassOp,
1975 frontFace.StencilFunc
1976 };
1977 }
1978 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
1979 {
1980 m_Desc.BackFace = {
1981 backFace.StencilFailOp,
1982 backFace.StencilDepthFailOp,
1983 backFace.StencilPassOp,
1984 backFace.StencilFunc
1985 };
1986 }
1987 void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
1988 {
1989 m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
1990 }
1991 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1992 {
1993 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1;
1994 }
1995 operator const D3D12_DEPTH_STENCIL_DESC1& () const noexcept { return m_Desc; }
1996 operator D3D12_DEPTH_STENCIL_DESC1& () noexcept { return m_Desc; }
1997private:
1998 void Init() noexcept
1999 {
2000 SUBOBJECT_HELPER_BASE::Init();
2001 }
2002 void* Data() noexcept override { return &m_Desc; }
2003 CD3DX12_DEPTH_STENCIL_DESC1 m_Desc;
2004};
2005
2006//------------------------------------------------------------------------------------------------
2007class CD3DX12_SAMPLE_MASK_SUBOBJECT
2008 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2009{
2010public:
2011 CD3DX12_SAMPLE_MASK_SUBOBJECT()
2012 : m_Desc(0xffffffffu)
2013 {
2014 Init();
2015 }
2016 CD3DX12_SAMPLE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2017 : m_Desc(0xffffffffu)
2018 {
2019 Init();
2020 AddToStateObject(ContainingStateObject);
2021 }
2022 CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc)
2023 : m_Desc(desc)
2024 {
2025 Init();
2026 }
2027 CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2028 : m_Desc(desc)
2029 {
2030 Init();
2031 AddToStateObject(ContainingStateObject);
2032 }
2033 void SetSampleMask(UINT sampleMask)
2034 {
2035 m_Desc = sampleMask;
2036 }
2037 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2038 {
2039 return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK;
2040 }
2041 operator const UINT& () const noexcept { return m_Desc; }
2042 operator UINT& () noexcept { return m_Desc; }
2043private:
2044 void Init() noexcept
2045 {
2046 SUBOBJECT_HELPER_BASE::Init();
2047 }
2048 void* Data() noexcept override { return &m_Desc; }
2049 UINT m_Desc;
2050};
2051
2052//------------------------------------------------------------------------------------------------
2053class CD3DX12_GENERIC_PROGRAM_SUBOBJECT
2054 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2055{
2056public:
2057 CD3DX12_GENERIC_PROGRAM_SUBOBJECT()
2058 {
2059 Init();
2060 }
2061 CD3DX12_GENERIC_PROGRAM_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2062 {
2063 Init();
2064 AddToStateObject(ContainingStateObject);
2065 }
2066 void SetProgramName(LPCWSTR ProgramName)
2067 {
2068 m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
2069 }
2070 void AddExport(LPCWSTR exportName)
2071 {
2072 m_Exports.emplace_back(m_Strings.LocalCopy(exportName));
2073 m_Desc.NumExports++;
2074 // Below: using ugly way to get pointer in case .data() is not defined
2075 m_Desc.pExports = &m_Exports[0];
2076 }
2077 void AddSubobject(const D3D12_STATE_SUBOBJECT& subobject)
2078 {
2079 m_Subobjects.emplace_back(&subobject);
2080 m_Desc.NumSubobjects++;
2081 // Below: using ugly way to get pointer in case .data() is not defined
2082 m_Desc.ppSubobjects = &m_Subobjects[0];
2083 }
2084 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2085 {
2086 return D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM;
2087 }
2088 operator const D3D12_GENERIC_PROGRAM_DESC& () const noexcept { return m_Desc; }
2089private:
2090 void Init() noexcept
2091 {
2092 SUBOBJECT_HELPER_BASE::Init();
2093 m_Desc = {};
2094 }
2095 void* Data() noexcept override { return &m_Desc; }
2096 D3D12_GENERIC_PROGRAM_DESC m_Desc;
2097 std::vector<LPCWSTR> m_Exports;
2098 std::vector<D3D12_STATE_SUBOBJECT const*> m_Subobjects;
2099 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2100};
2101
2102//------------------------------------------------------------------------------------------------
2103class CD3DX12_NODE_OUTPUT_OVERRIDES
2104{
2105public:
2106 CD3DX12_NODE_OUTPUT_OVERRIDES(const D3D12_NODE_OUTPUT_OVERRIDES** ppOwner, UINT* pNumOutputOverrides) noexcept
2107 {
2108 m_Desc.clear();
2109 m_ppOwner = ppOwner;
2110 *m_ppOwner = nullptr;
2111 m_pNumOutputOverrides = pNumOutputOverrides;
2112 *m_pNumOutputOverrides = 0;
2113 }
2114 void NewOutputOverride()
2115 {
2116 m_Desc.emplace_back(D3D12_NODE_OUTPUT_OVERRIDES{});
2117 *m_ppOwner = m_Desc.data();
2118 (*m_pNumOutputOverrides)++;
2119 }
2120 void OutputIndex(UINT index)
2121 {
2122 m_Desc.back().OutputIndex = index;
2123 }
2124 void NewName(LPCWSTR Name, UINT ArrayIndex = 0)
2125 {
2126 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(Name),ArrayIndex });
2127 m_Desc.back().pNewName = &m_NodeIDs.front();
2128 }
2129 void AllowSparseNodes(BOOL bAllow)
2130 {
2131 m_UINTs.emplace_front((UINT)bAllow);
2132 m_Desc.back().pAllowSparseNodes = (BOOL*)&m_UINTs.front();
2133 }
2134 void MaxOutputRecords(UINT maxOutputRecords) noexcept
2135 {
2136 m_UINTs.emplace_front(maxOutputRecords);
2137 m_Desc.back().pMaxRecords = &m_UINTs.front();
2138 }
2139 void MaxOutputRecordsSharedWith(UINT outputIndex) noexcept
2140 {
2141 m_UINTs.emplace_front(outputIndex);
2142 m_Desc.back().pMaxRecordsSharedWithOutputIndex = &m_UINTs.front();
2143 }
2144private:
2145 std::vector<D3D12_NODE_OUTPUT_OVERRIDES> m_Desc;
2146 // Cached parameters
2147 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2148 std::forward_list<UINT> m_UINTs;
2149 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2150 const D3D12_NODE_OUTPUT_OVERRIDES** m_ppOwner;
2151 UINT* m_pNumOutputOverrides;
2152};
2153
2154//------------------------------------------------------------------------------------------------
2155class CD3DX12_WORK_GRAPH_SUBOBJECT;
2156
2157//------------------------------------------------------------------------------------------------
2158class CD3DX12_NODE_HELPER_BASE
2159{
2160protected:
2161 struct Backreference
2162 {
2163 CD3DX12_WORK_GRAPH_SUBOBJECT *m_pGraph;
2164 UINT m_NodeIndex;
2165 };
2166public:
2167 CD3DX12_NODE_HELPER_BASE(const Backreference &BackRef)
2168 : m_BackRef(BackRef)
2169 {
2170 }
2171 virtual ~CD3DX12_NODE_HELPER_BASE() = default;
2172protected:
2173 D3D12_NODE *GetNode() const;
2174 const Backreference m_BackRef;
2175 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2176};
2177
2178//------------------------------------------------------------------------------------------------
2179class CD3DX12_SHADER_NODE // Not specifying launch mode.
2180 // Don't need to distinguish if no parameter overriding is happening
2181 : public CD3DX12_NODE_HELPER_BASE
2182{
2183public:
2184 CD3DX12_SHADER_NODE(
2185 const Backreference &BackRef,
2186 LPCWSTR _Shader = nullptr)
2187 : CD3DX12_NODE_HELPER_BASE(BackRef)
2188 {
2189 GetNode()->NodeType = D3D12_NODE_TYPE_SHADER;
2190 Shader(_Shader);
2191 }
2192 void Shader(LPCWSTR _Shader)
2193 {
2194 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2195 }
2196 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2197};
2198
2199#endif // D3D12_SDK_VERSION >= 612
2200
2201
2202#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
2203
2204//------------------------------------------------------------------------------------------------
2205// Use this class when defining a broadcasting launch node where configuration parameters
2206// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2207class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES
2208 : public CD3DX12_NODE_HELPER_BASE
2209{
2210public:
2211 CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES(
2212 const Backreference &BackRef,
2213 LPCWSTR _Shader = nullptr) :
2214 CD3DX12_NODE_HELPER_BASE(BackRef),
2215 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2216 {
2217 Overrides = {};
2218 D3D12_NODE *pNode = GetNode();
2219 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2220 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH;
2221 pNode->Shader.pBroadcastingLaunchOverrides = &Overrides;
2222 Shader(_Shader);
2223 }
2224 void Shader(LPCWSTR _Shader)
2225 {
2226 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2227 }
2228 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2229 void LocalRootArgumentsTableIndex(UINT index)
2230 {
2231 m_UINTs.emplace_front(index);
2232 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2233 }
2234 void ProgramEntry(BOOL bIsProgramEntry)
2235 {
2236 m_UINTs.emplace_front(bIsProgramEntry);
2237 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2238 }
2239 void NewName(D3D12_NODE_ID NodeID)
2240 {
2241 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2242 Overrides.pNewName = &m_NodeIDs.front();
2243 }
2244 void ShareInputOf(D3D12_NODE_ID NodeID)
2245 {
2246 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2247 Overrides.pShareInputOf = &m_NodeIDs.front();
2248 }
2249 void DispatchGrid(UINT x, UINT y, UINT z)
2250 {
2251 m_UINT3s.emplace_front(UINT3{ x,y,z });
2252 Overrides.pDispatchGrid = (UINT*)&m_UINT3s.front();
2253 }
2254 void MaxDispatchGrid(UINT x, UINT y, UINT z)
2255 {
2256 m_UINT3s.emplace_front(UINT3{x,y,z});
2257 Overrides.pMaxDispatchGrid = (UINT*)&m_UINT3s.front();
2258 }
2259 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2260 {
2261 return m_NodeOutputOverrides;
2262 }
2263 D3D12_BROADCASTING_LAUNCH_OVERRIDES Overrides;
2264private:
2265 // Cached parameters
2266 std::forward_list<UINT> m_UINTs;
2267 struct UINT3
2268 {
2269 UINT x;
2270 UINT y;
2271 UINT z;
2272 };
2273 std::forward_list<UINT3> m_UINT3s;
2274 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2275 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2276};
2277
2278//------------------------------------------------------------------------------------------------
2279// Use this class when defining a coalescing launch node where configuration parameters
2280// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2281class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES
2282 : public CD3DX12_NODE_HELPER_BASE
2283{
2284public:
2285 CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES(
2286 const Backreference &BackRef,
2287 LPCWSTR _Shader = nullptr) :
2288 CD3DX12_NODE_HELPER_BASE(BackRef),
2289 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2290 {
2291 Overrides = {};
2292 D3D12_NODE *pNode = GetNode();
2293 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2294 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH;
2295 pNode->Shader.pCoalescingLaunchOverrides = &Overrides;
2296 Shader(_Shader);
2297 }
2298 void Shader(LPCWSTR _Shader)
2299 {
2300 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2301 }
2302 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2303 void LocalRootArgumentsTableIndex(UINT index)
2304 {
2305 m_UINTs.emplace_front(index);
2306 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2307 }
2308 void ProgramEntry(BOOL bIsProgramEntry)
2309 {
2310 m_UINTs.emplace_front(bIsProgramEntry);
2311 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2312 }
2313 void NewName(D3D12_NODE_ID NodeID)
2314 {
2315 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2316 Overrides.pNewName = &m_NodeIDs.front();
2317 }
2318 void ShareInputOf(D3D12_NODE_ID NodeID)
2319 {
2320 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2321 Overrides.pShareInputOf = &m_NodeIDs.front();
2322 }
2323 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2324 {
2325 return m_NodeOutputOverrides;
2326 }
2327 D3D12_COALESCING_LAUNCH_OVERRIDES Overrides;
2328private:
2329 // Cached parameters
2330 std::forward_list<UINT> m_UINTs;
2331 struct UINT3
2332 {
2333 UINT x;
2334 UINT y;
2335 UINT z;
2336 };
2337 std::forward_list<UINT3> m_UINT3s;
2338 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2339 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2340};
2341
2342//------------------------------------------------------------------------------------------------
2343// Use this class when defining a thread launch node where configuration parameters
2344// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2345class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES
2346 : public CD3DX12_NODE_HELPER_BASE
2347{
2348public:
2349 CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES(
2350 const Backreference &BackRef,
2351 LPCWSTR _Shader = nullptr) :
2352 CD3DX12_NODE_HELPER_BASE(BackRef),
2353 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2354 {
2355 Overrides = {};
2356 D3D12_NODE *pNode = GetNode();
2357 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2358 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH;
2359 pNode->Shader.pThreadLaunchOverrides = &Overrides;
2360 Shader(_Shader);
2361 }
2362 void Shader(LPCWSTR _Shader)
2363 {
2364 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2365 }
2366 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2367 void LocalRootArgumentsTableIndex(UINT index)
2368 {
2369 m_UINTs.emplace_front(index);
2370 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2371 }
2372 void ProgramEntry(BOOL bIsProgramEntry)
2373 {
2374 m_UINTs.emplace_front(bIsProgramEntry);
2375 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2376 }
2377 void NewName(D3D12_NODE_ID NodeID)
2378 {
2379 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2380 Overrides.pNewName = &m_NodeIDs.front();
2381 }
2382 void ShareInputOf(D3D12_NODE_ID NodeID)
2383 {
2384 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2385 Overrides.pShareInputOf = &m_NodeIDs.front();
2386 }
2387 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2388 {
2389 return m_NodeOutputOverrides;
2390 }
2391 D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
2392private:
2393 // Cached parameters
2394 std::forward_list<UINT> m_UINTs;
2395 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2396 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2397};
2398
2399//------------------------------------------------------------------------------------------------
2400// Use this class when defining a node where configuration parameters
2401// need to be overridden for parameters that are common to all launch node types.
2402// This option is a convenience if you don't want to determine what the launch mode is
2403// and just want to override a setting that isn't specific to launch mode.
2404// If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2405class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES
2406 : public CD3DX12_NODE_HELPER_BASE
2407{
2408public:
2409 CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES(
2410 const Backreference &BackRef,
2411 LPCWSTR _Shader = nullptr) :
2412 CD3DX12_NODE_HELPER_BASE(BackRef),
2413 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2414 {
2415 Overrides = {};
2416 D3D12_NODE *pNode = GetNode();
2417 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2418 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE;
2419 pNode->Shader.pThreadLaunchOverrides = &Overrides;
2420 Shader(_Shader);
2421 }
2422 void Shader(LPCWSTR _Shader)
2423 {
2424 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2425 }
2426 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2427 void LocalRootArgumentsTableIndex(UINT index)
2428 {
2429 m_UINTs.emplace_front(index);
2430 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2431 }
2432 void ProgramEntry(BOOL bIsProgramEntry)
2433 {
2434 m_UINTs.emplace_front(bIsProgramEntry);
2435 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2436 }
2437 void NewName(D3D12_NODE_ID NodeID)
2438 {
2439 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2440 Overrides.pNewName = &m_NodeIDs.front();
2441 }
2442 void ShareInputOf(D3D12_NODE_ID NodeID)
2443 {
2444 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2445 Overrides.pShareInputOf = &m_NodeIDs.front();
2446 }
2447 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2448 {
2449 return m_NodeOutputOverrides;
2450 }
2451 D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
2452private:
2453 // Cached parameters
2454 std::forward_list<UINT> m_UINTs;
2455 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2456 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2457};
2458
2459//------------------------------------------------------------------------------------------------
2460class CD3DX12_WORK_GRAPH_SUBOBJECT
2461 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2462{
2463public:
2464 CD3DX12_WORK_GRAPH_SUBOBJECT() noexcept
2465 {
2466 Init();
2467 }
2468 CD3DX12_WORK_GRAPH_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2469 {
2470 Init();
2471 AddToStateObject(ContainingStateObject);
2472 }
2473 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2474 {
2475 return D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH;
2476 }
2477 void IncludeAllAvailableNodes()
2478 {
2479 m_Desc.Flags |= D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES;
2480 }
2481
2482
2483 void SetProgramName(LPCWSTR ProgramName)
2484 {
2485 m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
2486 }
2487 void AddEntrypoint(D3D12_NODE_ID Entrypoint)
2488 {
2489 m_Entrypoints.emplace_back(D3D12_NODE_ID{ m_Strings.LocalCopy(Entrypoint.Name),Entrypoint.ArrayIndex });
2490 m_Desc.NumEntrypoints++;
2491 m_Desc.pEntrypoints = m_Entrypoints.data();
2492 }
2493
2494 template<typename T>
2495 T* CreateNode()
2496 {
2497 m_NodeDescs.push_back({});
2498 m_Desc.NumExplicitlyDefinedNodes++;
2499 m_Desc.pExplicitlyDefinedNodes = m_NodeDescs.data();
2500 T* pNodeHelper = new T({this, (UINT)m_NodeDescs.size() - 1});
2501 m_OwnedNodeHelpers.emplace_back(pNodeHelper);
2502 return pNodeHelper;
2503 }
2504 CD3DX12_SHADER_NODE* CreateShaderNode(LPCWSTR Shader = nullptr)
2505 {
2506 auto pNode = CreateNode<CD3DX12_SHADER_NODE>();
2507 pNode->Shader(Shader);
2508 return pNode;
2509 }
2510 CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES* CreateBroadcastingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2511 {
2512 auto pNode = CreateNode<CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES>();
2513 pNode->Shader(Shader);
2514 return pNode;
2515 }
2516 CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES* CreateCoalescingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2517 {
2518 auto pNode = CreateNode<CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES>();
2519 pNode->Shader(Shader);
2520 return pNode;
2521 }
2522 CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES* CreateThreadLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2523 {
2524 auto pNode = CreateNode<CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES>();
2525 pNode->Shader(Shader);
2526 return pNode;
2527 }
2528 CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES* CreateCommonComputeNodeOverrides(LPCWSTR Shader = nullptr)
2529 {
2530 auto pNode = CreateNode<CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES>();
2531 pNode->Shader(Shader);
2532 return pNode;
2533 }
2534#endif // D3D12_SDK_VERSION >= 612
2535
2536
2537#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
2538
2539 operator const D3D12_WORK_GRAPH_DESC& () noexcept
2540 {
2541 return m_Desc;
2542 }
2543private:
2544 void Init() noexcept
2545 {
2546 SUBOBJECT_HELPER_BASE::Init();
2547 m_Desc = {};
2548 m_Entrypoints.clear();
2549 m_NodeDescs.clear();
2550 }
2551 void* Data() noexcept override { return &m_Desc; }
2552 D3D12_WORK_GRAPH_DESC m_Desc;
2553 std::vector<D3D12_NODE_ID> m_Entrypoints;
2554 std::vector<D3D12_NODE> m_NodeDescs;
2555 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2556 std::vector<std::unique_ptr<const CD3DX12_NODE_HELPER_BASE>> m_OwnedNodeHelpers;
2557 friend class CD3DX12_NODE_HELPER_BASE;
2558};
2559
2560inline D3D12_NODE * CD3DX12_NODE_HELPER_BASE::GetNode() const
2561{
2562 return &m_BackRef.m_pGraph->m_NodeDescs[m_BackRef.m_NodeIndex];
2563}
2564#endif // D3D12_SDK_VERSION >= 612
2565
2566#undef D3DX12_COM_PTR
2567#undef D3DX12_COM_PTR_GET
2568#undef D3DX12_COM_PTR_ADDRESSOF
2569
2570
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxcore.h b/contrib/DirectX-Headers-1.618.2/include/directx/dxcore.h
new file mode 100644
index 0000000..4244eaa
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/include/directx/dxcore_interface.h b/contrib/DirectX-Headers-1.618.2/include/directx/dxcore_interface.h
new file mode 100644
index 0000000..318208e
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxcore_interface.h
@@ -0,0 +1,497 @@
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 PhysicalAdapterCount = 15,
40 AdapterEngineCount = 16,
41 AdapterEngineName = 17,
42};
43
44enum class DXCoreAdapterState : uint32_t
45{
46 IsDriverUpdateInProgress = 0,
47 AdapterMemoryBudget = 1,
48 AdapterMemoryUsageBytes = 2,
49 AdapterMemoryUsageByProcessBytes = 3,
50 AdapterEngineRunningTimeMicroseconds = 4,
51 AdapterEngineRunningTimeByProcessMicroseconds = 5,
52 AdapterTemperatureCelsius = 6,
53 AdapterInUseProcessCount = 7,
54 AdapterInUseProcessSet = 8,
55 AdapterEngineFrequencyHertz = 9,
56 AdapterMemoryFrequencyHertz = 10
57};
58
59enum class DXCoreSegmentGroup : uint32_t
60{
61 Local = 0,
62 NonLocal = 1
63};
64
65enum class DXCoreNotificationType : uint32_t
66{
67 AdapterListStale = 0,
68 AdapterNoLongerValid = 1,
69 AdapterBudgetChange = 2,
70 AdapterHardwareContentProtectionTeardown = 3
71};
72
73enum class DXCoreAdapterPreference : uint32_t
74{
75 Hardware = 0,
76 MinimumPower = 1,
77 HighPerformance = 2
78};
79
80enum class DXCoreWorkload : uint32_t
81{
82 Graphics = 0,
83 Compute = 1,
84 Media = 2,
85 MachineLearning = 3,
86};
87
88enum class DXCoreRuntimeFilterFlags : uint32_t
89{
90 None = 0x0,
91 D3D11 = 0x1,
92 D3D12 = 0x2
93};
94
95DEFINE_ENUM_FLAG_OPERATORS(DXCoreRuntimeFilterFlags)
96
97enum class DXCoreHardwareTypeFilterFlags : uint32_t
98{
99 None = 0x0,
100 GPU = 0x1,
101 ComputeAccelerator = 0x2,
102 NPU = 0x4,
103 MediaAccelerator = 0x8
104};
105
106DEFINE_ENUM_FLAG_OPERATORS(DXCoreHardwareTypeFilterFlags)
107
108struct DXCoreHardwareID
109{
110 uint32_t vendorID;
111 uint32_t deviceID;
112 uint32_t subSysID;
113 uint32_t revision;
114};
115
116struct DXCoreHardwareIDParts
117{
118 uint32_t vendorID;
119 uint32_t deviceID;
120 uint32_t subSystemID;
121 uint32_t subVendorID;
122 uint32_t revisionID;
123};
124
125struct DXCoreAdapterMemoryBudgetNodeSegmentGroup
126{
127 uint32_t nodeIndex;
128 DXCoreSegmentGroup segmentGroup;
129};
130
131struct DXCoreAdapterMemoryBudget
132{
133 uint64_t budget;
134 uint64_t currentUsage;
135 uint64_t availableForReservation;
136 uint64_t currentReservation;
137};
138
139struct DXCoreAdapterEngineIndex
140{
141 uint32_t physicalAdapterIndex;
142 uint32_t engineIndex;
143};
144
145struct DXCoreEngineQueryInput
146{
147 DXCoreAdapterEngineIndex adapterEngineIndex;
148 uint32_t processId;
149};
150
151struct DXCoreEngineQueryOutput
152{
153 uint64_t runningTime;
154 bool processQuerySucceeded;
155};
156
157enum class DXCoreMemoryType : uint32_t
158{
159 Dedicated = 0,
160 Shared = 1
161};
162
163struct DXCoreMemoryUsage
164{
165 uint64_t committed;
166 uint64_t resident;
167};
168
169struct DXCoreMemoryQueryInput
170{
171 uint32_t physicalAdapterIndex;
172 DXCoreMemoryType memoryType;
173};
174
175struct DXCoreProcessMemoryQueryInput
176{
177 uint32_t physicalAdapterIndex;
178 DXCoreMemoryType memoryType;
179 uint32_t processId;
180};
181
182struct DXCoreProcessMemoryQueryOutput
183{
184 DXCoreMemoryUsage memoryUsage;
185 bool processQuerySucceeded;
186};
187
188struct DXCoreAdapterProcessSetQueryInput
189{
190 uint32_t arraySize;
191 _Field_size_(arraySize) uint32_t* processIds;
192};
193
194struct DXCoreAdapterProcessSetQueryOutput
195{
196 uint32_t processesWritten;
197 uint32_t processesTotal;
198};
199
200struct DXCoreEngineNamePropertyInput
201{
202 DXCoreAdapterEngineIndex adapterEngineIndex;
203 uint32_t engineNameLength;
204 _Field_size_(engineNameLength) wchar_t *engineName;
205};
206
207struct DXCoreEngineNamePropertyOutput
208{
209 uint32_t engineNameLength;
210};
211
212struct DXCoreFrequencyQueryOutput
213{
214 uint64_t frequency;
215 uint64_t maxFrequency;
216 uint64_t maxOverclockedFrequency;
217};
218
219typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
220 DXCoreNotificationType notificationType,
221 _In_ IUnknown *object,
222 _In_opt_ void *context);
223
224static_assert(sizeof(bool) == 1, "bool assumed as one byte");
225
226DEFINE_GUID(IID_IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
227DEFINE_GUID(IID_IDXCoreAdapterFactory1, 0xd5682e19, 0x6d21, 0x401c, 0x82, 0x7a, 0x9a, 0x51, 0xa4, 0xea, 0x35, 0xd7);
228DEFINE_GUID(IID_IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
229DEFINE_GUID(IID_IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
230DEFINE_GUID(IID_IDXCoreAdapter1, 0xa0783366, 0xcfa3, 0x43be, 0x9d, 0x79, 0x55, 0xb2, 0xda, 0x97, 0xc6, 0x3c);
231
232DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D11_GRAPHICS, 0x8c47866b, 0x7583, 0x450d, 0xf0, 0xf0, 0x6b, 0xad, 0xa8, 0x95, 0xaf, 0x4b);
233DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GRAPHICS, 0x0c9ece4d, 0x2f6e, 0x4f01, 0x8c, 0x96, 0xe8, 0x9e, 0x33, 0x1b, 0x47, 0xb1);
234DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, 0x248e2800, 0xa793, 0x4724, 0xab, 0xaa, 0x23, 0xa6, 0xde, 0x1b, 0xe0, 0x90);
235DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GENERIC_ML, 0xb71b0d41, 0x1088, 0x422f, 0xa2, 0x7c, 0x2, 0x50, 0xb7, 0xd3, 0xa9, 0x88);
236DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GENERIC_MEDIA, 0x8eb2c848, 0x82f6, 0x4b49, 0xaa, 0x87, 0xae, 0xcf, 0xcf, 0x1, 0x74, 0xc6);
237
238DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_GPU, 0xb69eb219, 0x3ded, 0x4464, 0x97, 0x9f, 0xa0, 0xb, 0xd4, 0x68, 0x70, 0x6);
239DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_COMPUTE_ACCELERATOR, 0xe0b195da, 0x58ef, 0x4a22, 0x90, 0xf1, 0x1f, 0x28, 0x16, 0x9c, 0xab, 0x8d);
240DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_NPU, 0xd46140c4, 0xadd7, 0x451b, 0x9e, 0x56, 0x6, 0xfe, 0x8c, 0x3b, 0x58, 0xed);
241DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_MEDIA_ACCELERATOR, 0x66bdb96a, 0x50b, 0x44c7, 0xa4, 0xfd, 0xd1, 0x44, 0xce, 0xa, 0xb4, 0x43);
242
243/* interface IDXCoreAdapter */
244MIDL_INTERFACE("f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e")
245IDXCoreAdapter : public IUnknown
246{
247public:
248 virtual bool STDMETHODCALLTYPE IsValid() = 0;
249
250 virtual bool STDMETHODCALLTYPE IsAttributeSupported(
251 REFGUID attributeGUID) = 0;
252
253 virtual bool STDMETHODCALLTYPE IsPropertySupported(
254 DXCoreAdapterProperty property) = 0;
255
256 virtual HRESULT STDMETHODCALLTYPE GetProperty(
257 DXCoreAdapterProperty property,
258 size_t bufferSize,
259 _Out_writes_bytes_(bufferSize) void *propertyData) = 0;
260
261 template <class T>
262 HRESULT GetProperty(
263 DXCoreAdapterProperty property,
264 _Out_writes_bytes_(sizeof(T)) T *propertyData)
265 {
266 return GetProperty(property,
267 sizeof(T),
268 (void*)propertyData);
269 }
270
271 virtual HRESULT STDMETHODCALLTYPE GetPropertySize(
272 DXCoreAdapterProperty property,
273 _Out_ size_t *bufferSize) = 0;
274
275 virtual bool STDMETHODCALLTYPE IsQueryStateSupported(
276 DXCoreAdapterState property) = 0;
277
278 virtual HRESULT STDMETHODCALLTYPE QueryState(
279 DXCoreAdapterState state,
280 size_t inputStateDetailsSize,
281 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
282 size_t outputBufferSize,
283 _Out_writes_bytes_(outputBufferSize) void *outputBuffer) = 0;
284
285 template <class T1, class T2>
286 HRESULT QueryState(
287 DXCoreAdapterState state,
288 _In_reads_bytes_opt_(sizeof(T1)) const T1 *inputStateDetails,
289 _Out_writes_bytes_(sizeof(T2)) T2 *outputBuffer)
290 {
291 return QueryState(state,
292 sizeof(T1),
293 (const void*)inputStateDetails,
294 sizeof(T2),
295 (void*)outputBuffer);
296 }
297
298 template <class T>
299 HRESULT QueryState(
300 DXCoreAdapterState state,
301 _Out_writes_bytes_(sizeof(T)) T *outputBuffer)
302 {
303 return QueryState(state,
304 0,
305 nullptr,
306 sizeof(T),
307 (void*)outputBuffer);
308 }
309
310 virtual bool STDMETHODCALLTYPE IsSetStateSupported(
311 DXCoreAdapterState property) = 0;
312
313 virtual HRESULT STDMETHODCALLTYPE SetState(
314 DXCoreAdapterState state,
315 size_t inputStateDetailsSize,
316 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
317 size_t inputDataSize,
318 _In_reads_bytes_(inputDataSize) const void *inputData) = 0;
319
320 template <class T1, class T2>
321 HRESULT SetState(
322 DXCoreAdapterState state,
323 const T1 *inputStateDetails,
324 const T2 *inputData)
325 {
326 return SetState(state,
327 sizeof(T1),
328 (const void*)inputStateDetails,
329 sizeof(T2),
330 (const void*)inputData);
331 }
332
333 virtual HRESULT STDMETHODCALLTYPE GetFactory(
334 REFIID riid,
335 _COM_Outptr_ void** ppvFactory
336 ) = 0;
337
338 template <class T>
339 HRESULT GetFactory(
340 _COM_Outptr_ T** ppvFactory
341 )
342 {
343 return GetFactory(IID_PPV_ARGS(ppvFactory));
344 }
345};
346
347/* interface IDXCoreAdapter1 */
348MIDL_INTERFACE("a0783366-cfa3-43be-9d79-55b2da97c63c")
349IDXCoreAdapter1 : public IDXCoreAdapter
350{
351public:
352 virtual HRESULT STDMETHODCALLTYPE GetPropertyWithInput(
353 DXCoreAdapterProperty property,
354 size_t inputPropertyDetailsSize,
355 _In_reads_bytes_opt_(inputPropertyDetailsSize) const void *inputPropertyDetails,
356 size_t outputBufferSize,
357 _Out_writes_bytes_(outputBufferSize) void *outputBuffer) = 0;
358
359 template <class T1, class T2>
360 HRESULT GetPropertyWithInput(
361 DXCoreAdapterProperty property,
362 _In_reads_bytes_opt_(sizeof(T1)) const T1 *inputPropertyDetails,
363 _Out_writes_bytes_(sizeof(T2)) T2 *outputBuffer)
364 {
365 return GetPropertyWithInput(property,
366 sizeof(T1),
367 (const void*)inputPropertyDetails,
368 sizeof(T2),
369 (void*)outputBuffer);
370 }
371};
372
373/* interface IDXCoreAdapterList */
374MIDL_INTERFACE("526c7776-40e9-459b-b711-f32ad76dfc28")
375IDXCoreAdapterList : public IUnknown
376{
377public:
378 virtual HRESULT STDMETHODCALLTYPE GetAdapter(
379 uint32_t index,
380 REFIID riid,
381 _COM_Outptr_ void **ppvAdapter) = 0;
382
383 template<class T>
384 HRESULT STDMETHODCALLTYPE GetAdapter(
385 uint32_t index,
386 _COM_Outptr_ T **ppvAdapter)
387 {
388 return GetAdapter(index,
389 IID_PPV_ARGS(ppvAdapter));
390 }
391
392 virtual uint32_t STDMETHODCALLTYPE GetAdapterCount() = 0;
393
394 virtual bool STDMETHODCALLTYPE IsStale() = 0;
395
396 virtual HRESULT STDMETHODCALLTYPE GetFactory(
397 REFIID riid,
398 _COM_Outptr_ void** ppvFactory
399 ) = 0;
400
401 template <class T>
402 HRESULT GetFactory(
403 _COM_Outptr_ T** ppvFactory
404 )
405 {
406 return GetFactory(IID_PPV_ARGS(ppvFactory));
407 }
408
409 virtual HRESULT STDMETHODCALLTYPE Sort(
410 uint32_t numPreferences,
411 _In_reads_(numPreferences) const DXCoreAdapterPreference* preferences) = 0;
412
413 virtual bool STDMETHODCALLTYPE IsAdapterPreferenceSupported(
414 DXCoreAdapterPreference preference) = 0;
415};
416
417/* interface IDXCoreAdapterFactory */
418MIDL_INTERFACE("78ee5945-c36e-4b13-a669-005dd11c0f06")
419IDXCoreAdapterFactory : public IUnknown
420{
421public:
422
423 virtual HRESULT STDMETHODCALLTYPE CreateAdapterList(
424 uint32_t numAttributes,
425 _In_reads_(numAttributes) const GUID *filterAttributes,
426 REFIID riid,
427 _COM_Outptr_ void **ppvAdapterList) = 0;
428
429 template<class T>
430 HRESULT STDMETHODCALLTYPE CreateAdapterList(
431 uint32_t numAttributes,
432 _In_reads_(numAttributes) const GUID *filterAttributes,
433 _COM_Outptr_ T **ppvAdapterList)
434 {
435 return CreateAdapterList(numAttributes,
436 filterAttributes,
437 IID_PPV_ARGS(ppvAdapterList));
438 }
439
440 virtual HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
441 const LUID &adapterLUID,
442 REFIID riid,
443 _COM_Outptr_ void **ppvAdapter) = 0;
444
445 template<class T>
446 HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
447 const LUID &adapterLUID,
448 _COM_Outptr_ T **ppvAdapter)
449 {
450 return GetAdapterByLuid(adapterLUID,
451 IID_PPV_ARGS(ppvAdapter));
452 }
453
454 virtual bool STDMETHODCALLTYPE IsNotificationTypeSupported(
455 DXCoreNotificationType notificationType) = 0;
456
457 virtual HRESULT STDMETHODCALLTYPE RegisterEventNotification(
458 _In_ IUnknown *dxCoreObject,
459 DXCoreNotificationType notificationType,
460 _In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
461 _In_opt_ void *callbackContext,
462 _Out_ uint32_t *eventCookie) = 0;
463
464 virtual HRESULT STDMETHODCALLTYPE UnregisterEventNotification(
465 uint32_t eventCookie) = 0;
466};
467
468/* interface IDXCoreAdapterFactory1 */
469MIDL_INTERFACE("d5682e19-6d21-401c-827a-9a51a4ea35d7")
470IDXCoreAdapterFactory1 : public IDXCoreAdapterFactory
471{
472public:
473 virtual HRESULT STDMETHODCALLTYPE CreateAdapterListByWorkload(
474 DXCoreWorkload workload,
475 DXCoreRuntimeFilterFlags runtimeFilter,
476 DXCoreHardwareTypeFilterFlags hardwareTypeFilter,
477 REFIID riid,
478 _COM_Outptr_ void **ppvAdapterList) = 0;
479
480 template<class T>
481 HRESULT STDMETHODCALLTYPE CreateAdapterListByWorkload(
482 DXCoreWorkload workload,
483 DXCoreRuntimeFilterFlags runtimeFilter,
484 DXCoreHardwareTypeFilterFlags hardwareTypeFilter,
485 _COM_Outptr_ T **ppvAdapterList)
486 {
487 return CreateAdapterListByWorkload(workload,
488 runtimeFilter,
489 hardwareTypeFilter,
490 IID_PPV_ARGS(ppvAdapterList));
491 }
492};
493
494#endif // __cplusplus
495
496#endif // __dxcore_interface_h__
497
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.h b/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.h
new file mode 100644
index 0000000..f83aa01
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/include/directx/dxgicommon.idl b/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.idl
new file mode 100644
index 0000000..4e13486
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.idl
@@ -0,0 +1,53 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6import "ocidl.idl";
7
8typedef struct DXGI_RATIONAL
9{
10 UINT Numerator;
11 UINT Denominator;
12} DXGI_RATIONAL;
13
14// The following values are used with DXGI_SAMPLE_DESC::Quality:
15#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
16#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
17
18typedef struct DXGI_SAMPLE_DESC
19{
20 UINT Count;
21 UINT Quality;
22} DXGI_SAMPLE_DESC;
23
24typedef enum DXGI_COLOR_SPACE_TYPE
25{
26 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
27 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
28 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
29 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
30 DXGI_COLOR_SPACE_RESERVED = 4,
31 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
32 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
33 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
34 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
35 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
36 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
37 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
38 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
39 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
40 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
42 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
43 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
44 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
45 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
46 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
47 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
48 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
49 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
50 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
51 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
52} DXGI_COLOR_SPACE_TYPE;
53
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.h b/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.h
new file mode 100644
index 0000000..83e6c07
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.h
@@ -0,0 +1,144 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgiformat_h__
7#define __dxgiformat_h__
8
9#define DXGI_FORMAT_DEFINED 1
10
11typedef enum DXGI_FORMAT
12{
13 DXGI_FORMAT_UNKNOWN = 0,
14 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
15 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
16 DXGI_FORMAT_R32G32B32A32_UINT = 3,
17 DXGI_FORMAT_R32G32B32A32_SINT = 4,
18 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
19 DXGI_FORMAT_R32G32B32_FLOAT = 6,
20 DXGI_FORMAT_R32G32B32_UINT = 7,
21 DXGI_FORMAT_R32G32B32_SINT = 8,
22 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
23 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
24 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
25 DXGI_FORMAT_R16G16B16A16_UINT = 12,
26 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
27 DXGI_FORMAT_R16G16B16A16_SINT = 14,
28 DXGI_FORMAT_R32G32_TYPELESS = 15,
29 DXGI_FORMAT_R32G32_FLOAT = 16,
30 DXGI_FORMAT_R32G32_UINT = 17,
31 DXGI_FORMAT_R32G32_SINT = 18,
32 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
33 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
34 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
35 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
36 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
37 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
38 DXGI_FORMAT_R10G10B10A2_UINT = 25,
39 DXGI_FORMAT_R11G11B10_FLOAT = 26,
40 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
41 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
42 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
43 DXGI_FORMAT_R8G8B8A8_UINT = 30,
44 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
45 DXGI_FORMAT_R8G8B8A8_SINT = 32,
46 DXGI_FORMAT_R16G16_TYPELESS = 33,
47 DXGI_FORMAT_R16G16_FLOAT = 34,
48 DXGI_FORMAT_R16G16_UNORM = 35,
49 DXGI_FORMAT_R16G16_UINT = 36,
50 DXGI_FORMAT_R16G16_SNORM = 37,
51 DXGI_FORMAT_R16G16_SINT = 38,
52 DXGI_FORMAT_R32_TYPELESS = 39,
53 DXGI_FORMAT_D32_FLOAT = 40,
54 DXGI_FORMAT_R32_FLOAT = 41,
55 DXGI_FORMAT_R32_UINT = 42,
56 DXGI_FORMAT_R32_SINT = 43,
57 DXGI_FORMAT_R24G8_TYPELESS = 44,
58 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
59 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
60 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
61 DXGI_FORMAT_R8G8_TYPELESS = 48,
62 DXGI_FORMAT_R8G8_UNORM = 49,
63 DXGI_FORMAT_R8G8_UINT = 50,
64 DXGI_FORMAT_R8G8_SNORM = 51,
65 DXGI_FORMAT_R8G8_SINT = 52,
66 DXGI_FORMAT_R16_TYPELESS = 53,
67 DXGI_FORMAT_R16_FLOAT = 54,
68 DXGI_FORMAT_D16_UNORM = 55,
69 DXGI_FORMAT_R16_UNORM = 56,
70 DXGI_FORMAT_R16_UINT = 57,
71 DXGI_FORMAT_R16_SNORM = 58,
72 DXGI_FORMAT_R16_SINT = 59,
73 DXGI_FORMAT_R8_TYPELESS = 60,
74 DXGI_FORMAT_R8_UNORM = 61,
75 DXGI_FORMAT_R8_UINT = 62,
76 DXGI_FORMAT_R8_SNORM = 63,
77 DXGI_FORMAT_R8_SINT = 64,
78 DXGI_FORMAT_A8_UNORM = 65,
79 DXGI_FORMAT_R1_UNORM = 66,
80 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
81 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
82 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
83 DXGI_FORMAT_BC1_TYPELESS = 70,
84 DXGI_FORMAT_BC1_UNORM = 71,
85 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
86 DXGI_FORMAT_BC2_TYPELESS = 73,
87 DXGI_FORMAT_BC2_UNORM = 74,
88 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
89 DXGI_FORMAT_BC3_TYPELESS = 76,
90 DXGI_FORMAT_BC3_UNORM = 77,
91 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
92 DXGI_FORMAT_BC4_TYPELESS = 79,
93 DXGI_FORMAT_BC4_UNORM = 80,
94 DXGI_FORMAT_BC4_SNORM = 81,
95 DXGI_FORMAT_BC5_TYPELESS = 82,
96 DXGI_FORMAT_BC5_UNORM = 83,
97 DXGI_FORMAT_BC5_SNORM = 84,
98 DXGI_FORMAT_B5G6R5_UNORM = 85,
99 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
100 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
101 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
102 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
103 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
104 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
105 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
106 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
107 DXGI_FORMAT_BC6H_TYPELESS = 94,
108 DXGI_FORMAT_BC6H_UF16 = 95,
109 DXGI_FORMAT_BC6H_SF16 = 96,
110 DXGI_FORMAT_BC7_TYPELESS = 97,
111 DXGI_FORMAT_BC7_UNORM = 98,
112 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
113 DXGI_FORMAT_AYUV = 100,
114 DXGI_FORMAT_Y410 = 101,
115 DXGI_FORMAT_Y416 = 102,
116 DXGI_FORMAT_NV12 = 103,
117 DXGI_FORMAT_P010 = 104,
118 DXGI_FORMAT_P016 = 105,
119 DXGI_FORMAT_420_OPAQUE = 106,
120 DXGI_FORMAT_YUY2 = 107,
121 DXGI_FORMAT_Y210 = 108,
122 DXGI_FORMAT_Y216 = 109,
123 DXGI_FORMAT_NV11 = 110,
124 DXGI_FORMAT_AI44 = 111,
125 DXGI_FORMAT_IA44 = 112,
126 DXGI_FORMAT_P8 = 113,
127 DXGI_FORMAT_A8P8 = 114,
128 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
129
130 DXGI_FORMAT_P208 = 130,
131 DXGI_FORMAT_V208 = 131,
132 DXGI_FORMAT_V408 = 132,
133
134
135 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
136 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
137
138 DXGI_FORMAT_A4B4G4R4_UNORM = 191,
139
140
141 DXGI_FORMAT_FORCE_UINT = 0xffffffff
142} DXGI_FORMAT;
143
144#endif // __dxgiformat_h__
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.idl b/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.idl
new file mode 100644
index 0000000..34cc883
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.idl
@@ -0,0 +1,139 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef enum DXGI_FORMAT
8{
9 DXGI_FORMAT_UNKNOWN = 0,
10 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
11 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
12 DXGI_FORMAT_R32G32B32A32_UINT = 3,
13 DXGI_FORMAT_R32G32B32A32_SINT = 4,
14 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
15 DXGI_FORMAT_R32G32B32_FLOAT = 6,
16 DXGI_FORMAT_R32G32B32_UINT = 7,
17 DXGI_FORMAT_R32G32B32_SINT = 8,
18 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
19 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
20 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
21 DXGI_FORMAT_R16G16B16A16_UINT = 12,
22 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
23 DXGI_FORMAT_R16G16B16A16_SINT = 14,
24 DXGI_FORMAT_R32G32_TYPELESS = 15,
25 DXGI_FORMAT_R32G32_FLOAT = 16,
26 DXGI_FORMAT_R32G32_UINT = 17,
27 DXGI_FORMAT_R32G32_SINT = 18,
28 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
29 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
30 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
31 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
32 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
33 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
34 DXGI_FORMAT_R10G10B10A2_UINT = 25,
35 DXGI_FORMAT_R11G11B10_FLOAT = 26,
36 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
37 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
38 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
39 DXGI_FORMAT_R8G8B8A8_UINT = 30,
40 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
41 DXGI_FORMAT_R8G8B8A8_SINT = 32,
42 DXGI_FORMAT_R16G16_TYPELESS = 33,
43 DXGI_FORMAT_R16G16_FLOAT = 34,
44 DXGI_FORMAT_R16G16_UNORM = 35,
45 DXGI_FORMAT_R16G16_UINT = 36,
46 DXGI_FORMAT_R16G16_SNORM = 37,
47 DXGI_FORMAT_R16G16_SINT = 38,
48 DXGI_FORMAT_R32_TYPELESS = 39,
49 DXGI_FORMAT_D32_FLOAT = 40,
50 DXGI_FORMAT_R32_FLOAT = 41,
51 DXGI_FORMAT_R32_UINT = 42,
52 DXGI_FORMAT_R32_SINT = 43,
53 DXGI_FORMAT_R24G8_TYPELESS = 44,
54 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
55 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
56 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
57 DXGI_FORMAT_R8G8_TYPELESS = 48,
58 DXGI_FORMAT_R8G8_UNORM = 49,
59 DXGI_FORMAT_R8G8_UINT = 50,
60 DXGI_FORMAT_R8G8_SNORM = 51,
61 DXGI_FORMAT_R8G8_SINT = 52,
62 DXGI_FORMAT_R16_TYPELESS = 53,
63 DXGI_FORMAT_R16_FLOAT = 54,
64 DXGI_FORMAT_D16_UNORM = 55,
65 DXGI_FORMAT_R16_UNORM = 56,
66 DXGI_FORMAT_R16_UINT = 57,
67 DXGI_FORMAT_R16_SNORM = 58,
68 DXGI_FORMAT_R16_SINT = 59,
69 DXGI_FORMAT_R8_TYPELESS = 60,
70 DXGI_FORMAT_R8_UNORM = 61,
71 DXGI_FORMAT_R8_UINT = 62,
72 DXGI_FORMAT_R8_SNORM = 63,
73 DXGI_FORMAT_R8_SINT = 64,
74 DXGI_FORMAT_A8_UNORM = 65,
75 DXGI_FORMAT_R1_UNORM = 66,
76 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
77 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
78 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
79 DXGI_FORMAT_BC1_TYPELESS = 70,
80 DXGI_FORMAT_BC1_UNORM = 71,
81 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
82 DXGI_FORMAT_BC2_TYPELESS = 73,
83 DXGI_FORMAT_BC2_UNORM = 74,
84 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
85 DXGI_FORMAT_BC3_TYPELESS = 76,
86 DXGI_FORMAT_BC3_UNORM = 77,
87 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
88 DXGI_FORMAT_BC4_TYPELESS = 79,
89 DXGI_FORMAT_BC4_UNORM = 80,
90 DXGI_FORMAT_BC4_SNORM = 81,
91 DXGI_FORMAT_BC5_TYPELESS = 82,
92 DXGI_FORMAT_BC5_UNORM = 83,
93 DXGI_FORMAT_BC5_SNORM = 84,
94 DXGI_FORMAT_B5G6R5_UNORM = 85,
95 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
96 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
97 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
98 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
99 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
100 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
101 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
102 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
103 DXGI_FORMAT_BC6H_TYPELESS = 94,
104 DXGI_FORMAT_BC6H_UF16 = 95,
105 DXGI_FORMAT_BC6H_SF16 = 96,
106 DXGI_FORMAT_BC7_TYPELESS = 97,
107 DXGI_FORMAT_BC7_UNORM = 98,
108 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
109 DXGI_FORMAT_AYUV = 100,
110 DXGI_FORMAT_Y410 = 101,
111 DXGI_FORMAT_Y416 = 102,
112 DXGI_FORMAT_NV12 = 103,
113 DXGI_FORMAT_P010 = 104,
114 DXGI_FORMAT_P016 = 105,
115 DXGI_FORMAT_420_OPAQUE = 106,
116 DXGI_FORMAT_YUY2 = 107,
117 DXGI_FORMAT_Y210 = 108,
118 DXGI_FORMAT_Y216 = 109,
119 DXGI_FORMAT_NV11 = 110,
120 DXGI_FORMAT_AI44 = 111,
121 DXGI_FORMAT_IA44 = 112,
122 DXGI_FORMAT_P8 = 113,
123 DXGI_FORMAT_A8P8 = 114,
124 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
125
126 DXGI_FORMAT_P208 = 130,
127 DXGI_FORMAT_V208 = 131,
128 DXGI_FORMAT_V408 = 132,
129
130
131 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
132 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
133
134 DXGI_FORMAT_A4B4G4R4_UNORM = 191,
135
136
137 DXGI_FORMAT_FORCE_UINT = 0xffffffff
138} DXGI_FORMAT;
139
diff --git a/contrib/DirectX-Headers-1.618.2/include/dxguids/dxguids.h b/contrib/DirectX-Headers-1.618.2/include/dxguids/dxguids.h
new file mode 100644
index 0000000..7615570
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/dxguids/dxguids.h
@@ -0,0 +1,201 @@
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
25template <typename T> GUID uuidof() = delete;
26template <typename T> GUID uuidof(T*) { return uuidof<T>(); }
27template <typename T> GUID uuidof(T**) { return uuidof<T>(); }
28template <typename T> GUID uuidof(T&) { return uuidof<T>(); }
29
30// Each COM interface (e.g. ID3D12Device) has a unique interface ID (IID) associated with it. With MSVC, the IID is defined
31// along with the interface declaration using compiler intrinsics (__declspec(uuid(...)); the IID can then be retrieved
32// using __uuidof. These intrinsics are not supported with all toolchains, so these helpers redefine IID values that can be
33// used with the various adapter COM helpers (ComPtr, IID_PPV_ARGS, etc.) for Linux. IIDs are stable and cannot change, but as
34// a precaution we statically assert the values are as expected when compiling for Windows.
35#if defined(_MSC_VER)
36#define _DXGUIDS_SUPPORT_STATIC_ASSERT_IID
37#elif defined(__CRT_UUID_DECL)
38/* match _mingw.h */
39#if __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L
40#define _DXGUIDS_SUPPORT_STATIC_ASSERT_IID
41#endif /* __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L */
42#endif /* _MSC_VER */
43
44#ifdef _DXGUIDS_SUPPORT_STATIC_ASSERT_IID
45#define _WINADAPTER_ASSERT_IID(InterfaceName) \
46static_assert(ConstexprIsEqualGUID(uuidof<InterfaceName>(), __uuidof(InterfaceName)), "GUID definition mismatch: "#InterfaceName);
47#else
48#define _WINADAPTER_ASSERT_IID(InterfaceName)
49#endif
50
51#ifdef __CRT_UUID_DECL
52#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
53template <> constexpr GUID uuidof<InterfaceName>() \
54{ \
55 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
56} \
57__CRT_UUID_DECL(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
58_WINADAPTER_ASSERT_IID(InterfaceName)
59#else
60#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
61template <> constexpr GUID uuidof<InterfaceName>() \
62{ \
63 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
64} \
65_WINADAPTER_ASSERT_IID(InterfaceName)
66#endif /* defined(_WIN32) && defined(__MINGW32__) */
67
68// Direct3D
69#ifdef __d3d12_h__
70WINADAPTER_IID(ID3D12Object, 0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8);
71WINADAPTER_IID(ID3D12DeviceChild, 0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57);
72WINADAPTER_IID(ID3D12RootSignature, 0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14);
73WINADAPTER_IID(ID3D12RootSignatureDeserializer, 0x34AB647B, 0x3CC8, 0x46AC, 0x84, 0x1B, 0xC0, 0x96, 0x56, 0x45, 0xC0, 0x46);
74WINADAPTER_IID(ID3D12VersionedRootSignatureDeserializer, 0x7F91CE67, 0x090C, 0x4BB7, 0xB7, 0x8E, 0xED, 0x8F, 0xF2, 0xE3, 0x1D, 0xA0);
75WINADAPTER_IID(ID3D12Pageable, 0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6);
76WINADAPTER_IID(ID3D12Heap, 0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3);
77WINADAPTER_IID(ID3D12Resource, 0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad);
78WINADAPTER_IID(ID3D12CommandAllocator, 0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24);
79WINADAPTER_IID(ID3D12Fence, 0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76);
80WINADAPTER_IID(ID3D12Fence1, 0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a);
81WINADAPTER_IID(ID3D12PipelineState, 0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45);
82WINADAPTER_IID(ID3D12DescriptorHeap, 0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51);
83WINADAPTER_IID(ID3D12QueryHeap, 0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4);
84WINADAPTER_IID(ID3D12CommandSignature, 0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1);
85WINADAPTER_IID(ID3D12CommandList, 0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5);
86WINADAPTER_IID(ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55);
87WINADAPTER_IID(ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7);
88WINADAPTER_IID(ID3D12GraphicsCommandList2, 0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28);
89WINADAPTER_IID(ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed);
90WINADAPTER_IID(ID3D12CommandQueue1, 0x3a3c3165, 0x0ee7, 0x4b8e, 0xa0, 0xaf, 0x63, 0x56, 0xb4, 0xc3, 0xbb, 0xb9);
91WINADAPTER_IID(ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7);
92WINADAPTER_IID(ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f);
93WINADAPTER_IID(ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3);
94WINADAPTER_IID(ID3D12Device1, 0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e);
95WINADAPTER_IID(ID3D12Device2, 0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28);
96WINADAPTER_IID(ID3D12Device3, 0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98);
97WINADAPTER_IID(ID3D12ProtectedSession, 0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B);
98WINADAPTER_IID(ID3D12ProtectedResourceSession, 0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0x0A, 0x09, 0x9C, 0x3D);
99WINADAPTER_IID(ID3D12Device4, 0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5);
100WINADAPTER_IID(ID3D12LifetimeOwner, 0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8);
101WINADAPTER_IID(ID3D12SwapChainAssistant, 0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f);
102WINADAPTER_IID(ID3D12LifetimeTracker, 0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13);
103WINADAPTER_IID(ID3D12StateObject, 0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d);
104WINADAPTER_IID(ID3D12StateObjectProperties, 0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60);
105WINADAPTER_IID(ID3D12Device5, 0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d);
106WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings, 0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63);
107WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings1, 0xDBD5AE51, 0x3317, 0x4F0A, 0xAD, 0xF9, 0x1D, 0x7C, 0xED, 0xCA, 0xAE, 0x0B);
108WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings2, 0x61552388, 0x01ab, 0x4008, 0xa4, 0x36, 0x83, 0xdb, 0x18, 0x95, 0x66, 0xea);
109WINADAPTER_IID(ID3D12DeviceRemovedExtendedData, 0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71);
110WINADAPTER_IID(ID3D12DeviceRemovedExtendedData1, 0x9727A022, 0xCF1D, 0x4DDA, 0x9E, 0xBA, 0xEF, 0xFA, 0x65, 0x3F, 0xC5, 0x06);
111WINADAPTER_IID(ID3D12DeviceRemovedExtendedData2, 0x67FC5816, 0xE4CA, 0x4915, 0xBF, 0x18, 0x42, 0x54, 0x12, 0x72, 0xDA, 0x54);
112WINADAPTER_IID(ID3D12Device6, 0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc);
113WINADAPTER_IID(ID3D12ProtectedResourceSession1, 0xD6F12DD6, 0x76FB, 0x406E, 0x89, 0x61, 0x42, 0x96, 0xEE, 0xFC, 0x04, 0x09);
114WINADAPTER_IID(ID3D12Device7, 0x5c014b53, 0x68a1, 0x4b9b, 0x8b, 0xd1, 0xdd, 0x60, 0x46, 0xb9, 0x35, 0x8b);
115WINADAPTER_IID(ID3D12Device8, 0x9218E6BB, 0xF944, 0x4F7E, 0xA7, 0x5C, 0xB1, 0xB2, 0xC7, 0xB7, 0x01, 0xF3);
116WINADAPTER_IID(ID3D12Resource1, 0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19);
117WINADAPTER_IID(ID3D12Resource2, 0xBE36EC3B, 0xEA85, 0x4AEB, 0xA4, 0x5A, 0xE9, 0xD7, 0x64, 0x04, 0xA4, 0x95);
118WINADAPTER_IID(ID3D12Heap1, 0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D);
119WINADAPTER_IID(ID3D12GraphicsCommandList3, 0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D);
120WINADAPTER_IID(ID3D12MetaCommand, 0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70);
121WINADAPTER_IID(ID3D12GraphicsCommandList4, 0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74);
122WINADAPTER_IID(ID3D12ShaderCacheSession, 0x28e2495d, 0x0f64, 0x4ae4, 0xa6, 0xec, 0x12, 0x92, 0x55, 0xdc, 0x49, 0xa8);
123WINADAPTER_IID(ID3D12Device9, 0x4c80e962, 0xf032, 0x4f60, 0xbc, 0x9e, 0xeb, 0xc2, 0xcf, 0xa1, 0xd8, 0x3c);
124WINADAPTER_IID(ID3D12Device10, 0x517f8718, 0xaa66, 0x49f9, 0xb0, 0x2b, 0xa7, 0xab, 0x89, 0xc0, 0x60, 0x31);
125WINADAPTER_IID(ID3D12Device11, 0x5405c344, 0xd457, 0x444e, 0xb4, 0xdd, 0x23, 0x66, 0xe4, 0x5a, 0xee, 0x39);
126WINADAPTER_IID(ID3D12VirtualizationGuestDevice, 0xbc66d368, 0x7373, 0x4943, 0x87, 0x57, 0xfc, 0x87, 0xdc, 0x79, 0xe4, 0x76);
127WINADAPTER_IID(ID3D12Tools, 0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5);
128WINADAPTER_IID(ID3D12SDKConfiguration, 0xe9eb5314, 0x33aa, 0x42b2, 0xa7, 0x18, 0xd7, 0x7f, 0x58, 0xb1, 0xf1, 0xc7);
129WINADAPTER_IID(ID3D12SDKConfiguration1, 0x8aaf9303, 0xad25, 0x48b9, 0x9a, 0x57, 0xd9, 0xc3, 0x7e, 0x00, 0x9d, 0x9f);
130WINADAPTER_IID(ID3D12DeviceFactory, 0x61f307d3, 0xd34e, 0x4e7c, 0x83, 0x74, 0x3b, 0xa4, 0xde, 0x23, 0xcc, 0xcb);
131WINADAPTER_IID(ID3D12DeviceConfiguration, 0x78dbf87b, 0xf766, 0x422b, 0xa6, 0x1c, 0xc8, 0xc4, 0x46, 0xbd, 0xb9, 0xad);
132WINADAPTER_IID(ID3D12GraphicsCommandList5, 0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea);
133WINADAPTER_IID(ID3D12GraphicsCommandList6, 0xc3827890, 0xe548, 0x4cfa, 0x96, 0xcf, 0x56, 0x89, 0xa9, 0x37, 0x0f, 0x80);
134WINADAPTER_IID(ID3D12GraphicsCommandList7, 0xdd171223, 0x8b61, 0x4769, 0x90, 0xe3, 0x16, 0x0c, 0xcd, 0xe4, 0xe2, 0xc1);
135WINADAPTER_IID(ID3D12GraphicsCommandList8, 0xee936ef9, 0x599d, 0x4d28, 0x93, 0x8e, 0x23, 0xc4, 0xad, 0x05, 0xce, 0x51);
136#endif
137
138// Direct3D Video
139#ifdef __d3d12video_h__
140WINADAPTER_IID(ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
141WINADAPTER_IID(ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
142WINADAPTER_IID(ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
143WINADAPTER_IID(ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
144WINADAPTER_IID(ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
145WINADAPTER_IID(ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
146WINADAPTER_IID(ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
147WINADAPTER_IID(ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
148WINADAPTER_IID(ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
149WINADAPTER_IID(ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
150WINADAPTER_IID(ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
151WINADAPTER_IID(ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
152WINADAPTER_IID(ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
153WINADAPTER_IID(ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
154WINADAPTER_IID(ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
155WINADAPTER_IID(ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
156WINADAPTER_IID(ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
157WINADAPTER_IID(ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
158WINADAPTER_IID(ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
159WINADAPTER_IID(ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
160WINADAPTER_IID(ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
161WINADAPTER_IID(ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
162WINADAPTER_IID(ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
163WINADAPTER_IID(ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
164WINADAPTER_IID(ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
165WINADAPTER_IID(ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
166WINADAPTER_IID(ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
167WINADAPTER_IID(ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
168WINADAPTER_IID(ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
169WINADAPTER_IID(ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
170#endif
171
172#ifdef __d3d12sdklayers_h__
173WINADAPTER_IID(ID3D12Debug, 0x344488b7, 0x6846, 0x474b, 0xb9, 0x89, 0xf0, 0x27, 0x44, 0x82, 0x45, 0xe0);
174WINADAPTER_IID(ID3D12Debug1, 0xaffaa4ca, 0x63fe, 0x4d8e, 0xb8, 0xad, 0x15, 0x90, 0x00, 0xaf, 0x43, 0x04);
175WINADAPTER_IID(ID3D12Debug2, 0x93a665c4, 0xa3b2, 0x4e5d, 0xb6, 0x92, 0xa2, 0x6a, 0xe1, 0x4e, 0x33, 0x74);
176WINADAPTER_IID(ID3D12Debug3, 0x5cf4e58f, 0xf671, 0x4ff1, 0xa5, 0x42, 0x36, 0x86, 0xe3, 0xd1, 0x53, 0xd1);
177WINADAPTER_IID(ID3D12Debug4, 0x014b816e, 0x9ec5, 0x4a2f, 0xa8, 0x45, 0xff, 0xbe, 0x44, 0x1c, 0xe1, 0x3a);
178WINADAPTER_IID(ID3D12Debug5, 0x548d6b12, 0x09fa, 0x40e0, 0x90, 0x69, 0x5d, 0xcd, 0x58, 0x9a, 0x52, 0xc9);
179WINADAPTER_IID(ID3D12Debug6, 0x82a816d6, 0x5d01, 0x4157, 0x97, 0xd0, 0x49, 0x75, 0x46, 0x3f, 0xd1, 0xed);
180WINADAPTER_IID(ID3D12DebugDevice1, 0xa9b71770, 0xd099, 0x4a65, 0xa6, 0x98, 0x3d, 0xee, 0x10, 0x02, 0x0f, 0x88);
181WINADAPTER_IID(ID3D12DebugDevice, 0x3febd6dd, 0x4973, 0x4787, 0x81, 0x94, 0xe4, 0x5f, 0x9e, 0x28, 0x92, 0x3e);
182WINADAPTER_IID(ID3D12DebugDevice2, 0x60eccbc1, 0x378d, 0x4df1, 0x89, 0x4c, 0xf8, 0xac, 0x5c, 0xe4, 0xd7, 0xdd);
183WINADAPTER_IID(ID3D12DebugCommandQueue, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3a);
184WINADAPTER_IID(ID3D12DebugCommandQueue1, 0x16be35a2, 0xbfd6, 0x49f2, 0xbc, 0xae, 0xea, 0xae, 0x4a, 0xff, 0x86, 0x2d);
185WINADAPTER_IID(ID3D12DebugCommandList1, 0x102ca951, 0x311b, 0x4b01, 0xb1, 0x1f, 0xec, 0xb8, 0x3e, 0x06, 0x1b, 0x37);
186WINADAPTER_IID(ID3D12DebugCommandList, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3f);
187WINADAPTER_IID(ID3D12DebugCommandList2, 0xaeb575cf, 0x4e06, 0x48be, 0xba, 0x3b, 0xc4, 0x50, 0xfc, 0x96, 0x65, 0x2e);
188WINADAPTER_IID(ID3D12DebugCommandList3, 0x197d5e15, 0x4d37, 0x4d34, 0xaf, 0x78, 0x72, 0x4c, 0xd7, 0x0f, 0xdb, 0x1f);
189WINADAPTER_IID(ID3D12SharingContract, 0x0adf7d52, 0x929c, 0x4e61, 0xad, 0xdb, 0xff, 0xed, 0x30, 0xde, 0x66, 0xef);
190WINADAPTER_IID(ID3D12InfoQueue, 0x0742a90b, 0xc387, 0x483f, 0xb9, 0x46, 0x30, 0xa7, 0xe4, 0xe6, 0x14, 0x58);
191WINADAPTER_IID(ID3D12InfoQueue1, 0x2852dd88, 0xb484, 0x4c0c, 0xb6, 0xb1, 0x67, 0x16, 0x85, 0x00, 0xe6, 0x00);
192#endif
193
194// DXCore
195#ifdef __dxcore_interface_h__
196WINADAPTER_IID(IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
197WINADAPTER_IID(IDXCoreAdapterFactory1, 0xd5682e19, 0x6d21, 0x401c, 0x82, 0x7a, 0x9a, 0x51, 0xa4, 0xea, 0x35, 0xd7);
198WINADAPTER_IID(IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
199WINADAPTER_IID(IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
200WINADAPTER_IID(IDXCoreAdapter1, 0xa0783366, 0xcfa3, 0x43be, 0x9d, 0x79, 0x55, 0xb2, 0xda, 0x97, 0xc6, 0x3c);
201#endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/basetsd.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/basetsd.h
new file mode 100644
index 0000000..4c75ef2
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/basetsd.h
@@ -0,0 +1,406 @@
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, WINBOOL;
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;
34typedef int PALETTEENTRY;
35typedef int HDC;
36typedef uint16_t WORD;
37typedef void* PVOID;
38typedef char BOOLEAN;
39typedef uint64_t ULONGLONG;
40typedef uint16_t USHORT, *PUSHORT;
41typedef int64_t LONGLONG, *PLONGLONG;
42typedef int64_t LONG_PTR, *PLONG_PTR;
43typedef int64_t LONG64, *PLONG64;
44typedef uint64_t ULONG64, *PULONG64;
45typedef wchar_t WCHAR, *PWSTR;
46typedef uint8_t UCHAR, *PUCHAR;
47typedef uint64_t ULONG_PTR, *PULONG_PTR;
48typedef uint64_t UINT_PTR, *PUINT_PTR;
49typedef int64_t INT_PTR, *PINT_PTR;
50
51// Note: WCHAR is not the same between Windows and Linux, to enable
52// string manipulation APIs to work with resulting strings.
53// APIs to D3D/DXCore will work on Linux wchars, but beware with
54// interactions directly with the Windows kernel.
55typedef char CHAR, *PSTR, *LPSTR, TCHAR, *PTSTR;
56typedef const char *LPCSTR, *PCSTR, *LPCTSTR, *PCTSTR;
57typedef wchar_t WCHAR, *PWSTR, *LPWSTR, *PWCHAR;
58typedef const wchar_t *LPCWSTR, *PCWSTR;
59
60#undef LONG_MAX
61#define LONG_MAX INT_MAX
62#undef ULONG_MAX
63#define ULONG_MAX UINT_MAX
64
65// Misc defines
66#define MIDL_INTERFACE(x) interface
67#define __analysis_assume(x)
68#define TRUE 1u
69#define FALSE 0u
70#define DECLSPEC_UUID(x)
71#define DECLSPEC_NOVTABLE
72#define DECLSPEC_SELECTANY
73#ifdef __cplusplus
74#define EXTERN_C extern "C"
75#else
76#define EXTERN_C extern
77#endif
78#define APIENTRY
79#define OUT
80#define IN
81#define CONST const
82#define MAX_PATH 260
83#define GENERIC_ALL 0x10000000L
84#define C_ASSERT(expr) static_assert((expr))
85#define _countof(a) (sizeof(a) / sizeof(*(a)))
86
87typedef struct tagRECTL
88{
89 LONG left;
90 LONG top;
91 LONG right;
92 LONG bottom;
93} RECTL;
94
95typedef struct tagPOINT
96{
97 int x;
98 int y;
99} POINT;
100
101typedef struct _GUID {
102 uint32_t Data1;
103 uint16_t Data2;
104 uint16_t Data3;
105 uint8_t Data4[ 8 ];
106} GUID;
107
108#ifdef INITGUID
109#ifdef __cplusplus
110#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID DECLSPEC_SELECTANY name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
111#else
112#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) const GUID DECLSPEC_SELECTANY name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
113#endif
114#else
115#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
116#endif
117
118typedef GUID IID;
119typedef GUID UUID;
120typedef GUID CLSID;
121#ifdef __cplusplus
122#define REFGUID const GUID &
123#define REFIID const IID &
124#define REFCLSID const IID &
125
126__inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
127{
128 return (
129 ((uint32_t *)&rguid1)[0] == ((uint32_t *)&rguid2)[0] &&
130 ((uint32_t *)&rguid1)[1] == ((uint32_t *)&rguid2)[1] &&
131 ((uint32_t *)&rguid1)[2] == ((uint32_t *)&rguid2)[2] &&
132 ((uint32_t *)&rguid1)[3] == ((uint32_t *)&rguid2)[3]);
133}
134
135inline bool operator==(REFGUID guidOne, REFGUID guidOther)
136{
137 return !!InlineIsEqualGUID(guidOne, guidOther);
138}
139
140inline bool operator!=(REFGUID guidOne, REFGUID guidOther)
141{
142 return !(guidOne == guidOther);
143}
144
145#else
146#define REFGUID const GUID *
147#define REFIID const IID *
148#define REFCLSID const IID *
149#endif
150
151// SAL annotations
152#define _In_
153#define _In_z_
154#define _In_opt_
155#define _In_opt_z_
156#define _In_reads_(x)
157#define _In_reads_opt_(x)
158#define _In_reads_bytes_(x)
159#define _In_reads_bytes_opt_(x)
160#define _In_range_(x, y)
161#define _In_bytecount_(x)
162#define _Out_
163#define _Out_opt_
164#define _Outptr_
165#define _Outptr_opt_result_z_
166#define _Outptr_opt_result_bytebuffer_(x)
167#define _COM_Outptr_
168#define _COM_Outptr_result_maybenull_
169#define _COM_Outptr_opt_
170#define _COM_Outptr_opt_result_maybenull_
171#define _Out_writes_(x)
172#define _Out_writes_z_(x)
173#define _Out_writes_opt_(x)
174#define _Out_writes_all_(x)
175#define _Out_writes_all_opt_(x)
176#define _Out_writes_to_opt_(x, y)
177#define _Out_writes_bytes_(x)
178#define _Out_writes_bytes_all_(x)
179#define _Out_writes_bytes_all_opt_(x)
180#define _Out_writes_bytes_opt_(x)
181#define _Inout_
182#define _Inout_opt_
183#define _Inout_updates_(x)
184#define _Inout_updates_bytes_(x)
185#define _Field_size_(x)
186#define _Field_size_opt_(x)
187#define _Field_size_bytes_(x)
188#define _Field_size_full_(x)
189#define _Field_size_full_opt_(x)
190#define _Field_size_bytes_full_(x)
191#define _Field_size_bytes_full_opt_(x)
192#define _Field_size_bytes_part_(x, y)
193#define _Field_range_(x, y)
194#define _Field_z_
195#define _Check_return_
196#define _IRQL_requires_(x)
197#define _IRQL_requires_min_(x)
198#define _IRQL_requires_max_(x)
199#define _At_(x, y)
200#define _Always_(x)
201#define _Return_type_success_(x)
202#define _Translates_Win32_to_HRESULT_(x)
203#define _Maybenull_
204#define _Outptr_result_maybenull_
205#define _Outptr_result_nullonfailure_
206#define _Analysis_assume_(x)
207#define _Success_(x)
208#define _In_count_(x)
209#define _In_opt_count_(x)
210#define _Use_decl_annotations_
211#define _Null_terminated_
212
213// Calling conventions
214#define __cdecl
215#define __stdcall
216#define STDMETHODCALLTYPE
217#define STDAPICALLTYPE
218#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
219#define WINAPI
220
221#define interface struct
222#if defined (__cplusplus) && !defined (CINTERFACE)
223#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
224#define STDMETHOD_(type, method) virtual type STDMETHODCALLTYPE method
225#define PURE = 0
226#define THIS_
227#define THIS void
228#define DECLARE_INTERFACE(iface) interface DECLSPEC_NOVTABLE iface
229#define DECLARE_INTERFACE_(iface, baseiface) interface DECLSPEC_NOVTABLE iface : public baseiface
230
231interface IUnknown;
232extern "C++"
233{
234 template<typename T> void** IID_PPV_ARGS_Helper(T** pp)
235 {
236 (void)static_cast<IUnknown*>(*pp);
237 return reinterpret_cast<void**>(pp);
238 }
239}
240#define IID_PPV_ARGS(ppType) __uuidof (**(ppType)), IID_PPV_ARGS_Helper (ppType)
241#else
242#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE *method)
243#define STDMETHOD_(type, method) type (STDMETHODCALLTYPE *method)
244#define PURE
245#define THIS_ INTERFACE *This,
246#define THIS INTERFACE *This
247#ifdef CONST_VTABLE
248#define DECLARE_INTERFACE(iface) typedef interface iface { const struct iface##Vtbl *lpVtbl; } iface; typedef const struct iface##Vtbl iface##Vtbl; const struct iface##Vtbl
249#else
250#define DECLARE_INTERFACE(iface) typedef interface iface { struct iface##Vtbl *lpVtbl; } iface; typedef struct iface##Vtbl iface##Vtbl; struct iface##Vtbl
251#endif
252#define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE (iface)
253#endif
254
255#define IFACEMETHOD(method) /*override*/ STDMETHOD (method)
256#define IFACEMETHOD_(type, method) /*override*/ STDMETHOD_(type, method)
257#ifndef BEGIN_INTERFACE
258#define BEGIN_INTERFACE
259#define END_INTERFACE
260#endif
261
262// Error codes
263typedef LONG HRESULT;
264#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
265#define FAILED(hr) (((HRESULT)(hr)) < 0)
266#define S_OK ((HRESULT)0L)
267#define S_FALSE ((HRESULT)1L)
268#define E_NOTIMPL ((HRESULT)0x80004001L)
269#define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
270#define E_INVALIDARG ((HRESULT)0x80070057L)
271#define E_NOINTERFACE ((HRESULT)0x80004002L)
272#define E_POINTER ((HRESULT)0x80004003L)
273#define E_HANDLE ((HRESULT)0x80070006L)
274#define E_ABORT ((HRESULT)0x80004004L)
275#define E_FAIL ((HRESULT)0x80004005L)
276#define E_ACCESSDENIED ((HRESULT)0x80070005L)
277#define E_UNEXPECTED ((HRESULT)0x8000FFFFL)
278#define DXGI_ERROR_INVALID_CALL ((HRESULT)0x887A0001L)
279#define DXGI_ERROR_NOT_FOUND ((HRESULT)0x887A0002L)
280#define DXGI_ERROR_MORE_DATA ((HRESULT)0x887A0003L)
281#define DXGI_ERROR_UNSUPPORTED ((HRESULT)0x887A0004L)
282#define DXGI_ERROR_DEVICE_REMOVED ((HRESULT)0x887A0005L)
283#define DXGI_ERROR_DEVICE_HUNG ((HRESULT)0x887A0006L)
284#define DXGI_ERROR_DEVICE_RESET ((HRESULT)0x887A0007L)
285#define DXGI_ERROR_DRIVER_INTERNAL_ERROR ((HRESULT)0x887A0020L)
286#define DXGI_ERROR_SDK_COMPONENT_MISSING ((HRESULT)0x887A002DL)
287
288typedef struct _LUID
289{
290 ULONG LowPart;
291 LONG HighPart;
292} LUID;
293
294typedef struct _RECT
295{
296 int left;
297 int top;
298 int right;
299 int bottom;
300} RECT;
301
302typedef union _LARGE_INTEGER {
303 struct {
304 uint32_t LowPart;
305 uint32_t HighPart;
306 } u;
307 int64_t QuadPart;
308} LARGE_INTEGER;
309typedef LARGE_INTEGER *PLARGE_INTEGER;
310
311typedef union _ULARGE_INTEGER {
312 struct {
313 uint32_t LowPart;
314 uint32_t HighPart;
315 } u;
316 uint64_t QuadPart;
317} ULARGE_INTEGER;
318typedef ULARGE_INTEGER *PULARGE_INTEGER;
319
320#define DECLARE_HANDLE(name) \
321 struct name##__ { \
322 int unused; \
323 }; \
324 typedef struct name##__ *name
325
326typedef struct _SECURITY_ATTRIBUTES {
327 DWORD nLength;
328 LPVOID lpSecurityDescriptor;
329 WINBOOL bInheritHandle;
330} SECURITY_ATTRIBUTES;
331
332struct STATSTG;
333
334#ifdef __cplusplus
335// ENUM_FLAG_OPERATORS
336// Define operator overloads to enable bit operations on enum values that are
337// used to define flags. Use DEFINE_ENUM_FLAG_OPERATORS(YOUR_TYPE) to enable these
338// operators on YOUR_TYPE.
339extern "C++" {
340 template <size_t S>
341 struct _ENUM_FLAG_INTEGER_FOR_SIZE;
342
343 template <>
344 struct _ENUM_FLAG_INTEGER_FOR_SIZE<1>
345 {
346 typedef int8_t type;
347 };
348
349 template <>
350 struct _ENUM_FLAG_INTEGER_FOR_SIZE<2>
351 {
352 typedef int16_t type;
353 };
354
355 template <>
356 struct _ENUM_FLAG_INTEGER_FOR_SIZE<4>
357 {
358 typedef int32_t type;
359 };
360
361 template <>
362 struct _ENUM_FLAG_INTEGER_FOR_SIZE<8>
363 {
364 typedef int64_t type;
365 };
366
367 // used as an approximation of std::underlying_type<T>
368 template <class T>
369 struct _ENUM_FLAG_SIZED_INTEGER
370 {
371 typedef typename _ENUM_FLAG_INTEGER_FOR_SIZE<sizeof(T)>::type type;
372 };
373
374}
375#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
376extern "C++" { \
377inline constexpr ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) | ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
378inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) |= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
379inline constexpr ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) & ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
380inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) &= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
381inline constexpr ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a)); } \
382inline constexpr ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) ^ ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
383inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) ^= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
384}
385#else
386#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) /* */
387#endif
388
389// D3DX12 uses these
390#include <stdlib.h>
391#define HeapAlloc(heap, flags, size) malloc(size)
392#define HeapFree(heap, flags, ptr) free(ptr)
393
394#if defined(lint)
395// Note: lint -e530 says don't complain about uninitialized variables for
396// this variable. Error 527 has to do with unreachable code.
397// -restore restores checking to the -save state
398#define UNREFERENCED_PARAMETER(P) \
399 /*lint -save -e527 -e530 */ \
400 { \
401 (P) = (P); \
402 } \
403 /*lint -restore */
404#else
405#define UNREFERENCED_PARAMETER(P) (P)
406#endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/oaidl.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/oaidl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/include/wsl/stubs/ocidl.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/ocidl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/include/wsl/stubs/rpc.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpc.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/include/wsl/stubs/rpcndr.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpcndr.h
new file mode 100644
index 0000000..68aa390
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpcndr.h
@@ -0,0 +1,78 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once
6
7#include "basetsd.h"
8
9#define __RPCNDR_H_VERSION__
10
11#ifdef CONST_VTABLE
12#define CONST_VTBL const
13#else
14#define CONST_VTBL
15#endif
16
17/* Macros for __uuidof template-based emulation */
18#if defined(__cplusplus)
19#if __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L
20#define __wsl_stub_uuidof_use_constexpr 1
21#else
22#define __wsl_stub_uuidof_use_constexpr 0
23#endif
24#ifndef __GNUC__
25#error "Only support for compilers that support for `GNU C++ extension`"
26#endif
27extern "C++" {
28#if __wsl_stub_uuidof_use_constexpr
29 __extension__ template<typename T> struct __wsl_stub_uuidof_s;
30 __extension__ template<typename T> constexpr const GUID &__wsl_stub_uuidof();
31#else
32 __extension__ template<typename T> const GUID &__wsl_stub_uuidof();
33#endif
34}
35
36#if __wsl_stub_uuidof_use_constexpr
37#define __CRT_UUID_DECL(type, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
38 extern "C++" \
39 { \
40 template <> \
41 struct __wsl_stub_uuidof_s<type> \
42 { \
43 static constexpr IID __uuid_inst = { \
44 l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}; \
45 }; \
46 template <> \
47 constexpr const GUID &__wsl_stub_uuidof<type>() \
48 { \
49 return __wsl_stub_uuidof_s<type>::__uuid_inst; \
50 } \
51 template <> \
52 constexpr const GUID &__wsl_stub_uuidof<type *>() \
53 { \
54 return __wsl_stub_uuidof_s<type>::__uuid_inst; \
55 } \
56 }
57#else
58#define __CRT_UUID_DECL(type, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
59 extern "C++" \
60 { \
61 template <> \
62 inline const GUID &__wsl_stub_uuidof<type>() \
63 { \
64 static const IID __uuid_inst = { \
65 l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}; \
66 return __uuid_inst; \
67 } \
68 template <> \
69 inline const GUID &__wsl_stub_uuidof<type *>() \
70 { \
71 return __wsl_stub_uuidof<type>(); \
72 } \
73 }
74#endif
75#define __uuidof(type) __wsl_stub_uuidof<__typeof(type)>()
76#else
77#define __CRT_UUID_DECL(type, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
78#endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwn.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwn.h
new file mode 100644
index 0000000..e08ad1e
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwn.h
@@ -0,0 +1,3 @@
1#pragma once
2
3#include "unknwnbase.h"
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwnbase.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwnbase.h
new file mode 100644
index 0000000..7a54651
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwnbase.h
@@ -0,0 +1,124 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8/* this ALWAYS GENERATED file contains the definitions for the interfaces */
9
10/* File created by MIDL compiler version 8.01.0627 */
11
12/* verify that the <rpcndr.h> version is high enough to compile this file*/
13#ifndef __REQUIRED_RPCNDR_H_VERSION__
14#define __REQUIRED_RPCNDR_H_VERSION__ 500
15#endif
16
17/* verify that the <rpcsal.h> version is high enough to compile this file*/
18#ifndef __REQUIRED_RPCSAL_H_VERSION__
19#define __REQUIRED_RPCSAL_H_VERSION__ 100
20#endif
21
22#include "rpc.h"
23#include "rpcndr.h"
24
25#ifndef __RPCNDR_H_VERSION__
26#error this stub requires an updated version of <rpcndr.h>
27#endif /* __RPCNDR_H_VERSION__ */
28
29#ifndef COM_NO_WINDOWS_H
30#include "windows.h"
31#include "ole2.h"
32#endif /*COM_NO_WINDOWS_H*/
33
34#ifndef __unknwnbase_h__
35#define __unknwnbase_h__
36
37#if defined(_MSC_VER) && (_MSC_VER >= 1020)
38#pragma once
39#endif
40
41/* Forward Declarations */
42
43#ifndef __IUnknown_FWD_DEFINED__
44#define __IUnknown_FWD_DEFINED__
45typedef interface IUnknown IUnknown;
46
47#endif /* __IUnknown_FWD_DEFINED__ */
48
49#ifndef __IUnknown_INTERFACE_DEFINED__
50#define __IUnknown_INTERFACE_DEFINED__
51
52/* interface IUnknown */
53/* [unique][uuid][object][local] */
54
55typedef /* [unique] */ IUnknown *LPUNKNOWN;
56
57EXTERN_C const IID IID_IUnknown;
58
59#if defined(__cplusplus) && !defined(CINTERFACE)
60extern "C++"
61{
62 MIDL_INTERFACE("00000000-0000-0000-c000-000000000046")
63 IUnknown
64 {
65 BEGIN_INTERFACE
66
67 virtual HRESULT STDMETHODCALLTYPE QueryInterface(
68 REFIID riid,
69 void **ppvObject) = 0;
70
71 virtual ULONG STDMETHODCALLTYPE AddRef() = 0;
72
73 virtual ULONG STDMETHODCALLTYPE Release() = 0;
74
75 template <class Q>
76 HRESULT
77 STDMETHODCALLTYPE
78 QueryInterface(_COM_Outptr_ Q * *pp)
79 {
80 return QueryInterface(__uuidof(Q), (void **)pp);
81 }
82 END_INTERFACE
83 };
84}
85#ifdef __CRT_UUID_DECL
86__CRT_UUID_DECL(IUnknown, 0x00000000, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
87#endif
88#else
89typedef struct IUnknownVtbl {
90 BEGIN_INTERFACE
91
92 /*** IUnknown methods ***/
93 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
94 IUnknown *This,
95 REFIID riid,
96 void **ppvObject);
97
98 ULONG (STDMETHODCALLTYPE *AddRef)(
99 IUnknown *This);
100
101 ULONG (STDMETHODCALLTYPE *Release)(
102 IUnknown *This);
103
104 END_INTERFACE
105} IUnknownVtbl;
106
107interface IUnknown {
108 CONST_VTBL IUnknownVtbl* lpVtbl;
109};
110
111#ifdef COBJMACROS
112/*** IUnknown methods ***/
113#define IUnknown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
114#define IUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
115#define IUnknown_Release(This) (This)->lpVtbl->Release(This)
116#endif
117
118#endif
119
120#endif /* __IUnknown_INTERFACE_DEFINED__ */
121
122DEFINE_GUID(IID_IUnknown, 0x00000000, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
123
124#endif /* __unknwnbase_h__ */
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/winapifamily.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/winapifamily.h
new file mode 100644
index 0000000..064c4c2
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/include/wsl/stubs/wrl/client.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/client.h
new file mode 100644
index 0000000..64293a7
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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 <wsl/wrladapter.h> \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/implements.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/implements.h
new file mode 100644
index 0000000..5a3979e
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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 <wsl/wrladapter.h> \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/winadapter.h b/contrib/DirectX-Headers-1.618.2/include/wsl/winadapter.h
new file mode 100644
index 0000000..ccb2b3c
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/winadapter.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#include <unknwn.h>
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/wrladapter.h b/contrib/DirectX-Headers-1.618.2/include/wsl/wrladapter.h
new file mode 100644
index 0000000..fcfd894
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/wrladapter.h
@@ -0,0 +1,803 @@
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 <new>
21#include <climits>
22#include <cassert>
23
24namespace Microsoft
25{
26namespace WRL
27{
28 namespace Details
29 {
30 struct BoolStruct { int Member; };
31 typedef int BoolStruct::* BoolType;
32
33 template <typename T> // T should be the ComPtr<T> or a derived type of it, not just the interface
34 class ComPtrRefBase
35 {
36 public:
37 typedef typename T::InterfaceType InterfaceType;
38
39 operator IUnknown**() const throw()
40 {
41 static_assert(__is_base_of(IUnknown, InterfaceType), "Invalid cast: InterfaceType does not derive from IUnknown");
42 return reinterpret_cast<IUnknown**>(ptr_->ReleaseAndGetAddressOf());
43 }
44
45 protected:
46 T* ptr_;
47 };
48
49 template <typename T>
50 class ComPtrRef : public Details::ComPtrRefBase<T> // T should be the ComPtr<T> or a derived type of it, not just the interface
51 {
52 using Super = Details::ComPtrRefBase<T>;
53 using InterfaceType = typename Super::InterfaceType;
54 public:
55 ComPtrRef(_In_opt_ T* ptr) throw()
56 {
57 this->ptr_ = ptr;
58 }
59
60 // Conversion operators
61 operator void**() const throw()
62 {
63 return reinterpret_cast<void**>(this->ptr_->ReleaseAndGetAddressOf());
64 }
65
66 // This is our operator ComPtr<U> (or the latest derived class from ComPtr (e.g. WeakRef))
67 operator T*() throw()
68 {
69 *this->ptr_ = nullptr;
70 return this->ptr_;
71 }
72
73 // We define operator InterfaceType**() here instead of on ComPtrRefBase<T>, since
74 // if InterfaceType is IUnknown or IInspectable, having it on the base will collide.
75 operator InterfaceType**() throw()
76 {
77 return this->ptr_->ReleaseAndGetAddressOf();
78 }
79
80 // This is used for IID_PPV_ARGS in order to do __uuidof(**(ppType)).
81 // It does not need to clear ptr_ at this point, it is done at IID_PPV_ARGS_Helper(ComPtrRef&) later in this file.
82 InterfaceType* operator *() throw()
83 {
84 return this->ptr_->Get();
85 }
86
87 // Explicit functions
88 InterfaceType* const * GetAddressOf() const throw()
89 {
90 return this->ptr_->GetAddressOf();
91 }
92
93 InterfaceType** ReleaseAndGetAddressOf() throw()
94 {
95 return this->ptr_->ReleaseAndGetAddressOf();
96 }
97 };
98 }
99
100 template <typename T>
101 class ComPtr
102 {
103 public:
104 typedef T InterfaceType;
105
106 protected:
107 InterfaceType *ptr_;
108 template<class U> friend class ComPtr;
109
110 void InternalAddRef() const throw()
111 {
112 if (ptr_ != nullptr)
113 {
114 ptr_->AddRef();
115 }
116 }
117
118 unsigned long InternalRelease() throw()
119 {
120 unsigned long ref = 0;
121 T* temp = ptr_;
122
123 if (temp != nullptr)
124 {
125 ptr_ = nullptr;
126 ref = temp->Release();
127 }
128
129 return ref;
130 }
131
132 public:
133 ComPtr() throw() : ptr_(nullptr)
134 {
135 }
136
137 ComPtr(decltype(nullptr)) throw() : ptr_(nullptr)
138 {
139 }
140
141 template<class U>
142 ComPtr(_In_opt_ U *other) throw() : ptr_(other)
143 {
144 InternalAddRef();
145 }
146
147 ComPtr(const ComPtr& other) throw() : ptr_(other.ptr_)
148 {
149 InternalAddRef();
150 }
151
152 // copy constructor that allows to instantiate class when U* is convertible to T*
153 template<class U>
154 ComPtr(const ComPtr<U> &other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
155 ptr_(other.ptr_)
156 {
157 InternalAddRef();
158 }
159
160 ComPtr(_Inout_ ComPtr &&other) throw() : ptr_(nullptr)
161 {
162 if (this != reinterpret_cast<ComPtr*>(&reinterpret_cast<unsigned char&>(other)))
163 {
164 Swap(other);
165 }
166 }
167
168 // Move constructor that allows instantiation of a class when U* is convertible to T*
169 template<class U>
170 ComPtr(_Inout_ ComPtr<U>&& other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
171 ptr_(other.ptr_)
172 {
173 other.ptr_ = nullptr;
174 }
175
176 ~ComPtr() throw()
177 {
178 InternalRelease();
179 }
180
181 ComPtr& operator=(decltype(nullptr)) throw()
182 {
183 InternalRelease();
184 return *this;
185 }
186
187 ComPtr& operator=(_In_opt_ T *other) throw()
188 {
189 if (ptr_ != other)
190 {
191 ComPtr(other).Swap(*this);
192 }
193 return *this;
194 }
195
196 template <typename U>
197 ComPtr& operator=(_In_opt_ U *other) throw()
198 {
199 ComPtr(other).Swap(*this);
200 return *this;
201 }
202
203 ComPtr& operator=(const ComPtr &other) throw()
204 {
205 if (ptr_ != other.ptr_)
206 {
207 ComPtr(other).Swap(*this);
208 }
209 return *this;
210 }
211
212 template<class U>
213 ComPtr& operator=(const ComPtr<U>& other) throw()
214 {
215 ComPtr(other).Swap(*this);
216 return *this;
217 }
218
219 ComPtr& operator=(_Inout_ ComPtr &&other) throw()
220 {
221 ComPtr(static_cast<ComPtr&&>(other)).Swap(*this);
222 return *this;
223 }
224
225 template<class U>
226 ComPtr& operator=(_Inout_ ComPtr<U>&& other) throw()
227 {
228 ComPtr(static_cast<ComPtr<U>&&>(other)).Swap(*this);
229 return *this;
230 }
231
232 void Swap(_Inout_ ComPtr&& r) throw()
233 {
234 T* tmp = ptr_;
235 ptr_ = r.ptr_;
236 r.ptr_ = tmp;
237 }
238
239 void Swap(_Inout_ ComPtr& r) throw()
240 {
241 T* tmp = ptr_;
242 ptr_ = r.ptr_;
243 r.ptr_ = tmp;
244 }
245
246 operator Details::BoolType() const throw()
247 {
248 return Get() != nullptr ? &Details::BoolStruct::Member : nullptr;
249 }
250
251 T* Get() const throw()
252 {
253 return ptr_;
254 }
255
256 InterfaceType* operator->() const throw()
257 {
258 return ptr_;
259 }
260
261 Details::ComPtrRef<ComPtr<T>> operator&() throw()
262 {
263 return Details::ComPtrRef<ComPtr<T>>(this);
264 }
265
266 const Details::ComPtrRef<const ComPtr<T>> operator&() const throw()
267 {
268 return Details::ComPtrRef<const ComPtr<T>>(this);
269 }
270
271 T* const* GetAddressOf() const throw()
272 {
273 return &ptr_;
274 }
275
276 T** GetAddressOf() throw()
277 {
278 return &ptr_;
279 }
280
281 T** ReleaseAndGetAddressOf() throw()
282 {
283 InternalRelease();
284 return &ptr_;
285 }
286
287 T* Detach() throw()
288 {
289 T* ptr = ptr_;
290 ptr_ = nullptr;
291 return ptr;
292 }
293
294 void Attach(_In_opt_ InterfaceType* other) throw()
295 {
296 if (ptr_ != nullptr)
297 {
298 auto ref = ptr_->Release();
299 // DBG_UNREFERENCED_LOCAL_VARIABLE(ref);
300 // Attaching to the same object only works if duplicate references are being coalesced. Otherwise
301 // re-attaching will cause the pointer to be released and may cause a crash on a subsequent dereference.
302 assert(ref != 0 || ptr_ != other);
303 }
304
305 ptr_ = other;
306 }
307
308 unsigned long Reset()
309 {
310 return InternalRelease();
311 }
312
313 // Previously, unsafe behavior could be triggered when 'this' is ComPtr<IInspectable> or ComPtr<IUnknown> and CopyTo is used to copy to another type U.
314 // The user will use operator& to convert the destination into a ComPtrRef, which can then implicit cast to IInspectable** and IUnknown**.
315 // If this overload of CopyTo is not present, it will implicitly cast to IInspectable or IUnknown and match CopyTo(InterfaceType**) instead.
316 // A valid polymoprhic downcast requires run-time type checking via QueryInterface, so CopyTo(InterfaceType**) will break type safety.
317 // This overload matches ComPtrRef before the implicit cast takes place, preventing the unsafe downcast.
318 template <typename U>
319 HRESULT CopyTo(Details::ComPtrRef<ComPtr<U>> ptr, typename std::enable_if<
320 (std::is_same<T, IUnknown>::value)
321 && !std::is_same<U*, T*>::value, void *>::type * = 0) const throw()
322 {
323 return ptr_->QueryInterface(__uuidof(U), ptr);
324 }
325
326 HRESULT CopyTo(_Outptr_result_maybenull_ InterfaceType** ptr) const throw()
327 {
328 InternalAddRef();
329 *ptr = ptr_;
330 return S_OK;
331 }
332
333 HRESULT CopyTo(REFIID riid, _Outptr_result_nullonfailure_ void** ptr) const throw()
334 {
335 return ptr_->QueryInterface(riid, ptr);
336 }
337
338 template<typename U>
339 HRESULT CopyTo(_Outptr_result_nullonfailure_ U** ptr) const throw()
340 {
341 return ptr_->QueryInterface(__uuidof(U), reinterpret_cast<void**>(ptr));
342 }
343
344 // query for U interface
345 template<typename U>
346 HRESULT As(_Inout_ Details::ComPtrRef<ComPtr<U>> p) const throw()
347 {
348 return ptr_->QueryInterface(__uuidof(U), p);
349 }
350
351 // query for U interface
352 template<typename U>
353 HRESULT As(_Out_ ComPtr<U>* p) const throw()
354 {
355 return ptr_->QueryInterface(__uuidof(U), reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
356 }
357
358 // query for riid interface and return as IUnknown
359 HRESULT AsIID(REFIID riid, _Out_ ComPtr<IUnknown>* p) const throw()
360 {
361 return ptr_->QueryInterface(riid, reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
362 }
363
364 }; // ComPtr
365
366
367 namespace Details
368 {
369 // Empty struct used as default template parameter
370 class Nil
371 {
372 };
373
374 // Empty struct used for validating template parameter types in Implements
375 struct ImplementsBase
376 {
377 };
378
379 class RuntimeClassBase
380 {
381 protected:
382 template<typename T>
383 static HRESULT AsIID(_In_ T* implements, REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject) noexcept
384 {
385 *ppvObject = nullptr;
386 bool isRefDelegated = false;
387 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
388 if (InlineIsEqualGUID(riid, __uuidof(IUnknown)))
389 {
390 *ppvObject = implements->CastToUnknown();
391 static_cast<IUnknown*>(*ppvObject)->AddRef();
392 return S_OK;
393 }
394
395 HRESULT hr = implements->CanCastTo(riid, ppvObject, &isRefDelegated);
396 if (SUCCEEDED(hr) && !isRefDelegated)
397 {
398 static_cast<IUnknown*>(*ppvObject)->AddRef();
399 }
400
401#ifdef _MSC_VER
402#pragma warning(push)
403#pragma warning(disable: 6102) // '*ppvObject' is used but may not be initialized
404#endif
405 _Analysis_assume_(SUCCEEDED(hr) || (*ppvObject == nullptr));
406#ifdef _MSC_VER
407#pragma warning(pop)
408#endif
409 return hr;
410 }
411
412 public:
413 HRESULT RuntimeClassInitialize() noexcept
414 {
415 return S_OK;
416 }
417 };
418
419 // Interface traits provides casting and filling iids methods helpers
420 template<typename I0>
421 struct InterfaceTraits
422 {
423 typedef I0 Base;
424
425 template<typename T>
426 static Base* CastToBase(_In_ T* ptr) noexcept
427 {
428 return static_cast<Base*>(ptr);
429 }
430
431 template<typename T>
432 static IUnknown* CastToUnknown(_In_ T* ptr) noexcept
433 {
434 return static_cast<IUnknown*>(static_cast<Base*>(ptr));
435 }
436
437 template <typename T>
438 _Success_(return == true)
439 static bool CanCastTo(_In_ T* ptr, REFIID riid, _Outptr_ void **ppv) noexcept
440 {
441 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
442 if (InlineIsEqualGUID(riid, __uuidof(Base)))
443 {
444 *ppv = static_cast<Base*>(ptr);
445 return true;
446 }
447
448 return false;
449 }
450 };
451
452 // Specialization for Nil parameter
453 template<>
454 struct InterfaceTraits<Nil>
455 {
456 typedef Nil Base;
457
458 template <typename T>
459 _Success_(return == true)
460 static bool CanCastTo(_In_ T*, REFIID, _Outptr_ void **) noexcept
461 {
462 return false;
463 }
464 };
465
466 // ChainInterfaces - template allows specifying a derived COM interface along with its class hierarchy to allow QI for the base interfaces
467 template <typename I0, typename I1, typename I2 = Nil, typename I3 = Nil,
468 typename I4 = Nil, typename I5 = Nil, typename I6 = Nil,
469 typename I7 = Nil, typename I8 = Nil, typename I9 = Nil>
470 struct ChainInterfaces : I0
471 {
472 protected:
473 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) throw()
474 {
475 typename InterfaceTraits<I0>::Base* ptr = InterfaceTraits<I0>::CastToBase(this);
476
477 return (InterfaceTraits<I0>::CanCastTo(this, riid, ppv) ||
478 InterfaceTraits<I1>::CanCastTo(ptr, riid, ppv) ||
479 InterfaceTraits<I2>::CanCastTo(ptr, riid, ppv) ||
480 InterfaceTraits<I3>::CanCastTo(ptr, riid, ppv) ||
481 InterfaceTraits<I4>::CanCastTo(ptr, riid, ppv) ||
482 InterfaceTraits<I5>::CanCastTo(ptr, riid, ppv) ||
483 InterfaceTraits<I6>::CanCastTo(ptr, riid, ppv) ||
484 InterfaceTraits<I7>::CanCastTo(ptr, riid, ppv) ||
485 InterfaceTraits<I8>::CanCastTo(ptr, riid, ppv) ||
486 InterfaceTraits<I9>::CanCastTo(ptr, riid, ppv)) ? S_OK : E_NOINTERFACE;
487 }
488
489 IUnknown* CastToUnknown() throw()
490 {
491 return InterfaceTraits<I0>::CastToUnknown(this);
492 }
493 };
494
495 // Helper template used by Implements. This template traverses a list of interfaces and adds them as base class and information
496 // to enable QI.
497 template <typename ...TInterfaces>
498 struct ImplementsHelper;
499
500 template <typename T>
501 struct ImplementsMarker
502 {};
503
504 template <typename I0, bool isImplements>
505 struct MarkImplements;
506
507 template <typename I0>
508 struct MarkImplements<I0, false>
509 {
510 typedef I0 Type;
511 };
512
513 template <typename I0>
514 struct MarkImplements<I0, true>
515 {
516 typedef ImplementsMarker<I0> Type;
517 };
518
519 // AdjustImplements pre-processes the type list for more efficient builds.
520 template <typename ...Bases>
521 struct AdjustImplements;
522
523 template <typename I0, typename ...Bases>
524 struct AdjustImplements<I0, Bases...>
525 {
526 typedef ImplementsHelper<typename MarkImplements<I0, std::is_base_of<ImplementsBase, I0>::value>::Type, Bases...> Type;
527 };
528
529 // Use AdjustImplements to remove instances of "Nil" from the type list.
530 template <typename ...Bases>
531 struct AdjustImplements<Nil, Bases...>
532 {
533 typedef typename AdjustImplements<Bases...>::Type Type;
534 };
535
536 template <>
537 struct AdjustImplements<>
538 {
539 typedef ImplementsHelper<> Type;
540 };
541
542 // Specialization handles unadorned interfaces
543 template <typename I0, typename ...TInterfaces>
544 struct ImplementsHelper<I0, TInterfaces...> :
545 I0,
546 AdjustImplements<TInterfaces...>::Type
547 {
548 template <typename ...> friend struct ImplementsHelper;
549 friend class RuntimeClassBase;
550
551 protected:
552
553 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
554 {
555 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
556 if (InlineIsEqualGUID(riid, __uuidof(I0)))
557 {
558 *ppv = reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
559 return S_OK;
560 }
561 return AdjustImplements<TInterfaces...>::Type::CanCastTo(riid, ppv, pRefDelegated);
562 }
563
564 IUnknown* CastToUnknown() noexcept
565 {
566 return reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
567 }
568 };
569
570
571 // Selector is used to "tag" base interfaces to be used in casting, since a runtime class may indirectly derive from
572 // the same interface or Implements<> template multiple times
573 template <typename base, typename disciminator>
574 struct Selector : public base
575 {
576 };
577
578 // Specialization handles types that derive from ImplementsHelper (e.g. nested Implements).
579 template <typename I0, typename ...TInterfaces>
580 struct ImplementsHelper<ImplementsMarker<I0>, TInterfaces...> :
581 Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>,
582 Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>
583 {
584 template <typename ...> friend struct ImplementsHelper;
585 friend class RuntimeClassBase;
586
587 protected:
588 typedef Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> CurrentType;
589 typedef Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> BaseType;
590
591 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
592 {
593 HRESULT hr = CurrentType::CanCastTo(riid, ppv);
594 if (hr == E_NOINTERFACE)
595 {
596 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
597 }
598 return hr;
599 }
600
601 IUnknown* CastToUnknown() noexcept
602 {
603 // First in list wins.
604 return CurrentType::CastToUnknown();
605 }
606 };
607
608 // terminal case specialization.
609 template <>
610 struct ImplementsHelper<>
611 {
612 template <typename ...> friend struct ImplementsHelper;
613 friend class RuntimeClassBase;
614
615 protected:
616 HRESULT CanCastTo(_In_ REFIID /*riid*/, _Outptr_ void ** /*ppv*/, bool * /*pRefDelegated*/ = nullptr) noexcept
617 {
618 return E_NOINTERFACE;
619 }
620
621 // IUnknown* CastToUnknown() noexcept; // not defined for terminal case.
622 };
623
624 // Specialization handles chaining interfaces
625 template <typename C0, typename C1, typename C2, typename C3, typename C4, typename C5, typename C6, typename C7, typename C8, typename C9, typename ...TInterfaces>
626 struct ImplementsHelper<ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, TInterfaces...> :
627 ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>,
628 AdjustImplements<TInterfaces...>::Type
629 {
630 template <typename ...> friend struct ImplementsHelper;
631 friend class RuntimeClassBase;
632
633 protected:
634 typedef typename AdjustImplements<TInterfaces...>::Type BaseType;
635
636 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
637 {
638 HRESULT hr = ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CanCastTo(riid, ppv);
639 if (FAILED(hr))
640 {
641 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
642 }
643
644 return hr;
645 }
646
647 IUnknown* CastToUnknown() noexcept
648 {
649 return ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CastToUnknown();
650 }
651 };
652
653 // Implements - template implementing QI using the information provided through its template parameters
654 // Each template parameter has to be one of the following:
655 // * COM Interface
656 // * A class that implements one or more COM interfaces
657 // * ChainInterfaces template
658 template <typename I0, typename ...TInterfaces>
659 struct Implements :
660 AdjustImplements<I0, TInterfaces...>::Type,
661 ImplementsBase
662 {
663 public:
664 typedef I0 FirstInterface;
665 protected:
666 typedef typename AdjustImplements<I0, TInterfaces...>::Type BaseType;
667 template <typename ...> friend struct ImplementsHelper;
668 friend class RuntimeClassBase;
669
670 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) noexcept
671 {
672 return BaseType::CanCastTo(riid, ppv);
673 }
674
675 IUnknown* CastToUnknown() noexcept
676 {
677 return BaseType::CastToUnknown();
678 }
679 };
680
681 // Used on RuntimeClass to protect it from being constructed with new
682 class DontUseNewUseMake
683 {
684 private:
685 void* operator new(size_t) noexcept
686 {
687 assert(false);
688 return 0;
689 }
690
691 public:
692 void* operator new(size_t, _In_ void* placement) noexcept
693 {
694 return placement;
695 }
696 };
697
698 template <typename ...TInterfaces>
699 class RuntimeClassImpl :
700 public AdjustImplements<TInterfaces...>::Type,
701 public RuntimeClassBase,
702 public DontUseNewUseMake
703 {
704 public:
705 STDMETHOD(QueryInterface)(REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject)
706 {
707 return Super::AsIID(this, riid, ppvObject);
708 }
709
710 STDMETHOD_(ULONG, AddRef)()
711 {
712 return InternalAddRef();
713 }
714
715 STDMETHOD_(ULONG, Release)()
716 {
717 ULONG ref = InternalRelease();
718 if (ref == 0)
719 {
720 this->~RuntimeClassImpl();
721 delete[] reinterpret_cast<char*>(this);
722 }
723
724 return ref;
725 }
726
727 protected:
728 using Super = RuntimeClassBase;
729 static const LONG c_lProtectDestruction = -(LONG_MAX / 2);
730
731 RuntimeClassImpl() noexcept = default;
732
733 virtual ~RuntimeClassImpl() noexcept
734 {
735 // Set refcount_ to -(LONG_MAX/2) to protect destruction and
736 // also catch mismatched Release in debug builds
737 refcount_ = static_cast<ULONG>(c_lProtectDestruction);
738 }
739
740 ULONG InternalAddRef() noexcept
741 {
742 return ++refcount_;
743 }
744
745 ULONG InternalRelease() noexcept
746 {
747 return --refcount_;
748 }
749
750 unsigned long GetRefCount() const noexcept
751 {
752 return refcount_;
753 }
754
755 std::atomic<ULONG> refcount_{1};
756 };
757 }
758
759 template <typename ...TInterfaces>
760 class Base : public Details::RuntimeClassImpl<TInterfaces...>
761 {
762 Base(const Base&) = delete;
763 Base& operator=(const Base&) = delete;
764
765 protected:
766 HRESULT CustomQueryInterface(REFIID /*riid*/, _Outptr_result_nullonfailure_ void** /*ppvObject*/, _Out_ bool *handled)
767 {
768 *handled = false;
769 return S_OK;
770 }
771
772 public:
773 Base() throw() = default;
774 typedef Base RuntimeClassT;
775 };
776
777 // Creates a Nano-COM object wrapped in a smart pointer.
778 template <typename T, typename ...TArgs>
779 ComPtr<T> Make(TArgs&&... args)
780 {
781 std::unique_ptr<char[]> buffer(new(std::nothrow) char[sizeof(T)]);
782 ComPtr<T> object;
783
784 if (buffer)
785 {
786 T* ptr = new (buffer.get())T(std::forward<TArgs>(args)...);
787 object.Attach(ptr);
788 buffer.release();
789 }
790
791 return object;
792 }
793
794 using Details::ChainInterfaces;
795}
796}
797
798// Overloaded global function to provide to IID_PPV_ARGS that support Details::ComPtrRef
799template<typename T>
800void** IID_PPV_ARGS_Helper(Microsoft::WRL::Details::ComPtrRef<T> pp) throw()
801{
802 return pp;
803}
diff --git a/contrib/DirectX-Headers-1.618.2/meson.build b/contrib/DirectX-Headers-1.618.2/meson.build
new file mode 100644
index 0000000..e358738
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/meson.build
@@ -0,0 +1,64 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4project('DirectX-Headers', 'cpp', version : '1.618.2',
5 default_options : ['cpp_std=c++14'])
6
7cpp = meson.get_compiler('cpp')
8compiler_id = cpp.get_id()
9#d3d12_lib is not available in linux
10d3d12_lib = cpp.find_library('d3d12', required : host_machine.system() == 'windows')
11#dxcore is not available in Mingw-w64
12dxcore_lib = cpp.find_library('dxcore', required: compiler_id == 'msvc')
13test_compile_opts = []
14if host_machine.system() == 'windows'
15 test_compile_opts = ['-DUNICODE', '-D_WIN32_WINNT=0x0A00']
16endif
17if (compiler_id == 'gcc') or (compiler_id == 'clang')
18 test_compile_opts += ['-Wno-unused-variable']
19endif
20
21inc_dirs = [include_directories('include', is_system : true)]
22install_inc_subdirs = ['']
23compile_options = []
24
25if host_machine.system() != 'windows'
26 inc_dirs += include_directories('include/wsl/stubs', is_system : true)
27 install_inc_subdirs += ['', 'wsl/stubs', 'directx']
28elif meson.get_compiler('cpp').get_id() != 'msvc' and meson.get_compiler('cpp').get_id() != 'clang-cl'
29 # MinGW has RPC headers which define old versions, and complain if D3D
30 # headers are included before the RPC headers, since D3D headers were
31 # generated with new MIDL and "require" new RPC headers.
32 compile_options = ['-D__REQUIRED_RPCNDR_H_VERSION__=475']
33endif
34
35format_properties_lib = static_library(
36 'd3dx12-format-properties',
37 'src/d3dx12_property_format_table.cpp',
38 include_directories : [inc_dirs, 'include/directx'],
39 cpp_args : compile_options,
40 install : true)
41guids_lib = static_library('DirectX-Guids', 'src/dxguids.cpp', include_directories : inc_dirs, install : true)
42
43dep_dxheaders = declare_dependency(
44 link_with : [format_properties_lib, guids_lib],
45 include_directories : inc_dirs,
46 compile_args : compile_options)
47
48if meson.version().version_compare('>=0.54.0')
49 meson.override_dependency('DirectX-Headers', dep_dxheaders)
50endif
51
52if not meson.is_subproject() and get_option('build-test')
53 subdir('googletest')
54 subdir('test')
55endif
56
57pkg = import('pkgconfig')
58pkg.generate(name : 'DirectX-Headers',
59 description : 'Headers for using D3D12',
60 url: 'https://github.com/microsoft/DirectX-Headers',
61 libraries : [format_properties_lib, guids_lib],
62 version : meson.project_version(),
63 subdirs : install_inc_subdirs)
64install_subdir('include', install_dir : '')
diff --git a/contrib/DirectX-Headers-1.618.2/meson_options.txt b/contrib/DirectX-Headers-1.618.2/meson_options.txt
new file mode 100644
index 0000000..af5cd47
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/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-1.618.2/src/d3dx12_property_format_table.cpp b/contrib/DirectX-Headers-1.618.2/src/d3dx12_property_format_table.cpp
new file mode 100644
index 0000000..549bf50
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/src/d3dx12_property_format_table.cpp
@@ -0,0 +1,2601 @@
1
2
3
4//*********************************************************
5//
6// Copyright (c) Microsoft Corporation.
7// Licensed under the MIT License (MIT).
8//
9//*********************************************************
10
11#ifndef WIN32_LEAN_AND_MEAN
12 #define WIN32_LEAN_AND_MEAN
13#endif
14#ifndef NOMINMAX
15 #define NOMINMAX 1
16#endif
17#ifdef __MINGW32__
18 #include <unknwn.h>
19#endif
20#ifndef _WIN32
21 #include <wsl/winadapter.h>
22#endif
23#include "d3dx12_property_format_table.h"
24#include <algorithm>
25#include <cassert>
26#include "D3D12TokenizedProgramFormat.hpp"
27#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
28#include <stdexcept>
29#endif
30#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
31#ifndef ASSUME
32 #define ASSUME(x) assert(x)
33#endif
34
35#define R D3DFCN_R
36#define G D3DFCN_G
37#define B D3DFCN_B
38#define A D3DFCN_A
39#define D D3DFCN_D
40#define S D3DFCN_S
41#define X D3DFCN_X
42
43#define _TYPELESS D3DFCI_TYPELESS
44#define _FLOAT D3DFCI_FLOAT
45#define _SNORM D3DFCI_SNORM
46#define _UNORM D3DFCI_UNORM
47#define _SINT D3DFCI_SINT
48#define _UINT D3DFCI_UINT
49#define _UNORM_SRGB D3DFCI_UNORM_SRGB
50#define _FIXED_2_8 D3DFCI_BIASED_FIXED_2_8
51
52#ifndef INTSAFE_E_ARITHMETIC_OVERFLOW
53 #define INTSAFE_E_ARITHMETIC_OVERFLOW ((HRESULT)0x80070216L)
54#endif
55
56//
57// UINT addition
58//
59inline HRESULT Safe_UIntAdd(UINT uAugend, UINT uAddend, UINT* puResult)
60{
61 if ((uAugend + uAddend) >= uAugend)
62 {
63 *puResult = (uAugend + uAddend);
64 return S_OK;
65 }
66 *puResult = UINT_MAX;
67 return E_FAIL;
68}
69
70//
71// UINT multiplication
72//
73inline HRESULT Safe_UIntMult(UINT uMultiplicand, UINT uMultiplier, UINT* puResult)
74{
75 ULONGLONG ull64Result = (ULONGLONG)uMultiplicand * (ULONGLONG)uMultiplier;
76
77 if (ull64Result <= UINT_MAX)
78 {
79 *puResult = (UINT)ull64Result;
80 return S_OK;
81 }
82 *puResult = UINT_MAX;
83 return E_FAIL;
84}
85
86const LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatNames[] = // separate from above structure so it can be compiled out of the runtime.
87{
88// Name
89 "UNKNOWN",
90 "R32G32B32A32_TYPELESS",
91 "R32G32B32A32_FLOAT",
92 "R32G32B32A32_UINT",
93 "R32G32B32A32_SINT",
94 "R32G32B32_TYPELESS",
95 "R32G32B32_FLOAT",
96 "R32G32B32_UINT",
97 "R32G32B32_SINT",
98 "R16G16B16A16_TYPELESS",
99 "R16G16B16A16_FLOAT",
100 "R16G16B16A16_UNORM",
101 "R16G16B16A16_UINT",
102 "R16G16B16A16_SNORM",
103 "R16G16B16A16_SINT",
104 "R32G32_TYPELESS",
105 "R32G32_FLOAT",
106 "R32G32_UINT",
107 "R32G32_SINT",
108 "R32G8X24_TYPELESS",
109 "D32_FLOAT_S8X24_UINT",
110 "R32_FLOAT_X8X24_TYPELESS",
111 "X32_TYPELESS_G8X24_UINT",
112 "R10G10B10A2_TYPELESS",
113 "R10G10B10A2_UNORM",
114 "R10G10B10A2_UINT",
115 "R11G11B10_FLOAT",
116 "R8G8B8A8_TYPELESS",
117 "R8G8B8A8_UNORM",
118 "R8G8B8A8_UNORM_SRGB",
119 "R8G8B8A8_UINT",
120 "R8G8B8A8_SNORM",
121 "R8G8B8A8_SINT",
122 "R16G16_TYPELESS",
123 "R16G16_FLOAT",
124 "R16G16_UNORM",
125 "R16G16_UINT",
126 "R16G16_SNORM",
127 "R16G16_SINT",
128 "R32_TYPELESS",
129 "D32_FLOAT",
130 "R32_FLOAT",
131 "R32_UINT",
132 "R32_SINT",
133 "R24G8_TYPELESS",
134 "D24_UNORM_S8_UINT",
135 "R24_UNORM_X8_TYPELESS",
136 "X24_TYPELESS_G8_UINT",
137 "R8G8_TYPELESS",
138 "R8G8_UNORM",
139 "R8G8_UINT",
140 "R8G8_SNORM",
141 "R8G8_SINT",
142 "R16_TYPELESS",
143 "R16_FLOAT",
144 "D16_UNORM",
145 "R16_UNORM",
146 "R16_UINT",
147 "R16_SNORM",
148 "R16_SINT",
149 "R8_TYPELESS",
150 "R8_UNORM",
151 "R8_UINT",
152 "R8_SNORM",
153 "R8_SINT",
154 "A8_UNORM",
155 "R1_UNORM",
156 "R9G9B9E5_SHAREDEXP",
157 "R8G8_B8G8_UNORM",
158 "G8R8_G8B8_UNORM",
159 "BC1_TYPELESS",
160 "BC1_UNORM",
161 "BC1_UNORM_SRGB",
162 "BC2_TYPELESS",
163 "BC2_UNORM",
164 "BC2_UNORM_SRGB",
165 "BC3_TYPELESS",
166 "BC3_UNORM",
167 "BC3_UNORM_SRGB",
168 "BC4_TYPELESS",
169 "BC4_UNORM",
170 "BC4_SNORM",
171 "BC5_TYPELESS",
172 "BC5_UNORM",
173 "BC5_SNORM",
174 "B5G6R5_UNORM",
175 "B5G5R5A1_UNORM",
176 "B8G8R8A8_UNORM",
177 "B8G8R8X8_UNORM",
178 "R10G10B10_XR_BIAS_A2_UNORM",
179 "B8G8R8A8_TYPELESS",
180 "B8G8R8A8_UNORM_SRGB",
181 "B8G8R8X8_TYPELESS",
182 "B8G8R8X8_UNORM_SRGB",
183 "BC6H_TYPELESS",
184 "BC6H_UF16",
185 "BC6H_SF16",
186 "BC7_TYPELESS",
187 "BC7_UNORM",
188 "BC7_UNORM_SRGB",
189 "AYUV",
190 "Y410",
191 "Y416",
192 "NV12",
193 "P010",
194 "P016",
195 "420_OPAQUE",
196 "YUY2",
197 "Y210",
198 "Y216",
199 "NV11",
200 "AI44",
201 "IA44",
202 "P8",
203 "A8P8",
204 "B4G4R4A4_UNORM",
205
206 nullptr, // 116
207 nullptr, // 117
208 nullptr, // 118
209 nullptr, // 119
210 nullptr, // 120
211 nullptr, // 121
212 nullptr, // 122
213 nullptr, // 123
214 nullptr, // 124
215 nullptr, // 125
216 nullptr, // 126
217 nullptr, // 127
218 nullptr, // 128
219 nullptr, // 129
220
221 "P208",
222 "V208",
223 "V408",
224
225 NULL, // 133
226 NULL, // 134
227 NULL, // 135
228 NULL, // 136
229 NULL, // 137
230 NULL, // 138
231 NULL, // 139
232 NULL, // 140
233 NULL, // 141
234 NULL, // 142
235 NULL, // 143
236 NULL, // 144
237 NULL, // 145
238 NULL, // 146
239 NULL, // 147
240 NULL, // 148
241 NULL, // 149
242 NULL, // 150
243 NULL, // 151
244 NULL, // 152
245 NULL, // 153
246 NULL, // 154
247 NULL, // 155
248 NULL, // 156
249 NULL, // 157
250 NULL, // 158
251 NULL, // 159
252 NULL, // 160
253 NULL, // 161
254 NULL, // 162
255 NULL, // 163
256 NULL, // 164
257 NULL, // 165
258 NULL, // 166
259 NULL, // 167
260 NULL, // 168
261 NULL, // 169
262 NULL, // 170
263 NULL, // 171
264 NULL, // 172
265 NULL, // 173
266 NULL, // 174
267 NULL, // 175
268 NULL, // 176
269 NULL, // 177
270 NULL, // 178
271 NULL, // 179
272 NULL, // 180
273 NULL, // 181
274 NULL, // 182
275 NULL, // 183
276 NULL, // 184
277 NULL, // 185
278 NULL, // 186
279 NULL, // 187
280 NULL, // 188
281
282 "SAMPLER_FEEDBACK_MIN_MIP_OPAQUE",
283 "SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE",
284 "A4B4G4R4_UNORM",
285};
286
287// --------------------------------------------------------------------------------------------------------------------------------
288// Format Cast Sets
289// --------------------------------------------------------------------------------------------------------------------------------
290constexpr DXGI_FORMAT D3DFCS_UNKNOWN[] =
291{
292 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
293};
294
295constexpr DXGI_FORMAT D3DFCS_R32G32B32A32[] =
296{
297 DXGI_FORMAT_R32G32B32A32_TYPELESS,
298 DXGI_FORMAT_R32G32B32A32_FLOAT,
299 DXGI_FORMAT_R32G32B32A32_UINT,
300 DXGI_FORMAT_R32G32B32A32_SINT,
301 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
302};
303
304constexpr DXGI_FORMAT D3DFCS_R32G32B32[] =
305{
306 DXGI_FORMAT_R32G32B32_TYPELESS,
307 DXGI_FORMAT_R32G32B32_FLOAT,
308 DXGI_FORMAT_R32G32B32_UINT,
309 DXGI_FORMAT_R32G32B32_SINT,
310 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
311};
312
313constexpr DXGI_FORMAT D3DFCS_R16G16B16A16[] =
314{
315 DXGI_FORMAT_R16G16B16A16_TYPELESS,
316 DXGI_FORMAT_R16G16B16A16_FLOAT,
317 DXGI_FORMAT_R16G16B16A16_UNORM,
318 DXGI_FORMAT_R16G16B16A16_UINT,
319 DXGI_FORMAT_R16G16B16A16_SNORM,
320 DXGI_FORMAT_R16G16B16A16_SINT,
321 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
322};
323
324constexpr DXGI_FORMAT D3DFCS_R32G32[] =
325{
326 DXGI_FORMAT_R32G32_TYPELESS,
327 DXGI_FORMAT_R32G32_FLOAT,
328 DXGI_FORMAT_R32G32_UINT,
329 DXGI_FORMAT_R32G32_SINT,
330 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
331};
332
333constexpr DXGI_FORMAT D3DFCS_R32G8X24[] =
334{
335 DXGI_FORMAT_R32G8X24_TYPELESS,
336 DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
337 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
338 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT,
339 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
340};
341
342constexpr DXGI_FORMAT D3DFCS_R11G11B10[] =
343{
344 DXGI_FORMAT_R11G11B10_FLOAT,
345 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
346};
347
348constexpr DXGI_FORMAT D3DFCS_R8G8B8A8[] =
349{
350 DXGI_FORMAT_R8G8B8A8_TYPELESS,
351 DXGI_FORMAT_R8G8B8A8_UNORM,
352 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
353 DXGI_FORMAT_R8G8B8A8_UINT,
354 DXGI_FORMAT_R8G8B8A8_SNORM,
355 DXGI_FORMAT_R8G8B8A8_SINT,
356 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
357};
358
359constexpr DXGI_FORMAT D3DFCS_R16G16[] =
360{
361 DXGI_FORMAT_R16G16_TYPELESS,
362 DXGI_FORMAT_R16G16_FLOAT,
363 DXGI_FORMAT_R16G16_UNORM,
364 DXGI_FORMAT_R16G16_UINT,
365 DXGI_FORMAT_R16G16_SNORM,
366 DXGI_FORMAT_R16G16_SINT,
367 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
368};
369
370constexpr DXGI_FORMAT D3DFCS_R32[] =
371{
372 DXGI_FORMAT_R32_TYPELESS,
373 DXGI_FORMAT_D32_FLOAT,
374 DXGI_FORMAT_R32_FLOAT,
375 DXGI_FORMAT_R32_UINT,
376 DXGI_FORMAT_R32_SINT,
377 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
378};
379
380constexpr DXGI_FORMAT D3DFCS_R24G8[] =
381{
382 DXGI_FORMAT_R24G8_TYPELESS,
383 DXGI_FORMAT_D24_UNORM_S8_UINT,
384 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
385 DXGI_FORMAT_X24_TYPELESS_G8_UINT,
386 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
387};
388
389constexpr DXGI_FORMAT D3DFCS_R8G8[] =
390{
391 DXGI_FORMAT_R8G8_TYPELESS,
392 DXGI_FORMAT_R8G8_UNORM,
393 DXGI_FORMAT_R8G8_UINT,
394 DXGI_FORMAT_R8G8_SNORM,
395 DXGI_FORMAT_R8G8_SINT,
396 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
397};
398
399constexpr DXGI_FORMAT D3DFCS_R16[] =
400{
401 DXGI_FORMAT_R16_TYPELESS,
402 DXGI_FORMAT_R16_FLOAT,
403 DXGI_FORMAT_D16_UNORM,
404 DXGI_FORMAT_R16_UNORM,
405 DXGI_FORMAT_R16_UINT,
406 DXGI_FORMAT_R16_SNORM,
407 DXGI_FORMAT_R16_SINT,
408 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
409};
410
411constexpr DXGI_FORMAT D3DFCS_R8[] =
412{
413 DXGI_FORMAT_R8_TYPELESS,
414 DXGI_FORMAT_R8_UNORM,
415 DXGI_FORMAT_R8_UINT,
416 DXGI_FORMAT_R8_SNORM,
417 DXGI_FORMAT_R8_SINT,
418 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
419};
420
421constexpr DXGI_FORMAT D3DFCS_A8[] =
422{
423 DXGI_FORMAT_A8_UNORM,
424 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
425};
426
427constexpr DXGI_FORMAT D3DFCS_R1[] =
428{
429 DXGI_FORMAT_R1_UNORM,
430 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
431};
432
433constexpr DXGI_FORMAT D3DFCS_R9G9B9E5[] =
434{
435 DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
436 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
437};
438
439constexpr DXGI_FORMAT D3DFCS_R8G8_B8G8[] =
440{
441 DXGI_FORMAT_R8G8_B8G8_UNORM,
442 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
443};
444
445constexpr DXGI_FORMAT D3DFCS_G8R8_G8B8[] =
446{
447 DXGI_FORMAT_G8R8_G8B8_UNORM,
448 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
449};
450
451constexpr DXGI_FORMAT D3DFCS_BC1[] =
452{
453 DXGI_FORMAT_BC1_TYPELESS,
454 DXGI_FORMAT_BC1_UNORM,
455 DXGI_FORMAT_BC1_UNORM_SRGB,
456 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
457};
458
459constexpr DXGI_FORMAT D3DFCS_BC2[] =
460{
461 DXGI_FORMAT_BC2_TYPELESS,
462 DXGI_FORMAT_BC2_UNORM,
463 DXGI_FORMAT_BC2_UNORM_SRGB,
464 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
465};
466
467constexpr DXGI_FORMAT D3DFCS_BC3[] =
468{
469 DXGI_FORMAT_BC3_TYPELESS,
470 DXGI_FORMAT_BC3_UNORM,
471 DXGI_FORMAT_BC3_UNORM_SRGB,
472 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
473};
474
475constexpr DXGI_FORMAT D3DFCS_BC4[] =
476{
477 DXGI_FORMAT_BC4_TYPELESS,
478 DXGI_FORMAT_BC4_UNORM,
479 DXGI_FORMAT_BC4_SNORM,
480 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
481};
482
483constexpr DXGI_FORMAT D3DFCS_BC5[] =
484{
485 DXGI_FORMAT_BC5_TYPELESS,
486 DXGI_FORMAT_BC5_UNORM,
487 DXGI_FORMAT_BC5_SNORM,
488 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
489};
490
491constexpr DXGI_FORMAT D3DFCS_B5G6R5[] =
492{
493 DXGI_FORMAT_B5G6R5_UNORM,
494 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
495};
496
497constexpr DXGI_FORMAT D3DFCS_B5G5R5A1[] =
498{
499 DXGI_FORMAT_B5G5R5A1_UNORM,
500 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
501};
502
503constexpr DXGI_FORMAT D3DFCS_B8G8R8A8[] =
504{
505 DXGI_FORMAT_B8G8R8A8_TYPELESS,
506 DXGI_FORMAT_B8G8R8A8_UNORM,
507 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
508 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
509};
510
511constexpr DXGI_FORMAT D3DFCS_B8G8R8X8[] =
512{
513 DXGI_FORMAT_B8G8R8X8_TYPELESS,
514 DXGI_FORMAT_B8G8R8X8_UNORM,
515 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
516 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
517};
518
519constexpr DXGI_FORMAT D3DFCS_R10G10B10A2[] =
520{
521 DXGI_FORMAT_R10G10B10A2_TYPELESS,
522 DXGI_FORMAT_R10G10B10A2_UNORM,
523 DXGI_FORMAT_R10G10B10A2_UINT,
524 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM,
525 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
526};
527
528constexpr DXGI_FORMAT D3DFCS_BC6H[] =
529{
530 DXGI_FORMAT_BC6H_TYPELESS,
531 DXGI_FORMAT_BC6H_UF16,
532 DXGI_FORMAT_BC6H_SF16,
533 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
534};
535
536constexpr DXGI_FORMAT D3DFCS_BC7[] =
537{
538 DXGI_FORMAT_BC7_TYPELESS,
539 DXGI_FORMAT_BC7_UNORM,
540 DXGI_FORMAT_BC7_UNORM_SRGB,
541 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
542};
543
544constexpr DXGI_FORMAT D3DFCS_AYUV[] =
545{
546 DXGI_FORMAT_AYUV,
547 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
548};
549
550constexpr DXGI_FORMAT D3DFCS_NV12[] =
551{
552 DXGI_FORMAT_NV12,
553 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
554};
555
556constexpr DXGI_FORMAT D3DFCS_YUY2[] =
557{
558 DXGI_FORMAT_YUY2,
559 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
560};
561
562constexpr DXGI_FORMAT D3DFCS_P010[] =
563{
564 DXGI_FORMAT_P010,
565 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
566};
567
568constexpr DXGI_FORMAT D3DFCS_P016[] =
569{
570 DXGI_FORMAT_P016,
571 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
572};
573
574constexpr DXGI_FORMAT D3DFCS_NV11[] =
575{
576 DXGI_FORMAT_NV11,
577 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
578};
579
580constexpr DXGI_FORMAT D3DFCS_420_OPAQUE[] =
581{
582 DXGI_FORMAT_420_OPAQUE,
583 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
584};
585
586constexpr DXGI_FORMAT D3DFCS_Y410[] =
587{
588 DXGI_FORMAT_Y410,
589 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
590};
591
592constexpr DXGI_FORMAT D3DFCS_Y416[] =
593{
594 DXGI_FORMAT_Y416,
595 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
596};
597
598constexpr DXGI_FORMAT D3DFCS_Y210[] =
599{
600 DXGI_FORMAT_Y210,
601 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
602};
603
604constexpr DXGI_FORMAT D3DFCS_Y216[] =
605{
606 DXGI_FORMAT_Y216,
607 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
608};
609
610constexpr DXGI_FORMAT D3DFCS_AI44[] =
611{
612 DXGI_FORMAT_AI44,
613 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
614};
615
616constexpr DXGI_FORMAT D3DFCS_IA44[] =
617{
618 DXGI_FORMAT_IA44,
619 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
620};
621
622constexpr DXGI_FORMAT D3DFCS_P8[] =
623{
624 DXGI_FORMAT_P8,
625 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
626};
627
628constexpr DXGI_FORMAT D3DFCS_A8P8[] =
629{
630 DXGI_FORMAT_A8P8,
631 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
632};
633
634constexpr DXGI_FORMAT D3DFCS_B4G4R4A4[] =
635{
636 DXGI_FORMAT_B4G4R4A4_UNORM,
637 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
638};
639
640constexpr DXGI_FORMAT D3DFCS_P208[] =
641{
642 DXGI_FORMAT_P208,
643 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
644};
645
646constexpr DXGI_FORMAT D3DFCS_V208[] =
647{
648 DXGI_FORMAT_V208,
649 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
650};
651
652constexpr DXGI_FORMAT D3DFCS_V408[] =
653{
654 DXGI_FORMAT_V408,
655 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
656};
657
658constexpr DXGI_FORMAT D3DFCS_A4B4G4R4[] =
659{
660 DXGI_FORMAT_A4B4G4R4_UNORM,
661 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
662};
663
664constexpr D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail[] =
665{
666 // DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal
667 {DXGI_FORMAT_UNKNOWN ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
668 {DXGI_FORMAT_R32G32B32A32_TYPELESS ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
669 { DXGI_FORMAT_R32G32B32A32_FLOAT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FLOAT, _FLOAT, _FLOAT, _FLOAT, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
670 { DXGI_FORMAT_R32G32B32A32_UINT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
671 { DXGI_FORMAT_R32G32B32A32_SINT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
672 {DXGI_FORMAT_R32G32B32_TYPELESS ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
673 { DXGI_FORMAT_R32G32B32_FLOAT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
674 { DXGI_FORMAT_R32G32B32_UINT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _UINT, _UINT, _UINT, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
675 { DXGI_FORMAT_R32G32B32_SINT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _SINT, _SINT, _SINT, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
676 {DXGI_FORMAT_R16G16B16A16_TYPELESS ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
677 { DXGI_FORMAT_R16G16B16A16_FLOAT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FLOAT, _FLOAT, _FLOAT, _FLOAT, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
678 { DXGI_FORMAT_R16G16B16A16_UNORM ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
679 { DXGI_FORMAT_R16G16B16A16_UINT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
680 { DXGI_FORMAT_R16G16B16A16_SNORM ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SNORM, _SNORM, _SNORM, _SNORM, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
681 { DXGI_FORMAT_R16G16B16A16_SINT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
682 {DXGI_FORMAT_R32G32_TYPELESS ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
683 { DXGI_FORMAT_R32G32_FLOAT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _FLOAT, _FLOAT, _TYPELESS, _TYPELESS, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
684 { DXGI_FORMAT_R32G32_UINT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
685 { DXGI_FORMAT_R32G32_SINT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
686 {DXGI_FORMAT_R32G8X24_TYPELESS ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
687 { DXGI_FORMAT_D32_FLOAT_S8X24_UINT ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,S,X,X, _FLOAT,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
688 { DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT,_TYPELESS,_TYPELESS,_TYPELESS, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, },
689 { DXGI_FORMAT_X32_TYPELESS_G8X24_UINT ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,G,X,X, _TYPELESS,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
690 {DXGI_FORMAT_R10G10B10A2_TYPELESS ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, },
691 { DXGI_FORMAT_R10G10B10A2_UNORM ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, },
692 { DXGI_FORMAT_R10G10B10A2_UINT ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, },
693 {DXGI_FORMAT_R11G11B10_FLOAT ,DXGI_FORMAT_R11G11B10_FLOAT, D3DFCS_R11G11B10, {11,11,10,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
694 {DXGI_FORMAT_R8G8B8A8_TYPELESS ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
695 { DXGI_FORMAT_R8G8B8A8_UNORM ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
696 { DXGI_FORMAT_R8G8B8A8_UNORM_SRGB ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
697 { DXGI_FORMAT_R8G8B8A8_UINT ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
698 { DXGI_FORMAT_R8G8B8A8_SNORM ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SNORM, _SNORM, _SNORM, _SNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
699 { DXGI_FORMAT_R8G8B8A8_SINT ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
700 {DXGI_FORMAT_R16G16_TYPELESS ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
701 { DXGI_FORMAT_R16G16_FLOAT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _FLOAT, _FLOAT, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
702 { DXGI_FORMAT_R16G16_UNORM ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
703 { DXGI_FORMAT_R16G16_UINT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
704 { DXGI_FORMAT_R16G16_SNORM ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
705 { DXGI_FORMAT_R16G16_SINT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
706 {DXGI_FORMAT_R32_TYPELESS ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
707 { DXGI_FORMAT_D32_FLOAT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
708 { DXGI_FORMAT_R32_FLOAT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
709 { DXGI_FORMAT_R32_UINT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
710 { DXGI_FORMAT_R32_SINT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
711 {DXGI_FORMAT_R24G8_TYPELESS ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
712 { DXGI_FORMAT_D24_UNORM_S8_UINT ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,S,X,X, _UNORM,_UINT,_TYPELESS,_TYPELESS, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, },
713 { DXGI_FORMAT_R24_UNORM_X8_TYPELESS ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM,_TYPELESS,_TYPELESS,_TYPELESS, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, },
714 { DXGI_FORMAT_X24_TYPELESS_G8_UINT ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,G,X,X, _TYPELESS,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
715 {DXGI_FORMAT_R8G8_TYPELESS ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
716 { DXGI_FORMAT_R8G8_UNORM ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
717 { DXGI_FORMAT_R8G8_UINT ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
718 { DXGI_FORMAT_R8G8_SNORM ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
719 { DXGI_FORMAT_R8G8_SINT ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
720 {DXGI_FORMAT_R16_TYPELESS ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
721 { DXGI_FORMAT_R16_FLOAT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
722 { DXGI_FORMAT_D16_UNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
723 { DXGI_FORMAT_R16_UNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
724 { DXGI_FORMAT_R16_UINT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
725 { DXGI_FORMAT_R16_SNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
726 { DXGI_FORMAT_R16_SINT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
727 {DXGI_FORMAT_R8_TYPELESS ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
728 { DXGI_FORMAT_R8_UNORM ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
729 { DXGI_FORMAT_R8_UINT ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
730 { DXGI_FORMAT_R8_SNORM ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
731 { DXGI_FORMAT_R8_SINT ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
732 {DXGI_FORMAT_A8_UNORM ,DXGI_FORMAT_A8_UNORM, D3DFCS_A8, {0,0,0,8}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,X,X,A, _TYPELESS, _TYPELESS, _TYPELESS, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
733 {DXGI_FORMAT_R1_UNORM ,DXGI_FORMAT_R1_UNORM, D3DFCS_R1, {1,0,0,0}, 1, FALSE, 8, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
734 {DXGI_FORMAT_R9G9B9E5_SHAREDEXP ,DXGI_FORMAT_R9G9B9E5_SHAREDEXP, D3DFCS_R9G9B9E5, {0,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _FLOAT, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
735 {DXGI_FORMAT_R8G8_B8G8_UNORM ,DXGI_FORMAT_R8G8_B8G8_UNORM, D3DFCS_R8G8_B8G8, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
736 {DXGI_FORMAT_G8R8_G8B8_UNORM ,DXGI_FORMAT_G8R8_G8B8_UNORM, D3DFCS_G8R8_G8B8, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
737 {DXGI_FORMAT_BC1_TYPELESS ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
738 { DXGI_FORMAT_BC1_UNORM ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
739 { DXGI_FORMAT_BC1_UNORM_SRGB ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
740 {DXGI_FORMAT_BC2_TYPELESS ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
741 { DXGI_FORMAT_BC2_UNORM ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
742 { DXGI_FORMAT_BC2_UNORM_SRGB ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
743 {DXGI_FORMAT_BC3_TYPELESS ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
744 { DXGI_FORMAT_BC3_UNORM ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
745 { DXGI_FORMAT_BC3_UNORM_SRGB ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
746 {DXGI_FORMAT_BC4_TYPELESS ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
747 { DXGI_FORMAT_BC4_UNORM ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
748 { DXGI_FORMAT_BC4_SNORM ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
749 {DXGI_FORMAT_BC5_TYPELESS ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
750 { DXGI_FORMAT_BC5_UNORM ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
751 { DXGI_FORMAT_BC5_SNORM ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
752 {DXGI_FORMAT_B5G6R5_UNORM ,DXGI_FORMAT_B5G6R5_UNORM, D3DFCS_B5G6R5, {5,6,5,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
753 {DXGI_FORMAT_B5G5R5A1_UNORM ,DXGI_FORMAT_B5G5R5A1_UNORM, D3DFCS_B5G5R5A1, {5,5,5,1}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
754 {DXGI_FORMAT_B8G8R8A8_UNORM ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
755 {DXGI_FORMAT_B8G8R8X8_UNORM ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
756 {DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FIXED_2_8, _FIXED_2_8, _FIXED_2_8, _UNORM, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
757 {DXGI_FORMAT_B8G8R8A8_TYPELESS ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, B,G,R,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
758 { DXGI_FORMAT_B8G8R8A8_UNORM_SRGB ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
759 {DXGI_FORMAT_B8G8R8X8_TYPELESS ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, B,G,R,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
760 { DXGI_FORMAT_B8G8R8X8_UNORM_SRGB ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
761 {DXGI_FORMAT_BC6H_TYPELESS ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
762 { DXGI_FORMAT_BC6H_UF16 ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
763 { DXGI_FORMAT_BC6H_SF16 ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
764 {DXGI_FORMAT_BC7_TYPELESS ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
765 { DXGI_FORMAT_BC7_UNORM ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
766 { DXGI_FORMAT_BC7_UNORM_SRGB ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
767 // YUV 4:4:4 formats
768 { DXGI_FORMAT_AYUV ,DXGI_FORMAT_AYUV, D3DFCS_AYUV, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
769 { DXGI_FORMAT_Y410 ,DXGI_FORMAT_Y410, D3DFCS_Y410, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
770 { DXGI_FORMAT_Y416 ,DXGI_FORMAT_Y416, D3DFCS_Y416, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
771 // YUV 4:2:0 formats
772 { DXGI_FORMAT_NV12 ,DXGI_FORMAT_NV12, D3DFCS_NV12, {0,0,0,0}, 8, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
773 { DXGI_FORMAT_P010 ,DXGI_FORMAT_P010, D3DFCS_P010, {0,0,0,0}, 16, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, },
774 { DXGI_FORMAT_P016 ,DXGI_FORMAT_P016, D3DFCS_P016, {0,0,0,0}, 16, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, },
775 { DXGI_FORMAT_420_OPAQUE ,DXGI_FORMAT_420_OPAQUE, D3DFCS_420_OPAQUE, {0,0,0,0}, 8, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
776 // YUV 4:2:2 formats
777 { DXGI_FORMAT_YUY2 ,DXGI_FORMAT_YUY2, D3DFCS_YUY2, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
778 { DXGI_FORMAT_Y210 ,DXGI_FORMAT_Y210, D3DFCS_Y210, {0,0,0,0}, 32, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
779 { DXGI_FORMAT_Y216 ,DXGI_FORMAT_Y216, D3DFCS_Y216, {0,0,0,0}, 32, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
780 // YUV 4:1:1 formats
781 { DXGI_FORMAT_NV11 ,DXGI_FORMAT_NV11, D3DFCS_NV11, {0,0,0,0}, 8, FALSE, 4, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
782 // Legacy substream formats
783 { DXGI_FORMAT_AI44 ,DXGI_FORMAT_AI44, D3DFCS_AI44, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
784 { DXGI_FORMAT_IA44 ,DXGI_FORMAT_IA44, D3DFCS_IA44, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
785 { DXGI_FORMAT_P8 ,DXGI_FORMAT_P8, D3DFCS_P8, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
786 { DXGI_FORMAT_A8P8 ,DXGI_FORMAT_A8P8, D3DFCS_A8P8, {0,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
787 { DXGI_FORMAT_B4G4R4A4_UNORM ,DXGI_FORMAT_B4G4R4A4_UNORM, D3DFCS_B4G4R4A4, {4,4,4,4}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
788 { DXGI_FORMAT(116) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
789 { DXGI_FORMAT(117) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
790 { DXGI_FORMAT(118) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
791 { DXGI_FORMAT(119) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
792 { DXGI_FORMAT(120) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
793 { DXGI_FORMAT(121) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
794 { DXGI_FORMAT(122) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
795
796 { DXGI_FORMAT(123) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
797
798 { DXGI_FORMAT(124) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
799 { DXGI_FORMAT(125) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
800 { DXGI_FORMAT(126) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
801 { DXGI_FORMAT(127) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
802 { DXGI_FORMAT(128) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
803 { DXGI_FORMAT(129) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
804 { DXGI_FORMAT(DXGI_FORMAT_P208) ,DXGI_FORMAT_P208, D3DFCS_P208, {0,0,0,0}, 8, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
805 { DXGI_FORMAT(DXGI_FORMAT_V208) ,DXGI_FORMAT_V208, D3DFCS_V208, {0,0,0,0}, 8, FALSE, 1, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
806 { DXGI_FORMAT(DXGI_FORMAT_V408) ,DXGI_FORMAT_V408, D3DFCS_V408, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
807
808 { DXGI_FORMAT(133) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
809 { DXGI_FORMAT(134) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
810 { DXGI_FORMAT(135) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
811 { DXGI_FORMAT(136) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
812 { DXGI_FORMAT(137) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
813 { DXGI_FORMAT(138) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
814 { DXGI_FORMAT(139) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
815 { DXGI_FORMAT(140) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
816 { DXGI_FORMAT(141) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
817 { DXGI_FORMAT(142) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
818 { DXGI_FORMAT(143) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
819 { DXGI_FORMAT(144) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
820 { DXGI_FORMAT(145) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
821 { DXGI_FORMAT(146) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
822 { DXGI_FORMAT(147) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
823 { DXGI_FORMAT(148) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
824 { DXGI_FORMAT(149) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
825 { DXGI_FORMAT(150) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
826 { DXGI_FORMAT(151) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
827 { DXGI_FORMAT(152) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
828 { DXGI_FORMAT(153) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
829 { DXGI_FORMAT(154) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
830 { DXGI_FORMAT(155) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
831 { DXGI_FORMAT(156) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
832 { DXGI_FORMAT(157) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
833 { DXGI_FORMAT(158) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
834 { DXGI_FORMAT(159) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
835 { DXGI_FORMAT(160) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
836 { DXGI_FORMAT(161) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
837 { DXGI_FORMAT(162) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
838 { DXGI_FORMAT(163) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
839 { DXGI_FORMAT(164) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
840 { DXGI_FORMAT(165) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
841 { DXGI_FORMAT(166) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
842 { DXGI_FORMAT(167) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
843 { DXGI_FORMAT(168) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
844 { DXGI_FORMAT(169) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
845 { DXGI_FORMAT(170) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
846 { DXGI_FORMAT(171) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
847 { DXGI_FORMAT(172) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
848 { DXGI_FORMAT(173) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
849 { DXGI_FORMAT(174) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
850 { DXGI_FORMAT(175) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
851 { DXGI_FORMAT(176) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
852 { DXGI_FORMAT(177) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
853 { DXGI_FORMAT(178) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
854 { DXGI_FORMAT(179) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
855 { DXGI_FORMAT(180) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
856 { DXGI_FORMAT(181) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
857 { DXGI_FORMAT(182) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
858 { DXGI_FORMAT(183) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
859 { DXGI_FORMAT(184) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
860 { DXGI_FORMAT(185) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
861 { DXGI_FORMAT(186) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
862 { DXGI_FORMAT(187) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
863 { DXGI_FORMAT(188) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
864
865 { DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
866 { DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
867 { DXGI_FORMAT_A4B4G4R4_UNORM ,DXGI_FORMAT_A4B4G4R4_UNORM, D3DFCS_A4B4G4R4, {4,4,4,4}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, A,B,G,R, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
868 //DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal
869
870};
871
872const UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_NumFormats = (sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail) / sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL));
873
874//---------------------------------------------------------------------------------------------------------------------------------
875// GetHighestDefinedFeatureLevel
876D3D_FEATURE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHighestDefinedFeatureLevel()
877{
878 return D3D_FEATURE_LEVEL_12_2;
879}
880
881//---------------------------------------------------------------------------------------------------------------------------------
882// GetNumFormats
883UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumFormats()
884{
885 return s_NumFormats;
886}
887
888//---------------------------------------------------------------------------------------------------------------------------------
889// GetFormatTable
890const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatTable()
891{
892 return &s_FormatDetail[0];
893}
894
895//---------------------------------------------------------------------------------------------------------------------------------
896// GetFormatTable
897BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Opaque(DXGI_FORMAT Format)
898{
899 return Format == DXGI_FORMAT_420_OPAQUE;
900}
901
902//---------------------------------------------------------------------------------------------------------------------------------
903// FormatExists
904bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(DXGI_FORMAT Format)
905{
906 return GetFormat( Format) != (DXGI_FORMAT) -1 ? true : false;
907}
908
909//---------------------------------------------------------------------------------------------------------------------------------
910// GetDetailTableIndex
911UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndex(DXGI_FORMAT Format )
912{
913 if( (UINT)Format < _countof( s_FormatDetail ) )
914 {
915 assert( s_FormatDetail[(UINT)Format].DXGIFormat == Format );
916 return static_cast<UINT>(Format);
917 }
918
919 return (UINT)-1;
920}
921
922//---------------------------------------------------------------------------------------------------------------------------------
923// IsBlockCompressFormat - returns true if format is block compressed. This function is a helper function for GetBitsPerUnit and
924// if this function returns true then GetBitsPerUnit returns block size.
925bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsBlockCompressFormat(DXGI_FORMAT Format)
926{
927 // Returns true if BC1, BC2, BC3, BC4, BC5, BC6, BC7, or ASTC
928 return (Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC5_SNORM) ||
929 (Format >= DXGI_FORMAT_BC6H_TYPELESS && Format <= DXGI_FORMAT_BC7_UNORM_SRGB);
930}
931
932//---------------------------------------------------------------------------------------------------------------------------------
933// GetByteAlignment
934UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetByteAlignment(DXGI_FORMAT Format)
935{
936 UINT bits = GetBitsPerUnit(Format);
937 if (!IsBlockCompressFormat(Format))
938 {
939 bits *= GetWidthAlignment(Format)*GetHeightAlignment(Format)*GetDepthAlignment(Format);
940 }
941
942 assert((bits & 0x7) == 0); // Unit must be byte-aligned
943 return bits >> 3;
944}
945
946//---------------------------------------------------------------------------------------------------------------------------------
947// GetBitsPerUnitThrow
948UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerUnitThrow(DXGI_FORMAT Format)
949{
950 return s_FormatDetail[GetDetailTableIndexThrow( Format )].BitsPerUnit;
951}
952
953//---------------------------------------------------------------------------------------------------------------------------------
954// FormatExistsInHeader
955bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExistsInHeader(DXGI_FORMAT Format, bool bExternalHeader)
956{
957 const UINT Index = GetDetailTableIndex( Format );
958 if (UINT( -1 ) == Index || (bExternalHeader && GetFormatDetail( Format )->bInternal))
959 {
960 return false;
961 }
962 else
963 {
964 return true;
965 }
966}
967
968//---------------------------------------------------------------------------------------------------------------------------------
969// GetName
970LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetName(DXGI_FORMAT Format, bool bHideInternalFormats)
971{
972 const UINT Index = GetDetailTableIndex( Format );
973 if (UINT( -1 ) == Index || (bHideInternalFormats && GetFormatDetail( Format )->bInternal) || !s_FormatNames[Index])
974 {
975 return "Unrecognized";
976 }
977 else
978 {
979 return s_FormatNames[ Index ];
980 }
981}
982
983//---------------------------------------------------------------------------------------------------------------------------------
984// IsSRGBFormat
985bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSRGBFormat(DXGI_FORMAT Format)
986{
987 const UINT Index = GetDetailTableIndex(Format);
988 if(UINT( -1 ) == Index )
989 {
990 return false;
991 }
992
993 return s_FormatDetail[Index].SRGBFormat ? true : false;
994}
995
996//----------------------------------------------------------------------------
997// DivideAndRoundUp
998inline HRESULT DivideAndRoundUp(UINT dividend, UINT divisor, _Out_ UINT& result)
999{
1000 HRESULT hr = S_OK;
1001
1002 UINT adjustedDividend;
1003 hr = Safe_UIntAdd(dividend, (divisor - 1), &adjustedDividend);
1004
1005 result = SUCCEEDED(hr) ? (adjustedDividend / divisor) : 0;
1006
1007 return hr;
1008}
1009
1010//----------------------------------------------------------------------------
1011// CalculateExtraPlanarRows
1012HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateExtraPlanarRows(
1013 DXGI_FORMAT format,
1014 UINT plane0Height,
1015 _Out_ UINT& totalHeight
1016 )
1017{
1018 if (!D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(format))
1019 {
1020 totalHeight = plane0Height;
1021 return S_OK;
1022 }
1023
1024 // blockWidth, blockHeight, and blockSize only reflect the size of plane 0. Each planar format has additonal planes that must
1025 // be counted. Each format increases size by another 0.5x, 1x, or 2x. Grab the number of "half allocation" increments so integer
1026 // math can be used to calculate the extra size.
1027 UINT extraHalfHeight;
1028 UINT round;
1029
1030 switch (D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetParentFormat(format))
1031 {
1032 case DXGI_FORMAT_NV12:
1033 case DXGI_FORMAT_P010:
1034 case DXGI_FORMAT_P016:
1035 case DXGI_FORMAT_420_OPAQUE:
1036 extraHalfHeight = 1;
1037 round = 1;
1038 break;
1039
1040 case DXGI_FORMAT_NV11:
1041 case DXGI_FORMAT_P208:
1042 extraHalfHeight = 2;
1043 round = 0;
1044 break;
1045 case DXGI_FORMAT_V208:
1046 extraHalfHeight = 2;
1047 round = 1;
1048 break;
1049
1050 case DXGI_FORMAT_V408:
1051 extraHalfHeight = 4;
1052 round = 0;
1053 break;
1054
1055 case DXGI_FORMAT_R24G8_TYPELESS:
1056 case DXGI_FORMAT_R32G8X24_TYPELESS:
1057 totalHeight = plane0Height;
1058 return S_OK;
1059
1060 default:
1061 assert(false);
1062 return S_OK;
1063 }
1064
1065 UINT extraPlaneHeight;
1066 if (FAILED(Safe_UIntMult(plane0Height, extraHalfHeight, &extraPlaneHeight))
1067 || FAILED(Safe_UIntAdd(extraPlaneHeight, round, &extraPlaneHeight))
1068 || FAILED(Safe_UIntAdd(plane0Height, (extraPlaneHeight >> 1), &totalHeight)))
1069 {
1070 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1071 }
1072
1073 return S_OK;
1074}
1075
1076//----------------------------------------------------------------------------
1077// CalculateResourceSize
1078HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize(
1079 UINT width,
1080 UINT height,
1081 UINT depth,
1082 DXGI_FORMAT format,
1083 UINT mipLevels,
1084 UINT subresources,
1085 _Out_ SIZE_T& totalByteSize,
1086 _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST *pDst)
1087{
1088 UINT tableIndex = GetDetailTableIndexNoThrow( format );
1089 if (tableIndex == UINT(-1))
1090 return E_INVALIDARG;
1091
1092 totalByteSize = 0;
1093
1094 const FORMAT_DETAIL& formatDetail = s_FormatDetail[tableIndex];
1095
1096 bool fIsBlockCompressedFormat = IsBlockCompressFormat(format );
1097
1098 // No format currently requires depth alignment.
1099 assert(formatDetail.DepthAlignment == 1);
1100
1101 UINT subWidth = width;
1102 UINT subHeight = height;
1103 UINT subDepth = depth;
1104 for (UINT s = 0, iM = 0; s < subresources; ++s)
1105 {
1106 UINT blockWidth;
1107 if (FAILED(DivideAndRoundUp(subWidth, formatDetail.WidthAlignment, /*_Out_*/ blockWidth)))
1108 {
1109 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1110 }
1111
1112 UINT blockSize, blockHeight;
1113 if (fIsBlockCompressedFormat)
1114 {
1115 if (FAILED(DivideAndRoundUp(subHeight, formatDetail.HeightAlignment, /*_Out_*/ blockHeight)))
1116 {
1117 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1118 }
1119
1120 // Block Compressed formats use BitsPerUnit as block size.
1121 blockSize = formatDetail.BitsPerUnit;
1122 }
1123 else
1124 {
1125 // The height must *not* be aligned to HeightAlign. As there is no plane pitch/stride, the expectation is that the 2nd plane
1126 // begins immediately after the first. The only formats with HeightAlignment other than 1 are planar or block compressed, and
1127 // block compressed is handled above.
1128 assert(formatDetail.bPlanar || formatDetail.HeightAlignment == 1);
1129 blockHeight = subHeight;
1130
1131 // Combined with the division os subWidth by the width alignment above, this helps achieve rounding the stride up to an even multiple of
1132 // block width. This is especially important for formats like NV12 and P208 whose chroma plane is wider than the luma.
1133 blockSize = formatDetail.BitsPerUnit * formatDetail.WidthAlignment;
1134 }
1135
1136 if (DXGI_FORMAT_UNKNOWN == formatDetail.DXGIFormat)
1137 {
1138 blockSize = 8;
1139 }
1140
1141 // Convert block width size to bytes.
1142 assert((blockSize & 0x7) == 0);
1143 blockSize = blockSize >> 3;
1144
1145 if (formatDetail.bPlanar)
1146 {
1147 if (FAILED(CalculateExtraPlanarRows(format, blockHeight, /*_Out_*/ blockHeight)))
1148 {
1149 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1150 }
1151 }
1152
1153 // Calculate rowPitch, depthPitch, and total subresource size.
1154 UINT rowPitch, depthPitch;
1155
1156 if ( FAILED(Safe_UIntMult(blockWidth, blockSize, &rowPitch))
1157 || FAILED(Safe_UIntMult(blockHeight, rowPitch, &depthPitch)))
1158 {
1159 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1160 }
1161 SIZE_T subresourceByteSize = SIZE_T(UINT64(subDepth) * UINT64(depthPitch));
1162
1163 if (pDst)
1164 {
1165 D3D12_MEMCPY_DEST& dst = pDst[s];
1166
1167 // This data will be returned straight from the API to satisfy Map. So, strides/ alignment must be API-correct.
1168 dst.pData = reinterpret_cast<void*>(totalByteSize);
1169 assert(s != 0 || dst.pData == nullptr);
1170
1171 dst.RowPitch = rowPitch;
1172 dst.SlicePitch = depthPitch;
1173 }
1174
1175 // Align the subresource size.
1176 static_assert((MAP_ALIGN_REQUIREMENT & (MAP_ALIGN_REQUIREMENT - 1)) == 0, "This code expects MAP_ALIGN_REQUIREMENT to be a power of 2.");
1177
1178 SIZE_T subresourceByteSizeAligned = subresourceByteSize + MAP_ALIGN_REQUIREMENT - 1;
1179 subresourceByteSizeAligned = subresourceByteSizeAligned & ~(MAP_ALIGN_REQUIREMENT - 1);
1180 totalByteSize = totalByteSize + subresourceByteSizeAligned;
1181
1182
1183 // Iterate over mip levels and array elements
1184 if (++iM >= mipLevels)
1185 {
1186 iM = 0;
1187
1188 subWidth = width;
1189 subHeight = height;
1190 subDepth = depth;
1191 }
1192 else
1193 {
1194 subWidth /= (1 == subWidth ? 1 : 2);
1195 subHeight /= (1 == subHeight ? 1 : 2);
1196 subDepth /= (1 == subDepth ? 1 : 2);
1197 }
1198 }
1199
1200 return S_OK;
1201}
1202
1203inline bool IsPow2( UINT Val )
1204{
1205 return 0 == (Val & (Val - 1));
1206}
1207
1208// This helper function calculates the Row Pitch for a given format. For Planar formats this function returns
1209// the row major RowPitch of the resource. The RowPitch is the same for all the planes. For Planar
1210// also use the CalculateExtraPlanarRows function to calculate the corresonding height or use the CalculateMinimumRowMajorSlicePitch
1211// function. For Block Compressed Formats, this function returns the RowPitch of a row of blocks. For packed subsampled formats and other formats,
1212// this function returns the row pitch of one single row of pixels.
1213HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(DXGI_FORMAT Format, UINT Width, _Out_ UINT &RowPitch)
1214{
1215 // Early out for DXGI_FORMAT_UNKNOWN special case.
1216 if (Format == DXGI_FORMAT_UNKNOWN)
1217 {
1218 RowPitch = Width;
1219 return S_OK;
1220 }
1221
1222 UINT WidthAlignment = GetWidthAlignment(Format);
1223
1224 UINT NumUnits;
1225 if (IsBlockCompressFormat(Format))
1226 {
1227 // This function calculates the minimum stride needed for a block row when the format
1228 // is block compressed.The GetBitsPerUnit value stored in the format table indicates
1229 // the size of a compressed block for block compressed formats.
1230 assert(WidthAlignment != 0);
1231 if (FAILED(DivideAndRoundUp(Width, WidthAlignment, NumUnits)))
1232 {
1233 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1234 }
1235 }
1236 else
1237 {
1238 // All other formats must have strides aligned to their width alignment requirements.
1239 // The Width may not be aligned to the WidthAlignment. This is not an error for this
1240 // function as we expect to allow formats like NV12 to have odd dimensions in the future.
1241
1242 // The following alignement code expects only pow2 alignment requirements. Only block
1243 // compressed formats currently have non-pow2 alignment requriements.
1244 assert(IsPow2(WidthAlignment));
1245
1246 UINT Mask = WidthAlignment - 1;
1247 if (FAILED(Safe_UIntAdd(Width, Mask, &NumUnits)))
1248 {
1249 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1250 }
1251
1252 NumUnits &= ~Mask;
1253 }
1254
1255 if (FAILED(Safe_UIntMult(NumUnits, GetBitsPerUnit(Format), &RowPitch)))
1256 {
1257 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1258 }
1259
1260 // This must to always be Byte aligned.
1261 assert((RowPitch & 7) == 0);
1262 RowPitch >>= 3;
1263
1264 return S_OK;
1265}
1266
1267// This helper function calculates the SlicePitch for a given format. For Planar formats the slice pitch includes the extra
1268// planes.
1269HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorSlicePitch(DXGI_FORMAT Format, UINT TightRowPitch, UINT Height, _Out_ UINT &SlicePitch)
1270{
1271 if (Planar(Format))
1272 {
1273 UINT PlanarHeight;
1274 if (FAILED(CalculateExtraPlanarRows(Format, Height, PlanarHeight)))
1275 {
1276 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1277 }
1278
1279 return Safe_UIntMult(TightRowPitch, PlanarHeight, &SlicePitch);
1280 }
1281 else if (Format == DXGI_FORMAT_UNKNOWN)
1282 {
1283 return Safe_UIntMult(TightRowPitch, Height, &SlicePitch);
1284 }
1285
1286 UINT HeightAlignment = GetHeightAlignment(Format);
1287
1288 // Caution assert to make sure that no new format breaks this assumption that all HeightAlignment formats are BC or Planar.
1289 // This is to make sure that Height handled correctly for this calculation.
1290 assert(HeightAlignment == 1 || IsBlockCompressFormat(Format));
1291
1292 UINT HeightOfPacked;
1293 if (FAILED(DivideAndRoundUp(Height, HeightAlignment, HeightOfPacked)))
1294 {
1295 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1296 }
1297
1298 if (FAILED(Safe_UIntMult(HeightOfPacked, TightRowPitch, &SlicePitch)))
1299 {
1300 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1301 }
1302
1303 return S_OK;
1304}
1305
1306
1307
1308//---------------------------------------------------------------------------------------------------------------------------------
1309// GetBitsPerUnit - returns bits per pixel unless format is a block compress format then it returns bits per block.
1310// use IsBlockCompressFormat() to determine if block size is returned.
1311UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerUnit(DXGI_FORMAT Format)
1312{
1313 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerUnit;
1314}
1315
1316//---------------------------------------------------------------------------------------------------------------------------------
1317UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment(DXGI_FORMAT Format)
1318{
1319 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].WidthAlignment;
1320}
1321
1322UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment(DXGI_FORMAT Format)
1323{
1324 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].HeightAlignment;
1325}
1326
1327UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment(DXGI_FORMAT Format)
1328{
1329 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].DepthAlignment;
1330}
1331//---------------------------------------------------------------------------------------------------------------------------------
1332// GetFormat
1333DXGI_FORMAT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormat(SIZE_T Index)
1334{
1335 if( Index < GetNumFormats() )
1336 {
1337 return s_FormatDetail[Index].DXGIFormat;
1338 }
1339 return (DXGI_FORMAT)-1;
1340}
1341
1342//---------------------------------------------------------------------------------------------------------------------------------
1343// CanBeCastEvenFullyTyped
1344bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CanBeCastEvenFullyTyped(DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl)
1345{
1346 //SRGB can be cast away/back, and XR_BIAS can be cast to/from UNORM
1347 switch(fl)
1348 {
1349 case D3D_FEATURE_LEVEL_1_0_GENERIC:
1350 case D3D_FEATURE_LEVEL_1_0_CORE:
1351 return false;
1352 default:
1353 break;
1354 }
1355 switch( Format )
1356 {
1357 case DXGI_FORMAT_R8G8B8A8_UNORM:
1358 case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
1359 case DXGI_FORMAT_B8G8R8A8_UNORM:
1360 case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
1361 return true;
1362 case DXGI_FORMAT_R10G10B10A2_UNORM:
1363 case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
1364 return fl >= D3D_FEATURE_LEVEL_10_0;
1365 default:
1366 return false;
1367 }
1368}
1369
1370//---------------------------------------------------------------------------------------------------------------------------------
1371// GetFormatDetail
1372const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatDetail( DXGI_FORMAT Format )
1373{
1374 const UINT Index = GetDetailTableIndex(Format);
1375 if(UINT( -1 ) == Index )
1376 {
1377 return nullptr;
1378 }
1379
1380 return &s_FormatDetail[ Index ];
1381}
1382
1383//---------------------------------------------------------------------------------------------------------------------------------
1384// GetBitsPerStencil
1385UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerStencil(DXGI_FORMAT Format)
1386{
1387 const UINT Index = GetDetailTableIndexThrow( Format );
1388 if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) &&
1389 (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) )
1390 {
1391 return 0;
1392 }
1393 for( UINT comp = 0; comp < 4; comp++ )
1394 {
1395 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1396 switch(comp)
1397 {
1398 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1399 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1400 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1401 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1402 }
1403 if( name == D3DFCN_S )
1404 {
1405 return s_FormatDetail[Index].BitsPerComponent[comp];
1406 }
1407 }
1408 return 0;
1409}
1410
1411//---------------------------------------------------------------------------------------------------------------------------------
1412// GetBitsPerDepth
1413UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerDepth(DXGI_FORMAT Format)
1414{
1415 const UINT Index = GetDetailTableIndexThrow( Format );
1416 if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) &&
1417 (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) )
1418 {
1419 return 0;
1420 }
1421 for( UINT comp = 0; comp < 4; comp++ )
1422 {
1423 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1424 switch(comp)
1425 {
1426 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1427 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1428 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1429 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1430 }
1431 if( name == D3DFCN_D )
1432 {
1433 return s_FormatDetail[Index].BitsPerComponent[comp];
1434 }
1435 }
1436 return 0;
1437}
1438
1439//---------------------------------------------------------------------------------------------------------------------------------
1440// GetFormatReturnTypes
1441void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatReturnTypes(
1442 DXGI_FORMAT Format,
1443 D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations ) // return array with 4 entries
1444{
1445 const UINT Index = GetDetailTableIndexThrow(Format);
1446 pInterpretations[D3D10_SB_4_COMPONENT_R] = s_FormatDetail[Index].ComponentInterpretation0;
1447 pInterpretations[D3D10_SB_4_COMPONENT_G] = s_FormatDetail[Index].ComponentInterpretation1;
1448 pInterpretations[D3D10_SB_4_COMPONENT_B] = s_FormatDetail[Index].ComponentInterpretation2;
1449 pInterpretations[D3D10_SB_4_COMPONENT_A] = s_FormatDetail[Index].ComponentInterpretation3;
1450}
1451
1452//---------------------------------------------------------------------------------------------------------------------------------
1453// GetAddressingBitsPerAlignedSize
1454UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetAddressingBitsPerAlignedSize(DXGI_FORMAT Format)
1455{
1456 UINT byteAlignment = GetByteAlignment(Format);
1457 UINT8 addressBitsPerElement = 0;
1458
1459 switch(byteAlignment)
1460 {
1461 case 1: addressBitsPerElement = 0; break;
1462 case 2: addressBitsPerElement = 1; break;
1463 case 4: addressBitsPerElement = 2; break;
1464 case 8: addressBitsPerElement = 3; break;
1465 case 16: addressBitsPerElement = 4; break;
1466
1467 // The format is not supported
1468 default: return UINT8( -1 );
1469 }
1470
1471 return addressBitsPerElement;
1472}
1473
1474//---------------------------------------------------------------------------------------------------------------------------------
1475// GetNumComponentsInFormat
1476UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumComponentsInFormat( DXGI_FORMAT Format )
1477{
1478 UINT n = 0;
1479 const UINT Index = GetDetailTableIndexThrow(Format);
1480 for( UINT comp = 0; comp < 4; comp++ )
1481 {
1482 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1483 switch(comp)
1484 {
1485 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1486 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1487 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1488 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1489 }
1490 if( name != D3DFCN_X )
1491 {
1492 n++;
1493 }
1494 }
1495 return n;
1496}
1497
1498//---------------------------------------------------------------------------------------------------------------------------------
1499// GetMinNumComponentsInFormats
1500UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
1501{
1502 UINT NumComponentsFormatA = GetNumComponentsInFormat(FormatA);
1503 UINT NumComponentsFormatB = GetNumComponentsInFormat(FormatB);
1504 UINT NumComponents = NumComponentsFormatA < NumComponentsFormatB ? NumComponentsFormatA : NumComponentsFormatB;
1505 return NumComponents;
1506}
1507
1508//---------------------------------------------------------------------------------------------------------------------------------
1509// Sequential2AbsoluteComponentIndex
1510UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Sequential2AbsoluteComponentIndex( DXGI_FORMAT Format, UINT SequentialComponentIndex)
1511{
1512 UINT n = 0;
1513 const UINT Index = GetDetailTableIndexThrow(Format);
1514 for( UINT comp = 0; comp < 4; comp++ )
1515 {
1516 D3D_FORMAT_COMPONENT_NAME name = static_cast<D3D_FORMAT_COMPONENT_NAME>(0);
1517 switch(comp)
1518 {
1519 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1520 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1521 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1522 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1523 }
1524 if( name != D3DFCN_X )
1525 {
1526 if (SequentialComponentIndex == n)
1527 {
1528 return comp;
1529 }
1530 n++;
1531 }
1532 }
1533 return UINT( -1 );
1534}
1535
1536//---------------------------------------------------------------------------------------------------------------------------------
1537// Depth Only Format
1538bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DepthOnlyFormat(DXGI_FORMAT Format)
1539{
1540 switch( Format )
1541 {
1542 case DXGI_FORMAT_D32_FLOAT:
1543 case DXGI_FORMAT_D16_UNORM:
1544 return true;
1545 default:
1546 return false;
1547 }
1548}
1549
1550//---------------------------------------------------------------------------------------------------------------------------------
1551bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsSamplerFeedback(DXGI_FORMAT Format)
1552{
1553 switch (Format)
1554 {
1555 case DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE:
1556 case DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE:
1557 return true;
1558 default:
1559 return false;
1560 }
1561}
1562
1563//---------------------------------------------------------------------------------------------------------------------------------
1564// GetParentFormat
1565DXGI_FORMAT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetParentFormat(DXGI_FORMAT Format)
1566{
1567 return s_FormatDetail[Format].ParentFormat;
1568}
1569
1570//---------------------------------------------------------------------------------------------------------------------------------
1571// GetFormatCastSet
1572const DXGI_FORMAT* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatCastSet(DXGI_FORMAT Format)
1573{
1574 return s_FormatDetail[Format].pDefaultFormatCastSet;
1575}
1576
1577//---------------------------------------------------------------------------------------------------------------------------------
1578// GetTypeLevel
1579D3D_FORMAT_TYPE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTypeLevel(DXGI_FORMAT Format)
1580{
1581 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].TypeLevel;
1582}
1583
1584//---------------------------------------------------------------------------------------------------------------------------------
1585// GetLayout
1586D3D_FORMAT_LAYOUT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetLayout(DXGI_FORMAT Format)
1587{
1588 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].Layout;
1589}
1590
1591//---------------------------------------------------------------------------------------------------------------------------------
1592// GetComponentName
1593D3D_FORMAT_COMPONENT_NAME D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetComponentName(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1594{
1595 D3D_FORMAT_COMPONENT_NAME name = {};
1596 switch( AbsoluteComponentIndex )
1597 {
1598 case 0: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName0; break;
1599 case 1: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName1; break;
1600 case 2: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName2; break;
1601 case 3: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName3; break;
1602#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1603 default: throw std::invalid_argument("AbsoluteComponentIndex");
1604#else
1605 default: break;
1606#endif
1607 }
1608 return name;
1609}
1610//---------------------------------------------------------------------------------------------------------------------------------
1611// GetBitsPerComponent
1612UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerComponent(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1613{
1614 if( AbsoluteComponentIndex > 3 )
1615 {
1616#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1617 throw std::invalid_argument("AbsoluteComponentIndex");
1618#else
1619 return UINT( -1 );
1620#endif
1621 }
1622 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerComponent[AbsoluteComponentIndex];
1623}
1624
1625//---------------------------------------------------------------------------------------------------------------------------------
1626// GetFormatComponentInterpretation
1627D3D_FORMAT_COMPONENT_INTERPRETATION D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatComponentInterpretation(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1628{
1629 D3D_FORMAT_COMPONENT_INTERPRETATION interp {};
1630
1631 switch( AbsoluteComponentIndex )
1632 {
1633 case 0: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation0; break;
1634 case 1: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation1; break;
1635 case 2: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation2; break;
1636 case 3: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation3; break;
1637#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1638 default: throw std::invalid_argument("AbsoluteComponentIndex");
1639#else
1640 default: break;
1641#endif
1642 }
1643 return interp;
1644}
1645
1646//---------------------------------------------------------------------------------------------------------------------------------
1647// Planar
1648BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(DXGI_FORMAT Format)
1649{
1650 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].bPlanar;
1651}
1652
1653//---------------------------------------------------------------------------------------------------------------------------------
1654// Non-opaque Planar
1655BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlanar(DXGI_FORMAT Format)
1656{
1657 return Planar(Format) && !Opaque(Format);
1658}
1659
1660//---------------------------------------------------------------------------------------------------------------------------------
1661// YUV
1662BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::YUV(DXGI_FORMAT Format)
1663{
1664 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].bYUV;
1665}
1666
1667//---------------------------------------------------------------------------------------------------------------------------------
1668// Format family supports stencil
1669bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FamilySupportsStencil(DXGI_FORMAT Format)
1670{
1671 switch( GetParentFormat(Format) )
1672 {
1673 case DXGI_FORMAT_R32G8X24_TYPELESS:
1674 case DXGI_FORMAT_R24G8_TYPELESS:
1675 return true;
1676 default:
1677 return false;
1678 }
1679}
1680
1681//---------------------------------------------------------------------------------------------------------------------------------
1682// GetDetailTableIndexThrow
1683UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(DXGI_FORMAT Format)
1684{
1685 UINT Index = GetDetailTableIndex( Format );
1686#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1687 if(UINT( -1 ) == Index )
1688 {
1689 throw std::invalid_argument("Format");
1690 }
1691#endif
1692 return Index;
1693}
1694
1695//---------------------------------------------------------------------------------------------------------------------------------
1696// GetDetailTableIndexNoThrow
1697UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexNoThrow(DXGI_FORMAT Format)
1698{
1699 UINT Index = GetDetailTableIndex( Format );
1700 assert(UINT( -1 ) != Index ); // Needs to be validated externally.
1701 return Index;
1702}
1703
1704//---------------------------------------------------------------------------------------------------------------------------------
1705// GetYCbCrChromaSubsampling
1706void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetYCbCrChromaSubsampling(
1707 DXGI_FORMAT Format,
1708 _Out_ UINT& HorizontalSubsampling,
1709 _Out_ UINT& VerticalSubsampling
1710 )
1711{
1712 switch( Format)
1713 {
1714 // YCbCr 4:2:0
1715 case DXGI_FORMAT_NV12:
1716 case DXGI_FORMAT_P010:
1717 case DXGI_FORMAT_P016:
1718 case DXGI_FORMAT_420_OPAQUE:
1719 HorizontalSubsampling = 2;
1720 VerticalSubsampling = 2;
1721 break;
1722
1723 // YCbCr 4:2:2
1724 case DXGI_FORMAT_P208:
1725 case DXGI_FORMAT_YUY2:
1726 case DXGI_FORMAT_Y210:
1727 HorizontalSubsampling = 2;
1728 VerticalSubsampling = 1;
1729 break;
1730
1731 // YCbCr 4:4:0
1732 case DXGI_FORMAT_V208:
1733 HorizontalSubsampling = 1;
1734 VerticalSubsampling = 2;
1735 break;
1736
1737 // YCbCr 4:4:4
1738 case DXGI_FORMAT_AYUV:
1739 case DXGI_FORMAT_V408:
1740 case DXGI_FORMAT_Y410:
1741 case DXGI_FORMAT_Y416:
1742 // Fallthrough
1743
1744 // YCbCr palletized 4:4:4:
1745 case DXGI_FORMAT_AI44:
1746 case DXGI_FORMAT_IA44:
1747 case DXGI_FORMAT_P8:
1748 case DXGI_FORMAT_A8P8:
1749 HorizontalSubsampling = 1;
1750 VerticalSubsampling = 1;
1751 break;
1752
1753 // YCbCr 4:1:1
1754 case DXGI_FORMAT_NV11:
1755 HorizontalSubsampling = 4;
1756 VerticalSubsampling = 1;
1757 break;
1758
1759 default:
1760 // All YCbCr formats should be in this list.
1761 assert( !YUV(Format) );
1762 HorizontalSubsampling = 1;
1763 VerticalSubsampling = 1;
1764 break;
1765 };
1766}
1767
1768//---------------------------------------------------------------------------------------------------------------------------------
1769// Plane count for non-opaque planar formats
1770UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlaneCount(DXGI_FORMAT Format)
1771{
1772 if (!D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlanar(Format))
1773 {
1774 return 1;
1775 }
1776
1777 // V208 and V408 are the only 3-plane formats.
1778 return (Format == DXGI_FORMAT_V208 || Format == DXGI_FORMAT_V408) ? 3 : 2;
1779}
1780
1781//---------------------------------------------------------------------------------------------------------------------------------
1782// GetTileShape
1783//
1784// Retrieve 64K Tiled Resource tile shape
1785void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape(
1786 D3D12_TILE_SHAPE* pTileShape,
1787 DXGI_FORMAT Format,
1788 D3D12_RESOURCE_DIMENSION Dimension,
1789 UINT SampleCount
1790 )
1791{
1792 UINT BPU = GetBitsPerUnit(Format);
1793
1794 switch(Dimension)
1795 {
1796 case D3D12_RESOURCE_DIMENSION_UNKNOWN:
1797 case D3D12_RESOURCE_DIMENSION_BUFFER:
1798 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
1799 {
1800 assert(!IsBlockCompressFormat(Format));
1801 pTileShape->WidthInTexels = (BPU == 0) ? D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES : D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES*8 / BPU;
1802 pTileShape->HeightInTexels = 1;
1803 pTileShape->DepthInTexels = 1;
1804 }
1805 break;
1806 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
1807 {
1808 if (IsBlockCompressFormat(Format))
1809 {
1810 // Currently only supported block sizes are 64 and 128.
1811 // These equations calculate the size in texels for a tile. It relies on the fact that 64 * 64 blocks fit in a tile if the block size is 128 bits.
1812 assert(BPU == 64 || BPU == 128);
1813 pTileShape->WidthInTexels = 64 * GetWidthAlignment(Format);
1814 pTileShape->HeightInTexels = 64 * GetHeightAlignment(Format);
1815 pTileShape->DepthInTexels = 1;
1816 if (BPU == 64)
1817 {
1818 // If bits per block are 64 we double width so it takes up the full tile size.
1819 // This is only true for BC1 and BC4
1820 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1821 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1822 pTileShape->WidthInTexels *= 2;
1823 }
1824 }
1825 else
1826 {
1827 pTileShape->DepthInTexels = 1;
1828 if (BPU <= 8)
1829 {
1830 pTileShape->WidthInTexels = 256;
1831 pTileShape->HeightInTexels = 256;
1832 }
1833 else if (BPU <= 16)
1834 {
1835 pTileShape->WidthInTexels = 256;
1836 pTileShape->HeightInTexels = 128;
1837 }
1838 else if (BPU <= 32)
1839 {
1840 pTileShape->WidthInTexels = 128;
1841 pTileShape->HeightInTexels = 128;
1842 }
1843 else if (BPU <= 64)
1844 {
1845 pTileShape->WidthInTexels = 128;
1846 pTileShape->HeightInTexels = 64;
1847 }
1848 else if (BPU <= 128)
1849 {
1850 pTileShape->WidthInTexels = 64;
1851 pTileShape->HeightInTexels = 64;
1852 }
1853 else
1854 {
1855 ASSUME( FALSE );
1856 }
1857
1858 if (SampleCount <= 1)
1859 { /* Do nothing */ }
1860 else if (SampleCount <= 2)
1861 {
1862 pTileShape->WidthInTexels /= 2;
1863 pTileShape->HeightInTexels /= 1;
1864 }
1865 else if (SampleCount <= 4)
1866 {
1867 pTileShape->WidthInTexels /= 2;
1868 pTileShape->HeightInTexels /= 2;
1869 }
1870 else if (SampleCount <= 8)
1871 {
1872 pTileShape->WidthInTexels /= 4;
1873 pTileShape->HeightInTexels /= 2;
1874 }
1875 else if (SampleCount <= 16)
1876 {
1877 pTileShape->WidthInTexels /= 4;
1878 pTileShape->HeightInTexels /= 4;
1879 }
1880 else
1881 {
1882 ASSUME( FALSE );
1883 }
1884 }
1885 }
1886 break;
1887 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
1888 {
1889 if (IsBlockCompressFormat(Format))
1890 {
1891 // Currently only supported block sizes are 64 and 128.
1892 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
1893 assert(BPU == 64 || BPU == 128);
1894 pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format);
1895 pTileShape->HeightInTexels = 16 * GetHeightAlignment(Format);
1896 pTileShape->DepthInTexels = 16 * GetDepthAlignment(Format);
1897 if (BPU == 64)
1898 {
1899 // If bits per block are 64 we double width so it takes up the full tile size.
1900 // This is only true for BC1 and BC4
1901 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1902 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1903 pTileShape->WidthInTexels *= 2;
1904 }
1905 }
1906 else if (Format == DXGI_FORMAT_R8G8_B8G8_UNORM || Format == DXGI_FORMAT_G8R8_G8B8_UNORM)
1907 {
1908 //RGBG and GRGB are treated as 2x1 block format
1909 pTileShape->WidthInTexels = 64;
1910 pTileShape->HeightInTexels = 32;
1911 pTileShape->DepthInTexels = 16;
1912 }
1913 else
1914 {
1915 // Not a block format so BPU is bits per pixel.
1916 assert(GetWidthAlignment(Format) == 1 && GetHeightAlignment(Format) == 1 && GetDepthAlignment(Format));
1917 switch(BPU)
1918 {
1919 case 8:
1920 pTileShape->WidthInTexels = 64;
1921 pTileShape->HeightInTexels = 32;
1922 pTileShape->DepthInTexels = 32;
1923 break;
1924 case 16:
1925 pTileShape->WidthInTexels = 32;
1926 pTileShape->HeightInTexels = 32;
1927 pTileShape->DepthInTexels = 32;
1928 break;
1929 case 32:
1930 pTileShape->WidthInTexels = 32;
1931 pTileShape->HeightInTexels = 32;
1932 pTileShape->DepthInTexels = 16;
1933 break;
1934 case 64:
1935 pTileShape->WidthInTexels = 32;
1936 pTileShape->HeightInTexels = 16;
1937 pTileShape->DepthInTexels = 16;
1938 break;
1939 case 128:
1940 pTileShape->WidthInTexels = 16;
1941 pTileShape->HeightInTexels = 16;
1942 pTileShape->DepthInTexels = 16;
1943 break;
1944 }
1945 }
1946 break;
1947 }
1948 }
1949}
1950
1951//---------------------------------------------------------------------------------------------------------------------------------
1952// Get4KTileShape
1953//
1954// Retrieve 4K Tiled Resource tile shape
1955void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape(
1956 D3D12_TILE_SHAPE* pTileShape,
1957 DXGI_FORMAT Format,
1958 D3D12_RESOURCE_DIMENSION Dimension,
1959 UINT SampleCount
1960 )
1961{
1962 UINT BPU = GetBitsPerUnit(Format);
1963
1964 switch(Dimension)
1965 {
1966 case D3D12_RESOURCE_DIMENSION_UNKNOWN:
1967 case D3D12_RESOURCE_DIMENSION_BUFFER:
1968 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
1969 {
1970 assert(!IsBlockCompressFormat(Format));
1971 pTileShape->WidthInTexels = (BPU == 0) ? 4096 : 4096*8 / BPU;
1972 pTileShape->HeightInTexels = 1;
1973 pTileShape->DepthInTexels = 1;
1974 }
1975 break;
1976 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
1977 {
1978 pTileShape->DepthInTexels = 1;
1979 if (IsBlockCompressFormat(Format))
1980 {
1981 // Currently only supported block sizes are 64 and 128.
1982 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
1983 assert(BPU == 64 || BPU == 128);
1984 pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format);
1985 pTileShape->HeightInTexels = 16 * GetHeightAlignment(Format);
1986 if (BPU == 64)
1987 {
1988 // If bits per block are 64 we double width so it takes up the full tile size.
1989 // This is only true for BC1 and BC4
1990 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1991 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1992 pTileShape->WidthInTexels *= 2;
1993 }
1994 }
1995 else
1996 {
1997 if (BPU <= 8)
1998 {
1999 pTileShape->WidthInTexels = 64;
2000 pTileShape->HeightInTexels = 64;
2001 }
2002 else if (BPU <= 16)
2003 {
2004 pTileShape->WidthInTexels = 64;
2005 pTileShape->HeightInTexels = 32;
2006 }
2007 else if (BPU <= 32)
2008 {
2009 pTileShape->WidthInTexels = 32;
2010 pTileShape->HeightInTexels = 32;
2011 }
2012 else if (BPU <= 64)
2013 {
2014 pTileShape->WidthInTexels = 32;
2015 pTileShape->HeightInTexels = 16;
2016 }
2017 else if (BPU <= 128)
2018 {
2019 pTileShape->WidthInTexels = 16;
2020 pTileShape->HeightInTexels = 16;
2021 }
2022 else
2023 {
2024 ASSUME( FALSE );
2025 }
2026
2027 if (SampleCount <= 1)
2028 { /* Do nothing */ }
2029 else if (SampleCount <= 2)
2030 {
2031 pTileShape->WidthInTexels /= 2;
2032 pTileShape->HeightInTexels /= 1;
2033 }
2034 else if (SampleCount <= 4)
2035 {
2036 pTileShape->WidthInTexels /= 2;
2037 pTileShape->HeightInTexels /= 2;
2038 }
2039 else if (SampleCount <= 8)
2040 {
2041 pTileShape->WidthInTexels /= 4;
2042 pTileShape->HeightInTexels /= 2;
2043 }
2044 else if (SampleCount <= 16)
2045 {
2046 pTileShape->WidthInTexels /= 4;
2047 pTileShape->HeightInTexels /= 4;
2048 }
2049 else
2050 {
2051 ASSUME( FALSE );
2052 }
2053
2054 assert(GetWidthAlignment(Format) == 1);
2055 assert(GetHeightAlignment(Format) == 1);
2056 assert(GetDepthAlignment(Format) == 1);
2057 }
2058
2059 break;
2060 }
2061 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
2062 {
2063 if (IsBlockCompressFormat(Format))
2064 {
2065 // Currently only supported block sizes are 64 and 128.
2066 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
2067 assert(BPU == 64 || BPU == 128);
2068 pTileShape->WidthInTexels = 8 * GetWidthAlignment(Format);
2069 pTileShape->HeightInTexels = 8 * GetHeightAlignment(Format);
2070 pTileShape->DepthInTexels = 4;
2071 if (BPU == 64)
2072 {
2073 // If bits per block are 64 we double width so it takes up the full tile size.
2074 // This is only true for BC1 and BC4
2075 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
2076 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
2077 pTileShape->DepthInTexels *= 2;
2078 }
2079 }
2080 else
2081 {
2082 if (BPU <= 8)
2083 {
2084 pTileShape->WidthInTexels = 16;
2085 pTileShape->HeightInTexels = 16;
2086 pTileShape->DepthInTexels = 16;
2087 }
2088 else if (BPU <= 16)
2089 {
2090 pTileShape->WidthInTexels = 16;
2091 pTileShape->HeightInTexels = 16;
2092 pTileShape->DepthInTexels = 8;
2093 }
2094 else if (BPU <= 32)
2095 {
2096 pTileShape->WidthInTexels = 16;
2097 pTileShape->HeightInTexels = 8;
2098 pTileShape->DepthInTexels = 8;
2099 }
2100 else if (BPU <= 64)
2101 {
2102 pTileShape->WidthInTexels = 8;
2103 pTileShape->HeightInTexels = 8;
2104 pTileShape->DepthInTexels = 8;
2105 }
2106 else if (BPU <= 128)
2107 {
2108 pTileShape->WidthInTexels = 8;
2109 pTileShape->HeightInTexels = 8;
2110 pTileShape->DepthInTexels = 4;
2111 }
2112 else
2113 {
2114 ASSUME( FALSE );
2115 }
2116
2117 assert(GetWidthAlignment(Format) == 1);
2118 assert(GetHeightAlignment(Format) == 1);
2119 assert(GetDepthAlignment(Format) == 1);
2120 }
2121 }
2122 break;
2123 }
2124}
2125
2126//----------------------------------------------------------------------------------------------------------------------------------
2127// GetPlaneSliceFromViewFormat
2128// Maps resource format + view format to a plane index for resource formats where the plane index can be inferred from this information.
2129// For planar formats where the plane index is ambiguous given this information (examples: V208, V408), this function returns 0.
2130// This function returns 0 for non-planar formats.
2131UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSliceFromViewFormat(
2132 DXGI_FORMAT ResourceFormat,
2133 DXGI_FORMAT ViewFormat
2134 )
2135{
2136 switch(GetParentFormat(ResourceFormat))
2137 {
2138 case DXGI_FORMAT_R24G8_TYPELESS:
2139 switch(ViewFormat)
2140 {
2141 case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
2142 return 0;
2143 case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
2144 return 1;
2145 default:
2146 ASSUME( false );
2147 }
2148 break;
2149 case DXGI_FORMAT_R32G8X24_TYPELESS:
2150 switch(ViewFormat)
2151 {
2152 case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
2153 return 0;
2154 case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
2155 return 1;
2156 default:
2157 ASSUME( false );
2158 }
2159 break;
2160 case DXGI_FORMAT_NV12:
2161 case DXGI_FORMAT_NV11:
2162 case DXGI_FORMAT_P208:
2163 switch(ViewFormat)
2164 {
2165 case DXGI_FORMAT_R8_UNORM:
2166 case DXGI_FORMAT_R8_UINT:
2167 return 0;
2168 case DXGI_FORMAT_R8G8_UNORM:
2169 case DXGI_FORMAT_R8G8_UINT:
2170 return 1;
2171 default:
2172 ASSUME( false );
2173 }
2174 break;
2175 case DXGI_FORMAT_P016:
2176 case DXGI_FORMAT_P010:
2177 switch(ViewFormat)
2178 {
2179 case DXGI_FORMAT_R16_UNORM:
2180 case DXGI_FORMAT_R16_UINT:
2181 return 0;
2182 case DXGI_FORMAT_R16G16_UNORM:
2183 case DXGI_FORMAT_R16G16_UINT:
2184 case DXGI_FORMAT_R32_UINT:
2185 return 1;
2186 default:
2187 ASSUME( false );
2188 }
2189 break;
2190 default:
2191 break;
2192 }
2193 return 0;
2194}
2195
2196//----------------------------------------------------------------------------------------------------------------------------------
2197void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(
2198 UINT PlaneSlice,
2199 DXGI_FORMAT Format,
2200 UINT Width,
2201 UINT Height,
2202 _Out_ DXGI_FORMAT& PlaneFormat,
2203 _Out_ UINT& MinPlanePitchWidth,
2204 _Out_ UINT& PlaneWidth,
2205 _Out_ UINT& PlaneHeight)
2206{
2207 DXGI_FORMAT ParentFormat = GetParentFormat(Format);
2208
2209 if (Planar(ParentFormat))
2210 {
2211 switch (ParentFormat)
2212 {
2213 // YCbCr 4:2:0
2214 case DXGI_FORMAT_NV12:
2215 switch(PlaneSlice)
2216 {
2217 case 0:
2218 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2219 PlaneWidth = Width;
2220 PlaneHeight = Height;
2221 break;
2222 case 1:
2223 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2224 PlaneWidth = (Width + 1) >> 1;
2225 PlaneHeight = (Height + 1) >> 1;
2226 break;
2227 default:
2228 ASSUME(FALSE);
2229 };
2230
2231 MinPlanePitchWidth = PlaneWidth;
2232 break;
2233
2234 case DXGI_FORMAT_P010:
2235 case DXGI_FORMAT_P016:
2236 switch(PlaneSlice)
2237 {
2238 case 0:
2239 PlaneFormat = DXGI_FORMAT_R16_TYPELESS;
2240 PlaneWidth = Width;
2241 PlaneHeight = Height;
2242 break;
2243 case 1:
2244 PlaneFormat = DXGI_FORMAT_R16G16_TYPELESS;
2245 PlaneWidth = (Width + 1) >> 1;
2246 PlaneHeight = (Height + 1) >> 1;
2247 break;
2248 default:
2249 ASSUME(FALSE);
2250 };
2251
2252 MinPlanePitchWidth = PlaneWidth;
2253 break;
2254
2255 // YCbCr 4:2:2
2256 case DXGI_FORMAT_P208:
2257 switch(PlaneSlice)
2258 {
2259 case 0:
2260 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2261 PlaneWidth = Width;
2262 PlaneHeight = Height;
2263 break;
2264 case 1:
2265 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2266 PlaneWidth = (Width + 1) >> 1;
2267 PlaneHeight = Height;
2268 break;
2269 default:
2270 ASSUME(FALSE);
2271 };
2272
2273 MinPlanePitchWidth = PlaneWidth;
2274 break;
2275
2276 // YCbCr 4:4:0
2277 case DXGI_FORMAT_V208:
2278 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2279 switch(PlaneSlice)
2280 {
2281 case 0:
2282 PlaneWidth = Width;
2283 PlaneHeight = Height;
2284 break;
2285 case 1:
2286 case 2:
2287 PlaneWidth = Width;
2288 PlaneHeight = (Height + 1) >> 1;
2289 break;
2290 default:
2291 ASSUME(FALSE);
2292 };
2293
2294 MinPlanePitchWidth = PlaneWidth;
2295 break;
2296
2297 // YCbCr 4:4:4
2298 case DXGI_FORMAT_V408:
2299
2300 switch(PlaneSlice)
2301 {
2302 case 0:
2303 case 1:
2304 case 2:
2305 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2306 PlaneWidth = Width;
2307 PlaneHeight = Height;
2308 MinPlanePitchWidth = PlaneWidth;
2309 break;
2310 default:
2311 ASSUME(FALSE);
2312 };
2313 break;
2314
2315 // YCbCr 4:1:1
2316 case DXGI_FORMAT_NV11:
2317 switch(PlaneSlice)
2318 {
2319 case 0:
2320 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2321 PlaneWidth = Width;
2322 PlaneHeight = Height;
2323 MinPlanePitchWidth = Width;
2324 break;
2325 case 1:
2326 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2327 PlaneWidth = (Width + 3) >> 2;
2328 PlaneHeight = Height;
2329
2330 // NV11 has unused padding to the right of the chroma plane in the RowMajor (linear) copyable layout.
2331 MinPlanePitchWidth = (Width + 1) >> 1;
2332 break;
2333 default:
2334 ASSUME(FALSE);
2335 };
2336
2337 break;
2338
2339 case DXGI_FORMAT_R32G8X24_TYPELESS:
2340 case DXGI_FORMAT_R24G8_TYPELESS:
2341 switch(PlaneSlice)
2342 {
2343 case 0:
2344 PlaneFormat = DXGI_FORMAT_R32_TYPELESS;
2345 PlaneWidth = Width;
2346 PlaneHeight = Height;
2347 MinPlanePitchWidth = Width;
2348 break;
2349 case 1:
2350 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2351 PlaneWidth = Width;
2352 PlaneHeight = Height;
2353 MinPlanePitchWidth = Width;
2354 break;
2355 default:
2356 ASSUME(FALSE);
2357 };
2358 break;
2359
2360 default:
2361 ASSUME( FALSE );
2362 };
2363 }
2364 else
2365 {
2366 assert(PlaneSlice == 0);
2367 PlaneFormat = Format;
2368 PlaneWidth = Width;
2369 PlaneHeight = Height;
2370 MinPlanePitchWidth = PlaneWidth;
2371 }
2372}
2373
2374//---------------------------------------------------------------------------------------------------------------------------------
2375// GetPlaneCount
2376UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(DXGI_FORMAT Format)
2377{
2378 switch( GetParentFormat(Format) )
2379 {
2380 case DXGI_FORMAT_NV12:
2381 case DXGI_FORMAT_NV11:
2382 case DXGI_FORMAT_P208:
2383 case DXGI_FORMAT_P016:
2384 case DXGI_FORMAT_P010:
2385 case DXGI_FORMAT_R24G8_TYPELESS:
2386 case DXGI_FORMAT_R32G8X24_TYPELESS:
2387 return 2;
2388 case DXGI_FORMAT_V208:
2389 case DXGI_FORMAT_V408:
2390 return 3;
2391 default:
2392 return 1;
2393 }
2394}
2395
2396//---------------------------------------------------------------------------------------------------------------------------------
2397void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMipDimensions(UINT8 mipSlice, _Inout_ UINT64 *pWidth, _Inout_opt_ UINT64 *pHeight, _Inout_opt_ UINT64 *pDepth)
2398{
2399 UINT denominator = (1 << mipSlice); // 2 ^ subresource
2400 UINT64 mipWidth = *pWidth / denominator;
2401 UINT64 mipHeight = pHeight ? *pHeight / denominator : 1;
2402 UINT64 mipDepth = pDepth ? *pDepth / denominator : 1;
2403
2404 // Adjust dimensions for degenerate mips
2405 if(mipHeight == 0 )
2406 mipHeight = 1;
2407 if(mipWidth == 0 )
2408 mipWidth = 1;
2409 if(mipDepth == 0)
2410 mipDepth = 1;
2411
2412 *pWidth = mipWidth;
2413 if(pHeight) *pHeight = mipHeight;
2414 if(pDepth) *pDepth = mipDepth;
2415}
2416
2417//---------------------------------------------------------------------------------------------------------------------------------
2418// DX9VertexOrIndexFormat
2419BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DX9VertexOrIndexFormat(DXGI_FORMAT Format)
2420{
2421 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bDX9VertexOrIndexFormat;
2422}
2423
2424//---------------------------------------------------------------------------------------------------------------------------------
2425// DX9TextureFormat
2426BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DX9TextureFormat(DXGI_FORMAT Format)
2427{
2428 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bDX9TextureFormat;
2429}
2430//---------------------------------------------------------------------------------------------------------------------------------
2431// FloatNormTextureFormat
2432BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatNormTextureFormat(DXGI_FORMAT Format)
2433{
2434 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bFloatNormFormat;
2435}
2436
2437//---------------------------------------------------------------------------------------------------------------------------------
2438// ValidCastToR32UAV
2439//
2440// D3D11 has a limitation on typed UAVs (e.g. Texture1D/2D/3D) whereby the only format that can be read is R32_*. Lots of formats
2441// can be written though, with type conversion (e.g. R8G8B8A8_*). If an API user wants to do image processing in-place, in either
2442// the Compute Shader or the Pixel Shader, the only format available is R32_* (since it can be read and written at the same time).
2443//
2444// We were able to allow resources (Texture1D/2D/3D), created with a format from a small set of families that have 32 bits per element
2445// (such as R8G8B8A8_TYPELESS), to be cast to R32_* when creating a UAV. This means the Compute Shader or Pixel Shader can
2446// do simultaneous read+write on the resource when bound as an R32_* UAV, with the caveat that the shader code has to do manual
2447// type conversion manually, but later on the resource can be used as an SRV or RT as the desired type (e.g. R8G8B8A8_UNORM), and
2448// thus have access to filtering/blending where the hardware knows what the format is.
2449//
2450// If we didn't have this ability to cast some formats to R32_* UAVs, applications would have to keep an extra allocation around
2451// and do a rendering pass that copies from the R32_* UAV to whatever typed resource they really wanted. For formats not included
2452// in this list, such as any format that doesn't have 32-bits per component, as well as some 32-bit per component formats like
2453// R24G8 or R11G11B10_FLOAT there is no alternative for an application but to do the extra copy as mentioned, or avoid in-place
2454// image editing in favor of ping-ponging between buffers with multiple passes.
2455//
2456bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::ValidCastToR32UAV(DXGI_FORMAT from, DXGI_FORMAT to)
2457{
2458 // Allow casting of 32 bit formats to R32_*
2459 if(
2460 ((to == DXGI_FORMAT_R32_UINT)||(to == DXGI_FORMAT_R32_SINT)||(to == DXGI_FORMAT_R32_FLOAT))
2461 &&
2462 (
2463 (from == DXGI_FORMAT_R10G10B10A2_TYPELESS) ||
2464 (from == DXGI_FORMAT_R8G8B8A8_TYPELESS) ||
2465 (from == DXGI_FORMAT_B8G8R8A8_TYPELESS) ||
2466 (from == DXGI_FORMAT_B8G8R8X8_TYPELESS) ||
2467 (from == DXGI_FORMAT_R16G16_TYPELESS) ||
2468 (from == DXGI_FORMAT_R32_TYPELESS)
2469 )
2470 )
2471 {
2472 return true;
2473 }
2474 return false;
2475}
2476
2477//---------------------------------------------------------------------------------------------------------------------------------
2478// IsSupportedTextureDisplayableFormat
2479//
2480// List of formats associated with Feature_D3D1XDisplayable
2481bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSupportedTextureDisplayableFormat
2482 ( DXGI_FORMAT Format
2483 , bool bMediaFormatOnly
2484 )
2485{
2486 if (bMediaFormatOnly)
2487 {
2488 return (false
2489 || ( Format == DXGI_FORMAT_NV12
2490 || Format == DXGI_FORMAT_YUY2
2491 )
2492 );
2493 }
2494 else
2495 {
2496 return (false // eases evolution
2497 || ( Format == DXGI_FORMAT_B8G8R8A8_UNORM
2498 || Format == DXGI_FORMAT_R8G8B8A8_UNORM
2499 || Format == DXGI_FORMAT_R16G16B16A16_FLOAT
2500 || Format == DXGI_FORMAT_R10G10B10A2_UNORM
2501 || Format == DXGI_FORMAT_NV12
2502 || Format == DXGI_FORMAT_YUY2
2503 )
2504 );
2505 }
2506}
2507
2508//---------------------------------------------------------------------------------------------------------------------------------
2509bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatAndNotFloatFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
2510{
2511 UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB);
2512 for (UINT c = 0; c < NumComponents; c++)
2513 {
2514 D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c);
2515 D3D_FORMAT_COMPONENT_INTERPRETATION fciB = GetFormatComponentInterpretation(FormatB, c);
2516 if ((fciA != fciB) && ((fciA == D3DFCI_FLOAT) || (fciB == D3DFCI_FLOAT)))
2517 {
2518 return true;
2519 }
2520 }
2521 return false;
2522}
2523
2524//---------------------------------------------------------------------------------------------------------------------------------
2525bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SNORMAndUNORMFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
2526{
2527 UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB);
2528 for (UINT c = 0; c < NumComponents; c++)
2529 {
2530 D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c);
2531 D3D_FORMAT_COMPONENT_INTERPRETATION fciB = GetFormatComponentInterpretation(FormatB, c);
2532 if (((fciA == D3DFCI_SNORM) && (fciB == D3DFCI_UNORM)) ||
2533 ((fciB == D3DFCI_SNORM) && (fciA == D3DFCI_UNORM)))
2534 {
2535 return true;
2536 }
2537 }
2538 return false;
2539}
2540
2541//---------------------------------------------------------------------------------------------------------------------------------
2542// Formats allowed by runtime for decode histogram.
2543 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format)
2544 {
2545 return (
2546 /* YUV 4:2:0 */
2547 Format == DXGI_FORMAT_NV12
2548 || Format == DXGI_FORMAT_P010
2549 || Format == DXGI_FORMAT_P016
2550 /* YUV 4:2:2 */
2551 || Format == DXGI_FORMAT_YUY2
2552 || Format == DXGI_FORMAT_Y210
2553 || Format == DXGI_FORMAT_Y216
2554 /* YUV 4:4:4 */
2555 || Format == DXGI_FORMAT_AYUV
2556 || Format == DXGI_FORMAT_Y410
2557 || Format == DXGI_FORMAT_Y416
2558 );
2559 }
2560
2561//---------------------------------------------------------------------------------------------------------------------------------
2562// Formats allowed by runtime for decode histogram. Scopes to tested formats.
2563 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::MotionEstimatorAllowedInputFormat(DXGI_FORMAT Format)
2564 {
2565 return Format == DXGI_FORMAT_NV12;
2566 }
2567
2568//---------------------------------------------------------------------------------------------------------------------------------
2569 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsDepth(DXGI_FORMAT Format)
2570 {
2571 // If the number of bits associated with depth in the format is greater then 0, then the format supports depth
2572 return (GetComponentName(Format, 0) == D3DFCN_D);
2573 }
2574
2575 //---------------------------------------------------------------------------------------------------------------------------------
2576 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsStencil(DXGI_FORMAT Format)
2577 {
2578 // If the number of bits associated with stencil in the format is greater then 0, then the format supports stencil
2579 return GetBitsPerStencil(Format) > 0;
2580 }
2581
2582#undef R
2583#undef G
2584#undef B
2585#undef A
2586#undef D
2587#undef S
2588#undef X
2589
2590#undef _TYPELESS
2591#undef _FLOAT
2592#undef _SNORM
2593#undef _UNORM
2594#undef _SINT
2595#undef _UINT
2596#undef _UNORM_SRGB
2597#undef _FIXED_2_8
2598
2599#endif // D3D12_SDK_VERSION >= 606
2600
2601
diff --git a/contrib/DirectX-Headers-1.618.2/src/dxguids.cpp b/contrib/DirectX-Headers-1.618.2/src/dxguids.cpp
new file mode 100644
index 0000000..cff98f4
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/src/dxguids.cpp
@@ -0,0 +1,11 @@
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#include <wsl/winadapter.h>
8
9#include <directx/dxcore.h>
10#include <directx/d3d12.h>
11#include <directx/d3d12video.h>
diff --git a/contrib/DirectX-Headers-1.618.2/test/CMakeLists.txt b/contrib/DirectX-Headers-1.618.2/test/CMakeLists.txt
new file mode 100644
index 0000000..5ad9ace
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/test/CMakeLists.txt
@@ -0,0 +1,61 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4list(APPEND dxlibs "")
5# Check if in WSL and if has DirectX driver and runtime
6if(EXISTS "/usr/lib/wsl/lib/")
7 find_library(libd3d12 d3d12 HINTS /usr/lib/wsl/lib)
8 find_library(libdxcore dxcore HINTS /usr/lib/wsl/lib)
9 list(APPEND dxlibs ${libd3d12} ${libdxcore})
10else()
11# Fallback to default: let CMake look for libs
12 list(APPEND dxlibs d3d12)
13 if (MSVC)
14 # MINGW doesn't have dxcore yet
15 list(APPEND dxlibs dxcore)
16 endif()
17endif()
18
19project(DirectX-Headers-Test
20 DESCRIPTION "DirectX-Header test"
21 HOMEPAGE_URL "https://github.com/microsoft/DirectX-Headers/"
22 LANGUAGES CXX)
23
24set(CMAKE_CXX_STANDARD 17)
25set(CMAKE_CXX_STANDARD_REQUIRED ON)
26set(CMAKE_CXX_EXTENSIONS OFF)
27
28option(DXHEADERS_BUILD_COM_ATL "Build using ATL CComPtr" OFF)
29
30set(TEST_EXES DirectX-Headers-Test DirectX-Headers-Check-Feature-Support-Test)
31
32add_executable(DirectX-Headers-Test test.cpp)
33add_test(NAME DirectX-Headers-Test COMMAND DirectX-Headers-Test)
34add_executable(DirectX-Headers-Check-Feature-Support-Test feature_check_test.cpp)
35add_test(NAME DirectX-Headers-Check-Feature-Support-Test COMMAND DirectX-Headers-Check-Feature-Support-Test)
36
37foreach(t IN LISTS TEST_EXES)
38 target_link_libraries(${t} DirectX-Headers DirectX-Guids ${dxlibs})
39endforeach()
40
41if(DXHEADERS_BUILD_COM_ATL)
42 foreach(t IN LISTS TEST_EXES)
43 target_compile_definitions(${t} PRIVATE D3DX12_USE_ATL)
44 endforeach()
45endif()
46
47if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang|IntelLLVM" )
48 target_compile_options(DirectX-Headers-Check-Feature-Support-Test PRIVATE -Wno-unused-variable)
49endif()
50
51if(WIN32)
52 foreach(t IN LISTS TEST_EXES)
53 target_compile_definitions(${t} PRIVATE _UNICODE UNICODE _WIN32_WINNT=0x0A00)
54 endforeach()
55
56 if(WINDOWS_STORE)
57 foreach(t IN LISTS TEST_EXES)
58 target_compile_definitions(${t} PRIVATE WINAPI_FAMILY=WINAPI_FAMILY_APP)
59 endforeach()
60 endif()
61endif()
diff --git a/contrib/DirectX-Headers-1.618.2/test/feature_check_test.cpp b/contrib/DirectX-Headers-1.618.2/test/feature_check_test.cpp
new file mode 100644
index 0000000..3df3774
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/test/feature_check_test.cpp
@@ -0,0 +1,729 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#include <wsl/winadapter.h>
5
6#include <iostream>
7#include <directx/d3d12.h>
8#include <directx/dxcore.h>
9#include <directx/d3dx12.h>
10#include "dxguids/dxguids.h"
11
12#include <wrl/client.h>
13
14// -----------------------------------------------------------------------------------------------------------------
15// Helper Macros for verifying feature check results
16// -----------------------------------------------------------------------------------------------------------------
17
18// Verifies the correctness of a feature check that should not fail
19#define VERIFY_FEATURE_CHECK_NO_DEFAULT(Feature) \
20{ \
21 if (features.Feature() != Data.Feature) \
22 { \
23 std::cout << "Verification failed: " << #Feature << std::endl \
24 << "Old API: " << Data.Feature << std::endl \
25 << "New API: " << features.Feature() << std::endl; \
26 return -1; \
27 } \
28}
29
30// Verifies the return value from a feature check with a different name from the old API that should not fail
31#define VERIFY_RENAMED_FEATURE_CHECK_NO_DEFAULT(NewFeature, OldFeature) \
32{ \
33 if (features.NewFeature() != Data.OldFeature) \
34 { \
35 std::cout << "Verification failed: " << #NewFeature << std::endl \
36 << "Old API: " << Data.OldFeature << std::endl \
37 << "New API: " << features.NewFeature() << std::endl; \
38 return -1; \
39 } \
40}
41
42// Verifies if the feature check returns the correct default value upon failure
43#define VERIFY_DEFAULT(Feature, Default) \
44{ \
45 if (features.Feature() != Default) \
46 { \
47 std::cout << "Verification failed: " << #Feature << std::endl \
48 << "Default: " << Default << std::endl \
49 << "Actual: " << features.Feature() << std::endl; \
50 return -1; \
51 } \
52}
53
54// Verifies the result of a feature check.
55// If the feature check failed because it's not supported by runtime, ensures that it returns the default value
56#define VERIFY_FEATURE_CHECK(Feature, Default) \
57{ \
58 if (FAILED(InitResult)) \
59 { \
60 VERIFY_DEFAULT(Feature, Default); \
61 } \
62 else \
63 { \
64 VERIFY_FEATURE_CHECK_NO_DEFAULT(Feature); \
65 } \
66}
67
68// Verifies the result of a feature check. The requested capability may have a different name in the new API
69// If the feature check failed because it's not supported by runtime, ensures that it returns the default value
70#define VERIFY_RENAMED_FEATURE_CHECK(Feature, OldName, Default) \
71{ \
72 if (FAILED(InitResult)) \
73 { \
74 VERIFY_DEFAULT(Feature, Default); \
75 } \
76 else \
77 { \
78 VERIFY_RENAMED_FEATURE_CHECK_NO_DEFAULT(Feature, OldName); \
79 } \
80}
81
82// Initialize the feature support data structure to be used in the original CheckFeatureSupport API
83#define INITIALIZE_FEATURE_SUPPORT_DATA(FeatureName) \
84HRESULT InitResult; \
85if (FAILED(InitResult = device->CheckFeatureSupport(D3D12_FEATURE_##FeatureName, &Data, sizeof(D3D12_FEATURE_DATA_##FeatureName)))) \
86{ \
87 std::cout << "Feature not supported by device: " << #FeatureName << std::endl; \
88}
89
90// Prints out the mismatched feature check result to stdout
91#define PRINT_CHECK_FAILED_MESSAGE(FeatureName, OldFeature, NewFeature) \
92std::cout << "Verification failed: " << #FeatureName << std::endl \
93 << "Old API: " << OldFeature << std::endl \
94 << "New API: " << NewFeature << std::endl;
95
96
97using namespace Microsoft::WRL;
98
99// To get property value from adapter
100std::vector<char> get_adapter_property(ComPtr<IDXCoreAdapter> adapter, DXCoreAdapterProperty property)
101{
102 if (adapter->IsPropertySupported(property))
103 {
104 size_t len;
105 if(FAILED(adapter->GetPropertySize(property, &len)))
106 {
107 return {};
108 }
109 std::vector<char> buf(len);
110 if(FAILED(adapter->GetProperty(property, len, buf.data())))
111 {
112 return {};
113 }
114 return buf;
115 }
116 return {};
117}
118
119// To get driver description for display before test
120std::string get_driver_description(ComPtr<IDXCoreAdapter> adapter)
121{
122 auto rs = get_adapter_property(adapter, DXCoreAdapterProperty::DriverDescription);
123 std::string name(rs.data());
124 return name;
125}
126
127// -----------------------------------------------------------------------------------------------------------------
128// Run tests on a specific device which is created from the input adapter
129// -----------------------------------------------------------------------------------------------------------------
130int run_per_adapter(IUnknown* adapter)
131{
132 ID3D12Device *device = nullptr;
133
134 if (FAILED(D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&device))))
135 {
136 return -1;
137 }
138
139 // Initialize the new FeatureSupport class
140 // Notice that it is shared among all feature checks
141 CD3DX12FeatureSupport features;
142 if (FAILED(features.Init(device)))
143 {
144 return -1;
145 }
146
147 UINT NodeCount = device->GetNodeCount();
148
149 // Each feature comes with two code sections
150 // The first section shows how to use the API's of the new FeautreSupport class
151 // The second section contains tests that ensures the new API returns the same result as the old API
152 // 0: D3D12_OPTIONS
153 {
154 BOOL DoublePrecisionFloatShaderOps = features.DoublePrecisionFloatShaderOps();
155 BOOL OutputMergerLogicOp = features.OutputMergerLogicOp();
156 D3D12_TILED_RESOURCES_TIER TiledResourceTier = features.TiledResourcesTier();
157 D3D12_RESOURCE_BINDING_TIER ResourceBindingTier = features.ResourceBindingTier();
158 BOOL PSSpecifiedStencilRefSupported = features.PSSpecifiedStencilRefSupported();
159 BOOL TypedUAVLoadAdditionalFormats = features.TypedUAVLoadAdditionalFormats();
160 BOOL ROVsSupported = features.ROVsSupported();
161 D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier = features.ConservativeRasterizationTier();
162 BOOL StandardSwizzle64KBSupported = features.StandardSwizzle64KBSupported();
163 BOOL CrossAdapterRowMajorTextureSupported = features.CrossAdapterRowMajorTextureSupported();
164 BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation = features.VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation();
165 D3D12_RESOURCE_HEAP_TIER ResourceHeapTier = features.ResourceHeapTier();
166 D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier = features.CrossNodeSharingTier();
167 UINT MaxGPUVirtualAddressBitsPerResource = features.MaxGPUVirtualAddressBitsPerResource();
168
169 D3D12_FEATURE_DATA_D3D12_OPTIONS Data = {};
170 device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &Data, sizeof(D3D12_FEATURE_DATA_D3D12_OPTIONS));
171 VERIFY_FEATURE_CHECK_NO_DEFAULT(DoublePrecisionFloatShaderOps);
172 VERIFY_FEATURE_CHECK_NO_DEFAULT(OutputMergerLogicOp);
173 VERIFY_FEATURE_CHECK_NO_DEFAULT(TiledResourcesTier);
174 VERIFY_FEATURE_CHECK_NO_DEFAULT(ResourceBindingTier);
175 VERIFY_FEATURE_CHECK_NO_DEFAULT(PSSpecifiedStencilRefSupported);
176 VERIFY_FEATURE_CHECK_NO_DEFAULT(TypedUAVLoadAdditionalFormats);
177 VERIFY_FEATURE_CHECK_NO_DEFAULT(ROVsSupported);
178 VERIFY_FEATURE_CHECK_NO_DEFAULT(ConservativeRasterizationTier);
179 VERIFY_FEATURE_CHECK_NO_DEFAULT(StandardSwizzle64KBSupported);
180 VERIFY_FEATURE_CHECK_NO_DEFAULT(CrossAdapterRowMajorTextureSupported);
181 VERIFY_FEATURE_CHECK_NO_DEFAULT(VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation);
182 VERIFY_FEATURE_CHECK_NO_DEFAULT(ResourceHeapTier);
183 VERIFY_FEATURE_CHECK_NO_DEFAULT(CrossNodeSharingTier);
184 VERIFY_FEATURE_CHECK_NO_DEFAULT(MaxGPUVirtualAddressBitsPerResource);
185 }
186
187 // 2: Feature Levels
188 {
189 D3D_FEATURE_LEVEL HighestLevelSupported = features.MaxSupportedFeatureLevel();
190
191 D3D12_FEATURE_DATA_FEATURE_LEVELS Data = {};
192 D3D_FEATURE_LEVEL KnownFeatureLevels[] =
193 {
194 D3D_FEATURE_LEVEL_1_0_CORE,
195 D3D_FEATURE_LEVEL_9_1,
196 D3D_FEATURE_LEVEL_9_2,
197 D3D_FEATURE_LEVEL_9_3,
198 D3D_FEATURE_LEVEL_10_0,
199 D3D_FEATURE_LEVEL_10_1,
200 D3D_FEATURE_LEVEL_11_0,
201 D3D_FEATURE_LEVEL_11_1,
202 D3D_FEATURE_LEVEL_12_0,
203 D3D_FEATURE_LEVEL_12_1,
204 D3D_FEATURE_LEVEL_12_2
205 };
206 Data.pFeatureLevelsRequested = KnownFeatureLevels;
207 Data.NumFeatureLevels = sizeof(KnownFeatureLevels) / sizeof(D3D_FEATURE_LEVEL);
208 device->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS, &Data, sizeof(D3D12_FEATURE_DATA_FEATURE_LEVELS));
209 VERIFY_FEATURE_CHECK_NO_DEFAULT(MaxSupportedFeatureLevel);
210 }
211
212 // 3: Format Support
213 {
214 D3D12_FORMAT_SUPPORT1 Support1;
215 D3D12_FORMAT_SUPPORT2 Support2;
216 if (FAILED(features.FormatSupport(DXGI_FORMAT_R16G16B16A16_FLOAT, Support1, Support2))) {
217 std::cout << "Error: FormatSupport failed" << std::endl;
218 return -1;
219 }
220
221 D3D12_FEATURE_DATA_FORMAT_SUPPORT Data = {};
222 Data.Format = DXGI_FORMAT_R16G16B16A16_FLOAT;
223 if (SUCCEEDED(device->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &Data, sizeof(D3D12_FEATURE_DATA_FORMAT_SUPPORT))))
224 {
225 if (Support1 != Data.Support1)
226 {
227 std::cout << "Verification failed: " << "FormatSupport1" << std::endl
228 << "Old API: " << Data.Support1 << std::endl
229 << "New API: " << Support1 << std::endl;
230 return -1;
231 }
232
233 if (Support2 != Data.Support2)
234 {
235 std::cout << "Verification failed: " << "FormatSupport2" << std::endl
236 << "Old API: " << Data.Support2 << std::endl
237 << "New API: " << Support2 << std::endl;
238 return -1;
239 }
240 }
241 }
242
243 // 4: Multisample Quality Support
244 {
245 UINT NumQualityLevels;
246 if (FAILED(features.MultisampleQualityLevels(DXGI_FORMAT_R16G16B16A16_FLOAT, 1, D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE, NumQualityLevels))) {
247 std::cout << "Error: MultisampleQualityLevels failed" << std::endl;
248 return -1;
249 }
250
251 D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS Data = {};
252 Data.Format = DXGI_FORMAT_R16G16B16A16_FLOAT;
253 Data.Flags = D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE;
254 Data.SampleCount = 1;
255 device->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &Data, sizeof(D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS));
256 if (NumQualityLevels != Data.NumQualityLevels)
257 {
258 std::cout << "Verification failed: " << "MultisampleQualityLevels" << std::endl
259 << "Old API: " << Data.NumQualityLevels << std::endl
260 << "New API: " << NumQualityLevels << std::endl;
261 return -1;
262 }
263 }
264
265 // 5: Format Info
266 {
267 UINT8 PlaneCount;
268 if (FAILED(features.FormatInfo(DXGI_FORMAT_R16G16B16A16_FLOAT, PlaneCount)))
269 {
270 std::cout << "Error: FormatInfo failed" << std::endl;
271 return -1;
272 }
273
274 D3D12_FEATURE_DATA_FORMAT_INFO Data = {};
275 Data.Format = DXGI_FORMAT_R16G16B16A16_FLOAT;
276 device->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &Data, sizeof(D3D12_FEATURE_DATA_FORMAT_INFO));
277 if (PlaneCount != Data.PlaneCount)
278 {
279 PRINT_CHECK_FAILED_MESSAGE(FormatInfo, Data.PlaneCount, PlaneCount);
280 }
281 }
282
283 // 6: GPU Virtual Address Support
284 {
285 UINT MaxGPUVABitsPerProcess = features.MaxGPUVirtualAddressBitsPerProcess();
286 UINT MaxGPUVABitsPerResource = features.MaxGPUVirtualAddressBitsPerResource();
287
288 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT Data = {};
289 device->CheckFeatureSupport(D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT, &Data, sizeof(D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT));
290 VERIFY_FEATURE_CHECK_NO_DEFAULT(MaxGPUVirtualAddressBitsPerProcess);
291 VERIFY_FEATURE_CHECK_NO_DEFAULT(MaxGPUVirtualAddressBitsPerResource);
292 }
293
294 // 7: Shader Model
295 {
296 D3D_SHADER_MODEL HighestShaderModel = features.HighestShaderModel();
297
298 D3D12_FEATURE_DATA_SHADER_MODEL Data = {};
299 D3D_SHADER_MODEL KnownShaderModels[] =
300 {
301 D3D_SHADER_MODEL_6_7,
302 D3D_SHADER_MODEL_6_6,
303 D3D_SHADER_MODEL_6_5,
304 D3D_SHADER_MODEL_6_4,
305 D3D_SHADER_MODEL_6_3,
306 D3D_SHADER_MODEL_6_2,
307 D3D_SHADER_MODEL_6_1,
308 D3D_SHADER_MODEL_6_0,
309 D3D_SHADER_MODEL_5_1
310 };
311 UINT NumKnownShaderModels = sizeof(KnownShaderModels) / sizeof(D3D_SHADER_MODEL);
312 for (UINT i = 0; i < NumKnownShaderModels; i++)
313 {
314 Data.HighestShaderModel = D3D_SHADER_MODEL_6_7; // Highest Known Shader Model
315 if (SUCCEEDED(device->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &Data, sizeof(D3D12_FEATURE_DATA_SHADER_MODEL))))
316 {
317 VERIFY_FEATURE_CHECK_NO_DEFAULT(HighestShaderModel);
318 }
319 }
320 }
321
322 // 8: Options1
323 {
324 BOOL WaveOps = features.WaveOps();
325 UINT WaveLaneCountMin = features.WaveLaneCountMin();
326 UINT WaveLaneCountMax = features.WaveLaneCountMax();
327
328 D3D12_FEATURE_DATA_D3D12_OPTIONS1 Data = {};
329 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS1);
330 VERIFY_FEATURE_CHECK(WaveOps, false);
331 VERIFY_FEATURE_CHECK(WaveLaneCountMax, 0);
332 VERIFY_FEATURE_CHECK(WaveLaneCountMin, 0);
333 }
334
335 // 10: Protected Resource Session Support
336 for (UINT NodeId = 0; NodeId < NodeCount; NodeId++)
337 {
338 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS ProtectedResourceSessionSupport = features.ProtectedResourceSessionSupport(NodeId);
339
340 D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT Data = {};
341 Data.NodeIndex = NodeId;
342 INITIALIZE_FEATURE_SUPPORT_DATA(PROTECTED_RESOURCE_SESSION_SUPPORT);
343 VERIFY_RENAMED_FEATURE_CHECK(ProtectedResourceSessionSupport, Support, D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE);
344 }
345
346 // 12: Root Signature
347 {
348 D3D_ROOT_SIGNATURE_VERSION HighestRootSignatureVersion = features.HighestRootSignatureVersion();
349
350 D3D12_FEATURE_DATA_ROOT_SIGNATURE Data = {};
351 Data.HighestVersion = D3D_ROOT_SIGNATURE_VERSION_1_1; // Highest Known Version
352 INITIALIZE_FEATURE_SUPPORT_DATA(ROOT_SIGNATURE);
353 VERIFY_RENAMED_FEATURE_CHECK(HighestRootSignatureVersion, HighestVersion, (D3D_ROOT_SIGNATURE_VERSION)0);
354 }
355
356 // 16: Architecture1
357 for (UINT NodeId = 0; NodeId < NodeCount; NodeId++)
358 {
359 BOOL IsolatedMMU = features.IsolatedMMU(NodeId);
360 BOOL TileBasedRenderer = features.TileBasedRenderer(NodeId);
361 BOOL UMA = features.UMA(NodeId);
362 BOOL CacheCoherentUMA = features.CacheCoherentUMA(NodeId);
363
364 D3D12_FEATURE_DATA_ARCHITECTURE1 Data = {};
365 Data.NodeIndex = NodeId;
366 INITIALIZE_FEATURE_SUPPORT_DATA(ARCHITECTURE1);
367 if (FAILED(InitResult))
368 {
369 D3D12_FEATURE_DATA_ARCHITECTURE Data = {};
370 Data.NodeIndex = NodeId;
371 INITIALIZE_FEATURE_SUPPORT_DATA(ARCHITECTURE);
372 VERIFY_FEATURE_CHECK_NO_DEFAULT(TileBasedRenderer);
373 VERIFY_FEATURE_CHECK_NO_DEFAULT(UMA);
374 VERIFY_FEATURE_CHECK_NO_DEFAULT(CacheCoherentUMA);
375 }
376 else
377 {
378 VERIFY_FEATURE_CHECK(TileBasedRenderer, false);
379 VERIFY_FEATURE_CHECK(UMA, false);
380 VERIFY_FEATURE_CHECK(CacheCoherentUMA, false);
381 }
382 VERIFY_FEATURE_CHECK(IsolatedMMU, false);
383 }
384
385 // 18: Options2
386 {
387 BOOL DepthBoundsTestSupported = features.DepthBoundsTestSupported();
388 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier = features.ProgrammableSamplePositionsTier();
389
390 D3D12_FEATURE_DATA_D3D12_OPTIONS2 Data = {};
391 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS2);
392 VERIFY_FEATURE_CHECK(DepthBoundsTestSupported, false);
393 VERIFY_FEATURE_CHECK(ProgrammableSamplePositionsTier, D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED);
394 }
395
396 // 19: Shader Cache
397 {
398 D3D12_SHADER_CACHE_SUPPORT_FLAGS ShaderCacheSupportFlags = features.ShaderCacheSupportFlags();
399
400 D3D12_FEATURE_DATA_SHADER_CACHE Data = {};
401 INITIALIZE_FEATURE_SUPPORT_DATA(SHADER_CACHE);
402 VERIFY_RENAMED_FEATURE_CHECK(ShaderCacheSupportFlags, SupportFlags, D3D12_SHADER_CACHE_SUPPORT_NONE);
403 }
404
405 // 20: Command Queue Prioirity
406 {
407 // Basic check
408 BOOL CommandQueuePrioritySupportedPositive = features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_QUEUE_PRIORITY_NORMAL);
409 // Check for Global Realtime support
410 BOOL CommandQueuePrioritySupportedRealtime = features.CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE_COPY, D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME);
411 // Test on invalid inputs
412 BOOL CommandQueuePrioritySupportedInvalid = features.CommandQueuePrioritySupported((D3D12_COMMAND_LIST_TYPE)7, 0);
413
414 D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY Data = {};
415 {
416 Data.CommandListType = D3D12_COMMAND_LIST_TYPE_DIRECT;
417 Data.Priority = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL;
418 INITIALIZE_FEATURE_SUPPORT_DATA(COMMAND_QUEUE_PRIORITY);
419 if (CommandQueuePrioritySupportedPositive != Data.PriorityForTypeIsSupported)
420 {
421 PRINT_CHECK_FAILED_MESSAGE(CommandQueuePriority, Data.PriorityForTypeIsSupported, CommandQueuePrioritySupportedPositive);
422 }
423 }
424
425 {
426 Data.CommandListType = D3D12_COMMAND_LIST_TYPE_COPY;
427 Data.Priority = D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME;
428 INITIALIZE_FEATURE_SUPPORT_DATA(COMMAND_QUEUE_PRIORITY);
429 if (CommandQueuePrioritySupportedRealtime != Data.PriorityForTypeIsSupported)
430 {
431 PRINT_CHECK_FAILED_MESSAGE(CommandQueuePriority, Data.PriorityForTypeIsSupported, CommandQueuePrioritySupportedRealtime);
432 }
433 }
434
435 if (CommandQueuePrioritySupportedInvalid)
436 {
437 std::cout << "Error: Wrong result from Command Queue Priority - Invalid Test Case\n"
438 << "New API returned true on invalid Command List Types\n"
439 << "Check if the list of command list types has updated\n";
440 return -1;
441 }
442 }
443
444 // 21: Options3
445 {
446 BOOL CopyQueueTimestampQueriesSupported = features.CopyQueueTimestampQueriesSupported();
447 BOOL CastingFullyTypedFormatSupported = features.CastingFullyTypedFormatSupported();
448 D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags = features.WriteBufferImmediateSupportFlags();
449 D3D12_VIEW_INSTANCING_TIER ViewInstancingTier = features.ViewInstancingTier();
450 BOOL BarycentricsSupported = features.BarycentricsSupported();
451
452 D3D12_FEATURE_DATA_D3D12_OPTIONS3 Data = {};
453 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS3);
454 VERIFY_FEATURE_CHECK(CopyQueueTimestampQueriesSupported, false);
455 VERIFY_FEATURE_CHECK(CastingFullyTypedFormatSupported, false);
456 VERIFY_FEATURE_CHECK(WriteBufferImmediateSupportFlags, D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE);
457 VERIFY_FEATURE_CHECK(ViewInstancingTier, D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED);
458 VERIFY_FEATURE_CHECK(BarycentricsSupported, false);
459 }
460
461 // 22: Existing Heaps
462 {
463 BOOL ExistingHeapsSupported = features.ExistingHeapsSupported();
464
465 D3D12_FEATURE_DATA_EXISTING_HEAPS Data = {};
466 INITIALIZE_FEATURE_SUPPORT_DATA(EXISTING_HEAPS);
467 VERIFY_RENAMED_FEATURE_CHECK(ExistingHeapsSupported, Supported, false);
468 }
469
470 // 23: D3D12 Options4
471 {
472 BOOL MSAA64KBAlignedTextureSupported = features.MSAA64KBAlignedTextureSupported();
473 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier = features.SharedResourceCompatibilityTier();
474 BOOL Native16BitShaderOpsSupported = features.Native16BitShaderOpsSupported();
475
476 D3D12_FEATURE_DATA_D3D12_OPTIONS4 Data = {};
477 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS4);
478 VERIFY_FEATURE_CHECK(MSAA64KBAlignedTextureSupported, false);
479 VERIFY_FEATURE_CHECK(SharedResourceCompatibilityTier, D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0);
480 VERIFY_FEATURE_CHECK(Native16BitShaderOpsSupported, false);
481 }
482
483 // 24: Serialization
484 {
485 D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier = features.HeapSerializationTier();
486 D3D12_FEATURE_DATA_SERIALIZATION Data = {};
487 INITIALIZE_FEATURE_SUPPORT_DATA(SERIALIZATION);
488 VERIFY_FEATURE_CHECK(HeapSerializationTier, D3D12_HEAP_SERIALIZATION_TIER_0);
489 }
490
491 // 25: Cross Node
492 {
493 BOOL CrossNodeAtomicShaderInstructions = features.CrossNodeAtomicShaderInstructions();
494 D3D12_FEATURE_DATA_CROSS_NODE Data = {};
495 INITIALIZE_FEATURE_SUPPORT_DATA(CROSS_NODE);
496 VERIFY_RENAMED_FEATURE_CHECK(CrossNodeAtomicShaderInstructions, AtomicShaderInstructions, false);
497 }
498
499 // 27: Options5
500 {
501 BOOL SRVOnlyTiledResourceTier3 = features.SRVOnlyTiledResourceTier3();
502 D3D12_RENDER_PASS_TIER RenderPassesTier = features.RenderPassesTier();
503 D3D12_RAYTRACING_TIER RaytracingTier = features.RaytracingTier();
504
505 D3D12_FEATURE_DATA_D3D12_OPTIONS5 Data = {};
506 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS5);
507 VERIFY_FEATURE_CHECK(SRVOnlyTiledResourceTier3, false);
508 VERIFY_FEATURE_CHECK(RenderPassesTier, D3D12_RENDER_PASS_TIER_0);
509 VERIFY_FEATURE_CHECK(RaytracingTier, D3D12_RAYTRACING_TIER_NOT_SUPPORTED);
510 }
511
512 // 28: Displayable
513 {
514 BOOL DisplayableTexture = features.DisplayableTexture();
515
516 D3D12_FEATURE_DATA_DISPLAYABLE Data = {};
517 INITIALIZE_FEATURE_SUPPORT_DATA(DISPLAYABLE);
518 VERIFY_FEATURE_CHECK(DisplayableTexture, false);
519 }
520
521 // 30: Options6
522 {
523 BOOL AdditionalShadingRatesSupported = features.AdditionalShadingRatesSupported();
524 BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing = features.PerPrimitiveShadingRateSupportedWithViewportIndexing();
525 D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier = features.VariableShadingRateTier();
526 BOOL ShadingRateImageTileSize = features.ShadingRateImageTileSize();
527 BOOL BackgroundProcessingSupported = features.BackgroundProcessingSupported();
528
529 D3D12_FEATURE_DATA_D3D12_OPTIONS6 Data = {};
530 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS6);
531 VERIFY_FEATURE_CHECK(AdditionalShadingRatesSupported, false);
532 VERIFY_FEATURE_CHECK(PerPrimitiveShadingRateSupportedWithViewportIndexing, false);
533 VERIFY_FEATURE_CHECK(VariableShadingRateTier, D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED);
534 VERIFY_FEATURE_CHECK(ShadingRateImageTileSize, false);
535 VERIFY_FEATURE_CHECK(BackgroundProcessingSupported, false);
536 }
537
538 // 31: Query Metacommand
539 // The function is simply a forwarding call to the old API
540 // Takes in a pointer to D3D12_FEATURE_DATA_QUERY_METACOMMAND as input parameter
541 // No need to test specifically
542
543 // 32: Options7
544 {
545 D3D12_MESH_SHADER_TIER MeshShaderTier = features.MeshShaderTier();
546 D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier = features.SamplerFeedbackTier();
547
548 D3D12_FEATURE_DATA_D3D12_OPTIONS7 Data = {};
549 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS7);
550 VERIFY_FEATURE_CHECK(MeshShaderTier, D3D12_MESH_SHADER_TIER_NOT_SUPPORTED);
551 VERIFY_FEATURE_CHECK(SamplerFeedbackTier, D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED);
552 }
553
554 // 33: Session Type Count
555 for (UINT NodeId = 0; NodeId < NodeCount; NodeId++)
556 {
557 UINT ProtectedResourceSessionTypeCount = features.ProtectedResourceSessionTypeCount(NodeId);
558
559 D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT Data = {};
560 Data.NodeIndex = NodeId;
561 INITIALIZE_FEATURE_SUPPORT_DATA(PROTECTED_RESOURCE_SESSION_TYPE_COUNT);
562 VERIFY_RENAMED_FEATURE_CHECK(ProtectedResourceSessionTypeCount, Count, 0);
563 }
564
565 // 34: Session Types
566 for (UINT NodeId = 0; NodeId < NodeCount; NodeId++)
567 {
568 std::vector<GUID> ProtectedResourceSessionTypes = features.ProtectedResourceSessionTypes(NodeId);
569
570 D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT CountData = {};
571 CountData.NodeIndex = NodeId;
572 if (FAILED(device->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT, &CountData, sizeof(D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT))))
573 {
574 if (ProtectedResourceSessionTypes.size() != 0)
575 {
576 std::cout << "Error: Wrong result from Protected Resource Session Types on Node " << NodeId << std::endl
577 << "Type count check failed but types vector is not empty\n";
578 return -1;
579 }
580 continue;
581 }
582
583 if (CountData.Count != ProtectedResourceSessionTypes.size())
584 {
585 std::cout << "Error: Wrong result from Protected Resource Session Types on Node " << NodeId << std::endl
586 << "Types vector size does not equal type count\n";
587 return -1;
588 }
589
590 D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES Data = {};
591 Data.NodeIndex = NodeId;
592 Data.Count = CountData.Count;
593 Data.pTypes = new GUID[Data.Count];
594 INITIALIZE_FEATURE_SUPPORT_DATA(PROTECTED_RESOURCE_SESSION_TYPES);
595 if (SUCCEEDED(InitResult))
596 {
597 for (unsigned int i = 0; i < Data.Count; i++)
598 {
599 if (ProtectedResourceSessionTypes[i] != Data.pTypes[i])
600 {
601 std::cout << "Error: Result mismatch from Proteted Resource Session Types\n"
602 << "Node Index: " << NodeId << std::endl
603 << "Type Index: " << i << std::endl;
604 return -1;
605 }
606 }
607 }
608 }
609
610 // 36: Options8
611 {
612 BOOL UnalignedBlockTexturesSupported = features.UnalignedBlockTexturesSupported();
613
614 D3D12_FEATURE_DATA_D3D12_OPTIONS8 Data = {};
615 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS8);
616 VERIFY_FEATURE_CHECK(UnalignedBlockTexturesSupported, false);
617 }
618
619 // 37: Options9
620 {
621 BOOL MeshShaderPipelineStatsSupported = features.MeshShaderPipelineStatsSupported();
622 BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex = features.MeshShaderSupportsFullRangeRenderTargetArrayIndex();
623 D3D12_WAVE_MMA_TIER WaveMMATier = features.WaveMMATier();
624
625 D3D12_FEATURE_DATA_D3D12_OPTIONS9 Data = {};
626 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS9);
627 VERIFY_FEATURE_CHECK(MeshShaderPipelineStatsSupported, false);
628 VERIFY_FEATURE_CHECK(MeshShaderSupportsFullRangeRenderTargetArrayIndex, false);
629 VERIFY_FEATURE_CHECK(WaveMMATier, D3D12_WAVE_MMA_TIER_NOT_SUPPORTED);
630 }
631
632 // 39: Options10
633 {
634 BOOL VariableRateShadingSumCombinerSupported = features.VariableRateShadingSumCombinerSupported();
635 BOOL MeshShaderPerPrimitiveShadingRateSupported = features.MeshShaderPerPrimitiveShadingRateSupported();
636
637 D3D12_FEATURE_DATA_D3D12_OPTIONS10 Data = {};
638 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS10);
639 VERIFY_FEATURE_CHECK(VariableRateShadingSumCombinerSupported, false);
640 VERIFY_FEATURE_CHECK(MeshShaderPerPrimitiveShadingRateSupported, false);
641 }
642
643 // 40: Options11
644 {
645 BOOL AtomicInt64OnDescriptorHeapResourceSupported = features.AtomicInt64OnDescriptorHeapResourceSupported();
646
647 D3D12_FEATURE_DATA_D3D12_OPTIONS11 Data = {};
648 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS11);
649 VERIFY_FEATURE_CHECK(AtomicInt64OnDescriptorHeapResourceSupported, false);
650 }
651
652 // 41: Options12
653 {
654 D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives = features.MSPrimitivesPipelineStatisticIncludesCulledPrimitives();
655 BOOL EnhancedBarriersSupported = features.EnhancedBarriersSupported();
656
657 D3D12_FEATURE_DATA_D3D12_OPTIONS12 Data = {};
658 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS12);
659 VERIFY_FEATURE_CHECK(MSPrimitivesPipelineStatisticIncludesCulledPrimitives, D3D12_TRI_STATE_UNKNOWN);
660 VERIFY_FEATURE_CHECK(EnhancedBarriersSupported, false);
661 VERIFY_FEATURE_CHECK(RelaxedFormatCastingSupported, false);
662 }
663
664 // 41: Options13
665 {
666 D3D12_FEATURE_DATA_D3D12_OPTIONS13 Data = {};
667 INITIALIZE_FEATURE_SUPPORT_DATA(D3D12_OPTIONS13);
668 VERIFY_FEATURE_CHECK(UnrestrictedBufferTextureCopyPitchSupported, false);
669 VERIFY_FEATURE_CHECK(UnrestrictedVertexElementAlignmentSupported, false);
670 VERIFY_FEATURE_CHECK(InvertedViewportHeightFlipsYSupported, false);
671 VERIFY_FEATURE_CHECK(InvertedViewportDepthFlipsZSupported, false);
672 VERIFY_FEATURE_CHECK(TextureCopyBetweenDimensionsSupported, false);
673 VERIFY_FEATURE_CHECK(AlphaBlendFactorSupported, false);
674 }
675
676 std::cout << "Test completed with no errors." << std::endl;
677 return 0;
678}
679
680#ifdef __MINGW32__
681STDAPI
682DXCoreCreateAdapterFactory(
683 REFIID riid,
684 _COM_Outptr_ void** ppvFactory
685) {
686 return 0;
687}
688#endif
689
690int main()
691{
692 ComPtr<IDXCoreAdapterFactory> adapter_factory;
693 ComPtr<IDXCoreAdapterList> adapter_list;
694 GUID dx_must_attr[1]{ DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE };
695
696 if(FAILED(DXCoreCreateAdapterFactory(IID_PPV_ARGS(&adapter_factory))))
697 {
698 return -1;
699 }
700
701 if(FAILED(adapter_factory->CreateAdapterList(_countof(dx_must_attr), dx_must_attr, IID_PPV_ARGS(&adapter_list))))
702 {
703 return -1;
704 }
705
706 // Test all adapters
707 for (uint32_t i = 0; i < adapter_list->GetAdapterCount(); i++)
708 {
709 ComPtr<IDXCoreAdapter> adapter;
710 if(FAILED(adapter_list->GetAdapter(i, IID_PPV_ARGS(&adapter))))
711 {
712 std::cout << "Cannot get number " << i << " adapter." << std::endl;
713 continue;
714 }
715
716 std::string driver_desc_str = get_driver_description(adapter);
717 if(driver_desc_str.empty())
718 {
719 std::cout << "Cannot get number " << i << " adapter's driver description." << std::endl;
720 }
721 std::cout << "Test on device driver: " << driver_desc_str << std::endl;
722
723 if(FAILED(run_per_adapter(adapter.Get())))
724 {
725 std::cout << "Some tests failed with error on number " << i << " adapter." << std::endl;
726 }
727 }
728 return 0;
729} \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/test/meson.build b/contrib/DirectX-Headers-1.618.2/test/meson.build
new file mode 100644
index 0000000..ec8b5fe
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/test/meson.build
@@ -0,0 +1,15 @@
1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4headers_test = executable('DirectX-Headers-Test', 'test.cpp',
5 dependencies : [dep_dxheaders, d3d12_lib, dxcore_lib],
6 cpp_args : test_compile_opts,
7 c_args : test_compile_opts)
8test('DirectX-Headers-Test', headers_test)
9
10headers_features_test = executable('DirectX-Headers-Check-Feature-Support-Test', 'feature_check_test.cpp',
11 dependencies : [dep_dxheaders, d3d12_lib, dxcore_lib],
12 cpp_args : test_compile_opts,
13 c_args : test_compile_opts)
14test('DirectX-Headers-Check-Feature-Support-Test', headers_features_test)
15
diff --git a/contrib/DirectX-Headers-1.618.2/test/test.cpp b/contrib/DirectX-Headers-1.618.2/test/test.cpp
new file mode 100644
index 0000000..910e907
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/test/test.cpp
@@ -0,0 +1,46 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#include <wsl/winadapter.h>
5
6#include <directx/d3d12.h>
7#include <directx/d3d12video.h>
8#include <directx/dxcore.h>
9#include <directx/d3dx12.h>
10#include "dxguids/dxguids.h"
11
12#ifdef __MINGW32__
13STDAPI
14DXCoreCreateAdapterFactory(
15 REFIID riid,
16 _COM_Outptr_ void** ppvFactory
17) {
18 return 0;
19}
20#endif
21
22int check_uuid_linkage() {
23 auto uuid_i_unknown = IID_IUnknown;
24 return sizeof(uuid_i_unknown);
25}
26
27int main()
28{
29 IDXCoreAdapter *adapter = nullptr;
30 ID3D12Device *device = nullptr;
31 check_uuid_linkage();
32 {
33 IDXCoreAdapterFactory *factory = nullptr;
34 if (FAILED(DXCoreCreateAdapterFactory(&factory)))
35 return -1;
36
37 IDXCoreAdapterList *list = nullptr;
38 if (FAILED(factory->CreateAdapterList(1, &DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, &list)))
39 return -1;
40
41 if (FAILED(list->GetAdapter(0, &adapter)))
42 return -1;
43 }
44
45 return D3D12CreateDevice(adapter, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&device));
46}