aboutsummaryrefslogtreecommitdiff
path: root/contrib/microsoft.direct3d.d3d12.1.618.4/build
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/microsoft.direct3d.d3d12.1.618.4/build')
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.Rules.Project.xml38
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.props9
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.targets35
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.dllbin0 -> 4818976 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.pdbbin0 -> 8605696 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.dllbin0 -> 2758176 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.exebin0 -> 2472008 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.pdbbin0 -> 3133440 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler_Exe.pdbbin0 -> 2781184 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.dllbin0 -> 5065800 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.pdbbin0 -> 9506816 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.exebin0 -> 730656 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.pdbbin0 -> 1339392 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.dllbin0 -> 3967520 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.pdbbin0 -> 11415552 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.dllbin0 -> 2182216 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.exebin0 -> 1885728 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.pdbbin0 -> 3477504 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler_Exe.pdbbin0 -> 2879488 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.dllbin0 -> 4268064 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.pdbbin0 -> 9277440 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.exebin0 -> 625736 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.pdbbin0 -> 1503232 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.dllbin0 -> 4821536 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.pdbbin0 -> 9170944 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.dllbin0 -> 2718280 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.exebin0 -> 2433048 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.pdbbin0 -> 3346432 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler_Exe.pdbbin0 -> 2838528 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.dllbin0 -> 4932632 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.pdbbin0 -> 10055680 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.exebin0 -> 727112 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.pdbbin0 -> 1396736 bytes
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/D3D12TokenizedProgramFormat.hpp2634
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.h36890
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.idl7016
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.h899
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.idl101
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.h977
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.idl291
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12markerapienums.idl119
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.h4280
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.idl1860
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h495
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h10726
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl3818
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.h1133
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.idl991
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.h998
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.idl195
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12.h36
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_barriers.h193
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_check_feature_support.h1162
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_core.h2072
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_default.h12
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_pipeline_state_stream.h1718
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_property_format_table.h128
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_render_pass.h105
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_resource_helpers.h612
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_root_signature.h1227
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_state_object.h2570
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.h144
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.idl139
-rw-r--r--contrib/microsoft.direct3d.d3d12.1.618.4/build/native/src/d3dx12/d3dx12_property_format_table.cpp2601
64 files changed, 86224 insertions, 0 deletions
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.Rules.Project.xml b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.Rules.Project.xml
new file mode 100644
index 0000000..aa7f8cc
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.Rules.Project.xml
@@ -0,0 +1,38 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Rule
3 Name="Microsoft_Direct3D_D3D12"
4 DisplayName="D3D12 NuGet"
5 Order="70"
6 PageTemplate="generic"
7 Description="Options for the Microsoft.Direct3D.D3D12 NuGet Package"
8 xmlns="http://schemas.microsoft.com/build/2009/properties">
9
10 <Rule.Categories>
11 <Category Name="General" DisplayName="General" />
12 </Rule.Categories>
13
14 <Rule.DataSource>
15 <DataSource Persistence="ProjectFile" Label="Globals" />
16 </Rule.DataSource>
17
18 <StringProperty Name="Microsoft_Direct3D_D3D12_D3D12SDKPath"
19 DisplayName="D3D12SDKPath"
20 Description="Specify the exe relative D3D12SDKPath export to modify the copy destination for d3d12core.dll etc."
21 Category="General" />
22
23 <BoolProperty Name="Microsoft_Direct3D_D3D12_SkipLibraryCopy"
24 DisplayName="Disable Library Copy"
25 Description="Disables copying D3D12Core.dll and D3D12Core.pdb into the project output directory."
26 Category="General" />
27
28 <BoolProperty Name="Microsoft_Direct3D_D3D12_SkipDebugLayerCopy"
29 DisplayName="Disable Debug Layer Copy"
30 Description="Disables copying D3D12SDKLayers.dll and D3D12SDKLayers.pdb into the project output directory. This 'debug layer' is used for development only."
31 Category="General" />
32
33 <BoolProperty Name="Microsoft_Direct3D_D3D12_SkipIncludeDir"
34 DisplayName="Disable Include Directory"
35 Description="Disables appending the package's include folder as an additional include directory."
36 Category="General" />
37
38</Rule>
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.props b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.props
new file mode 100644
index 0000000..3add946
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.props
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <PropertyGroup Condition="'$(Microsoft_Direct3D_D3D12_D3D12SDKPath)' == ''">
4 <Microsoft_Direct3D_D3D12_D3D12SDKPath>.\D3D12\</Microsoft_Direct3D_D3D12_D3D12SDKPath>
5 </PropertyGroup>
6 <ItemGroup>
7 <PropertyPageSchema Include="$(MSBuildThisFileDirectory)Microsoft.Direct3D.D3D12.Rules.Project.xml"/>
8 </ItemGroup>
9</Project> \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.targets b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.targets
new file mode 100644
index 0000000..c41a7fc
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/Microsoft.Direct3D.D3D12.targets
@@ -0,0 +1,35 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <ItemDefinitionGroup Condition="'$(Microsoft_Direct3D_D3D12_SkipIncludeDir)' != 'true'">
4 <ClCompile>
5 <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)include;$(MSBuildThisFileDirectory)include\d3dx12;$(MSBuildThisFileDirectory);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
6 </ClCompile>
7
8 </ItemDefinitionGroup>
9 <PropertyGroup>
10 <DirectXPlatform Condition="'$(PlatformTarget)' == 'x64' OR ('$(PlatformTarget)' == 'AnyCPU' AND '$(Prefer32Bit)' != 'true')">x64</DirectXPlatform>
11 <DirectXPlatform Condition="'$(PlatformTarget)' == 'x86' OR ('$(PlatformTarget)' == 'AnyCPU' AND '$(Prefer32Bit)' == 'true')">win32</DirectXPlatform>
12 <DirectXPlatform Condition="'$(PlatformTarget)' == '' AND '$(Prefer32Bit)' != 'true'">x64</DirectXPlatform>
13 <DirectXPlatform Condition="'$(PlatformTarget)' == '' AND '$(Prefer32Bit)' == 'true'">win32</DirectXPlatform>
14 <DirectXPlatform Condition="'$(DirectXPlatform)' == ''">$(PlatformTarget)</DirectXPlatform>
15 </PropertyGroup>
16
17 <ItemGroup>
18 <Content Include="$(MSBuildThisFileDirectory)bin\$(DirectXPlatform)\D3D12Core.dll" Condition="'$(Microsoft_Direct3D_D3D12_SkipLibraryCopy)' != 'true'">
19 <Link>$(Microsoft_Direct3D_D3D12_D3D12SDKPath)%(FileName)%(Extension)</Link>
20 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
21 </Content>
22 <Content Include="$(MSBuildThisFileDirectory)bin\$(DirectXPlatform)\D3D12Core.pdb" Condition="'$(Microsoft_Direct3D_D3D12_SkipLibraryCopy)' != 'true'">
23 <Link>$(Microsoft_Direct3D_D3D12_D3D12SDKPath)%(FileName)%(Extension)</Link>
24 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
25 </Content>
26 <Content Include="$(MSBuildThisFileDirectory)bin\$(DirectXPlatform)\D3D12SDKLayers.dll" Condition="'$(Microsoft_Direct3D_D3D12_SkipDebugLayerCopy)' != 'true'">
27 <Link>$(Microsoft_Direct3D_D3D12_D3D12SDKPath)%(FileName)%(Extension)</Link>
28 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
29 </Content>
30 <Content Include="$(MSBuildThisFileDirectory)bin\$(DirectXPlatform)\D3D12SDKLayers.pdb" Condition="'$(Microsoft_Direct3D_D3D12_SkipDebugLayerCopy)' != 'true'">
31 <Link>$(Microsoft_Direct3D_D3D12_D3D12SDKPath)%(FileName)%(Extension)</Link>
32 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
33 </Content>
34 </ItemGroup>
35</Project>
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.dll
new file mode 100644
index 0000000..080b83b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.pdb
new file mode 100644
index 0000000..1e4b9fa
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12Core.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.dll
new file mode 100644
index 0000000..bb7e11f
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.exe
new file mode 100644
index 0000000..aab2df3
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.pdb
new file mode 100644
index 0000000..ecc6fe1
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler_Exe.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler_Exe.pdb
new file mode 100644
index 0000000..35b75f3
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/D3D12StateObjectCompiler_Exe.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.dll
new file mode 100644
index 0000000..37ab56c
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.pdb
new file mode 100644
index 0000000..68f9cec
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3d12SDKLayers.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.exe
new file mode 100644
index 0000000..607260d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.pdb
new file mode 100644
index 0000000..30deae9
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/arm64/d3dconfig.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.dll
new file mode 100644
index 0000000..4cb995e
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.pdb
new file mode 100644
index 0000000..91cf0c4
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12Core.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.dll
new file mode 100644
index 0000000..c509b53
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.exe
new file mode 100644
index 0000000..9b9ef4d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.pdb
new file mode 100644
index 0000000..859e16a
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler_Exe.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler_Exe.pdb
new file mode 100644
index 0000000..99300ee
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/D3D12StateObjectCompiler_Exe.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.dll
new file mode 100644
index 0000000..9814661
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.pdb
new file mode 100644
index 0000000..ed90270
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3d12SDKLayers.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.exe
new file mode 100644
index 0000000..15ec768
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.pdb
new file mode 100644
index 0000000..15bde0e
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/win32/d3dconfig.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.dll
new file mode 100644
index 0000000..b3aae9c
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.pdb
new file mode 100644
index 0000000..cae08e5
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12Core.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.dll
new file mode 100644
index 0000000..75a3b29
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.exe
new file mode 100644
index 0000000..fd3c433
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.pdb
new file mode 100644
index 0000000..236d325
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler_Exe.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler_Exe.pdb
new file mode 100644
index 0000000..f548755
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/D3D12StateObjectCompiler_Exe.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.dll b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.dll
new file mode 100644
index 0000000..96577dc
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.dll
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.pdb
new file mode 100644
index 0000000..cfb1bf7
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3d12SDKLayers.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.exe b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.exe
new file mode 100644
index 0000000..462ff91
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.exe
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.pdb b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.pdb
new file mode 100644
index 0000000..7089f46
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/bin/x64/d3dconfig.pdb
Binary files differ
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/D3D12TokenizedProgramFormat.hpp b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/D3D12TokenizedProgramFormat.hpp
new file mode 100644
index 0000000..b951454
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/D3D12TokenizedProgramFormat.hpp
@@ -0,0 +1,2634 @@
1#pragma once
2//*********************************************************
3//
4// Copyright (c) Microsoft Corporation.
5// Licensed under the MIT License (MIT).
6//
7//*********************************************************
8//
9// High Level Goals
10//
11// - Serve as the runtime/DDI representation for all D3D11 tokenized code,
12// for all classes of programs, including pixel program, vertex program,
13// geometry program, etc.
14//
15// - Any information that HLSL needs to give to drivers is encoded in
16// this token format in some form.
17//
18// - Enable common tools and source code for managing all tokenizable
19// program formats.
20//
21// - Support extensible token definitions, allowing full customizations for
22// specific program classes, while maintaining general conventions for all
23// program models.
24//
25// - Binary backwards compatible with D3D10. Any token name that was originally
26// defined with "D3D10" in it is unchanged; D3D11 only adds new tokens.
27//
28// ----------------------------------------------------------------------------
29//
30// Low Level Feature Summary
31//
32// - DWORD based tokens always, for simplicity
33// - Opcode token is generally a single DWORD, though there is a bit indicating
34// if extended information (extra DWORD(s)) are present
35// - Operand tokens are a completely self contained, extensible format,
36// with scalar and 4-vector data types as first class citizens, but
37// allowance for extension to n-component vectors.
38// - Initial operand token identifies register type, register file
39// structure/dimensionality and mode of indexing for each dimension,
40// and choice of component selection mechanism (i.e. mask vs. swizzle etc).
41// - Optional additional extended operand tokens can defined things like
42// modifiers (which are not needed by default).
43// - Operand's immediate index value(s), if needed, appear as subsequent DWORD
44// values, and if relative addressing is specified, an additional completely
45// self contained operand definition appears nested in the token sequence.
46//
47// ----------------------------------------------------------------------------
48
49#include <winapifamily.h>
50
51#pragma region Application Family
52#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
53
54// ----------------------------------------------------------------------------
55// Version Token (VerTok)
56//
57// [07:00] minor version number (0-255)
58// [15:08] major version number (0-255)
59// [31:16] D3D10_SB_TOKENIZED_PROGRAM_TYPE
60//
61// ----------------------------------------------------------------------------
62
63typedef enum D3D10_SB_TOKENIZED_PROGRAM_TYPE
64{
65 D3D10_SB_PIXEL_SHADER = 0,
66 D3D10_SB_VERTEX_SHADER = 1,
67 D3D10_SB_GEOMETRY_SHADER = 2,
68
69 // D3D11 Shaders
70 D3D11_SB_HULL_SHADER = 3,
71 D3D11_SB_DOMAIN_SHADER = 4,
72 D3D11_SB_COMPUTE_SHADER = 5,
73
74 // Subset of D3D12 Shaders where this field is referenced by runtime
75 // Entries from 6-12 are unique to state objects
76 // (e.g. library, callable and raytracing shaders)
77 D3D12_SB_MESH_SHADER = 13,
78 D3D12_SB_AMPLIFICATION_SHADER = 14,
79
80 D3D11_SB_RESERVED0 = 0xFFF0
81} D3D10_SB_TOKENIZED_PROGRAM_TYPE;
82
83#define D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK 0xffff0000
84#define D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT 16
85
86// DECODER MACRO: Retrieve program type from version token
87#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_TYPE(VerTok) ((D3D10_SB_TOKENIZED_PROGRAM_TYPE)(((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK)>>D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT))
88
89#define D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK 0x000000f0
90#define D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT 4
91#define D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK 0x0000000f
92
93// DECODER MACRO: Retrieve major version # from version token
94#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION(VerTok) (((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK)>>D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT)
95// DECODER MACRO: Retrieve minor version # from version token
96#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION(VerTok) ((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK)
97
98// ENCODER MACRO: Create complete VerTok
99#define ENCODE_D3D10_SB_TOKENIZED_PROGRAM_VERSION_TOKEN(ProgType,MajorVer,MinorVer) ((((ProgType)<<D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT)&D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK)|\
100 ((((MajorVer)<<D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT)&D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK))|\
101 ((MinorVer)&D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK))
102
103// ----------------------------------------------------------------------------
104// Length Token (LenTok)
105//
106// Always follows VerTok
107//
108// [31:00] Unsigned integer count of number of
109// DWORDs in program code, including version
110// and length tokens. So the minimum value
111// is 0x00000002 (if an empty program is ever
112// valid).
113//
114// ----------------------------------------------------------------------------
115
116// DECODER MACRO: Retrieve program length
117#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(LenTok) (LenTok)
118// ENCODER MACRO: Create complete LenTok
119#define ENCODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(Length) (Length)
120#define MAX_D3D10_SB_TOKENIZED_PROGRAM_LENGTH (0xffffffff)
121
122// ----------------------------------------------------------------------------
123// Opcode Format (OpcodeToken0)
124//
125// [10:00] D3D10_SB_OPCODE_TYPE
126// if( [10:00] == D3D10_SB_OPCODE_CUSTOMDATA )
127// {
128// Token starts a custom-data block. See "Custom-Data Block Format".
129// }
130// else // standard opcode token
131// {
132// [23:11] Opcode-Specific Controls
133// [30:24] Instruction length in DWORDs including the opcode token.
134// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
135// contains extended opcode token.
136// }
137//
138// ----------------------------------------------------------------------------
139
140typedef enum D3D10_SB_OPCODE_TYPE {
141 D3D10_SB_OPCODE_ADD ,
142 D3D10_SB_OPCODE_AND ,
143 D3D10_SB_OPCODE_BREAK ,
144 D3D10_SB_OPCODE_BREAKC ,
145 D3D10_SB_OPCODE_CALL ,
146 D3D10_SB_OPCODE_CALLC ,
147 D3D10_SB_OPCODE_CASE ,
148 D3D10_SB_OPCODE_CONTINUE ,
149 D3D10_SB_OPCODE_CONTINUEC ,
150 D3D10_SB_OPCODE_CUT ,
151 D3D10_SB_OPCODE_DEFAULT ,
152 D3D10_SB_OPCODE_DERIV_RTX ,
153 D3D10_SB_OPCODE_DERIV_RTY ,
154 D3D10_SB_OPCODE_DISCARD ,
155 D3D10_SB_OPCODE_DIV ,
156 D3D10_SB_OPCODE_DP2 ,
157 D3D10_SB_OPCODE_DP3 ,
158 D3D10_SB_OPCODE_DP4 ,
159 D3D10_SB_OPCODE_ELSE ,
160 D3D10_SB_OPCODE_EMIT ,
161 D3D10_SB_OPCODE_EMITTHENCUT ,
162 D3D10_SB_OPCODE_ENDIF ,
163 D3D10_SB_OPCODE_ENDLOOP ,
164 D3D10_SB_OPCODE_ENDSWITCH ,
165 D3D10_SB_OPCODE_EQ ,
166 D3D10_SB_OPCODE_EXP ,
167 D3D10_SB_OPCODE_FRC ,
168 D3D10_SB_OPCODE_FTOI ,
169 D3D10_SB_OPCODE_FTOU ,
170 D3D10_SB_OPCODE_GE ,
171 D3D10_SB_OPCODE_IADD ,
172 D3D10_SB_OPCODE_IF ,
173 D3D10_SB_OPCODE_IEQ ,
174 D3D10_SB_OPCODE_IGE ,
175 D3D10_SB_OPCODE_ILT ,
176 D3D10_SB_OPCODE_IMAD ,
177 D3D10_SB_OPCODE_IMAX ,
178 D3D10_SB_OPCODE_IMIN ,
179 D3D10_SB_OPCODE_IMUL ,
180 D3D10_SB_OPCODE_INE ,
181 D3D10_SB_OPCODE_INEG ,
182 D3D10_SB_OPCODE_ISHL ,
183 D3D10_SB_OPCODE_ISHR ,
184 D3D10_SB_OPCODE_ITOF ,
185 D3D10_SB_OPCODE_LABEL ,
186 D3D10_SB_OPCODE_LD ,
187 D3D10_SB_OPCODE_LD_MS ,
188 D3D10_SB_OPCODE_LOG ,
189 D3D10_SB_OPCODE_LOOP ,
190 D3D10_SB_OPCODE_LT ,
191 D3D10_SB_OPCODE_MAD ,
192 D3D10_SB_OPCODE_MIN ,
193 D3D10_SB_OPCODE_MAX ,
194 D3D10_SB_OPCODE_CUSTOMDATA ,
195 D3D10_SB_OPCODE_MOV ,
196 D3D10_SB_OPCODE_MOVC ,
197 D3D10_SB_OPCODE_MUL ,
198 D3D10_SB_OPCODE_NE ,
199 D3D10_SB_OPCODE_NOP ,
200 D3D10_SB_OPCODE_NOT ,
201 D3D10_SB_OPCODE_OR ,
202 D3D10_SB_OPCODE_RESINFO ,
203 D3D10_SB_OPCODE_RET ,
204 D3D10_SB_OPCODE_RETC ,
205 D3D10_SB_OPCODE_ROUND_NE ,
206 D3D10_SB_OPCODE_ROUND_NI ,
207 D3D10_SB_OPCODE_ROUND_PI ,
208 D3D10_SB_OPCODE_ROUND_Z ,
209 D3D10_SB_OPCODE_RSQ ,
210 D3D10_SB_OPCODE_SAMPLE ,
211 D3D10_SB_OPCODE_SAMPLE_C ,
212 D3D10_SB_OPCODE_SAMPLE_C_LZ ,
213 D3D10_SB_OPCODE_SAMPLE_L ,
214 D3D10_SB_OPCODE_SAMPLE_D ,
215 D3D10_SB_OPCODE_SAMPLE_B ,
216 D3D10_SB_OPCODE_SQRT ,
217 D3D10_SB_OPCODE_SWITCH ,
218 D3D10_SB_OPCODE_SINCOS ,
219 D3D10_SB_OPCODE_UDIV ,
220 D3D10_SB_OPCODE_ULT ,
221 D3D10_SB_OPCODE_UGE ,
222 D3D10_SB_OPCODE_UMUL ,
223 D3D10_SB_OPCODE_UMAD ,
224 D3D10_SB_OPCODE_UMAX ,
225 D3D10_SB_OPCODE_UMIN ,
226 D3D10_SB_OPCODE_USHR ,
227 D3D10_SB_OPCODE_UTOF ,
228 D3D10_SB_OPCODE_XOR ,
229 D3D10_SB_OPCODE_DCL_RESOURCE , // DCL* opcodes have
230 D3D10_SB_OPCODE_DCL_CONSTANT_BUFFER , // custom operand formats.
231 D3D10_SB_OPCODE_DCL_SAMPLER ,
232 D3D10_SB_OPCODE_DCL_INDEX_RANGE ,
233 D3D10_SB_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY ,
234 D3D10_SB_OPCODE_DCL_GS_INPUT_PRIMITIVE ,
235 D3D10_SB_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT ,
236 D3D10_SB_OPCODE_DCL_INPUT ,
237 D3D10_SB_OPCODE_DCL_INPUT_SGV ,
238 D3D10_SB_OPCODE_DCL_INPUT_SIV ,
239 D3D10_SB_OPCODE_DCL_INPUT_PS ,
240 D3D10_SB_OPCODE_DCL_INPUT_PS_SGV ,
241 D3D10_SB_OPCODE_DCL_INPUT_PS_SIV ,
242 D3D10_SB_OPCODE_DCL_OUTPUT ,
243 D3D10_SB_OPCODE_DCL_OUTPUT_SGV ,
244 D3D10_SB_OPCODE_DCL_OUTPUT_SIV ,
245 D3D10_SB_OPCODE_DCL_TEMPS ,
246 D3D10_SB_OPCODE_DCL_INDEXABLE_TEMP ,
247 D3D10_SB_OPCODE_DCL_GLOBAL_FLAGS ,
248
249// -----------------------------------------------
250
251 // This marks the end of D3D10.0 opcodes
252 D3D10_SB_OPCODE_RESERVED0,
253
254// ---------- DX 10.1 op codes---------------------
255
256 D3D10_1_SB_OPCODE_LOD,
257 D3D10_1_SB_OPCODE_GATHER4,
258 D3D10_1_SB_OPCODE_SAMPLE_POS,
259 D3D10_1_SB_OPCODE_SAMPLE_INFO,
260
261// -----------------------------------------------
262
263 // This marks the end of D3D10.1 opcodes
264 D3D10_1_SB_OPCODE_RESERVED1,
265
266// ---------- DX 11 op codes---------------------
267 D3D11_SB_OPCODE_HS_DECLS , // token marks beginning of HS sub-shader
268 D3D11_SB_OPCODE_HS_CONTROL_POINT_PHASE , // token marks beginning of HS sub-shader
269 D3D11_SB_OPCODE_HS_FORK_PHASE , // token marks beginning of HS sub-shader
270 D3D11_SB_OPCODE_HS_JOIN_PHASE , // token marks beginning of HS sub-shader
271
272 D3D11_SB_OPCODE_EMIT_STREAM ,
273 D3D11_SB_OPCODE_CUT_STREAM ,
274 D3D11_SB_OPCODE_EMITTHENCUT_STREAM ,
275 D3D11_SB_OPCODE_INTERFACE_CALL ,
276
277 D3D11_SB_OPCODE_BUFINFO ,
278 D3D11_SB_OPCODE_DERIV_RTX_COARSE ,
279 D3D11_SB_OPCODE_DERIV_RTX_FINE ,
280 D3D11_SB_OPCODE_DERIV_RTY_COARSE ,
281 D3D11_SB_OPCODE_DERIV_RTY_FINE ,
282 D3D11_SB_OPCODE_GATHER4_C ,
283 D3D11_SB_OPCODE_GATHER4_PO ,
284 D3D11_SB_OPCODE_GATHER4_PO_C ,
285 D3D11_SB_OPCODE_RCP ,
286 D3D11_SB_OPCODE_F32TOF16 ,
287 D3D11_SB_OPCODE_F16TOF32 ,
288 D3D11_SB_OPCODE_UADDC ,
289 D3D11_SB_OPCODE_USUBB ,
290 D3D11_SB_OPCODE_COUNTBITS ,
291 D3D11_SB_OPCODE_FIRSTBIT_HI ,
292 D3D11_SB_OPCODE_FIRSTBIT_LO ,
293 D3D11_SB_OPCODE_FIRSTBIT_SHI ,
294 D3D11_SB_OPCODE_UBFE ,
295 D3D11_SB_OPCODE_IBFE ,
296 D3D11_SB_OPCODE_BFI ,
297 D3D11_SB_OPCODE_BFREV ,
298 D3D11_SB_OPCODE_SWAPC ,
299
300 D3D11_SB_OPCODE_DCL_STREAM ,
301 D3D11_SB_OPCODE_DCL_FUNCTION_BODY ,
302 D3D11_SB_OPCODE_DCL_FUNCTION_TABLE ,
303 D3D11_SB_OPCODE_DCL_INTERFACE ,
304
305 D3D11_SB_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT ,
306 D3D11_SB_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT ,
307 D3D11_SB_OPCODE_DCL_TESS_DOMAIN ,
308 D3D11_SB_OPCODE_DCL_TESS_PARTITIONING ,
309 D3D11_SB_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE ,
310 D3D11_SB_OPCODE_DCL_HS_MAX_TESSFACTOR ,
311 D3D11_SB_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT ,
312 D3D11_SB_OPCODE_DCL_HS_JOIN_PHASE_INSTANCE_COUNT ,
313
314 D3D11_SB_OPCODE_DCL_THREAD_GROUP ,
315 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED ,
316 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW ,
317 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED,
318 D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW,
319 D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED,
320 D3D11_SB_OPCODE_DCL_RESOURCE_RAW ,
321 D3D11_SB_OPCODE_DCL_RESOURCE_STRUCTURED ,
322 D3D11_SB_OPCODE_LD_UAV_TYPED ,
323 D3D11_SB_OPCODE_STORE_UAV_TYPED ,
324 D3D11_SB_OPCODE_LD_RAW ,
325 D3D11_SB_OPCODE_STORE_RAW ,
326 D3D11_SB_OPCODE_LD_STRUCTURED ,
327 D3D11_SB_OPCODE_STORE_STRUCTURED ,
328 D3D11_SB_OPCODE_ATOMIC_AND ,
329 D3D11_SB_OPCODE_ATOMIC_OR ,
330 D3D11_SB_OPCODE_ATOMIC_XOR ,
331 D3D11_SB_OPCODE_ATOMIC_CMP_STORE ,
332 D3D11_SB_OPCODE_ATOMIC_IADD ,
333 D3D11_SB_OPCODE_ATOMIC_IMAX ,
334 D3D11_SB_OPCODE_ATOMIC_IMIN ,
335 D3D11_SB_OPCODE_ATOMIC_UMAX ,
336 D3D11_SB_OPCODE_ATOMIC_UMIN ,
337 D3D11_SB_OPCODE_IMM_ATOMIC_ALLOC ,
338 D3D11_SB_OPCODE_IMM_ATOMIC_CONSUME ,
339 D3D11_SB_OPCODE_IMM_ATOMIC_IADD ,
340 D3D11_SB_OPCODE_IMM_ATOMIC_AND ,
341 D3D11_SB_OPCODE_IMM_ATOMIC_OR ,
342 D3D11_SB_OPCODE_IMM_ATOMIC_XOR ,
343 D3D11_SB_OPCODE_IMM_ATOMIC_EXCH ,
344 D3D11_SB_OPCODE_IMM_ATOMIC_CMP_EXCH ,
345 D3D11_SB_OPCODE_IMM_ATOMIC_IMAX ,
346 D3D11_SB_OPCODE_IMM_ATOMIC_IMIN ,
347 D3D11_SB_OPCODE_IMM_ATOMIC_UMAX ,
348 D3D11_SB_OPCODE_IMM_ATOMIC_UMIN ,
349 D3D11_SB_OPCODE_SYNC ,
350
351 D3D11_SB_OPCODE_DADD ,
352 D3D11_SB_OPCODE_DMAX ,
353 D3D11_SB_OPCODE_DMIN ,
354 D3D11_SB_OPCODE_DMUL ,
355 D3D11_SB_OPCODE_DEQ ,
356 D3D11_SB_OPCODE_DGE ,
357 D3D11_SB_OPCODE_DLT ,
358 D3D11_SB_OPCODE_DNE ,
359 D3D11_SB_OPCODE_DMOV ,
360 D3D11_SB_OPCODE_DMOVC ,
361 D3D11_SB_OPCODE_DTOF ,
362 D3D11_SB_OPCODE_FTOD ,
363
364 D3D11_SB_OPCODE_EVAL_SNAPPED ,
365 D3D11_SB_OPCODE_EVAL_SAMPLE_INDEX ,
366 D3D11_SB_OPCODE_EVAL_CENTROID ,
367
368 D3D11_SB_OPCODE_DCL_GS_INSTANCE_COUNT ,
369
370 D3D11_SB_OPCODE_ABORT ,
371 D3D11_SB_OPCODE_DEBUG_BREAK ,
372
373// -----------------------------------------------
374
375 // This marks the end of D3D11.0 opcodes
376 D3D11_SB_OPCODE_RESERVED0,
377
378 D3D11_1_SB_OPCODE_DDIV,
379 D3D11_1_SB_OPCODE_DFMA,
380 D3D11_1_SB_OPCODE_DRCP,
381
382 D3D11_1_SB_OPCODE_MSAD,
383
384 D3D11_1_SB_OPCODE_DTOI,
385 D3D11_1_SB_OPCODE_DTOU,
386 D3D11_1_SB_OPCODE_ITOD,
387 D3D11_1_SB_OPCODE_UTOD,
388
389// -----------------------------------------------
390
391 // This marks the end of D3D11.1 opcodes
392 D3D11_1_SB_OPCODE_RESERVED0,
393
394 D3DWDDM1_3_SB_OPCODE_GATHER4_FEEDBACK,
395 D3DWDDM1_3_SB_OPCODE_GATHER4_C_FEEDBACK,
396 D3DWDDM1_3_SB_OPCODE_GATHER4_PO_FEEDBACK,
397 D3DWDDM1_3_SB_OPCODE_GATHER4_PO_C_FEEDBACK,
398 D3DWDDM1_3_SB_OPCODE_LD_FEEDBACK,
399 D3DWDDM1_3_SB_OPCODE_LD_MS_FEEDBACK,
400 D3DWDDM1_3_SB_OPCODE_LD_UAV_TYPED_FEEDBACK,
401 D3DWDDM1_3_SB_OPCODE_LD_RAW_FEEDBACK,
402 D3DWDDM1_3_SB_OPCODE_LD_STRUCTURED_FEEDBACK,
403 D3DWDDM1_3_SB_OPCODE_SAMPLE_L_FEEDBACK,
404 D3DWDDM1_3_SB_OPCODE_SAMPLE_C_LZ_FEEDBACK,
405
406 D3DWDDM1_3_SB_OPCODE_SAMPLE_CLAMP_FEEDBACK,
407 D3DWDDM1_3_SB_OPCODE_SAMPLE_B_CLAMP_FEEDBACK,
408 D3DWDDM1_3_SB_OPCODE_SAMPLE_D_CLAMP_FEEDBACK,
409 D3DWDDM1_3_SB_OPCODE_SAMPLE_C_CLAMP_FEEDBACK,
410
411 D3DWDDM1_3_SB_OPCODE_CHECK_ACCESS_FULLY_MAPPED,
412
413// -----------------------------------------------
414
415 // This marks the end of WDDM 1.3 opcodes
416 D3DWDDM1_3_SB_OPCODE_RESERVED0,
417
418 D3D10_SB_NUM_OPCODES // Should be the last entry
419} D3D10_SB_OPCODE_TYPE;
420
421#define D3D10_SB_OPCODE_TYPE_MASK 0x00007ff
422// DECODER MACRO: Retrieve program opcode
423#define DECODE_D3D10_SB_OPCODE_TYPE(OpcodeToken0) ((D3D10_SB_OPCODE_TYPE)((OpcodeToken0)&D3D10_SB_OPCODE_TYPE_MASK))
424// ENCODER MACRO: Create the opcode-type portion of OpcodeToken0
425#define ENCODE_D3D10_SB_OPCODE_TYPE(OpcodeName) ((OpcodeName)&D3D10_SB_OPCODE_TYPE_MASK)
426
427#define D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK 0x7f000000
428#define D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT 24
429// DECODER MACRO: Retrieve instruction length
430// in # of DWORDs including the opcode token(s).
431// The range is 1-127.
432#define DECODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(OpcodeToken0) (((OpcodeToken0)&D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK)>> D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT)
433
434// ENCODER MACRO: Store instruction length
435// portion of OpcodeToken0, in # of DWORDs
436// including the opcode token(s).
437// Valid range is 1-127.
438#define ENCODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(Length) (((Length)<<D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT)&D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK)
439#define MAX_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH 127
440
441#define D3D10_SB_INSTRUCTION_SATURATE_MASK 0x00002000
442// DECODER MACRO: Check OpcodeToken0 to see if an instruction
443// is to saturate the result [0..1]
444// This flag is indicated by one of the bits in the
445// opcode specific control range.
446#define DECODE_IS_D3D10_SB_INSTRUCTION_SATURATE_ENABLED(OpcodeToken0) ((OpcodeToken0)&D3D10_SB_INSTRUCTION_SATURATE_MASK)
447// ENCODER MACRO: Encode in OpcodeToken0 if instruction is to saturate the result.
448#define ENCODE_D3D10_SB_INSTRUCTION_SATURATE(bSat) (((bSat)!=0)?D3D10_SB_INSTRUCTION_SATURATE_MASK:0)
449
450// Boolean test for conditional instructions such as if (if_z or if_nz)
451// This is part of the opcode specific control range.
452typedef enum D3D10_SB_INSTRUCTION_TEST_BOOLEAN
453{
454 D3D10_SB_INSTRUCTION_TEST_ZERO = 0,
455 D3D10_SB_INSTRUCTION_TEST_NONZERO = 1
456} D3D10_SB_INSTRUCTION_TEST_BOOLEAN;
457#define D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK 0x00040000
458#define D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT 18
459
460// DECODER MACRO: For an OpcodeToken0 for requires either a
461// zero or non-zero test, determine which test was chosen.
462#define DECODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN(OpcodeToken0) ((D3D10_SB_INSTRUCTION_TEST_BOOLEAN)(((OpcodeToken0)&D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK)>>D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT))
463// ENCODER MACRO: Store "zero" or "nonzero" in the opcode
464// specific control range of OpcodeToken0
465#define ENCODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN(Boolean) (((Boolean)<<D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT)&D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK)
466
467// Precise value mask (bits 19-22)
468// This is part of the opcode specific control range.
469// It's 1 bit per-channel of the output, for instructions with multiple
470// output operands, it applies to that component in each operand. This
471// uses the components defined in D3D10_SB_COMPONENT_NAME.
472#define D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK 0x00780000
473#define D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT 19
474
475// DECODER MACRO: this macro extracts from OpcodeToken0 the 4 component
476// (xyzw) mask, as a field of D3D10_SB_4_COMPONENT_[X|Y|Z|W] flags.
477#define DECODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(OpcodeToken0) ((((OpcodeToken0)&D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK)>>D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT))
478// ENCODER MACRO: Given a set of
479// D3D10_SB_OPERAND_4_COMPONENT_[X|Y|Z|W] values
480// or'd together, encode them in OpcodeToken0.
481#define ENCODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(ComponentMask) (((ComponentMask)<<D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT)&D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK)
482
483// resinfo instruction return type
484typedef enum D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE
485{
486 D3D10_SB_RESINFO_INSTRUCTION_RETURN_FLOAT = 0,
487 D3D10_SB_RESINFO_INSTRUCTION_RETURN_RCPFLOAT = 1,
488 D3D10_SB_RESINFO_INSTRUCTION_RETURN_UINT = 2
489} D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE;
490
491#define D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK 0x00001800
492#define D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT 11
493
494// DECODER MACRO: For an OpcodeToken0 for the resinfo instruction,
495// determine the return type.
496#define DECODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE(OpcodeToken0) ((D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE)(((OpcodeToken0)&D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK)>>D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT))
497// ENCODER MACRO: Encode the return type for the resinfo instruction
498// in the opcode specific control range of OpcodeToken0
499#define ENCODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE(ReturnType) (((ReturnType)<<D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT)&D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK)
500
501// sync instruction flags
502#define D3D11_SB_SYNC_THREADS_IN_GROUP 0x00000800
503#define D3D11_SB_SYNC_THREAD_GROUP_SHARED_MEMORY 0x00001000
504#define D3D11_SB_SYNC_UNORDERED_ACCESS_VIEW_MEMORY_GROUP 0x00002000
505#define D3D11_SB_SYNC_UNORDERED_ACCESS_VIEW_MEMORY_GLOBAL 0x00004000
506#define D3D11_SB_SYNC_FLAGS_MASK 0x00007800
507
508// DECODER MACRO: Retrieve flags for sync instruction from OpcodeToken0.
509#define DECODE_D3D11_SB_SYNC_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_SYNC_FLAGS_MASK)
510
511// ENCODER MACRO: Given a set of sync instruciton flags, encode them in OpcodeToken0.
512#define ENCODE_D3D11_SB_SYNC_FLAGS(Flags) ((Flags)&D3D11_SB_SYNC_FLAGS_MASK)
513
514#define D3D10_SB_OPCODE_EXTENDED_MASK 0x80000000
515#define D3D10_SB_OPCODE_EXTENDED_SHIFT 31
516// DECODER MACRO: Determine if the opcode is extended
517// by an additional opcode token. Currently there are no
518// extended opcodes.
519#define DECODE_IS_D3D10_SB_OPCODE_EXTENDED(OpcodeToken0) (((OpcodeToken0)&D3D10_SB_OPCODE_EXTENDED_MASK)>> D3D10_SB_OPCODE_EXTENDED_SHIFT)
520// ENCODER MACRO: Store in OpcodeToken0 whether the opcode is extended
521// by an additional opcode token.
522#define ENCODE_D3D10_SB_OPCODE_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPCODE_EXTENDED_MASK:0)
523
524// ----------------------------------------------------------------------------
525// Extended Opcode Format (OpcodeToken1)
526//
527// If bit31 of an opcode token is set, the
528// opcode has an additional extended opcode token DWORD
529// directly following OpcodeToken0. Other tokens
530// expected for the opcode, such as the operand
531// token(s) always follow
532// OpcodeToken0 AND OpcodeToken1..n (extended
533// opcode tokens, if present).
534//
535// [05:00] D3D10_SB_EXTENDED_OPCODE_TYPE
536// [30:06] if([05:00] == D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS)
537// {
538// This custom opcode contains controls for SAMPLE.
539// [08:06] Ignored, 0.
540// [12:09] U texel immediate offset (4 bit 2's comp) (0 default)
541// [16:13] V texel immediate offset (4 bit 2's comp) (0 default)
542// [20:17] W texel immediate offset (4 bit 2's comp) (0 default)
543// [30:14] Ignored, 0.
544// }
545// else if( [05:00] == D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM )
546// {
547// [10:06] D3D10_SB_RESOURCE_DIMENSION
548// [22:11] When dimension is D3D11_SB_RESOURCE_DIMENSION_STRUCTURED_BUFFER this holds the buffer stride, otherwise 0
549// [30:23] Ignored, 0.
550// }
551// else if( [05:00] == D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE )
552// {
553// [09:06] D3D10_SB_RESOURCE_RETURN_TYPE for component X
554// [13:10] D3D10_SB_RESOURCE_RETURN_TYPE for component Y
555// [17:14] D3D10_SB_RESOURCE_RETURN_TYPE for component Z
556// [21:18] D3D10_SB_RESOURCE_RETURN_TYPE for component W
557// [30:22] Ignored, 0.
558// }
559// else
560// {
561// [30:04] Ignored, 0.
562// }
563// [31] 0 normally. 1 there is another extended opcode. Any number
564// of extended opcode tokens can be chained. It is possible that some extended
565// opcode tokens could include multiple DWORDS - that is defined
566// on a case by case basis.
567//
568// ----------------------------------------------------------------------------
569typedef enum D3D10_SB_EXTENDED_OPCODE_TYPE
570{
571 D3D10_SB_EXTENDED_OPCODE_EMPTY = 0,
572 D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS = 1,
573 D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM = 2,
574 D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE = 3,
575} D3D10_SB_EXTENDED_OPCODE_TYPE;
576#define D3D11_SB_MAX_SIMULTANEOUS_EXTENDED_OPCODES 3
577
578#define D3D10_SB_EXTENDED_OPCODE_TYPE_MASK 0x0000003f
579
580// DECODER MACRO: Given an extended opcode
581// token (OpcodeToken1), figure out what type
582// of token it is (from D3D10_SB_EXTENDED_OPCODE_TYPE enum)
583// to be able to interpret the rest of the token's contents.
584#define DECODE_D3D10_SB_EXTENDED_OPCODE_TYPE(OpcodeToken1) ((D3D10_SB_EXTENDED_OPCODE_TYPE)((OpcodeToken1)&D3D10_SB_EXTENDED_OPCODE_TYPE_MASK))
585
586// ENCODER MACRO: Store extended opcode token
587// type in OpcodeToken1.
588#define ENCODE_D3D10_SB_EXTENDED_OPCODE_TYPE(ExtOpcodeType) ((ExtOpcodeType)&D3D10_SB_EXTENDED_OPCODE_TYPE_MASK)
589
590typedef enum D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD
591{
592 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_U = 0,
593 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_V = 1,
594 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_W = 2,
595} D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD;
596#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD_MASK (3)
597#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord) (9+4*((Coord)&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD_MASK))
598#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord) (0x0000000f<<D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))
599
600// DECODER MACRO: Given an extended opcode token
601// (OpcodeToken1), and extended token type ==
602// D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS, determine the immediate
603// texel address offset for u/v/w (D3D10_SB_ADDRESS_OFFSET_COORD)
604// This macro returns a (signed) integer, by sign extending the
605// decoded 4 bit 2's complement immediate value.
606#define DECODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET(Coord,OpcodeToken1) ((((OpcodeToken1)&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord))>>(D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))))
607
608// ENCODER MACRO: Store the immediate texel address offset
609// for U or V or W Coord (D3D10_SB_ADDRESS_OFFSET_COORD) in an extended
610// opcode token (OpcodeToken1) that has extended opcode
611// type == D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS (opcode type encoded separately)
612// A 2's complement number is expected as input, from which the LSB 4 bits are extracted.
613#define ENCODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET(Coord,ImmediateOffset) (((ImmediateOffset)<<D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord))
614
615#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK 0x000007C0
616#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT 6
617
618// DECODER MACRO: Given an extended resource declaration token,
619// (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM), determine the resource dimension
620// (D3D10_SB_RESOURCE_DIMENSION enum)
621#define DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION(OpcodeTokenN) ((D3D10_SB_RESOURCE_DIMENSION)(((OpcodeTokenN)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK)>>D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT))
622
623// ENCODER MACRO: Store resource dimension
624// (D3D10_SB_RESOURCE_DIMENSION enum) into a
625// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM)
626#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION(ResourceDim) (((ResourceDim)<<D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK)
627
628#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK 0x007FF800
629#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT 11
630
631// DECODER MACRO: Given an extended resource declaration token for a structured buffer,
632// (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM), determine the structure stride
633// (12-bit unsigned integer)
634#define DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(OpcodeTokenN) (((OpcodeTokenN)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK)>>D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT)
635
636// ENCODER MACRO: Store resource dimension structure stride
637// (12-bit unsigned integer) into a
638// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM)
639#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(Stride) (((Stride)<<D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK)
640
641#define D3D10_SB_RESOURCE_RETURN_TYPE_MASK 0x0000000f
642#define D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS 0x00000004
643#define D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT 6
644
645// DECODER MACRO: Get the resource return type for component (0-3) from
646// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE)
647#define DECODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE(OpcodeTokenN, Component) \
648 ((D3D10_SB_RESOURCE_RETURN_TYPE)(((OpcodeTokenN) >> \
649 (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS + D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT))&D3D10_SB_RESOURCE_RETURN_TYPE_MASK))
650
651// ENCODER MACRO: Generate a resource return type for a component in an extended
652// resource delcaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE)
653#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE(ReturnType, Component) \
654 (((ReturnType)&D3D10_SB_RESOURCE_RETURN_TYPE_MASK) << (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS + D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT))
655
656// ----------------------------------------------------------------------------
657// Custom-Data Block Format
658//
659// DWORD 0 (CustomDataDescTok):
660// [10:00] == D3D10_SB_OPCODE_CUSTOMDATA
661// [31:11] == D3D10_SB_CUSTOMDATA_CLASS
662//
663// DWORD 1:
664// 32-bit unsigned integer count of number
665// of DWORDs in custom-data block,
666// including DWORD 0 and DWORD 1.
667// So the minimum value is 0x00000002,
668// meaning empty custom-data.
669//
670// Layout of custom-data contents, for the various meta-data classes,
671// not defined in this file.
672//
673// ----------------------------------------------------------------------------
674
675typedef enum D3D10_SB_CUSTOMDATA_CLASS
676{
677 D3D10_SB_CUSTOMDATA_COMMENT = 0,
678 D3D10_SB_CUSTOMDATA_DEBUGINFO,
679 D3D10_SB_CUSTOMDATA_OPAQUE,
680 D3D10_SB_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER,
681 D3D11_SB_CUSTOMDATA_SHADER_MESSAGE,
682 D3D11_SB_CUSTOMDATA_SHADER_CLIP_PLANE_CONSTANT_MAPPINGS_FOR_DX9,
683} D3D10_SB_CUSTOMDATA_CLASS;
684
685#define D3D10_SB_CUSTOMDATA_CLASS_MASK 0xfffff800
686#define D3D10_SB_CUSTOMDATA_CLASS_SHIFT 11
687// DECODER MACRO: Find out what class of custom-data is present.
688// The contents of the custom-data block are defined
689// for each class of custom-data.
690#define DECODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataDescTok) ((D3D10_SB_CUSTOMDATA_CLASS)(((CustomDataDescTok)&D3D10_SB_CUSTOMDATA_CLASS_MASK)>>D3D10_SB_CUSTOMDATA_CLASS_SHIFT))
691// ENCODER MACRO: Create complete CustomDataDescTok
692#define ENCODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataClass) (ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_SB_OPCODE_CUSTOMDATA)|(((CustomDataClass)<<D3D10_SB_CUSTOMDATA_CLASS_SHIFT)&D3D10_SB_CUSTOMDATA_CLASS_MASK))
693
694// ----------------------------------------------------------------------------
695// Instruction Operand Format (OperandToken0)
696//
697// [01:00] D3D10_SB_OPERAND_NUM_COMPONENTS
698// [11:02] Component Selection
699// if([01:00] == D3D10_SB_OPERAND_0_COMPONENT)
700// [11:02] = Ignored, 0
701// else if([01:00] == D3D10_SB_OPERAND_1_COMPONENT
702// [11:02] = Ignored, 0
703// else if([01:00] == D3D10_SB_OPERAND_4_COMPONENT
704// {
705// [03:02] = D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
706// if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE)
707// {
708// [07:04] = D3D10_SB_OPERAND_4_COMPONENT_MASK
709// [11:08] = Ignored, 0
710// }
711// else if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE)
712// {
713// [11:04] = D3D10_SB_4_COMPONENT_SWIZZLE
714// }
715// else if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE)
716// {
717// [05:04] = D3D10_SB_4_COMPONENT_NAME
718// [11:06] = Ignored, 0
719// }
720// }
721// else if([01:00] == D3D10_SB_OPERAND_N_COMPONENT)
722// {
723// Currently not defined.
724// }
725// [19:12] D3D10_SB_OPERAND_TYPE
726// [21:20] D3D10_SB_OPERAND_INDEX_DIMENSION:
727// Number of dimensions in the register
728// file (NOT the # of dimensions in the
729// individual register or memory
730// resource being referenced).
731// [24:22] if( [21:20] >= D3D10_SB_OPERAND_INDEX_1D )
732// D3D10_SB_OPERAND_INDEX_REPRESENTATION for first operand index
733// else
734// Ignored, 0
735// [27:25] if( [21:20] >= D3D10_SB_OPERAND_INDEX_2D )
736// D3D10_SB_OPERAND_INDEX_REPRESENTATION for second operand index
737// else
738// Ignored, 0
739// [30:28] if( [21:20] == D3D10_SB_OPERAND_INDEX_3D )
740// D3D10_SB_OPERAND_INDEX_REPRESENTATION for third operand index
741// else
742// Ignored, 0
743// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
744// contains extended operand description.
745//
746// ----------------------------------------------------------------------------
747
748// Number of components in data vector referred to by operand.
749typedef enum D3D10_SB_OPERAND_NUM_COMPONENTS
750{
751 D3D10_SB_OPERAND_0_COMPONENT = 0,
752 D3D10_SB_OPERAND_1_COMPONENT = 1,
753 D3D10_SB_OPERAND_4_COMPONENT = 2,
754 D3D10_SB_OPERAND_N_COMPONENT = 3 // unused for now
755} D3D10_SB_OPERAND_NUM_COMPONENTS;
756#define D3D10_SB_OPERAND_NUM_COMPONENTS_MASK 0x00000003
757
758// DECODER MACRO: Extract from OperandToken0 how many components
759// the data vector referred to by the operand contains.
760// (D3D10_SB_OPERAND_NUM_COMPONENTS enum)
761#define DECODE_D3D10_SB_OPERAND_NUM_COMPONENTS(OperandToken0) ((D3D10_SB_OPERAND_NUM_COMPONENTS)((OperandToken0)&D3D10_SB_OPERAND_NUM_COMPONENTS_MASK))
762
763// ENCODER MACRO: Define in OperandToken0 how many components
764// the data vector referred to by the operand contains.
765// (D3D10_SB_OPERAND_NUM_COMPONENTS enum).
766#define ENCODE_D3D10_SB_OPERAND_NUM_COMPONENTS(NumComp) ((NumComp)&D3D10_SB_OPERAND_NUM_COMPONENTS_MASK)
767
768typedef enum D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
769{
770 D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE = 0, // mask 4 components
771 D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE = 1, // swizzle 4 components
772 D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE = 2, // select 1 of 4 components
773} D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE;
774
775#define D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK 0x0000000c
776#define D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT 2
777
778// DECODER MACRO: For an operand representing 4component data,
779// extract from OperandToken0 the method for selecting data from
780// the 4 components (D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE).
781#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE(OperandToken0) ((D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE)(((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK)>>D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT))
782
783// ENCODER MACRO: For an operand representing 4component data,
784// encode in OperandToken0 a value from D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
785#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE(SelectionMode) (((SelectionMode)<<D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT)&D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK)
786
787typedef enum D3D10_SB_4_COMPONENT_NAME
788{
789 D3D10_SB_4_COMPONENT_X = 0,
790 D3D10_SB_4_COMPONENT_Y = 1,
791 D3D10_SB_4_COMPONENT_Z = 2,
792 D3D10_SB_4_COMPONENT_W = 3,
793 D3D10_SB_4_COMPONENT_R = 0,
794 D3D10_SB_4_COMPONENT_G = 1,
795 D3D10_SB_4_COMPONENT_B = 2,
796 D3D10_SB_4_COMPONENT_A = 3
797} D3D10_SB_4_COMPONENT_NAME;
798#define D3D10_SB_4_COMPONENT_NAME_MASK 3
799
800// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE:
801
802#define D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK 0x000000f0
803#define D3D10_SB_OPERAND_4_COMPONENT_MASK_SHIFT 4
804#define D3D10_SB_OPERAND_4_COMPONENT_MASK_X 0x00000010
805#define D3D10_SB_OPERAND_4_COMPONENT_MASK_Y 0x00000020
806#define D3D10_SB_OPERAND_4_COMPONENT_MASK_Z 0x00000040
807#define D3D10_SB_OPERAND_4_COMPONENT_MASK_W 0x00000080
808#define D3D10_SB_OPERAND_4_COMPONENT_MASK_R D3D10_SB_OPERAND_4_COMPONENT_MASK_X
809#define D3D10_SB_OPERAND_4_COMPONENT_MASK_G D3D10_SB_OPERAND_4_COMPONENT_MASK_Y
810#define D3D10_SB_OPERAND_4_COMPONENT_MASK_B D3D10_SB_OPERAND_4_COMPONENT_MASK_Z
811#define D3D10_SB_OPERAND_4_COMPONENT_MASK_A D3D10_SB_OPERAND_4_COMPONENT_MASK_W
812#define D3D10_SB_OPERAND_4_COMPONENT_MASK_ALL D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK
813
814// DECODER MACRO: When 4 component selection mode is
815// D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE, this macro
816// extracts from OperandToken0 the 4 component (xyzw) mask,
817// as a field of D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] flags.
818// Alternatively, the D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] masks
819// can be tested on OperandToken0 directly, without this macro.
820#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(OperandToken0) ((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
821
822// ENCODER MACRO: Given a set of
823// D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] values
824// or'd together, encode them in OperandToken0.
825#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentMask) ((ComponentMask)&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
826
827// ENCODER/DECODER MACRO: Given a D3D10_SB_4_COMPONENT_NAME,
828// generate the 4-component mask for it.
829// This can be used in loops that build masks or read masks.
830// Alternatively, the D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] masks
831// can be used directly, without this macro.
832#define D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentName) ((1<<(D3D10_SB_OPERAND_4_COMPONENT_MASK_SHIFT+ComponentName))&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
833
834// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE:
835
836#define D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MASK 0x00000ff0
837#define D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT 4
838
839// DECODER MACRO: When 4 component selection mode is
840// D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE, this macro
841// extracts from OperandToken0 the 4 component swizzle,
842// as a field of D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] flags.
843#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(OperandToken0) ((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MASK)
844
845// DECODER MACRO: Pass a D3D10_SB_4_COMPONENT_NAME as "DestComp" in following
846// macro to extract, from OperandToken0 or from a decoded swizzle,
847// the swizzle source component (D3D10_SB_4_COMPONENT_NAME enum):
848#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SOURCE(OperandToken0,DestComp) ((D3D10_SB_4_COMPONENT_NAME)(((OperandToken0)>>(D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT+2*((DestComp)&D3D10_SB_4_COMPONENT_NAME_MASK)))&D3D10_SB_4_COMPONENT_NAME_MASK))
849
850// ENCODER MACRO: Generate a 4 component swizzle given
851// 4 D3D10_SB_4_COMPONENT_NAME source values for dest
852// components x, y, z, w respectively.
853#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(XSrc,YSrc,ZSrc,WSrc) ((((XSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)| \
854 (((YSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<2)| \
855 (((ZSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<4)| \
856 (((WSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<6) \
857 )<<D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT)
858
859// ENCODER/DECODER MACROS: Various common swizzle patterns
860// (noswizzle and replicate of each channels)
861#define D3D10_SB_OPERAND_4_COMPONENT_NOSWIZZLE ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_X,\
862 D3D10_SB_4_COMPONENT_Y,\
863 D3D10_SB_4_COMPONENT_Z,\
864 D3D10_SB_4_COMPONENT_W)
865
866#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_X,\
867 D3D10_SB_4_COMPONENT_X,\
868 D3D10_SB_4_COMPONENT_X,\
869 D3D10_SB_4_COMPONENT_X)
870
871#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_Y,\
872 D3D10_SB_4_COMPONENT_Y,\
873 D3D10_SB_4_COMPONENT_Y,\
874 D3D10_SB_4_COMPONENT_Y)
875
876#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_Z,\
877 D3D10_SB_4_COMPONENT_Z,\
878 D3D10_SB_4_COMPONENT_Z,\
879 D3D10_SB_4_COMPONENT_Z)
880
881#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_W,\
882 D3D10_SB_4_COMPONENT_W,\
883 D3D10_SB_4_COMPONENT_W,\
884 D3D10_SB_4_COMPONENT_W)
885
886#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATERED D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX
887#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEGREEN D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY
888#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEBLUE D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ
889#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEALPHA D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW
890
891// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE:
892#define D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK 0x00000030
893#define D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT 4
894
895// DECODER MACRO: When 4 component selection mode is
896// D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE, this macro
897// extracts from OperandToken0 a D3D10_SB_4_COMPONENT_NAME
898// which picks one of the 4 components.
899#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1(OperandToken0) ((D3D10_SB_4_COMPONENT_NAME)(((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK)>>D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT))
900
901// ENCODER MACRO: Given a D3D10_SB_4_COMPONENT_NAME selecting
902// a single component for D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE,
903// encode it into OperandToken0
904#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1(SelectedComp) (((SelectedComp)<<D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT)&D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK)
905
906// MACROS FOR DETERMINING OPERAND TYPE:
907
908typedef enum D3D10_SB_OPERAND_TYPE
909{
910 D3D10_SB_OPERAND_TYPE_TEMP = 0, // Temporary Register File
911 D3D10_SB_OPERAND_TYPE_INPUT = 1, // General Input Register File
912 D3D10_SB_OPERAND_TYPE_OUTPUT = 2, // General Output Register File
913 D3D10_SB_OPERAND_TYPE_INDEXABLE_TEMP = 3, // Temporary Register File (indexable)
914 D3D10_SB_OPERAND_TYPE_IMMEDIATE32 = 4, // 32bit/component immediate value(s)
915 // If for example, operand token bits
916 // [01:00]==D3D10_SB_OPERAND_4_COMPONENT,
917 // this means that the operand type:
918 // D3D10_SB_OPERAND_TYPE_IMMEDIATE32
919 // results in 4 additional 32bit
920 // DWORDS present for the operand.
921 D3D10_SB_OPERAND_TYPE_IMMEDIATE64 = 5, // 64bit/comp.imm.val(s)HI:LO
922 D3D10_SB_OPERAND_TYPE_SAMPLER = 6, // Reference to sampler state
923 D3D10_SB_OPERAND_TYPE_RESOURCE = 7, // Reference to memory resource (e.g. texture)
924 D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER= 8, // Reference to constant buffer
925 D3D10_SB_OPERAND_TYPE_IMMEDIATE_CONSTANT_BUFFER= 9, // Reference to immediate constant buffer
926 D3D10_SB_OPERAND_TYPE_LABEL = 10, // Label
927 D3D10_SB_OPERAND_TYPE_INPUT_PRIMITIVEID = 11, // Input primitive ID
928 D3D10_SB_OPERAND_TYPE_OUTPUT_DEPTH = 12, // Output Depth
929 D3D10_SB_OPERAND_TYPE_NULL = 13, // Null register, used to discard results of operations
930 // Below Are operands new in DX 10.1
931 D3D10_SB_OPERAND_TYPE_RASTERIZER = 14, // DX10.1 Rasterizer register, used to denote the depth/stencil and render target resources
932 D3D10_SB_OPERAND_TYPE_OUTPUT_COVERAGE_MASK = 15, // DX10.1 PS output MSAA coverage mask (scalar)
933 // Below Are operands new in DX 11
934 D3D11_SB_OPERAND_TYPE_STREAM = 16, // Reference to GS stream output resource
935 D3D11_SB_OPERAND_TYPE_FUNCTION_BODY = 17, // Reference to a function definition
936 D3D11_SB_OPERAND_TYPE_FUNCTION_TABLE = 18, // Reference to a set of functions used by a class
937 D3D11_SB_OPERAND_TYPE_INTERFACE = 19, // Reference to an interface
938 D3D11_SB_OPERAND_TYPE_FUNCTION_INPUT = 20, // Reference to an input parameter to a function
939 D3D11_SB_OPERAND_TYPE_FUNCTION_OUTPUT = 21, // Reference to an output parameter to a function
940 D3D11_SB_OPERAND_TYPE_OUTPUT_CONTROL_POINT_ID = 22, // HS Control Point phase input saying which output control point ID this is
941 D3D11_SB_OPERAND_TYPE_INPUT_FORK_INSTANCE_ID = 23, // HS Fork Phase input instance ID
942 D3D11_SB_OPERAND_TYPE_INPUT_JOIN_INSTANCE_ID = 24, // HS Join Phase input instance ID
943 D3D11_SB_OPERAND_TYPE_INPUT_CONTROL_POINT = 25, // HS Fork+Join, DS phase input control points (array of them)
944 D3D11_SB_OPERAND_TYPE_OUTPUT_CONTROL_POINT = 26, // HS Fork+Join phase output control points (array of them)
945 D3D11_SB_OPERAND_TYPE_INPUT_PATCH_CONSTANT = 27, // DS+HSJoin Input Patch Constants (array of them)
946 D3D11_SB_OPERAND_TYPE_INPUT_DOMAIN_POINT = 28, // DS Input Domain point
947 D3D11_SB_OPERAND_TYPE_THIS_POINTER = 29, // Reference to an interface this pointer
948 D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW = 30, // Reference to UAV u#
949 D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY = 31, // Reference to Thread Group Shared Memory g#
950 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID = 32, // Compute Shader Thread ID
951 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_GROUP_ID = 33, // Compute Shader Thread Group ID
952 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP = 34, // Compute Shader Thread ID In Thread Group
953 D3D11_SB_OPERAND_TYPE_INPUT_COVERAGE_MASK = 35, // Pixel shader coverage mask input
954 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP_FLATTENED = 36, // Compute Shader Thread ID In Group Flattened to a 1D value.
955 D3D11_SB_OPERAND_TYPE_INPUT_GS_INSTANCE_ID = 37, // Input GS instance ID
956 D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL = 38, // Output Depth, forced to be greater than or equal than current depth
957 D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL = 39, // Output Depth, forced to be less than or equal to current depth
958 D3D11_SB_OPERAND_TYPE_CYCLE_COUNTER = 40, // Cycle counter
959 D3D11_SB_OPERAND_TYPE_OUTPUT_STENCIL_REF = 41, // DX11 PS output stencil reference (scalar)
960 D3D11_SB_OPERAND_TYPE_INNER_COVERAGE = 42, // DX11 PS input inner coverage (scalar)
961} D3D10_SB_OPERAND_TYPE;
962
963#define D3D10_SB_OPERAND_TYPE_MASK 0x000ff000
964#define D3D10_SB_OPERAND_TYPE_SHIFT 12
965
966// DECODER MACRO: Determine operand type from OperandToken0.
967#define DECODE_D3D10_SB_OPERAND_TYPE(OperandToken0) ((D3D10_SB_OPERAND_TYPE)(((OperandToken0)&D3D10_SB_OPERAND_TYPE_MASK)>>D3D10_SB_OPERAND_TYPE_SHIFT))
968
969// ENCODER MACRO: Store operand type in OperandToken0.
970#define ENCODE_D3D10_SB_OPERAND_TYPE(OperandType) (((OperandType)<<D3D10_SB_OPERAND_TYPE_SHIFT)&D3D10_SB_OPERAND_TYPE_MASK)
971
972typedef enum D3D10_SB_OPERAND_INDEX_DIMENSION
973{
974 D3D10_SB_OPERAND_INDEX_0D = 0, // e.g. Position
975 D3D10_SB_OPERAND_INDEX_1D = 1, // Most common. e.g. Temp registers.
976 D3D10_SB_OPERAND_INDEX_2D = 2, // e.g. Geometry Program Input registers.
977 D3D10_SB_OPERAND_INDEX_3D = 3, // 3D rarely if ever used.
978} D3D10_SB_OPERAND_INDEX_DIMENSION;
979#define D3D10_SB_OPERAND_INDEX_DIMENSION_MASK 0x00300000
980#define D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT 20
981
982// DECODER MACRO: Determine operand index dimension from OperandToken0.
983#define DECODE_D3D10_SB_OPERAND_INDEX_DIMENSION(OperandToken0) ((D3D10_SB_OPERAND_INDEX_DIMENSION)(((OperandToken0)&D3D10_SB_OPERAND_INDEX_DIMENSION_MASK)>>D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT))
984
985// ENCODER MACRO: Store operand index dimension
986// (D3D10_SB_OPERAND_INDEX_DIMENSION enum) in OperandToken0.
987#define ENCODE_D3D10_SB_OPERAND_INDEX_DIMENSION(OperandIndexDim) (((OperandIndexDim)<<D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT)&D3D10_SB_OPERAND_INDEX_DIMENSION_MASK)
988
989typedef enum D3D10_SB_OPERAND_INDEX_REPRESENTATION
990{
991 D3D10_SB_OPERAND_INDEX_IMMEDIATE32 = 0, // Extra DWORD
992 D3D10_SB_OPERAND_INDEX_IMMEDIATE64 = 1, // 2 Extra DWORDs
993 // (HI32:LO32)
994 D3D10_SB_OPERAND_INDEX_RELATIVE = 2, // Extra operand
995 D3D10_SB_OPERAND_INDEX_IMMEDIATE32_PLUS_RELATIVE = 3, // Extra DWORD followed by
996 // extra operand
997 D3D10_SB_OPERAND_INDEX_IMMEDIATE64_PLUS_RELATIVE = 4, // 2 Extra DWORDS
998 // (HI32:LO32) followed
999 // by extra operand
1000} D3D10_SB_OPERAND_INDEX_REPRESENTATION;
1001#define D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim) (22+3*((Dim)&3))
1002#define D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim) (0x3<<D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim))
1003
1004// DECODER MACRO: Determine from OperandToken0 what representation
1005// an operand index is provided as (D3D10_SB_OPERAND_INDEX_REPRESENTATION enum),
1006// for index dimension [0], [1] or [2], depending on D3D10_SB_OPERAND_INDEX_DIMENSION.
1007#define DECODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION(Dim,OperandToken0) ((D3D10_SB_OPERAND_INDEX_REPRESENTATION)(((OperandToken0)&D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim))>>D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim)))
1008
1009// ENCODER MACRO: Store in OperandToken0 what representation
1010// an operand index is provided as (D3D10_SB_OPERAND_INDEX_REPRESENTATION enum),
1011// for index dimension [0], [1] or [2], depending on D3D10_SB_OPERAND_INDEX_DIMENSION.
1012#define ENCODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION(Dim,IndexRepresentation) (((IndexRepresentation)<<D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim))&D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim))
1013
1014#define D3D10_SB_OPERAND_EXTENDED_MASK 0x80000000
1015#define D3D10_SB_OPERAND_EXTENDED_SHIFT 31
1016
1017// DECODER MACRO: Determine if the operand is extended
1018// by an additional opcode token.
1019#define DECODE_IS_D3D10_SB_OPERAND_EXTENDED(OperandToken0) (((OperandToken0)&D3D10_SB_OPERAND_EXTENDED_MASK)>>D3D10_SB_OPERAND_EXTENDED_SHIFT)
1020
1021// ENCODER MACRO: Store in OperandToken0 whether the operand is extended
1022// by an additional operand token.
1023#define ENCODE_D3D10_SB_OPERAND_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPERAND_EXTENDED_MASK:0)
1024
1025// ----------------------------------------------------------------------------
1026// Extended Instruction Operand Format (OperandToken1)
1027//
1028// If bit31 of an operand token is set, the
1029// operand has additional data in a second DWORD
1030// directly following OperandToken0. Other tokens
1031// expected for the operand, such as immmediate
1032// values or relative address operands (full
1033// operands in themselves) always follow
1034// OperandToken0 AND OperandToken1..n (extended
1035// operand tokens, if present).
1036//
1037// [05:00] D3D10_SB_EXTENDED_OPERAND_TYPE
1038// [16:06] if([05:00] == D3D10_SB_EXTENDED_OPERAND_MODIFIER)
1039// {
1040// [13:06] D3D10_SB_OPERAND_MODIFIER
1041// [16:14] Min Precision: D3D11_SB_OPERAND_MIN_PRECISION
1042// [17:17] Non-uniform: D3D12_SB_OPERAND_NON_UNIFORM
1043// }
1044// else
1045// {
1046// [17:06] Ignored, 0.
1047// }
1048// [30:18] Ignored, 0.
1049// [31] 0 normally. 1 if second order extended operand definition,
1050// meaning next DWORD contains yet ANOTHER extended operand
1051// description. Currently no second order extensions defined.
1052// This would be useful if a particular extended operand does
1053// not have enough space to store the required information in
1054// a single token and so is extended further.
1055//
1056// ----------------------------------------------------------------------------
1057
1058typedef enum D3D10_SB_EXTENDED_OPERAND_TYPE
1059{
1060 D3D10_SB_EXTENDED_OPERAND_EMPTY = 0, // Might be used if this
1061 // enum is full and
1062 // further extended opcode
1063 // is needed.
1064 D3D10_SB_EXTENDED_OPERAND_MODIFIER = 1,
1065} D3D10_SB_EXTENDED_OPERAND_TYPE;
1066#define D3D10_SB_EXTENDED_OPERAND_TYPE_MASK 0x0000003f
1067
1068// DECODER MACRO: Given an extended operand
1069// token (OperandToken1), figure out what type
1070// of token it is (from D3D10_SB_EXTENDED_OPERAND_TYPE enum)
1071// to be able to interpret the rest of the token's contents.
1072#define DECODE_D3D10_SB_EXTENDED_OPERAND_TYPE(OperandToken1) ((D3D10_SB_EXTENDED_OPERAND_TYPE)((OperandToken1)&D3D10_SB_EXTENDED_OPERAND_TYPE_MASK))
1073
1074// ENCODER MACRO: Store extended operand token
1075// type in OperandToken1.
1076#define ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE(ExtOperandType) ((ExtOperandType)&D3D10_SB_EXTENDED_OPERAND_TYPE_MASK)
1077
1078typedef enum D3D10_SB_OPERAND_MODIFIER
1079{
1080 D3D10_SB_OPERAND_MODIFIER_NONE = 0, // Nop. This is the implied
1081 // default if the extended
1082 // operand is not present for
1083 // an operand for which source
1084 // modifiers are meaningful
1085 D3D10_SB_OPERAND_MODIFIER_NEG = 1, // Negate
1086 D3D10_SB_OPERAND_MODIFIER_ABS = 2, // Absolute value, abs()
1087 D3D10_SB_OPERAND_MODIFIER_ABSNEG = 3, // -abs()
1088} D3D10_SB_OPERAND_MODIFIER;
1089#define D3D10_SB_OPERAND_MODIFIER_MASK 0x00003fc0
1090#define D3D10_SB_OPERAND_MODIFIER_SHIFT 6
1091
1092// DECODER MACRO: Given a D3D10_SB_EXTENDED_OPERAND_MODIFIER
1093// extended token (OperandToken1), determine the source modifier
1094// (D3D10_SB_OPERAND_MODIFIER enum)
1095#define DECODE_D3D10_SB_OPERAND_MODIFIER(OperandToken1) ((D3D10_SB_OPERAND_MODIFIER)(((OperandToken1)&D3D10_SB_OPERAND_MODIFIER_MASK)>>D3D10_SB_OPERAND_MODIFIER_SHIFT))
1096
1097// ENCODER MACRO: Generate a complete source modifier extended token
1098// (OperandToken1), given D3D10_SB_OPERAND_MODIFIER enum (the
1099// ext. operand type is also set to D3D10_SB_EXTENDED_OPERAND_MODIFIER).
1100#define ENCODE_D3D10_SB_EXTENDED_OPERAND_MODIFIER(SourceMod) ((((SourceMod)<<D3D10_SB_OPERAND_MODIFIER_SHIFT)&D3D10_SB_OPERAND_MODIFIER_MASK)| \
1101 ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE(D3D10_SB_EXTENDED_OPERAND_MODIFIER) | \
1102 ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(0))
1103
1104// Min precision specifier for source/dest operands. This
1105// fits in the extended operand token field. Implementations are free to
1106// execute at higher precision than the min - details spec'ed elsewhere.
1107// This is part of the opcode specific control range.
1108typedef enum D3D11_SB_OPERAND_MIN_PRECISION
1109{
1110 D3D11_SB_OPERAND_MIN_PRECISION_DEFAULT = 0, // Default precision
1111 // for the shader model
1112 D3D11_SB_OPERAND_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
1113 D3D11_SB_OPERAND_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
1114 D3D11_SB_OPERAND_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
1115 D3D11_SB_OPERAND_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
1116} D3D11_SB_OPERAND_MIN_PRECISION;
1117#define D3D11_SB_OPERAND_MIN_PRECISION_MASK 0x0001C000
1118#define D3D11_SB_OPERAND_MIN_PRECISION_SHIFT 14
1119
1120// DECODER MACRO: For an OperandToken1 that can specify
1121// a minimum precision for execution, find out what it is.
1122#define DECODE_D3D11_SB_OPERAND_MIN_PRECISION(OperandToken1) ((D3D11_SB_OPERAND_MIN_PRECISION)(((OperandToken1)& D3D11_SB_OPERAND_MIN_PRECISION_MASK)>> D3D11_SB_OPERAND_MIN_PRECISION_SHIFT))
1123
1124// ENCODER MACRO: Encode minimum precision for execution
1125// into the extended operand token, OperandToken1
1126#define ENCODE_D3D11_SB_OPERAND_MIN_PRECISION(MinPrecision) (((MinPrecision)<< D3D11_SB_OPERAND_MIN_PRECISION_SHIFT)& D3D11_SB_OPERAND_MIN_PRECISION_MASK)
1127
1128
1129// Non-uniform extended operand modifier.
1130#define D3D12_SB_OPERAND_NON_UNIFORM_MASK 0x00020000
1131#define D3D12_SB_OPERAND_NON_UNIFORM_SHIFT 17
1132
1133// DECODER MACRO: For an OperandToken1 that can specify a non-uniform operand
1134#define DECODE_D3D12_SB_OPERAND_NON_UNIFORM(OperandToken1) (((OperandToken1)& D3D12_SB_OPERAND_NON_UNIFORM_MASK)>> D3D12_SB_OPERAND_NON_UNIFORM_SHIFT)
1135
1136// ENCODER MACRO: Encode non-uniform state into the extended operand token, OperandToken1
1137#define ENCODE_D3D12_SB_OPERAND_NON_UNIFORM(NonUniform) (((NonUniform)<< D3D12_SB_OPERAND_NON_UNIFORM_SHIFT)& D3D12_SB_OPERAND_NON_UNIFORM_MASK)
1138
1139
1140#define D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK 0x80000000
1141#define D3D10_SB_OPERAND_DOUBLE_EXTENDED_SHIFT 31
1142// DECODER MACRO: Determine if an extended operand token
1143// (OperandToken1) is further extended by yet another token
1144// (OperandToken2). Currently there are no secondary
1145// extended operand tokens.
1146#define DECODE_IS_D3D10_SB_OPERAND_DOUBLE_EXTENDED(OperandToken1) (((OperandToken1)&D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK)>>D3D10_SB_OPERAND_DOUBLE_EXTENDED_SHIFT)
1147
1148// ENCODER MACRO: Store in OperandToken1 whether the operand is extended
1149// by an additional operand token. Currently there are no secondary
1150// extended operand tokens.
1151#define ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK:0)
1152
1153// ----------------------------------------------------------------------------
1154// Name Token (NameToken) (used in declaration statements)
1155//
1156// [15:00] D3D10_SB_NAME enumeration
1157// [31:16] Reserved, 0
1158//
1159// ----------------------------------------------------------------------------
1160#define D3D10_SB_NAME_MASK 0x0000ffff
1161
1162// DECODER MACRO: Get the name from NameToken
1163#define DECODE_D3D10_SB_NAME(NameToken) ((D3D10_SB_NAME)((NameToken)&D3D10_SB_NAME_MASK))
1164
1165// ENCODER MACRO: Generate a complete NameToken given a D3D10_SB_NAME
1166#define ENCODE_D3D10_SB_NAME(Name) ((Name)&D3D10_SB_NAME_MASK)
1167
1168//---------------------------------------------------------------------
1169// Declaration Statements
1170//
1171// Declarations start with a standard opcode token,
1172// having opcode type being D3D10_SB_OPCODE_DCL*.
1173// Each particular declaration type has custom
1174// operand token(s), described below.
1175//---------------------------------------------------------------------
1176
1177// ----------------------------------------------------------------------------
1178// Global Flags Declaration
1179//
1180// OpcodeToken0:
1181//
1182// [10:00] D3D10_SB_OPCODE_DCL_GLOBAL_FLAGS
1183// [11:11] Refactoring allowed if bit set.
1184// [12:12] Enable double precision float ops.
1185// [13:13] Force early depth-stencil test.
1186// [14:14] Enable RAW and structured buffers in non-CS 4.x shaders.
1187// [15:15] Skip optimizations of shader IL when translating to native code
1188// [16:16] Enable minimum-precision data types
1189// [17:17] Enable 11.1 double-precision floating-point instruction extensions
1190// [18:18] Enable 11.1 non-double instruction extensions
1191// [23:19] Reserved for future flags.
1192// [30:24] Instruction length in DWORDs including the opcode token. == 1
1193// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1194// contains extended operand description. This dcl is currently not
1195// extended.
1196//
1197// OpcodeToken0 is followed by no operands.
1198//
1199// ----------------------------------------------------------------------------
1200#define D3D10_SB_GLOBAL_FLAG_REFACTORING_ALLOWED (1<<11)
1201#define D3D11_SB_GLOBAL_FLAG_ENABLE_DOUBLE_PRECISION_FLOAT_OPS (1<<12)
1202#define D3D11_SB_GLOBAL_FLAG_FORCE_EARLY_DEPTH_STENCIL (1<<13)
1203#define D3D11_SB_GLOBAL_FLAG_ENABLE_RAW_AND_STRUCTURED_BUFFERS (1<<14)
1204#define D3D11_1_SB_GLOBAL_FLAG_SKIP_OPTIMIZATION (1<<15)
1205#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_MINIMUM_PRECISION (1<<16)
1206#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_DOUBLE_EXTENSIONS (1<<17)
1207#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_SHADER_EXTENSIONS (1<<18)
1208#define D3D12_SB_GLOBAL_FLAG_ALL_RESOURCES_BOUND (1<<19)
1209
1210#define D3D10_SB_GLOBAL_FLAGS_MASK 0x00fff800
1211
1212// DECODER MACRO: Get global flags
1213#define DECODE_D3D10_SB_GLOBAL_FLAGS(OpcodeToken0) ((OpcodeToken0)&D3D10_SB_GLOBAL_FLAGS_MASK)
1214
1215// ENCODER MACRO: Encode global flags
1216#define ENCODE_D3D10_SB_GLOBAL_FLAGS(Flags) ((Flags)&D3D10_SB_GLOBAL_FLAGS_MASK)
1217
1218// ----------------------------------------------------------------------------
1219// Resource Declaration (non multisampled)
1220//
1221// OpcodeToken0:
1222//
1223// [10:00] D3D10_SB_OPCODE_DCL_RESOURCE
1224// [15:11] D3D10_SB_RESOURCE_DIMENSION
1225// [23:16] Ignored, 0
1226// [30:24] Instruction length in DWORDs including the opcode token.
1227// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1228// contains extended operand description. This dcl is currently not
1229// extended.
1230//
1231// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
1232// (1) an operand, starting with OperandToken0, defining which
1233// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1234// (2) a Resource Return Type token (ResourceReturnTypeToken)
1235//
1236// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1237// (1) an operand, starting with OperandToken0, defining which
1238// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1239// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1240// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
1241// 1 <id>: variable ID being declared
1242// 2 <lbound>: the lower bound of the range of resources in the space
1243// 3 <ubound>: the upper bound (inclusive) of this range
1244// As opposed to when the t# is used in shader instructions, where the register
1245// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1246// dimensions are as follows: (t<id>[<idx>]):
1247// 1 <id>: variable ID being used (matches dcl)
1248// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
1249// (2) a Resource Return Type token (ResourceReturnTypeToken)
1250// (3) a DWORD indicating the space index.
1251//
1252// ----------------------------------------------------------------------------
1253#define D3D10_SB_RESOURCE_DIMENSION_MASK 0x0000F800
1254#define D3D10_SB_RESOURCE_DIMENSION_SHIFT 11
1255
1256// DECODER MACRO: Given a resource declaration token,
1257// (OpcodeToken0), determine the resource dimension
1258// (D3D10_SB_RESOURCE_DIMENSION enum)
1259#define DECODE_D3D10_SB_RESOURCE_DIMENSION(OpcodeToken0) ((D3D10_SB_RESOURCE_DIMENSION)(((OpcodeToken0)&D3D10_SB_RESOURCE_DIMENSION_MASK)>>D3D10_SB_RESOURCE_DIMENSION_SHIFT))
1260
1261// ENCODER MACRO: Store resource dimension
1262// (D3D10_SB_RESOURCE_DIMENSION enum) into a
1263// a resource declaration token (OpcodeToken0)
1264#define ENCODE_D3D10_SB_RESOURCE_DIMENSION(ResourceDim) (((ResourceDim)<<D3D10_SB_RESOURCE_DIMENSION_SHIFT)&D3D10_SB_RESOURCE_DIMENSION_MASK)
1265
1266// ----------------------------------------------------------------------------
1267// Resource Declaration (multisampled)
1268//
1269// OpcodeToken0:
1270//
1271// [10:00] D3D10_SB_OPCODE_DCL_RESOURCE (same opcode as non-multisampled case)
1272// [15:11] D3D10_SB_RESOURCE_DIMENSION (must be TEXTURE2DMS or TEXTURE2DMSARRAY)
1273// [22:16] Sample count 1...127. 0 is currently disallowed, though
1274// in future versions 0 could mean "configurable" sample count
1275// [23:23] Ignored, 0
1276// [30:24] Instruction length in DWORDs including the opcode token.
1277// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1278// contains extended operand description. This dcl is currently not
1279// extended.
1280//
1281// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
1282// (1) an operand, starting with OperandToken0, defining which
1283// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1284// (2) a Resource Return Type token (ResourceReturnTypeToken)
1285//
1286// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1287// (1) an operand, starting with OperandToken0, defining which
1288// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1289// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1290// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
1291// 1 <id>: variable ID being declared
1292// 2 <lbound>: the lower bound of the range of resources in the space
1293// 3 <ubound>: the upper bound (inclusive) of this range
1294// As opposed to when the t# is used in shader instructions, where the register
1295// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1296// dimensions are as follows: (t<id>[<idx>]):
1297// 1 <id>: variable ID being used (matches dcl)
1298// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
1299// (2) a Resource Return Type token (ResourceReturnTypeToken)
1300// (3) a DWORD indicating the space index.
1301//
1302// ----------------------------------------------------------------------------
1303
1304// use same macro for encoding/decoding resource dimension aas the non-msaa declaration
1305
1306#define D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK 0x07F0000
1307#define D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT 16
1308
1309// DECODER MACRO: Given a resource declaration token,
1310// (OpcodeToken0), determine the resource sample count (1..127)
1311#define DECODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK)>>D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT))
1312
1313// ENCODER MACRO: Store resource sample count up to 127 into a
1314// a resource declaration token (OpcodeToken0)
1315#define ENCODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(SampleCount) (((SampleCount > 127 ? 127 : SampleCount)<<D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT)&D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK)
1316
1317// ----------------------------------------------------------------------------
1318// Resource Return Type Token (ResourceReturnTypeToken) (used in resource
1319// declaration statements)
1320//
1321// [03:00] D3D10_SB_RESOURCE_RETURN_TYPE for component X
1322// [07:04] D3D10_SB_RESOURCE_RETURN_TYPE for component Y
1323// [11:08] D3D10_SB_RESOURCE_RETURN_TYPE for component Z
1324// [15:12] D3D10_SB_RESOURCE_RETURN_TYPE for component W
1325// [31:16] Reserved, 0
1326//
1327// ----------------------------------------------------------------------------
1328// DECODER MACRO: Get the resource return type for component (0-3) from
1329// ResourceReturnTypeToken
1330#define DECODE_D3D10_SB_RESOURCE_RETURN_TYPE(ResourceReturnTypeToken, Component) \
1331 ((D3D10_SB_RESOURCE_RETURN_TYPE)(((ResourceReturnTypeToken) >> \
1332 (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS))&D3D10_SB_RESOURCE_RETURN_TYPE_MASK))
1333
1334// ENCODER MACRO: Generate a resource return type for a component
1335#define ENCODE_D3D10_SB_RESOURCE_RETURN_TYPE(ReturnType, Component) \
1336 (((ReturnType)&D3D10_SB_RESOURCE_RETURN_TYPE_MASK) << (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS))
1337
1338// ----------------------------------------------------------------------------
1339// Sampler Declaration
1340//
1341// OpcodeToken0:
1342//
1343// [10:00] D3D10_SB_OPCODE_DCL_SAMPLER
1344// [14:11] D3D10_SB_SAMPLER_MODE
1345// [23:15] Ignored, 0
1346// [30:24] Instruction length in DWORDs including the opcode token.
1347// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1348// contains extended operand description. This dcl is currently not
1349// extended.
1350//
1351// OpcodeToken0 is followed by 1 operand on Shader Models 4.0 through 5.0:
1352// (1) Operand starting with OperandToken0, defining which sampler
1353// (D3D10_SB_OPERAND_TYPE_SAMPLER) register # is being declared.
1354//
1355// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
1356// (1) an operand, starting with OperandToken0, defining which
1357// s# register (D3D10_SB_OPERAND_TYPE_SAMPLER) is being declared.
1358// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1359// and the meaning of the index dimensions are as follows: (s<id>[<lbound>:<ubound>])
1360// 1 <id>: variable ID being declared
1361// 2 <lbound>: the lower bound of the range of samplers in the space
1362// 3 <ubound>: the upper bound (inclusive) of this range
1363// As opposed to when the s# is used in shader instructions, where the register
1364// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1365// dimensions are as follows: (s<id>[<idx>]):
1366// 1 <id>: variable ID being used (matches dcl)
1367// 2 <idx>: absolute index of sampler within space (may be dynamically indexed)
1368// (2) a DWORD indicating the space index.
1369//
1370// ----------------------------------------------------------------------------
1371typedef enum D3D10_SB_SAMPLER_MODE
1372{
1373 D3D10_SB_SAMPLER_MODE_DEFAULT = 0,
1374 D3D10_SB_SAMPLER_MODE_COMPARISON = 1,
1375 D3D10_SB_SAMPLER_MODE_MONO = 2,
1376} D3D10_SB_SAMPLER_MODE;
1377
1378#define D3D10_SB_SAMPLER_MODE_MASK 0x00007800
1379#define D3D10_SB_SAMPLER_MODE_SHIFT 11
1380
1381// DECODER MACRO: Find out if a Constant Buffer is going to be indexed or not
1382#define DECODE_D3D10_SB_SAMPLER_MODE(OpcodeToken0) ((D3D10_SB_SAMPLER_MODE)(((OpcodeToken0)&D3D10_SB_SAMPLER_MODE_MASK)>>D3D10_SB_SAMPLER_MODE_SHIFT))
1383
1384// ENCODER MACRO: Generate a resource return type for a component
1385#define ENCODE_D3D10_SB_SAMPLER_MODE(SamplerMode) (((SamplerMode)<<D3D10_SB_SAMPLER_MODE_SHIFT)&D3D10_SB_SAMPLER_MODE_MASK)
1386
1387// ----------------------------------------------------------------------------
1388// Input Register Declaration (see separate declarations for Pixel Shaders)
1389//
1390// OpcodeToken0:
1391//
1392// [10:00] D3D10_SB_OPCODE_DCL_INPUT
1393// [23:11] Ignored, 0
1394// [30:24] Instruction length in DWORDs including the opcode token.
1395// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1396// contains extended operand description. This dcl is currently not
1397// extended.
1398//
1399// OpcodeToken0 is followed by 1 operand:
1400// (1) Operand, starting with OperandToken0, defining which input
1401// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1402// including writemask.
1403//
1404// ----------------------------------------------------------------------------
1405
1406// ----------------------------------------------------------------------------
1407// Input Register Declaration w/System Interpreted Value
1408// (see separate declarations for Pixel Shaders)
1409//
1410// OpcodeToken0:
1411//
1412// [10:00] D3D10_SB_OPCODE_DCL_INPUT_SIV
1413// [23:11] Ignored, 0
1414// [30:24] Instruction length in DWORDs including the opcode token.
1415// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1416// contains extended operand description. This dcl is currently not
1417// extended.
1418//
1419// OpcodeToken0 is followed by 2 operands:
1420// (1) Operand, starting with OperandToken0, defining which input
1421// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1422// including writemask. For Geometry Shaders, the input is
1423// v[vertex][attribute], and this declaration is only for which register
1424// on the attribute axis is being declared. The vertex axis value must
1425// be equal to the # of vertices in the current input primitive for the GS
1426// (i.e. 6 for triangle + adjacency).
1427// (2) a System Interpreted Value Name (NameToken)
1428//
1429// ----------------------------------------------------------------------------
1430
1431// ----------------------------------------------------------------------------
1432// Input Register Declaration w/System Generated Value
1433// (available for all shaders incl. Pixel Shader, no interpolation mode needed)
1434//
1435// OpcodeToken0:
1436//
1437// [10:00] D3D10_SB_OPCODE_DCL_INPUT_SGV
1438// [23:11] Ignored, 0
1439// [30:24] Instruction length in DWORDs including the opcode token.
1440// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1441// contains extended operand description. This dcl is currently not
1442// extended.
1443//
1444// OpcodeToken0 is followed by 2 operands:
1445// (1) Operand, starting with OperandToken0, defining which input
1446// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1447// including writemask.
1448// (2) a System Generated Value Name (NameToken)
1449//
1450// ----------------------------------------------------------------------------
1451
1452// ----------------------------------------------------------------------------
1453// Pixel Shader Input Register Declaration
1454//
1455// OpcodeToken0:
1456//
1457// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS
1458// [14:11] D3D10_SB_INTERPOLATION_MODE
1459// [23:15] Ignored, 0
1460// [30:24] Instruction length in DWORDs including the opcode token.
1461// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1462// contains extended operand description. This dcl is currently not
1463// extended.
1464//
1465// OpcodeToken0 is followed by 1 operand:
1466// (1) Operand, starting with OperandToken0, defining which input
1467// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1468// including writemask.
1469//
1470// ----------------------------------------------------------------------------
1471#define D3D10_SB_INPUT_INTERPOLATION_MODE_MASK 0x00007800
1472#define D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT 11
1473
1474// DECODER MACRO: Find out interpolation mode for the input register
1475#define DECODE_D3D10_SB_INPUT_INTERPOLATION_MODE(OpcodeToken0) ((D3D10_SB_INTERPOLATION_MODE)(((OpcodeToken0)&D3D10_SB_INPUT_INTERPOLATION_MODE_MASK)>>D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT))
1476
1477// ENCODER MACRO: Encode interpolation mode for a register.
1478#define ENCODE_D3D10_SB_INPUT_INTERPOLATION_MODE(InterpolationMode) (((InterpolationMode)<<D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT)&D3D10_SB_INPUT_INTERPOLATION_MODE_MASK)
1479
1480// ----------------------------------------------------------------------------
1481// Pixel Shader Input Register Declaration w/System Interpreted Value
1482//
1483// OpcodeToken0:
1484//
1485// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS_SIV
1486// [14:11] D3D10_SB_INTERPOLATION_MODE
1487// [23:15] Ignored, 0
1488// [30:24] Instruction length in DWORDs including the opcode token.
1489// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1490// contains extended operand description. This dcl is currently not
1491// extended.
1492//
1493// OpcodeToken0 is followed by 2 operands:
1494// (1) Operand, starting with OperandToken0, defining which input
1495// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared.
1496// (2) a System Interpreted Value Name (NameToken)
1497//
1498// ----------------------------------------------------------------------------
1499
1500// ----------------------------------------------------------------------------
1501// Pixel Shader Input Register Declaration w/System Generated Value
1502//
1503// OpcodeToken0:
1504//
1505// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS_SGV
1506// [23:11] Ignored, 0
1507// [30:24] Instruction length in DWORDs including the opcode token.
1508// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1509// contains extended operand description. This dcl is currently not
1510// extended.
1511//
1512// OpcodeToken0 is followed by 2 operands:
1513// (1) Operand, starting with OperandToken0, defining which input
1514// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared.
1515// (2) a System Generated Value Name (NameToken)
1516//
1517// ----------------------------------------------------------------------------
1518
1519// ----------------------------------------------------------------------------
1520// Output Register Declaration
1521//
1522// OpcodeToken0:
1523//
1524// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT
1525// [23:11] Ignored, 0
1526// [30:24] Instruction length in DWORDs including the opcode token.
1527// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1528// contains extended operand description. This dcl is currently not
1529// extended.
1530//
1531// OpcodeToken0 is followed by 1 operand:
1532// (1) Operand, starting with OperandToken0, defining which
1533// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1534// including writemask.
1535// (in Pixel Shader, output can also be one of
1536// D3D10_SB_OPERAND_TYPE_OUTPUT_DEPTH,
1537// D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL, or
1538// D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL )
1539//
1540// ----------------------------------------------------------------------------
1541
1542// ----------------------------------------------------------------------------
1543// Output Register Declaration w/System Interpreted Value
1544//
1545// OpcodeToken0:
1546//
1547// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT_SIV
1548// [23:11] Ignored, 0
1549// [30:24] Instruction length in DWORDs including the opcode token.
1550// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1551// contains extended operand description. This dcl is currently not
1552// extended.
1553//
1554// OpcodeToken0 is followed by 2 operands:
1555// (1) an operand, starting with OperandToken0, defining which
1556// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1557// including writemask.
1558// (2) a System Interpreted Name token (NameToken)
1559//
1560// ----------------------------------------------------------------------------
1561
1562// ----------------------------------------------------------------------------
1563// Output Register Declaration w/System Generated Value
1564//
1565// OpcodeToken0:
1566//
1567// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT_SGV
1568// [23:11] Ignored, 0
1569// [30:24] Instruction length in DWORDs including the opcode token.
1570// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1571// contains extended operand description. This dcl is currently not
1572// extended.
1573//
1574// OpcodeToken0 is followed by 2 operands:
1575// (1) an operand, starting with OperandToken0, defining which
1576// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1577// including writemask.
1578// (2) a System Generated Name token (NameToken)
1579//
1580// ----------------------------------------------------------------------------
1581
1582
1583// ----------------------------------------------------------------------------
1584// Input or Output Register Indexing Range Declaration
1585//
1586// OpcodeToken0:
1587//
1588// [10:00] D3D10_SB_OPCODE_DCL_INDEX_RANGE
1589// [23:11] Ignored, 0
1590// [30:24] Instruction length in DWORDs including the opcode token.
1591// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1592// contains extended operand description. This dcl is currently not
1593// extended.
1594//
1595// OpcodeToken0 is followed by 2 operands:
1596// (1) an operand, starting with OperandToken0, defining which
1597// input (v#) or output (o#) register is having its array indexing range
1598// declared, including writemask. For Geometry Shader inputs,
1599// it is assumed that the vertex axis is always fully indexable,
1600// and 0 must be specified as the vertex# in this declaration, so that
1601// only the a range of attributes are having their index range defined.
1602//
1603// (2) a DWORD representing the count of registers starting from the one
1604// indicated in (1).
1605//
1606// ----------------------------------------------------------------------------
1607
1608// ----------------------------------------------------------------------------
1609// Temp Register Declaration r0...r(n-1)
1610//
1611// OpcodeToken0:
1612//
1613// [10:00] D3D10_SB_OPCODE_DCL_TEMPS
1614// [23:11] Ignored, 0
1615// [30:24] Instruction length in DWORDs including the opcode token.
1616// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1617// contains extended operand description. This dcl is currently not
1618// extended.
1619//
1620// OpcodeToken0 is followed by 1 operand:
1621// (1) DWORD (unsigned int) indicating how many temps are being declared.
1622// i.e. 5 means r0...r4 are declared.
1623//
1624// ----------------------------------------------------------------------------
1625
1626// ----------------------------------------------------------------------------
1627// Indexable Temp Register (x#[size]) Declaration
1628//
1629// OpcodeToken0:
1630//
1631// [10:00] D3D10_SB_OPCODE_DCL_INDEXABLE_TEMP
1632// [23:11] Ignored, 0
1633// [30:24] Instruction length in DWORDs including the opcode token.
1634// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1635// contains extended operand description. This dcl is currently not
1636// extended.
1637//
1638// OpcodeToken0 is followed by 3 DWORDs:
1639// (1) Register index (defines which x# register is declared)
1640// (2) Number of registers in this register bank
1641// (3) Number of components in the array (1-4). 1 means .x, 2 means .xy etc.
1642//
1643// ----------------------------------------------------------------------------
1644
1645// ----------------------------------------------------------------------------
1646// Constant Buffer Declaration
1647//
1648// OpcodeToken0:
1649//
1650// [10:00] D3D10_SB_OPCODE_DCL_CONSTANT_BUFFER
1651// [11] D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN
1652// [23:12] Ignored, 0
1653// [30:24] Instruction length in DWORDs including the opcode token.
1654// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1655// contains extended operand description. This dcl is currently not
1656// extended.
1657//
1658// OpcodeToken0 is followed by 1 operand on Shader Model 4.0 through 5.0:
1659// (1) Operand, starting with OperandToken0, defining which CB slot (cb#[size])
1660// is being declared. (operand type: D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER)
1661// The indexing dimension for the register must be
1662// D3D10_SB_OPERAND_INDEX_DIMENSION_2D, where the first index specifies
1663// which cb#[] is being declared, and the second (array) index specifies the size
1664// of the buffer, as a count of 32-bit*4 elements. (As opposed to when the
1665// cb#[] is used in shader instructions, and the array index represents which
1666// location in the constant buffer is being referenced.)
1667// If the size is specified as 0, the CB size is not known (any size CB
1668// can be bound to the slot).
1669//
1670// The order of constant buffer declarations in a shader indicates their
1671// relative priority from highest to lowest (hint to driver).
1672//
1673// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1674// (1) Operand, starting with OperandToken0, defining which CB range (ID and bounds)
1675// is being declared. (operand type: D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER)
1676// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1677// and the meaning of the index dimensions are as follows: (cb<id>[<lbound>:<ubound>])
1678// 1 <id>: variable ID being declared
1679// 2 <lbound>: the lower bound of the range of constant buffers in the space
1680// 3 <ubound>: the upper bound (inclusive) of this range
1681// As opposed to when the cb#[] is used in shader instructions: (cb<id>[<idx>][<loc>])
1682// 1 <id>: variable ID being used (matches dcl)
1683// 2 <idx>: absolute index of constant buffer within space (may be dynamically indexed)
1684// 3 <loc>: location of vector within constant buffer being referenced,
1685// which may also be dynamically indexed, with no access pattern flag required.
1686// (2) a DWORD indicating the size of the constant buffer as a count of 16-byte vectors.
1687// Each vector is 32-bit*4 elements == 128-bits == 16 bytes.
1688// If the size is specified as 0, the CB size is not known (any size CB
1689// can be bound to the slot).
1690// (3) a DWORD indicating the space index.
1691//
1692// ----------------------------------------------------------------------------
1693
1694typedef enum D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN
1695{
1696 D3D10_SB_CONSTANT_BUFFER_IMMEDIATE_INDEXED = 0,
1697 D3D10_SB_CONSTANT_BUFFER_DYNAMIC_INDEXED = 1
1698} D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN;
1699
1700#define D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK 0x00000800
1701#define D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT 11
1702
1703// DECODER MACRO: Find out if a Constant Buffer is going to be indexed or not
1704#define DECODE_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN(OpcodeToken0) ((D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN)(((OpcodeToken0)&D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK)>>D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT))
1705
1706// ENCODER MACRO: Encode the access pattern for the Constant Buffer
1707#define ENCODE_D3D10_SB_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN(AccessPattern) (((AccessPattern)<<D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT)&D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK)
1708
1709// ----------------------------------------------------------------------------
1710// Immediate Constant Buffer Declaration
1711//
1712// OpcodeToken0:
1713//
1714// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1715// [31:11] == D3D10_SB_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER
1716//
1717// OpcodeToken0 is followed by:
1718// (1) DWORD indicating length of declaration, including OpcodeToken0.
1719// This length must = 2(for OpcodeToken0 and 1) + a multiple of 4
1720// (# of immediate constants)
1721// (2) Sequence of 4-tuples of DWORDs defining the Immediate Constant Buffer.
1722// The number of 4-tuples is (length above - 1) / 4
1723// ----------------------------------------------------------------------------
1724
1725// ----------------------------------------------------------------------------
1726// Shader Message Declaration
1727//
1728// OpcodeToken0:
1729//
1730// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1731// [31:11] == D3D11_SB_CUSTOMDATA_SHADER_MESSAGE
1732//
1733// OpcodeToken0 is followed by:
1734// (1) DWORD indicating length of declaration, including OpcodeToken0.
1735// (2) DWORD (D3D11_SB_SHADER_MESSAGE_ID) indicating shader message or error.
1736// (3) D3D11_SB_SHADER_MESSAGE_FORMAT indicating the convention for formatting the message.
1737// (4) DWORD indicating the number of characters in the string without the terminator.
1738// (5) DWORD indicating the number of operands.
1739// (6) DWORD indicating length of operands.
1740// (7) Encoded operands.
1741// (8) String with trailing zero, padded to a multiple of DWORDs.
1742// The string is in the given format and the operands given should
1743// be used for argument substitutions when formatting.
1744// ----------------------------------------------------------------------------
1745
1746typedef enum D3D11_SB_SHADER_MESSAGE_ID
1747{
1748 D3D11_SB_SHADER_MESSAGE_ID_MESSAGE = 0x00200102,
1749 D3D11_SB_SHADER_MESSAGE_ID_ERROR = 0x00200103
1750} D3D11_SB_SHADER_MESSAGE_ID;
1751
1752typedef enum D3D11_SB_SHADER_MESSAGE_FORMAT
1753{
1754 // No formatting, just a text string. Operands are ignored.
1755 D3D11_SB_SHADER_MESSAGE_FORMAT_ANSI_TEXT,
1756 // Format string follows C/C++ printf conventions.
1757 D3D11_SB_SHADER_MESSAGE_FORMAT_ANSI_PRINTF,
1758} D3D11_SB_SHADER_MESSAGE_FORMAT;
1759
1760// ----------------------------------------------------------------------------
1761// Shader Clip Plane Constant Mappings for DX9 hardware
1762//
1763// OpcodeToken0:
1764//
1765// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1766// [31:11] == D3D11_SB_CUSTOMDATA_SHADER_CLIP_PLANE_CONSTANT_MAPPINGS_FOR_DX9
1767//
1768// OpcodeToken0 is followed by:
1769// (1) DWORD indicating length of declaration, including OpcodeToken0.
1770// (2) DWORD indicating number of constant mappings (up to 6 mappings).
1771// (3+) Constant mapping tables in following format.
1772//
1773// struct _Clip_Plane_Constant_Mapping
1774// {
1775// WORD ConstantBufferIndex; // cb[n]
1776// WORD StartConstantElement; // starting index of cb[n][m]
1777// WORD ConstantElemntCount; // number of elements cb[n][m] ~ cb[n][m+l]
1778// WORD Reserved; //
1779// };
1780// ----------------------------------------------------------------------------
1781
1782// ----------------------------------------------------------------------------
1783// Geometry Shader Input Primitive Declaration
1784//
1785// OpcodeToken0:
1786//
1787// [10:00] D3D10_SB_OPCODE_DCL_GS_INPUT_PRIMITIVE
1788// [16:11] D3D10_SB_PRIMITIVE [not D3D10_SB_PRIMITIVE_TOPOLOGY]
1789// [23:17] Ignored, 0
1790// [30:24] Instruction length in DWORDs including the opcode token. == 1
1791// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1792// contains extended operand description. This dcl is currently not
1793// extended.
1794//
1795// ----------------------------------------------------------------------------
1796
1797#define D3D10_SB_GS_INPUT_PRIMITIVE_MASK 0x0001f800
1798#define D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT 11
1799
1800// DECODER MACRO: Given a primitive topology declaration,
1801// (OpcodeToken0), determine the primitive topology
1802// (D3D10_SB_PRIMITIVE enum)
1803#define DECODE_D3D10_SB_GS_INPUT_PRIMITIVE(OpcodeToken0) ((D3D10_SB_PRIMITIVE)(((OpcodeToken0)&D3D10_SB_GS_INPUT_PRIMITIVE_MASK)>>D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT))
1804
1805// ENCODER MACRO: Store primitive topology
1806// (D3D10_SB_PRIMITIVE enum) into a
1807// a primitive topology declaration token (OpcodeToken0)
1808#define ENCODE_D3D10_SB_GS_INPUT_PRIMITIVE(Prim) (((Prim)<<D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT)&D3D10_SB_GS_INPUT_PRIMITIVE_MASK)
1809
1810// ----------------------------------------------------------------------------
1811// Geometry Shader Output Topology Declaration
1812//
1813// OpcodeToken0:
1814//
1815// [10:00] D3D10_SB_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY
1816// [17:11] D3D10_SB_PRIMITIVE_TOPOLOGY
1817// [23:18] Ignored, 0
1818// [30:24] Instruction length in DWORDs including the opcode token. == 1
1819// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1820// contains extended operand description. This dcl is currently not
1821// extended.
1822//
1823// ----------------------------------------------------------------------------
1824
1825#define D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK 0x0001f800
1826#define D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT 11
1827
1828// DECODER MACRO: Given a primitive topology declaration,
1829// (OpcodeToken0), determine the primitive topology
1830// (D3D10_SB_PRIMITIVE_TOPOLOGY enum)
1831#define DECODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY(OpcodeToken0) ((D3D10_SB_PRIMITIVE_TOPOLOGY)(((OpcodeToken0)&D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK)>>D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT))
1832
1833// ENCODER MACRO: Store primitive topology
1834// (D3D10_SB_PRIMITIVE_TOPOLOGY enum) into a
1835// a primitive topology declaration token (OpcodeToken0)
1836#define ENCODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY(PrimTopology) (((PrimTopology)<<D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT)&D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK)
1837
1838// ----------------------------------------------------------------------------
1839// Geometry Shader Maximum Output Vertex Count Declaration
1840//
1841// OpcodeToken0:
1842//
1843// [10:00] D3D10_SB_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT
1844// [23:11] Ignored, 0
1845// [30:24] Instruction length in DWORDs including the opcode token.
1846// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1847// contains extended operand description. This dcl is currently not
1848// extended.
1849//
1850// OpcodeToken0 is followed by a DWORD representing the
1851// maximum number of primitives that could be output
1852// by the Geometry Shader.
1853//
1854// ----------------------------------------------------------------------------
1855
1856// ----------------------------------------------------------------------------
1857// Geometry Shader Instance Count Declaration
1858//
1859// OpcodeToken0:
1860//
1861// [10:00] D3D11_SB_OPCODE_DCL_GS_INSTANCE_COUNT
1862// [23:11] Ignored, 0
1863// [30:24] Instruction length in DWORDs including the opcode token.
1864// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1865// contains extended operand description. This dcl is currently not
1866// extended.
1867//
1868// OpcodeToken0 is followed by a UINT32 representing the
1869// number of instances of the geometry shader program to execute.
1870//
1871// ----------------------------------------------------------------------------
1872
1873// ----------------------------------------------------------------------------
1874// Hull Shader Declaration Phase: HS/DS Input Control Point Count
1875//
1876// OpcodeToken0:
1877//
1878// [10:00] D3D11_SB_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT
1879// [16:11] Control point count
1880// [23:17] Ignored, 0
1881// [30:24] Instruction length in DWORDs including the opcode token. == 1
1882// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1883// contains extended operand description. This dcl is currently not
1884// extended.
1885//
1886// ----------------------------------------------------------------------------
1887#define D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK 0x0001f800
1888#define D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT 11
1889
1890// DECODER MACRO: Given an input control point count declaration token,
1891// (OpcodeToken0), determine the control point count
1892#define DECODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK)>>D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT))
1893
1894// ENCODER MACRO: Store input control point count into a declaration token
1895#define ENCODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(Count) (((Count)<<D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT)&D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK)
1896
1897// ----------------------------------------------------------------------------
1898// Hull Shader Declaration Phase: HS Output Control Point Count
1899//
1900// OpcodeToken0:
1901//
1902// [10:00] D3D11_SB_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT
1903// [16:11] Control point count
1904// [23:17] Ignored, 0
1905// [30:24] Instruction length in DWORDs including the opcode token. == 1
1906// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1907// contains extended operand description. This dcl is currently not
1908// extended.
1909//
1910// ----------------------------------------------------------------------------
1911#define D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK 0x0001f800
1912#define D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT 11
1913
1914// DECODER MACRO: Given an output control point count declaration token,
1915// (OpcodeToken0), determine the control point count
1916#define DECODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK)>>D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT))
1917
1918// ENCODER MACRO: Store output control point count into a declaration token
1919#define ENCODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(Count) (((Count)<<D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT)&D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK)
1920
1921// ----------------------------------------------------------------------------
1922// Hull Shader Declaration Phase: Tessellator Domain
1923//
1924// OpcodeToken0:
1925//
1926// [10:00] D3D11_SB_OPCODE_DCL_TESS_DOMAIN
1927// [12:11] Domain
1928// [23:13] Ignored, 0
1929// [30:24] Instruction length in DWORDs including the opcode token. == 1
1930// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1931// contains extended operand description. This dcl is currently not
1932// extended.
1933//
1934// ----------------------------------------------------------------------------
1935typedef enum D3D11_SB_TESSELLATOR_DOMAIN
1936{
1937 D3D11_SB_TESSELLATOR_DOMAIN_UNDEFINED = 0,
1938 D3D11_SB_TESSELLATOR_DOMAIN_ISOLINE = 1,
1939 D3D11_SB_TESSELLATOR_DOMAIN_TRI = 2,
1940 D3D11_SB_TESSELLATOR_DOMAIN_QUAD = 3
1941} D3D11_SB_TESSELLATOR_DOMAIN;
1942
1943#define D3D11_SB_TESS_DOMAIN_MASK 0x00001800
1944#define D3D11_SB_TESS_DOMAIN_SHIFT 11
1945
1946// DECODER MACRO: Given a tessellator domain declaration,
1947// (OpcodeToken0), determine the domain
1948// (D3D11_SB_TESSELLATOR_DOMAIN enum)
1949#define DECODE_D3D11_SB_TESS_DOMAIN(OpcodeToken0) ((D3D11_SB_TESSELLATOR_DOMAIN)(((OpcodeToken0)&D3D11_SB_TESS_DOMAIN_MASK)>>D3D11_SB_TESS_DOMAIN_SHIFT))
1950
1951// ENCODER MACRO: Store tessellator domain
1952// (D3D11_SB_TESSELLATOR_DOMAIN enum) into a
1953// a tessellator domain declaration token (OpcodeToken0)
1954#define ENCODE_D3D11_SB_TESS_DOMAIN(Domain) (((Domain)<<D3D11_SB_TESS_DOMAIN_SHIFT)&D3D11_SB_TESS_DOMAIN_MASK)
1955
1956// ----------------------------------------------------------------------------
1957// Hull Shader Declaration Phase: Tessellator Partitioning
1958//
1959// OpcodeToken0:
1960//
1961// [10:00] D3D11_SB_OPCODE_DCL_TESS_PARTITIONING
1962// [13:11] Partitioning
1963// [23:14] Ignored, 0
1964// [30:24] Instruction length in DWORDs including the opcode token. == 1
1965// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1966// contains extended operand description. This dcl is currently not
1967// extended.
1968//
1969// ----------------------------------------------------------------------------
1970typedef enum D3D11_SB_TESSELLATOR_PARTITIONING
1971{
1972 D3D11_SB_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
1973 D3D11_SB_TESSELLATOR_PARTITIONING_INTEGER = 1,
1974 D3D11_SB_TESSELLATOR_PARTITIONING_POW2 = 2,
1975 D3D11_SB_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
1976 D3D11_SB_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4
1977} D3D11_SB_TESSELLATOR_PARTITIONING;
1978
1979#define D3D11_SB_TESS_PARTITIONING_MASK 0x00003800
1980#define D3D11_SB_TESS_PARTITIONING_SHIFT 11
1981
1982// DECODER MACRO: Given a tessellator partitioning declaration,
1983// (OpcodeToken0), determine the domain
1984// (D3D11_SB_TESSELLATOR_PARTITIONING enum)
1985#define DECODE_D3D11_SB_TESS_PARTITIONING(OpcodeToken0) ((D3D11_SB_TESSELLATOR_PARTITIONING)(((OpcodeToken0)&D3D11_SB_TESS_PARTITIONING_MASK)>>D3D11_SB_TESS_PARTITIONING_SHIFT))
1986
1987// ENCODER MACRO: Store tessellator partitioning
1988// (D3D11_SB_TESSELLATOR_PARTITIONING enum) into a
1989// a tessellator partitioning declaration token (OpcodeToken0)
1990#define ENCODE_D3D11_SB_TESS_PARTITIONING(Partitioning) (((Partitioning)<<D3D11_SB_TESS_PARTITIONING_SHIFT)&D3D11_SB_TESS_PARTITIONING_MASK)
1991
1992// ----------------------------------------------------------------------------
1993// Hull Shader Declaration Phase: Tessellator Output Primitive
1994//
1995// OpcodeToken0:
1996//
1997// [10:00] D3D11_SB_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE
1998// [13:11] Output Primitive
1999// [23:14] Ignored, 0
2000// [30:24] Instruction length in DWORDs including the opcode token. == 1
2001// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2002// contains extended operand description. This dcl is currently not
2003// extended.
2004//
2005// ----------------------------------------------------------------------------
2006typedef enum D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE
2007{
2008 D3D11_SB_TESSELLATOR_OUTPUT_UNDEFINED = 0,
2009 D3D11_SB_TESSELLATOR_OUTPUT_POINT = 1,
2010 D3D11_SB_TESSELLATOR_OUTPUT_LINE = 2,
2011 D3D11_SB_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
2012 D3D11_SB_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4
2013} D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE;
2014
2015#define D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK 0x00003800
2016#define D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT 11
2017
2018// DECODER MACRO: Given a tessellator output primitive declaration,
2019// (OpcodeToken0), determine the domain
2020// (D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE enum)
2021#define DECODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE(OpcodeToken0) ((D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE)(((OpcodeToken0)&D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK)>>D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT))
2022
2023// ENCODER MACRO: Store tessellator output primitive
2024// (D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE enum) into a
2025// a tessellator output primitive declaration token (OpcodeToken0)
2026#define ENCODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE(OutputPrimitive) (((OutputPrimitive)<<D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT)&D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK)
2027
2028
2029// ----------------------------------------------------------------------------
2030// Hull Shader Declaration Phase: Hull Shader Max Tessfactor
2031//
2032// OpcodeToken0:
2033//
2034// [10:00] D3D11_SB_OPCODE_DCL_HS_MAX_TESSFACTOR
2035// [23:11] Ignored, 0
2036// [30:24] Instruction length in DWORDs including the opcode token.
2037// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2038// contains extended operand description. This dcl is currently not
2039// extended.
2040//
2041// OpcodeToken0 is followed by a float32 representing the
2042// maximum TessFactor.
2043//
2044// ----------------------------------------------------------------------------
2045
2046// ----------------------------------------------------------------------------
2047// Hull Shader Declaration Phase: Hull Shader Fork Phase Instance Count
2048//
2049// OpcodeToken0:
2050//
2051// [10:00] D3D11_SB_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT
2052// [23:11] Ignored, 0
2053// [30:24] Instruction length in DWORDs including the opcode token.
2054// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2055// contains extended operand description. This dcl is currently not
2056// extended.
2057//
2058// OpcodeToken0 is followed by a UINT32 representing the
2059// number of instances of the current fork phase program to execute.
2060//
2061// ----------------------------------------------------------------------------
2062
2063typedef enum D3D10_SB_INTERPOLATION_MODE
2064{
2065 D3D10_SB_INTERPOLATION_UNDEFINED = 0,
2066 D3D10_SB_INTERPOLATION_CONSTANT = 1,
2067 D3D10_SB_INTERPOLATION_LINEAR = 2,
2068 D3D10_SB_INTERPOLATION_LINEAR_CENTROID = 3,
2069 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
2070 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
2071 D3D10_SB_INTERPOLATION_LINEAR_SAMPLE = 6, // DX10.1
2072 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7, // DX10.1
2073} D3D10_SB_INTERPOLATION_MODE;
2074
2075// Keep PRIMITIVE_TOPOLOGY values in sync with earlier DX versions (HW consumes values directly).
2076typedef enum D3D10_SB_PRIMITIVE_TOPOLOGY
2077{
2078 D3D10_SB_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
2079 D3D10_SB_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
2080 D3D10_SB_PRIMITIVE_TOPOLOGY_LINELIST = 2,
2081 D3D10_SB_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
2082 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
2083 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
2084 // 6 is reserved for legacy triangle fans
2085 // Adjacency values should be equal to (0x8 & non-adjacency):
2086 D3D10_SB_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
2087 D3D10_SB_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
2088 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
2089 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
2090} D3D10_SB_PRIMITIVE_TOPOLOGY;
2091
2092typedef enum D3D10_SB_PRIMITIVE
2093{
2094 D3D10_SB_PRIMITIVE_UNDEFINED = 0,
2095 D3D10_SB_PRIMITIVE_POINT = 1,
2096 D3D10_SB_PRIMITIVE_LINE = 2,
2097 D3D10_SB_PRIMITIVE_TRIANGLE = 3,
2098 // Adjacency values should be equal to (0x4 & non-adjacency):
2099 D3D10_SB_PRIMITIVE_LINE_ADJ = 6,
2100 D3D10_SB_PRIMITIVE_TRIANGLE_ADJ = 7,
2101 D3D11_SB_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
2102 D3D11_SB_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
2103 D3D11_SB_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
2104 D3D11_SB_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
2105 D3D11_SB_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
2106 D3D11_SB_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
2107 D3D11_SB_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
2108 D3D11_SB_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
2109 D3D11_SB_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
2110 D3D11_SB_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
2111 D3D11_SB_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
2112 D3D11_SB_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
2113 D3D11_SB_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
2114 D3D11_SB_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
2115 D3D11_SB_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
2116 D3D11_SB_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
2117 D3D11_SB_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
2118 D3D11_SB_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
2119 D3D11_SB_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
2120 D3D11_SB_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
2121 D3D11_SB_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
2122 D3D11_SB_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
2123 D3D11_SB_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
2124 D3D11_SB_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
2125 D3D11_SB_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
2126 D3D11_SB_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
2127 D3D11_SB_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
2128 D3D11_SB_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
2129 D3D11_SB_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
2130 D3D11_SB_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
2131 D3D11_SB_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
2132 D3D11_SB_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
2133} D3D10_SB_PRIMITIVE;
2134
2135typedef enum D3D10_SB_COMPONENT_MASK
2136{
2137 D3D10_SB_COMPONENT_MASK_X = 1,
2138 D3D10_SB_COMPONENT_MASK_Y = 2,
2139 D3D10_SB_COMPONENT_MASK_Z = 4,
2140 D3D10_SB_COMPONENT_MASK_W = 8,
2141 D3D10_SB_COMPONENT_MASK_R = 1,
2142 D3D10_SB_COMPONENT_MASK_G = 2,
2143 D3D10_SB_COMPONENT_MASK_B = 4,
2144 D3D10_SB_COMPONENT_MASK_A = 8,
2145 D3D10_SB_COMPONENT_MASK_ALL = 15,
2146} D3D10_SB_COMPONENT_MASK;
2147
2148typedef enum D3D10_SB_NAME
2149{
2150 D3D10_SB_NAME_UNDEFINED = 0,
2151 D3D10_SB_NAME_POSITION = 1,
2152 D3D10_SB_NAME_CLIP_DISTANCE = 2,
2153 D3D10_SB_NAME_CULL_DISTANCE = 3,
2154 D3D10_SB_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
2155 D3D10_SB_NAME_VIEWPORT_ARRAY_INDEX = 5,
2156 D3D10_SB_NAME_VERTEX_ID = 6,
2157 D3D10_SB_NAME_PRIMITIVE_ID = 7,
2158 D3D10_SB_NAME_INSTANCE_ID = 8,
2159 D3D10_SB_NAME_IS_FRONT_FACE = 9,
2160 D3D10_SB_NAME_SAMPLE_INDEX = 10,
2161 // The following are added for D3D11
2162 D3D11_SB_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR = 11,
2163 D3D11_SB_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR = 12,
2164 D3D11_SB_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR = 13,
2165 D3D11_SB_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR = 14,
2166 D3D11_SB_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR = 15,
2167 D3D11_SB_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR = 16,
2168 D3D11_SB_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR = 17,
2169 D3D11_SB_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR = 18,
2170 D3D11_SB_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR = 19,
2171 D3D11_SB_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 20,
2172 D3D11_SB_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 21,
2173 D3D11_SB_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 22,
2174 // The following are added for D3D12
2175 D3D12_SB_NAME_BARYCENTRICS = 23,
2176 D3D12_SB_NAME_SHADINGRATE = 24,
2177 D3D12_SB_NAME_CULLPRIMITIVE = 25,
2178} D3D10_SB_NAME;
2179
2180typedef enum D3D10_SB_RESOURCE_DIMENSION
2181{
2182 D3D10_SB_RESOURCE_DIMENSION_UNKNOWN = 0,
2183 D3D10_SB_RESOURCE_DIMENSION_BUFFER = 1,
2184 D3D10_SB_RESOURCE_DIMENSION_TEXTURE1D = 2,
2185 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2D = 3,
2186 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DMS = 4,
2187 D3D10_SB_RESOURCE_DIMENSION_TEXTURE3D = 5,
2188 D3D10_SB_RESOURCE_DIMENSION_TEXTURECUBE = 6,
2189 D3D10_SB_RESOURCE_DIMENSION_TEXTURE1DARRAY = 7,
2190 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DARRAY = 8,
2191 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DMSARRAY = 9,
2192 D3D10_SB_RESOURCE_DIMENSION_TEXTURECUBEARRAY = 10,
2193 D3D11_SB_RESOURCE_DIMENSION_RAW_BUFFER = 11,
2194 D3D11_SB_RESOURCE_DIMENSION_STRUCTURED_BUFFER = 12,
2195} D3D10_SB_RESOURCE_DIMENSION;
2196
2197typedef enum D3D10_SB_RESOURCE_RETURN_TYPE
2198{
2199 D3D10_SB_RETURN_TYPE_UNORM = 1,
2200 D3D10_SB_RETURN_TYPE_SNORM = 2,
2201 D3D10_SB_RETURN_TYPE_SINT = 3,
2202 D3D10_SB_RETURN_TYPE_UINT = 4,
2203 D3D10_SB_RETURN_TYPE_FLOAT = 5,
2204 D3D10_SB_RETURN_TYPE_MIXED = 6,
2205 D3D11_SB_RETURN_TYPE_DOUBLE = 7,
2206 D3D11_SB_RETURN_TYPE_CONTINUED = 8,
2207 D3D11_SB_RETURN_TYPE_UNUSED = 9,
2208} D3D10_SB_RESOURCE_RETURN_TYPE;
2209
2210typedef enum D3D10_SB_REGISTER_COMPONENT_TYPE
2211{
2212 D3D10_SB_REGISTER_COMPONENT_UNKNOWN = 0,
2213 D3D10_SB_REGISTER_COMPONENT_UINT32 = 1,
2214 D3D10_SB_REGISTER_COMPONENT_SINT32 = 2,
2215 D3D10_SB_REGISTER_COMPONENT_FLOAT32 = 3,
2216 // Below types aren't used in DXBC, only signatures from DXIL shaders
2217 D3D10_SB_REGISTER_COMPONENT_UINT16 = 4,
2218 D3D10_SB_REGISTER_COMPONENT_SINT16 = 5,
2219 D3D10_SB_REGISTER_COMPONENT_FLOAT16 = 6,
2220 D3D10_SB_REGISTER_COMPONENT_UINT64 = 7,
2221 D3D10_SB_REGISTER_COMPONENT_SINT64 = 8,
2222 D3D10_SB_REGISTER_COMPONENT_FLOAT64 = 9,
2223} D3D10_SB_REGISTER_COMPONENT_TYPE;
2224
2225typedef enum D3D10_SB_INSTRUCTION_RETURN_TYPE
2226{
2227 D3D10_SB_INSTRUCTION_RETURN_FLOAT = 0,
2228 D3D10_SB_INSTRUCTION_RETURN_UINT = 1
2229} D3D10_SB_INSTRUCTION_RETURN_TYPE;
2230
2231#define D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK 0x00001800
2232#define D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT 11
2233
2234// DECODER MACRO: For an OpcodeToken0 with the return type
2235// determine the return type.
2236#define DECODE_D3D10_SB_INSTRUCTION_RETURN_TYPE(OpcodeToken0) ((D3D10_SB_INSTRUCTION_RETURN_TYPE)(((OpcodeToken0)&D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK)>>D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT))
2237// ENCODER MACRO: Encode the return type for instructions
2238// in the opcode specific control range of OpcodeToken0
2239#define ENCODE_D3D10_SB_INSTRUCTION_RETURN_TYPE(ReturnType) (((ReturnType)<<D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT)&D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK)
2240
2241// ----------------------------------------------------------------------------
2242// Interface function body Declaration
2243//
2244// OpcodeToken0:
2245//
2246// [10:00] D3D10_SB_OPCODE_DCL_FUNCTION_BODY
2247// [23:11] Ignored, 0
2248// [30:24] Instruction length in DWORDs including the opcode token.
2249// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2250// contains extended operand description. If it is extended, then
2251// it contains the actual instruction length in DWORDs, since
2252// it may not fit into 7 bits if enough operands are defined.
2253//
2254// OpcodeToken0 is followed by a DWORD that represents the function body
2255// identifier.
2256//
2257// ----------------------------------------------------------------------------
2258
2259// ----------------------------------------------------------------------------
2260// Interface function table Declaration
2261//
2262// OpcodeToken0:
2263//
2264// [10:00] D3D10_SB_OPCODE_DCL_FUNCTION_TABLE
2265// [23:11] Ignored, 0
2266// [30:24] Instruction length in DWORDs including the opcode token.
2267// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2268// contains extended operand description. If it is extended, then
2269// it contains the actual instruction length in DWORDs, since
2270// it may not fit into 7 bits if enough functions are defined.
2271//
2272// OpcodeToken0 is followed by a DWORD that represents the function table
2273// identifier and another DWORD (TableLength) that gives the number of
2274// functions in the table.
2275//
2276// This is followed by TableLength DWORDs which are function body indices.
2277//
2278// ----------------------------------------------------------------------------
2279
2280// ----------------------------------------------------------------------------
2281// Interface Declaration
2282//
2283// OpcodeToken0:
2284//
2285// [10:00] D3D10_SB_OPCODE_DCL_INTERFACE
2286// [11] 1 if the interface is indexed dynamically, 0 otherwise.
2287// [23:12] Ignored, 0
2288// [30:24] Instruction length in DWORDs including the opcode token.
2289// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2290// contains extended operand description. If it is extended, then
2291// it contains the actual instruction length in DWORDs, since
2292// it may not fit into 7 bits if enough types are used.
2293//
2294// OpcodeToken0 is followed by a DWORD that represents the interface
2295// identifier. Next is a DWORD that gives the expected function table
2296// length. Then another DWORD (OpcodeToken3) with the following layout:
2297//
2298// [15:00] TableLength, the number of types that implement this interface
2299// [31:16] ArrayLength, the number of interfaces that are defined in this array.
2300//
2301// This is followed by TableLength DWORDs which are function table
2302// identifiers, representing possible tables for a given interface.
2303//
2304// ----------------------------------------------------------------------------
2305
2306#define D3D11_SB_INTERFACE_INDEXED_BIT_MASK 0x00000800
2307#define D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT 11
2308
2309#define D3D11_SB_INTERFACE_TABLE_LENGTH_MASK 0x0000ffff
2310#define D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT 0
2311
2312#define D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK 0xffff0000
2313#define D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT 16
2314
2315// get/set the indexed bit for an interface definition
2316#define DECODE_D3D11_SB_INTERFACE_INDEXED_BIT(OpcodeToken0) ((((OpcodeToken0)&D3D11_SB_INTERFACE_INDEXED_BIT_MASK)>>D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT) ? true : false)
2317#define ENCODE_D3D11_SB_INTERFACE_INDEXED_BIT(IndexedBit) (((IndexedBit)<<D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT)&D3D11_SB_INTERFACE_INDEXED_BIT_MASK)
2318
2319// get/set the table length for an interface definition
2320#define DECODE_D3D11_SB_INTERFACE_TABLE_LENGTH(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INTERFACE_TABLE_LENGTH_MASK)>>D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT))
2321#define ENCODE_D3D11_SB_INTERFACE_TABLE_LENGTH(TableLength) (((TableLength)<<D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT)&D3D11_SB_INTERFACE_TABLE_LENGTH_MASK)
2322
2323// get/set the array length for an interface definition
2324#define DECODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK)>>D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT))
2325#define ENCODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(ArrayLength) (((ArrayLength)<<D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT)&D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK)
2326
2327// ----------------------------------------------------------------------------
2328// Interface call
2329//
2330// OpcodeToken0:
2331//
2332// [10:00] D3D10_SB_OPCODE_INTERFACE_CALL
2333// [23:11] Ignored, 0
2334// [30:24] Instruction length in DWORDs including the opcode token.
2335// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2336// contains extended operand description. If it is extended, then
2337// it contains the actual instruction length in DWORDs, since
2338// it may not fit into 7 bits if enough types are used.
2339//
2340// OpcodeToken0 is followed by a DWORD that gives the function index to
2341// call in the function table specified for the given interface.
2342// Next is the interface operand.
2343//
2344// ----------------------------------------------------------------------------
2345
2346// ----------------------------------------------------------------------------
2347// Thread Group Declaration (Compute Shader)
2348//
2349// OpcodeToken0:
2350//
2351// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP
2352// [23:11] Ignored, 0
2353// [30:24] Instruction length in DWORDs including the opcode token.
2354// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2355// contains extended operand description. If it is extended, then
2356// it contains the actual instruction length in DWORDs, since
2357// it may not fit into 7 bits if enough types are used.
2358//
2359// OpcodeToken0 is followed by 3 DWORDs, the Thread Group dimensions as UINT32:
2360// x, y, z
2361//
2362// ----------------------------------------------------------------------------
2363
2364// ----------------------------------------------------------------------------
2365// Typed Unordered Access View Declaration
2366//
2367// OpcodeToken0:
2368//
2369// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED
2370// [15:11] D3D10_SB_RESOURCE_DIMENSION
2371// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2372// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2373// [23:18] Ignored, 0
2374// [30:24] Instruction length in DWORDs including the opcode token.
2375// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2376// contains extended operand description. This dcl is currently not
2377// extended.
2378//
2379// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
2380// (1) an operand, starting with OperandToken0, defining which
2381// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2382// (2) a Resource Return Type token (ResourceReturnTypeToken)
2383//
2384// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2385// (1) an operand, starting with OperandToken0, defining which
2386// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2387// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2388// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2389// 1 <id>: variable ID being declared
2390// 2 <lbound>: the lower bound of the range of UAV's in the space
2391// 3 <ubound>: the upper bound (inclusive) of this range
2392// As opposed to when the u# is used in shader instructions, where the register
2393// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2394// dimensions are as follows: (u<id>[<idx>]):
2395// 1 <id>: variable ID being used (matches dcl)
2396// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2397// (2) a Resource Return Type token (ResourceReturnTypeToken)
2398// (3) a DWORD indicating the space index.
2399//
2400// ----------------------------------------------------------------------------
2401// UAV access scope flags
2402#define D3D11_SB_GLOBALLY_COHERENT_ACCESS 0x00010000
2403#define D3D11_SB_ACCESS_COHERENCY_MASK 0x00010000
2404
2405// DECODER MACRO: Retrieve flags for sync instruction from OpcodeToken0.
2406#define DECODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_ACCESS_COHERENCY_MASK)
2407
2408// ENCODER MACRO: Given a set of sync instruciton flags, encode them in OpcodeToken0.
2409#define ENCODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(Flags) ((Flags)&D3D11_SB_ACCESS_COHERENCY_MASK)
2410
2411// Additional UAV access flags
2412#define D3D11_SB_RASTERIZER_ORDERED_ACCESS 0x00020000
2413
2414// Resource flags mask. Use to retrieve all resource flags, including the order preserving counter.
2415#define D3D11_SB_RESOURCE_FLAGS_MASK (D3D11_SB_GLOBALLY_COHERENT_ACCESS|D3D11_SB_RASTERIZER_ORDERED_ACCESS|D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER)
2416
2417// DECODER MACRO: Retrieve UAV access flags for from OpcodeToken0.
2418#define DECODE_D3D11_SB_RESOURCE_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_RESOURCE_FLAGS_MASK)
2419
2420// ENCODER MACRO: Given UAV access flags, encode them in OpcodeToken0.
2421#define ENCODE_D3D11_SB_RESOURCE_FLAGS(Flags) ((Flags)&D3D11_SB_RESOURCE_FLAGS_MASK)
2422
2423// ----------------------------------------------------------------------------
2424// Raw Unordered Access View Declaration
2425//
2426// OpcodeToken0:
2427//
2428// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW
2429// [15:11] Ignored, 0
2430// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2431// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2432// [23:18] Ignored, 0
2433// [30:24] Instruction length in DWORDs including the opcode token.
2434// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2435// contains extended operand description. This dcl is currently not
2436// extended.
2437//
2438// OpcodeToken0 is followed by 1 operand on Shader Models 4.0 through 5.0:
2439// (1) an operand, starting with OperandToken0, defining which
2440// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2441//
2442// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
2443// (1) an operand, starting with OperandToken0, defining which
2444// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2445// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2446// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2447// 1 <id>: variable ID being declared
2448// 2 <lbound>: the lower bound of the range of UAV's in the space
2449// 3 <ubound>: the upper bound (inclusive) of this range
2450// As opposed to when the u# is used in shader instructions, where the register
2451// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2452// dimensions are as follows: (u<id>[<idx>]):
2453// 1 <id>: variable ID being used (matches dcl)
2454// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2455// (2) a DWORD indicating the space index.
2456//
2457// ----------------------------------------------------------------------------
2458
2459// ----------------------------------------------------------------------------
2460// Structured Unordered Access View Declaration
2461//
2462// OpcodeToken0:
2463//
2464// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED
2465// [15:11] Ignored, 0
2466// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2467// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2468// [22:18] Ignored, 0
2469// [23:23] D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER or 0
2470//
2471// The presence of this flag means that if a UAV is bound to the
2472// corresponding slot, it must have been created with
2473// D3D11_BUFFER_UAV_FLAG_COUNTER at the API. Also, the shader
2474// can contain either imm_atomic_alloc or _consume instructions
2475// operating on the given UAV.
2476//
2477// If this flag is not present, the shader can still contain
2478// either imm_atomic_alloc or imm_atomic_consume instructions for
2479// this UAV. But if such instructions are present in this case,
2480// and a UAV is bound corresponding slot, it must have been created
2481// with the D3D11_BUFFER_UAV_FLAG_APPEND flag at the API.
2482// Append buffers have a counter as well, but values returned
2483// to the shader are only valid for the lifetime of the shader
2484// invocation.
2485//
2486// [30:24] Instruction length in DWORDs including the opcode token.
2487// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2488// contains extended operand description. This dcl is currently not
2489// extended.
2490//
2491// OpcodeToken0 is followed by 2 operands:
2492// (1) an operand, starting with OperandToken0, defining which
2493// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is
2494// being declared.
2495// (2) a DWORD indicating UINT32 byte stride
2496//
2497// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2498// (1) an operand, starting with OperandToken0, defining which
2499// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2500// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2501// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2502// 1 <id>: variable ID being declared
2503// 2 <lbound>: the lower bound of the range of UAV's in the space
2504// 3 <ubound>: the upper bound (inclusive) of this range
2505// As opposed to when the u# is used in shader instructions, where the register
2506// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2507// dimensions are as follows: (u<id>[<idx>]):
2508// 1 <id>: variable ID being used (matches dcl)
2509// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2510// (2) a DWORD indicating UINT32 byte stride
2511// (3) a DWORD indicating the space index.
2512//
2513// ----------------------------------------------------------------------------
2514// UAV flags
2515#define D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER 0x00800000
2516#define D3D11_SB_UAV_FLAGS_MASK 0x00800000
2517
2518// DECODER MACRO: Retrieve flags about UAV from OpcodeToken0.
2519#define DECODE_D3D11_SB_UAV_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_UAV_FLAGS_MASK)
2520
2521// ENCODER MACRO: Given a set of UAV flags, encode them in OpcodeToken0.
2522#define ENCODE_D3D11_SB_UAV_FLAGS(Flags) ((Flags)&D3D11_SB_UAV_FLAGS_MASK)
2523
2524// ----------------------------------------------------------------------------
2525// Raw Thread Group Shared Memory Declaration
2526//
2527// OpcodeToken0:
2528//
2529// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW
2530// [23:11] Ignored, 0
2531// [30:24] Instruction length in DWORDs including the opcode token.
2532// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2533// contains extended operand description. This dcl is currently not
2534// extended.
2535//
2536// OpcodeToken0 is followed by 2 operands:
2537// (1) an operand, starting with OperandToken0, defining which
2538// g# register (D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY) is being declared.
2539// (2) a DWORD indicating the byte count, which must be a multiple of 4.
2540//
2541// ----------------------------------------------------------------------------
2542
2543// ----------------------------------------------------------------------------
2544// Structured Thread Group Shared Memory Declaration
2545//
2546// OpcodeToken0:
2547//
2548// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED
2549// [23:11] Ignored, 0
2550// [30:24] Instruction length in DWORDs including the opcode token.
2551// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2552// contains extended operand description. This dcl is currently not
2553// extended.
2554//
2555// OpcodeToken0 is followed by 3 operands:
2556// (1) an operand, starting with OperandToken0, defining which
2557// g# register (D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY) is
2558// being declared.
2559// (2) a DWORD indicating UINT32 struct byte stride
2560// (3) a DWORD indicating UINT32 struct count
2561//
2562// ----------------------------------------------------------------------------
2563
2564// ----------------------------------------------------------------------------
2565// Raw Shader Resource View Declaration
2566//
2567// OpcodeToken0:
2568//
2569// [10:00] D3D11_SB_OPCODE_DCL_RESOURCE_RAW
2570// [23:11] Ignored, 0
2571// [30:24] Instruction length in DWORDs including the opcode token.
2572// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2573// contains extended operand description. This dcl is currently not
2574// extended.
2575//
2576// OpcodeToken0 is followed by 1 operand:
2577// (1) an operand, starting with OperandToken0, defining which
2578// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2579//
2580// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
2581// (1) an operand, starting with OperandToken0, defining which
2582// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2583// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2584// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
2585// 1 <id>: variable ID being declared
2586// 2 <lbound>: the lower bound of the range of resources in the space
2587// 3 <ubound>: the upper bound (inclusive) of this range
2588// As opposed to when the t# is used in shader instructions, where the register
2589// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2590// dimensions are as follows: (t<id>[<idx>]):
2591// 1 <id>: variable ID being used (matches dcl)
2592// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
2593// (2) a DWORD indicating the space index.
2594//
2595// ----------------------------------------------------------------------------
2596
2597// ----------------------------------------------------------------------------
2598// Structured Shader Resource View Declaration
2599//
2600// OpcodeToken0:
2601//
2602// [10:00] D3D11_SB_OPCODE_DCL_RESOURCE_STRUCTURED
2603// [23:11] Ignored, 0
2604// [30:24] Instruction length in DWORDs including the opcode token.
2605// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2606// contains extended operand description. This dcl is currently not
2607// extended.
2608//
2609// OpcodeToken0 is followed by 2 operands:
2610// (1) an operand, starting with OperandToken0, defining which
2611// g# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is
2612// being declared.
2613// (2) a DWORD indicating UINT32 struct byte stride
2614//
2615// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2616// (1) an operand, starting with OperandToken0, defining which
2617// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2618// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2619// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
2620// 1 <id>: variable ID being declared
2621// 2 <lbound>: the lower bound of the range of resources in the space
2622// 3 <ubound>: the upper bound (inclusive) of this range
2623// As opposed to when the t# is used in shader instructions, where the register
2624// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2625// dimensions are as follows: (t<id>[<idx>]):
2626// 1 <id>: variable ID being used (matches dcl)
2627// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
2628// (2) a DWORD indicating UINT32 struct byte stride
2629// (3) a DWORD indicating the space index.
2630//
2631// ----------------------------------------------------------------------------
2632
2633#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
2634#pragma endregion
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.h
new file mode 100644
index 0000000..b942825
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.h
@@ -0,0 +1,36890 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12_h__
39#define __d3d12_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Object_FWD_DEFINED__
56#define __ID3D12Object_FWD_DEFINED__
57typedef interface ID3D12Object ID3D12Object;
58
59#endif /* __ID3D12Object_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12DeviceChild_FWD_DEFINED__
63#define __ID3D12DeviceChild_FWD_DEFINED__
64typedef interface ID3D12DeviceChild ID3D12DeviceChild;
65
66#endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12RootSignature_FWD_DEFINED__
70#define __ID3D12RootSignature_FWD_DEFINED__
71typedef interface ID3D12RootSignature ID3D12RootSignature;
72
73#endif /* __ID3D12RootSignature_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
77#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
78typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
79
80#endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
84#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
85typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
86
87#endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Pageable_FWD_DEFINED__
91#define __ID3D12Pageable_FWD_DEFINED__
92typedef interface ID3D12Pageable ID3D12Pageable;
93
94#endif /* __ID3D12Pageable_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Heap_FWD_DEFINED__
98#define __ID3D12Heap_FWD_DEFINED__
99typedef interface ID3D12Heap ID3D12Heap;
100
101#endif /* __ID3D12Heap_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12Resource_FWD_DEFINED__
105#define __ID3D12Resource_FWD_DEFINED__
106typedef interface ID3D12Resource ID3D12Resource;
107
108#endif /* __ID3D12Resource_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
112#define __ID3D12CommandAllocator_FWD_DEFINED__
113typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
114
115#endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12Fence_FWD_DEFINED__
119#define __ID3D12Fence_FWD_DEFINED__
120typedef interface ID3D12Fence ID3D12Fence;
121
122#endif /* __ID3D12Fence_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12Fence1_FWD_DEFINED__
126#define __ID3D12Fence1_FWD_DEFINED__
127typedef interface ID3D12Fence1 ID3D12Fence1;
128
129#endif /* __ID3D12Fence1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12PipelineState_FWD_DEFINED__
133#define __ID3D12PipelineState_FWD_DEFINED__
134typedef interface ID3D12PipelineState ID3D12PipelineState;
135
136#endif /* __ID3D12PipelineState_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12PipelineState1_FWD_DEFINED__
140#define __ID3D12PipelineState1_FWD_DEFINED__
141typedef interface ID3D12PipelineState1 ID3D12PipelineState1;
142
143#endif /* __ID3D12PipelineState1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
147#define __ID3D12DescriptorHeap_FWD_DEFINED__
148typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
149
150#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12QueryHeap_FWD_DEFINED__
154#define __ID3D12QueryHeap_FWD_DEFINED__
155typedef interface ID3D12QueryHeap ID3D12QueryHeap;
156
157#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12CommandSignature_FWD_DEFINED__
161#define __ID3D12CommandSignature_FWD_DEFINED__
162typedef interface ID3D12CommandSignature ID3D12CommandSignature;
163
164#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12CommandList_FWD_DEFINED__
168#define __ID3D12CommandList_FWD_DEFINED__
169typedef interface ID3D12CommandList ID3D12CommandList;
170
171#endif /* __ID3D12CommandList_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
175#define __ID3D12GraphicsCommandList_FWD_DEFINED__
176typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
177
178#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
182#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
183typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
184
185#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
189#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
190typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
191
192#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12CommandQueue_FWD_DEFINED__
196#define __ID3D12CommandQueue_FWD_DEFINED__
197typedef interface ID3D12CommandQueue ID3D12CommandQueue;
198
199#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12CommandQueue1_FWD_DEFINED__
203#define __ID3D12CommandQueue1_FWD_DEFINED__
204typedef interface ID3D12CommandQueue1 ID3D12CommandQueue1;
205
206#endif /* __ID3D12CommandQueue1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12Device_FWD_DEFINED__
210#define __ID3D12Device_FWD_DEFINED__
211typedef interface ID3D12Device ID3D12Device;
212
213#endif /* __ID3D12Device_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
217#define __ID3D12PipelineLibrary_FWD_DEFINED__
218typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
219
220#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
224#define __ID3D12PipelineLibrary1_FWD_DEFINED__
225typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
226
227#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12Device1_FWD_DEFINED__
231#define __ID3D12Device1_FWD_DEFINED__
232typedef interface ID3D12Device1 ID3D12Device1;
233
234#endif /* __ID3D12Device1_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12Device2_FWD_DEFINED__
238#define __ID3D12Device2_FWD_DEFINED__
239typedef interface ID3D12Device2 ID3D12Device2;
240
241#endif /* __ID3D12Device2_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12Device3_FWD_DEFINED__
245#define __ID3D12Device3_FWD_DEFINED__
246typedef interface ID3D12Device3 ID3D12Device3;
247
248#endif /* __ID3D12Device3_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
252#define __ID3D12ProtectedSession_FWD_DEFINED__
253typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
254
255#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
259#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
260typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
261
262#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */
263
264
265#ifndef __ID3D12Device4_FWD_DEFINED__
266#define __ID3D12Device4_FWD_DEFINED__
267typedef interface ID3D12Device4 ID3D12Device4;
268
269#endif /* __ID3D12Device4_FWD_DEFINED__ */
270
271
272#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
273#define __ID3D12LifetimeOwner_FWD_DEFINED__
274typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
275
276#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */
277
278
279#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
280#define __ID3D12SwapChainAssistant_FWD_DEFINED__
281typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
282
283#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */
284
285
286#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
287#define __ID3D12LifetimeTracker_FWD_DEFINED__
288typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
289
290#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */
291
292
293#ifndef __ID3D12StateObject_FWD_DEFINED__
294#define __ID3D12StateObject_FWD_DEFINED__
295typedef interface ID3D12StateObject ID3D12StateObject;
296
297#endif /* __ID3D12StateObject_FWD_DEFINED__ */
298
299
300#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
301#define __ID3D12StateObjectProperties_FWD_DEFINED__
302typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
303
304#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
305
306
307#ifndef __ID3D12StateObjectProperties1_FWD_DEFINED__
308#define __ID3D12StateObjectProperties1_FWD_DEFINED__
309typedef interface ID3D12StateObjectProperties1 ID3D12StateObjectProperties1;
310
311#endif /* __ID3D12StateObjectProperties1_FWD_DEFINED__ */
312
313
314#ifndef __ID3D12StateObjectProperties2_FWD_DEFINED__
315#define __ID3D12StateObjectProperties2_FWD_DEFINED__
316typedef interface ID3D12StateObjectProperties2 ID3D12StateObjectProperties2;
317
318#endif /* __ID3D12StateObjectProperties2_FWD_DEFINED__ */
319
320
321#ifndef __ID3D12WorkGraphProperties_FWD_DEFINED__
322#define __ID3D12WorkGraphProperties_FWD_DEFINED__
323typedef interface ID3D12WorkGraphProperties ID3D12WorkGraphProperties;
324
325#endif /* __ID3D12WorkGraphProperties_FWD_DEFINED__ */
326
327
328#ifndef __ID3D12Device5_FWD_DEFINED__
329#define __ID3D12Device5_FWD_DEFINED__
330typedef interface ID3D12Device5 ID3D12Device5;
331
332#endif /* __ID3D12Device5_FWD_DEFINED__ */
333
334
335#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
336#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
337typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
338
339#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */
340
341
342#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
343#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
344typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
345
346#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__ */
347
348
349#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
350#define __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
351typedef interface ID3D12DeviceRemovedExtendedDataSettings2 ID3D12DeviceRemovedExtendedDataSettings2;
352
353#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__ */
354
355
356#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
357#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
358typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
359
360#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */
361
362
363#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
364#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
365typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
366
367#endif /* __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__ */
368
369
370#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
371#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
372typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
373
374#endif /* __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__ */
375
376
377#ifndef __ID3D12Device6_FWD_DEFINED__
378#define __ID3D12Device6_FWD_DEFINED__
379typedef interface ID3D12Device6 ID3D12Device6;
380
381#endif /* __ID3D12Device6_FWD_DEFINED__ */
382
383
384#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
385#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
386typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
387
388#endif /* __ID3D12ProtectedResourceSession1_FWD_DEFINED__ */
389
390
391#ifndef __ID3D12Device7_FWD_DEFINED__
392#define __ID3D12Device7_FWD_DEFINED__
393typedef interface ID3D12Device7 ID3D12Device7;
394
395#endif /* __ID3D12Device7_FWD_DEFINED__ */
396
397
398#ifndef __ID3D12Device8_FWD_DEFINED__
399#define __ID3D12Device8_FWD_DEFINED__
400typedef interface ID3D12Device8 ID3D12Device8;
401
402#endif /* __ID3D12Device8_FWD_DEFINED__ */
403
404
405#ifndef __ID3D12Resource1_FWD_DEFINED__
406#define __ID3D12Resource1_FWD_DEFINED__
407typedef interface ID3D12Resource1 ID3D12Resource1;
408
409#endif /* __ID3D12Resource1_FWD_DEFINED__ */
410
411
412#ifndef __ID3D12Resource2_FWD_DEFINED__
413#define __ID3D12Resource2_FWD_DEFINED__
414typedef interface ID3D12Resource2 ID3D12Resource2;
415
416#endif /* __ID3D12Resource2_FWD_DEFINED__ */
417
418
419#ifndef __ID3D12Heap1_FWD_DEFINED__
420#define __ID3D12Heap1_FWD_DEFINED__
421typedef interface ID3D12Heap1 ID3D12Heap1;
422
423#endif /* __ID3D12Heap1_FWD_DEFINED__ */
424
425
426#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
427#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
428typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
429
430#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */
431
432
433#ifndef __ID3D12MetaCommand_FWD_DEFINED__
434#define __ID3D12MetaCommand_FWD_DEFINED__
435typedef interface ID3D12MetaCommand ID3D12MetaCommand;
436
437#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */
438
439
440#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
441#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
442typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
443
444#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */
445
446
447#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
448#define __ID3D12ShaderCacheSession_FWD_DEFINED__
449typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
450
451#endif /* __ID3D12ShaderCacheSession_FWD_DEFINED__ */
452
453
454#ifndef __ID3D12Device9_FWD_DEFINED__
455#define __ID3D12Device9_FWD_DEFINED__
456typedef interface ID3D12Device9 ID3D12Device9;
457
458#endif /* __ID3D12Device9_FWD_DEFINED__ */
459
460
461#ifndef __ID3D12Device10_FWD_DEFINED__
462#define __ID3D12Device10_FWD_DEFINED__
463typedef interface ID3D12Device10 ID3D12Device10;
464
465#endif /* __ID3D12Device10_FWD_DEFINED__ */
466
467
468#ifndef __ID3D12Device11_FWD_DEFINED__
469#define __ID3D12Device11_FWD_DEFINED__
470typedef interface ID3D12Device11 ID3D12Device11;
471
472#endif /* __ID3D12Device11_FWD_DEFINED__ */
473
474
475#ifndef __ID3D12Device12_FWD_DEFINED__
476#define __ID3D12Device12_FWD_DEFINED__
477typedef interface ID3D12Device12 ID3D12Device12;
478
479#endif /* __ID3D12Device12_FWD_DEFINED__ */
480
481
482#ifndef __ID3D12Device13_FWD_DEFINED__
483#define __ID3D12Device13_FWD_DEFINED__
484typedef interface ID3D12Device13 ID3D12Device13;
485
486#endif /* __ID3D12Device13_FWD_DEFINED__ */
487
488
489#ifndef __ID3D12Device14_FWD_DEFINED__
490#define __ID3D12Device14_FWD_DEFINED__
491typedef interface ID3D12Device14 ID3D12Device14;
492
493#endif /* __ID3D12Device14_FWD_DEFINED__ */
494
495
496#ifndef __ID3D12StateObjectDatabase_FWD_DEFINED__
497#define __ID3D12StateObjectDatabase_FWD_DEFINED__
498typedef interface ID3D12StateObjectDatabase ID3D12StateObjectDatabase;
499
500#endif /* __ID3D12StateObjectDatabase_FWD_DEFINED__ */
501
502
503#ifndef __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
504#define __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
505typedef interface ID3D12VirtualizationGuestDevice ID3D12VirtualizationGuestDevice;
506
507#endif /* __ID3D12VirtualizationGuestDevice_FWD_DEFINED__ */
508
509
510#ifndef __ID3D12Tools_FWD_DEFINED__
511#define __ID3D12Tools_FWD_DEFINED__
512typedef interface ID3D12Tools ID3D12Tools;
513
514#endif /* __ID3D12Tools_FWD_DEFINED__ */
515
516
517#ifndef __ID3D12Tools1_FWD_DEFINED__
518#define __ID3D12Tools1_FWD_DEFINED__
519typedef interface ID3D12Tools1 ID3D12Tools1;
520
521#endif /* __ID3D12Tools1_FWD_DEFINED__ */
522
523
524#ifndef __ID3D12Tools2_FWD_DEFINED__
525#define __ID3D12Tools2_FWD_DEFINED__
526typedef interface ID3D12Tools2 ID3D12Tools2;
527
528#endif /* __ID3D12Tools2_FWD_DEFINED__ */
529
530
531#ifndef __ID3D12PageableTools_FWD_DEFINED__
532#define __ID3D12PageableTools_FWD_DEFINED__
533typedef interface ID3D12PageableTools ID3D12PageableTools;
534
535#endif /* __ID3D12PageableTools_FWD_DEFINED__ */
536
537
538#ifndef __ID3D12DeviceTools_FWD_DEFINED__
539#define __ID3D12DeviceTools_FWD_DEFINED__
540typedef interface ID3D12DeviceTools ID3D12DeviceTools;
541
542#endif /* __ID3D12DeviceTools_FWD_DEFINED__ */
543
544
545#ifndef __ID3D12DeviceTools1_FWD_DEFINED__
546#define __ID3D12DeviceTools1_FWD_DEFINED__
547typedef interface ID3D12DeviceTools1 ID3D12DeviceTools1;
548
549#endif /* __ID3D12DeviceTools1_FWD_DEFINED__ */
550
551
552#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
553#define __ID3D12SDKConfiguration_FWD_DEFINED__
554typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
555
556#endif /* __ID3D12SDKConfiguration_FWD_DEFINED__ */
557
558
559#ifndef __ID3D12SDKConfiguration1_FWD_DEFINED__
560#define __ID3D12SDKConfiguration1_FWD_DEFINED__
561typedef interface ID3D12SDKConfiguration1 ID3D12SDKConfiguration1;
562
563#endif /* __ID3D12SDKConfiguration1_FWD_DEFINED__ */
564
565
566#ifndef __ID3D12DeviceFactory_FWD_DEFINED__
567#define __ID3D12DeviceFactory_FWD_DEFINED__
568typedef interface ID3D12DeviceFactory ID3D12DeviceFactory;
569
570#endif /* __ID3D12DeviceFactory_FWD_DEFINED__ */
571
572
573#ifndef __ID3D12DeviceConfiguration_FWD_DEFINED__
574#define __ID3D12DeviceConfiguration_FWD_DEFINED__
575typedef interface ID3D12DeviceConfiguration ID3D12DeviceConfiguration;
576
577#endif /* __ID3D12DeviceConfiguration_FWD_DEFINED__ */
578
579
580#ifndef __ID3D12DeviceConfiguration1_FWD_DEFINED__
581#define __ID3D12DeviceConfiguration1_FWD_DEFINED__
582typedef interface ID3D12DeviceConfiguration1 ID3D12DeviceConfiguration1;
583
584#endif /* __ID3D12DeviceConfiguration1_FWD_DEFINED__ */
585
586
587#ifndef __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
588#define __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
589typedef interface ID3D12StateObjectDatabaseFactory ID3D12StateObjectDatabaseFactory;
590
591#endif /* __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__ */
592
593
594#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
595#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
596typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
597
598#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */
599
600
601#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
602#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
603typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
604
605#endif /* __ID3D12GraphicsCommandList6_FWD_DEFINED__ */
606
607
608#ifndef __ID3D12GraphicsCommandList7_FWD_DEFINED__
609#define __ID3D12GraphicsCommandList7_FWD_DEFINED__
610typedef interface ID3D12GraphicsCommandList7 ID3D12GraphicsCommandList7;
611
612#endif /* __ID3D12GraphicsCommandList7_FWD_DEFINED__ */
613
614
615#ifndef __ID3D12GraphicsCommandList8_FWD_DEFINED__
616#define __ID3D12GraphicsCommandList8_FWD_DEFINED__
617typedef interface ID3D12GraphicsCommandList8 ID3D12GraphicsCommandList8;
618
619#endif /* __ID3D12GraphicsCommandList8_FWD_DEFINED__ */
620
621
622#ifndef __ID3D12GraphicsCommandList9_FWD_DEFINED__
623#define __ID3D12GraphicsCommandList9_FWD_DEFINED__
624typedef interface ID3D12GraphicsCommandList9 ID3D12GraphicsCommandList9;
625
626#endif /* __ID3D12GraphicsCommandList9_FWD_DEFINED__ */
627
628
629#ifndef __ID3D12GraphicsCommandList10_FWD_DEFINED__
630#define __ID3D12GraphicsCommandList10_FWD_DEFINED__
631typedef interface ID3D12GraphicsCommandList10 ID3D12GraphicsCommandList10;
632
633#endif /* __ID3D12GraphicsCommandList10_FWD_DEFINED__ */
634
635
636#ifndef __ID3D12DSRDeviceFactory_FWD_DEFINED__
637#define __ID3D12DSRDeviceFactory_FWD_DEFINED__
638typedef interface ID3D12DSRDeviceFactory ID3D12DSRDeviceFactory;
639
640#endif /* __ID3D12DSRDeviceFactory_FWD_DEFINED__ */
641
642
643#ifndef __ID3D12GBVDiagnostics_FWD_DEFINED__
644#define __ID3D12GBVDiagnostics_FWD_DEFINED__
645typedef interface ID3D12GBVDiagnostics ID3D12GBVDiagnostics;
646
647#endif /* __ID3D12GBVDiagnostics_FWD_DEFINED__ */
648
649
650/* header files for imported files */
651#include "oaidl.h"
652#include "ocidl.h"
653#include "dxgicommon.h"
654#include "dxgiformat.h"
655#include "d3dcommon.h"
656
657#ifdef __cplusplus
658extern "C"{
659#endif
660
661
662/* interface __MIDL_itf_d3d12_0000_0000 */
663/* [local] */
664
665#include <winapifamily.h>
666#pragma region App Family
667#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
668#ifndef _D3D12_CONSTANTS
669#define _D3D12_CONSTANTS
670#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
671
672#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
673
674#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
675
676#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
677
678#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
679
680#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
681
682#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
683
684#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
685
686#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
687
688#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
689
690#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
691
692#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
693
694#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
695
696#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
697
698#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
699
700#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
701
702#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
703
704#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
705
706#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
707
708#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
709
710#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
711
712#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
713
714#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
715
716#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
717
718#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
719
720#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
721
722#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
723
724#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
725
726#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
727
728#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
729
730#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
731
732#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
733
734#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
735
736#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
737
738#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
739
740#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
741
742#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
743
744#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
745
746#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
747
748#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
749
750#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
751
752#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
753
754#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
755
756#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
757
758#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
759
760#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
761
762#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
763
764#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
765
766#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
767
768#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
769
770#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
771
772#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
773
774#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
775
776#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
777
778#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
779
780#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
781
782#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
783
784#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
785
786#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
787
788#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
789
790#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
791
792#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
793
794#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
795
796#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
797
798#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
799
800#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
801
802#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
803
804#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
805
806#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
807
808#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
809
810#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
811
812#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
813
814#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
815
816#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
817
818#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
819
820#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
821
822#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
823
824#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
825
826#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
827
828#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
829
830#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
831
832#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
833
834#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
835
836#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
837
838#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
839
840#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
841
842#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
843
844#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
845
846#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
847
848#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
849
850#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
851
852#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
853
854#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
855
856#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
857
858#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
859
860#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
861
862#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
863
864#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
865
866#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
867
868#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
869
870#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
871
872#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
873
874#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
875#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
876#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
877#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
878#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
879#define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
880
881#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
882#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
883
884#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
885#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
886
887#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
888
889#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
890
891#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
892
893#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
894
895#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
896
897#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
898
899#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
900
901#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
902#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
903
904#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
905
906#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
907
908#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
909
910#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
911
912#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
913#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
914#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
915
916#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
917
918#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
919
920#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
921
922#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
923
924#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
925
926#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
927
928#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
929
930#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
931
932#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
933
934#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
935
936#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
937
938#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
939
940#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
941
942#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
943
944#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
945
946#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
947
948#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
949
950#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
951
952#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
953
954#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
955
956#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
957
958#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
959
960#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
961
962#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
963
964#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
965
966#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
967
968#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
969
970#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
971
972#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
973
974#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
975#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
976#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
977#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
978#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
979#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
980#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
981#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
982#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
983#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
984#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
985#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
986#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
987#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
988
989#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
990
991#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
992
993#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
994
995#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
996
997#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
998
999#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1000
1001#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
1002
1003#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
1004
1005#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
1006
1007#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
1008
1009#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1010
1011#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
1012
1013#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
1014
1015#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
1016
1017#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
1018
1019#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
1020
1021#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
1022
1023#define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
1024
1025#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1026
1027#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1028
1029#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
1030
1031#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
1032
1033#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
1034
1035#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
1036
1037#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1038
1039#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
1040
1041#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
1042
1043#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
1044
1045#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
1046
1047#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1048
1049#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
1050
1051#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
1052
1053#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
1054
1055#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
1056
1057#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1058
1059#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
1060
1061#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
1062
1063#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
1064
1065#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
1066
1067#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1068
1069#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
1070
1071#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
1072
1073#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
1074
1075#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
1076
1077#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
1078#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
1079#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
1080
1081#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
1082
1083#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1084
1085#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
1086
1087#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
1088
1089#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
1090
1091#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
1092
1093#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1094
1095#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
1096
1097#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
1098
1099#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
1100
1101#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
1102
1103#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
1104
1105#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
1106
1107#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
1108
1109#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
1110
1111#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
1112
1113#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
1114
1115#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
1116
1117#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
1118
1119#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
1120
1121#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
1122
1123#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
1124
1125#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
1126
1127#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
1128
1129#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
1130
1131#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
1132
1133#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
1134
1135#define D3D12_LINEAR_GAMMA ( 1.0f )
1136#define D3D12_MAJOR_VERSION ( 12 )
1137
1138#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
1139#define D3D12_MAX_DEPTH ( 1.0f )
1140#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
1141
1142#define D3D12_MAX_MAXANISOTROPY ( 16 )
1143
1144#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
1145
1146#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
1147#define D3D12_MAX_ROOT_COST ( 64 )
1148
1149#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
1150
1151#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
1152
1153#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
1154
1155#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
1156
1157#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 )
1158
1159#define D3D12_MINOR_VERSION ( 0 )
1160
1161#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
1162#define D3D12_MIN_DEPTH ( 0.0f )
1163#define D3D12_MIN_MAXANISOTROPY ( 0 )
1164
1165#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
1166#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
1167#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
1168
1169#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
1170
1171#define D3D12_MS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID ( 4194303 )
1172
1173#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
1174#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
1175
1176#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1177
1178#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
1179
1180#define D3D12_PACKED_TILE ( 0xffffffff )
1181
1182#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
1183
1184#define D3D12_PREVIEW_SDK_VERSION ( 717 )
1185
1186#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1187
1188#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
1189
1190#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
1191
1192#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
1193
1194#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
1195
1196#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
1197
1198#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
1199
1200#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
1201
1202#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
1203
1204#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1205
1206#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
1207
1208#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
1209
1210#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
1211
1212#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
1213#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
1214
1215#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1216
1217#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
1218
1219#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
1220
1221#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1222
1223#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
1224
1225#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1226
1227#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1228
1229#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
1230
1231#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
1232#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
1233
1234#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 )
1235
1236#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 )
1237
1238#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 )
1239
1240#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 )
1241
1242#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 )
1243
1244#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1245
1246#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1247
1248#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 )
1249
1250#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 )
1251
1252#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
1253
1254#define D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT ( 128 )
1255
1256#define D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL ( 12 )
1257
1258#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
1259
1260#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
1261
1262#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 )
1263
1264#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
1265
1266#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
1267
1268#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1269
1270#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
1271
1272#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
1273
1274#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
1275
1276#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
1277
1278#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
1279
1280#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1281
1282#define D3D12_REQ_MAXANISOTROPY ( 16 )
1283
1284#define D3D12_REQ_MIP_LEVELS ( 15 )
1285
1286#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
1287
1288#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1289
1290#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
1291
1292#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
1293
1294#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
1295#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
1296
1297#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
1298
1299#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1300
1301#define D3D12_REQ_SUBRESOURCES ( 30720 )
1302
1303#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
1304
1305#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
1306
1307#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
1308
1309#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
1310
1311#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
1312
1313#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
1314
1315#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
1316
1317#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
1318
1319#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
1320
1321#define D3D12_SDK_VERSION ( 618 )
1322
1323#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
1324
1325#define D3D12_SHADER_MAJOR_VERSION ( 5 )
1326
1327#define D3D12_SHADER_MAX_INSTANCES ( 65535 )
1328
1329#define D3D12_SHADER_MAX_INTERFACES ( 253 )
1330
1331#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
1332
1333#define D3D12_SHADER_MAX_TYPES ( 65535 )
1334
1335#define D3D12_SHADER_MINOR_VERSION ( 1 )
1336
1337#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
1338
1339#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
1340
1341#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
1342
1343#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
1344
1345#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
1346
1347#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
1348
1349#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
1350
1351#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
1352
1353#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
1354
1355#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
1356
1357#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
1358
1359#define D3D12_SO_STREAM_COUNT ( 4 )
1360
1361#define D3D12_SPEC_DATE_DAY ( 14 )
1362
1363#define D3D12_SPEC_DATE_MONTH ( 11 )
1364
1365#define D3D12_SPEC_DATE_YEAR ( 2014 )
1366
1367#define D3D12_SPEC_VERSION ( 1.16 )
1368#define D3D12_SRGB_GAMMA ( 2.2f )
1369#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
1370#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
1371#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
1372#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
1373#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
1374#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
1375#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
1376
1377#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
1378
1379#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
1380
1381#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
1382
1383#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
1384
1385#define D3D12_STANDARD_VECTOR_SIZE ( 4 )
1386
1387#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
1388
1389#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
1390
1391#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
1392
1393#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
1394
1395#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1396
1397#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
1398
1399#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
1400
1401#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
1402
1403#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
1404
1405#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
1406
1407#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
1408
1409#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
1410
1411#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
1412
1413#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1414
1415#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
1416
1417#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
1418
1419#define D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT ( 4096 )
1420
1421#define D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT ( 8 )
1422
1423#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
1424
1425#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
1426
1427#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
1428
1429#define D3D12_UAV_SLOT_COUNT ( 64 )
1430
1431#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
1432
1433#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 )
1434
1435#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 )
1436
1437#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 )
1438
1439#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 )
1440
1441#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff )
1442
1443#define D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX ( 0xff )
1444
1445#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS ( 64 )
1446
1447#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS ( 64 )
1448
1449#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN ( 9 )
1450
1451#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM ( 8 )
1452
1453#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 )
1454
1455#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 )
1456
1457#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
1458
1459#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
1460
1461#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
1462
1463#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
1464
1465#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
1466
1467#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1468
1469#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
1470
1471#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
1472
1473#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
1474
1475#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1476
1477#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1478
1479#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
1480
1481#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
1482
1483#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
1484
1485#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
1486
1487#define D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES ( 8 )
1488
1489#define D3D12_WORK_GRAPHS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID ( 16777215 )
1490
1491#define D3D12_WORK_GRAPHS_MAX_NODE_DEPTH ( 32 )
1492
1493#endif
1494
1495typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
1496
1497typedef
1498enum D3D12_COMMAND_LIST_TYPE
1499 {
1500 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
1501 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
1502 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
1503 D3D12_COMMAND_LIST_TYPE_COPY = 3,
1504 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
1505 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
1506 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
1507 D3D12_COMMAND_LIST_TYPE_NONE = -1
1508 } D3D12_COMMAND_LIST_TYPE;
1509
1510typedef
1511enum D3D12_COMMAND_QUEUE_FLAGS
1512 {
1513 D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
1514 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
1515 D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2
1516 } D3D12_COMMAND_QUEUE_FLAGS;
1517
1518DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )
1519typedef
1520enum D3D12_COMMAND_QUEUE_PRIORITY
1521 {
1522 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
1523 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
1524 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
1525 } D3D12_COMMAND_QUEUE_PRIORITY;
1526
1527typedef struct D3D12_COMMAND_QUEUE_DESC
1528 {
1529 D3D12_COMMAND_LIST_TYPE Type;
1530 INT Priority;
1531 D3D12_COMMAND_QUEUE_FLAGS Flags;
1532 UINT NodeMask;
1533 } D3D12_COMMAND_QUEUE_DESC;
1534
1535typedef
1536enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
1537 {
1538 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
1539 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
1540 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
1541 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
1542 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
1543 } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
1544
1545typedef
1546enum D3D12_INPUT_CLASSIFICATION
1547 {
1548 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
1549 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
1550 } D3D12_INPUT_CLASSIFICATION;
1551
1552typedef struct D3D12_INPUT_ELEMENT_DESC
1553 {
1554 LPCSTR SemanticName;
1555 UINT SemanticIndex;
1556 DXGI_FORMAT Format;
1557 UINT InputSlot;
1558 UINT AlignedByteOffset;
1559 D3D12_INPUT_CLASSIFICATION InputSlotClass;
1560 UINT InstanceDataStepRate;
1561 } D3D12_INPUT_ELEMENT_DESC;
1562
1563typedef
1564enum D3D12_FILL_MODE
1565 {
1566 D3D12_FILL_MODE_WIREFRAME = 2,
1567 D3D12_FILL_MODE_SOLID = 3
1568 } D3D12_FILL_MODE;
1569
1570typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
1571
1572typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
1573
1574typedef
1575enum D3D12_CULL_MODE
1576 {
1577 D3D12_CULL_MODE_NONE = 1,
1578 D3D12_CULL_MODE_FRONT = 2,
1579 D3D12_CULL_MODE_BACK = 3
1580 } D3D12_CULL_MODE;
1581
1582typedef struct D3D12_SO_DECLARATION_ENTRY
1583 {
1584 UINT Stream;
1585 LPCSTR SemanticName;
1586 UINT SemanticIndex;
1587 BYTE StartComponent;
1588 BYTE ComponentCount;
1589 BYTE OutputSlot;
1590 } D3D12_SO_DECLARATION_ENTRY;
1591
1592typedef struct D3D12_VIEWPORT
1593 {
1594 FLOAT TopLeftX;
1595 FLOAT TopLeftY;
1596 FLOAT Width;
1597 FLOAT Height;
1598 FLOAT MinDepth;
1599 FLOAT MaxDepth;
1600 } D3D12_VIEWPORT;
1601
1602typedef RECT D3D12_RECT;
1603
1604typedef struct D3D12_BOX
1605 {
1606 UINT left;
1607 UINT top;
1608 UINT front;
1609 UINT right;
1610 UINT bottom;
1611 UINT back;
1612 } D3D12_BOX;
1613
1614#ifdef __midl
1615#ifndef LUID_DEFINED
1616#define LUID_DEFINED 1
1617typedef struct __LUID
1618 {
1619 DWORD LowPart;
1620 LONG HighPart;
1621 } LUID;
1622
1623typedef struct __LUID *PLUID;
1624
1625#endif
1626#endif
1627typedef
1628enum D3D12_COMPARISON_FUNC
1629 {
1630 D3D12_COMPARISON_FUNC_NONE = 0,
1631 D3D12_COMPARISON_FUNC_NEVER = 1,
1632 D3D12_COMPARISON_FUNC_LESS = 2,
1633 D3D12_COMPARISON_FUNC_EQUAL = 3,
1634 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
1635 D3D12_COMPARISON_FUNC_GREATER = 5,
1636 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
1637 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
1638 D3D12_COMPARISON_FUNC_ALWAYS = 8
1639 } D3D12_COMPARISON_FUNC;
1640
1641typedef
1642enum D3D12_DEPTH_WRITE_MASK
1643 {
1644 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
1645 D3D12_DEPTH_WRITE_MASK_ALL = 1
1646 } D3D12_DEPTH_WRITE_MASK;
1647
1648typedef
1649enum D3D12_STENCIL_OP
1650 {
1651 D3D12_STENCIL_OP_KEEP = 1,
1652 D3D12_STENCIL_OP_ZERO = 2,
1653 D3D12_STENCIL_OP_REPLACE = 3,
1654 D3D12_STENCIL_OP_INCR_SAT = 4,
1655 D3D12_STENCIL_OP_DECR_SAT = 5,
1656 D3D12_STENCIL_OP_INVERT = 6,
1657 D3D12_STENCIL_OP_INCR = 7,
1658 D3D12_STENCIL_OP_DECR = 8
1659 } D3D12_STENCIL_OP;
1660
1661typedef struct D3D12_DEPTH_STENCILOP_DESC
1662 {
1663 D3D12_STENCIL_OP StencilFailOp;
1664 D3D12_STENCIL_OP StencilDepthFailOp;
1665 D3D12_STENCIL_OP StencilPassOp;
1666 D3D12_COMPARISON_FUNC StencilFunc;
1667 } D3D12_DEPTH_STENCILOP_DESC;
1668
1669typedef struct D3D12_DEPTH_STENCIL_DESC
1670 {
1671 BOOL DepthEnable;
1672 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1673 D3D12_COMPARISON_FUNC DepthFunc;
1674 BOOL StencilEnable;
1675 UINT8 StencilReadMask;
1676 UINT8 StencilWriteMask;
1677 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1678 D3D12_DEPTH_STENCILOP_DESC BackFace;
1679 } D3D12_DEPTH_STENCIL_DESC;
1680
1681typedef struct D3D12_DEPTH_STENCIL_DESC1
1682 {
1683 BOOL DepthEnable;
1684 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1685 D3D12_COMPARISON_FUNC DepthFunc;
1686 BOOL StencilEnable;
1687 UINT8 StencilReadMask;
1688 UINT8 StencilWriteMask;
1689 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1690 D3D12_DEPTH_STENCILOP_DESC BackFace;
1691 BOOL DepthBoundsTestEnable;
1692 } D3D12_DEPTH_STENCIL_DESC1;
1693
1694typedef struct D3D12_DEPTH_STENCILOP_DESC1
1695 {
1696 D3D12_STENCIL_OP StencilFailOp;
1697 D3D12_STENCIL_OP StencilDepthFailOp;
1698 D3D12_STENCIL_OP StencilPassOp;
1699 D3D12_COMPARISON_FUNC StencilFunc;
1700 UINT8 StencilReadMask;
1701 UINT8 StencilWriteMask;
1702 } D3D12_DEPTH_STENCILOP_DESC1;
1703
1704typedef struct D3D12_DEPTH_STENCIL_DESC2
1705 {
1706 BOOL DepthEnable;
1707 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1708 D3D12_COMPARISON_FUNC DepthFunc;
1709 BOOL StencilEnable;
1710 D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
1711 D3D12_DEPTH_STENCILOP_DESC1 BackFace;
1712 BOOL DepthBoundsTestEnable;
1713 } D3D12_DEPTH_STENCIL_DESC2;
1714
1715typedef
1716enum D3D12_BLEND
1717 {
1718 D3D12_BLEND_ZERO = 1,
1719 D3D12_BLEND_ONE = 2,
1720 D3D12_BLEND_SRC_COLOR = 3,
1721 D3D12_BLEND_INV_SRC_COLOR = 4,
1722 D3D12_BLEND_SRC_ALPHA = 5,
1723 D3D12_BLEND_INV_SRC_ALPHA = 6,
1724 D3D12_BLEND_DEST_ALPHA = 7,
1725 D3D12_BLEND_INV_DEST_ALPHA = 8,
1726 D3D12_BLEND_DEST_COLOR = 9,
1727 D3D12_BLEND_INV_DEST_COLOR = 10,
1728 D3D12_BLEND_SRC_ALPHA_SAT = 11,
1729 D3D12_BLEND_BLEND_FACTOR = 14,
1730 D3D12_BLEND_INV_BLEND_FACTOR = 15,
1731 D3D12_BLEND_SRC1_COLOR = 16,
1732 D3D12_BLEND_INV_SRC1_COLOR = 17,
1733 D3D12_BLEND_SRC1_ALPHA = 18,
1734 D3D12_BLEND_INV_SRC1_ALPHA = 19,
1735 D3D12_BLEND_ALPHA_FACTOR = 20,
1736 D3D12_BLEND_INV_ALPHA_FACTOR = 21
1737 } D3D12_BLEND;
1738
1739typedef
1740enum D3D12_BLEND_OP
1741 {
1742 D3D12_BLEND_OP_ADD = 1,
1743 D3D12_BLEND_OP_SUBTRACT = 2,
1744 D3D12_BLEND_OP_REV_SUBTRACT = 3,
1745 D3D12_BLEND_OP_MIN = 4,
1746 D3D12_BLEND_OP_MAX = 5
1747 } D3D12_BLEND_OP;
1748
1749typedef
1750enum D3D12_COLOR_WRITE_ENABLE
1751 {
1752 D3D12_COLOR_WRITE_ENABLE_RED = 1,
1753 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
1754 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
1755 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
1756 D3D12_COLOR_WRITE_ENABLE_ALL = ( ( ( D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN ) | D3D12_COLOR_WRITE_ENABLE_BLUE ) | D3D12_COLOR_WRITE_ENABLE_ALPHA )
1757 } D3D12_COLOR_WRITE_ENABLE;
1758
1759typedef
1760enum D3D12_LOGIC_OP
1761 {
1762 D3D12_LOGIC_OP_CLEAR = 0,
1763 D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
1764 D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
1765 D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
1766 D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
1767 D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
1768 D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
1769 D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
1770 D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
1771 D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
1772 D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
1773 D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
1774 D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
1775 D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
1776 D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
1777 D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
1778 } D3D12_LOGIC_OP;
1779
1780typedef struct D3D12_RENDER_TARGET_BLEND_DESC
1781 {
1782 BOOL BlendEnable;
1783 BOOL LogicOpEnable;
1784 D3D12_BLEND SrcBlend;
1785 D3D12_BLEND DestBlend;
1786 D3D12_BLEND_OP BlendOp;
1787 D3D12_BLEND SrcBlendAlpha;
1788 D3D12_BLEND DestBlendAlpha;
1789 D3D12_BLEND_OP BlendOpAlpha;
1790 D3D12_LOGIC_OP LogicOp;
1791 UINT8 RenderTargetWriteMask;
1792 } D3D12_RENDER_TARGET_BLEND_DESC;
1793
1794typedef struct D3D12_BLEND_DESC
1795 {
1796 BOOL AlphaToCoverageEnable;
1797 BOOL IndependentBlendEnable;
1798 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
1799 } D3D12_BLEND_DESC;
1800
1801/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
1802 IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
1803typedef
1804enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
1805 {
1806 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
1807 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
1808 } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
1809
1810typedef struct D3D12_RASTERIZER_DESC
1811 {
1812 D3D12_FILL_MODE FillMode;
1813 D3D12_CULL_MODE CullMode;
1814 BOOL FrontCounterClockwise;
1815 INT DepthBias;
1816 FLOAT DepthBiasClamp;
1817 FLOAT SlopeScaledDepthBias;
1818 BOOL DepthClipEnable;
1819 BOOL MultisampleEnable;
1820 BOOL AntialiasedLineEnable;
1821 UINT ForcedSampleCount;
1822 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1823 } D3D12_RASTERIZER_DESC;
1824
1825typedef struct D3D12_RASTERIZER_DESC1
1826 {
1827 D3D12_FILL_MODE FillMode;
1828 D3D12_CULL_MODE CullMode;
1829 BOOL FrontCounterClockwise;
1830 FLOAT DepthBias;
1831 FLOAT DepthBiasClamp;
1832 FLOAT SlopeScaledDepthBias;
1833 BOOL DepthClipEnable;
1834 BOOL MultisampleEnable;
1835 BOOL AntialiasedLineEnable;
1836 UINT ForcedSampleCount;
1837 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1838 } D3D12_RASTERIZER_DESC1;
1839
1840typedef
1841enum D3D12_LINE_RASTERIZATION_MODE
1842 {
1843 D3D12_LINE_RASTERIZATION_MODE_ALIASED = 0,
1844 D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED = ( D3D12_LINE_RASTERIZATION_MODE_ALIASED + 1 ) ,
1845 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE = ( D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED + 1 ) ,
1846 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW = ( D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE + 1 )
1847 } D3D12_LINE_RASTERIZATION_MODE;
1848
1849typedef struct D3D12_RASTERIZER_DESC2
1850 {
1851 D3D12_FILL_MODE FillMode;
1852 D3D12_CULL_MODE CullMode;
1853 BOOL FrontCounterClockwise;
1854 FLOAT DepthBias;
1855 FLOAT DepthBiasClamp;
1856 FLOAT SlopeScaledDepthBias;
1857 BOOL DepthClipEnable;
1858 D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
1859 UINT ForcedSampleCount;
1860 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1861 } D3D12_RASTERIZER_DESC2;
1862
1863
1864
1865extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
1866extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
1867
1868#ifndef __ID3D12Object_INTERFACE_DEFINED__
1869#define __ID3D12Object_INTERFACE_DEFINED__
1870
1871/* interface ID3D12Object */
1872/* [unique][local][object][uuid] */
1873
1874
1875EXTERN_C const IID IID_ID3D12Object;
1876
1877#if defined(__cplusplus) && !defined(CINTERFACE)
1878
1879 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
1880 ID3D12Object : public IUnknown
1881 {
1882 public:
1883 virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
1884 _In_ REFGUID guid,
1885 _Inout_ UINT *pDataSize,
1886 _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
1887
1888 virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
1889 _In_ REFGUID guid,
1890 _In_ UINT DataSize,
1891 _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
1892
1893 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
1894 _In_ REFGUID guid,
1895 _In_opt_ const IUnknown *pData) = 0;
1896
1897 virtual HRESULT STDMETHODCALLTYPE SetName(
1898 _In_z_ LPCWSTR Name) = 0;
1899
1900 };
1901
1902
1903#else /* C style interface */
1904
1905 typedef struct ID3D12ObjectVtbl
1906 {
1907 BEGIN_INTERFACE
1908
1909 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1910 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1911 ID3D12Object * This,
1912 REFIID riid,
1913 _COM_Outptr_ void **ppvObject);
1914
1915 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1916 ULONG ( STDMETHODCALLTYPE *AddRef )(
1917 ID3D12Object * This);
1918
1919 DECLSPEC_XFGVIRT(IUnknown, Release)
1920 ULONG ( STDMETHODCALLTYPE *Release )(
1921 ID3D12Object * This);
1922
1923 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1924 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1925 ID3D12Object * This,
1926 _In_ REFGUID guid,
1927 _Inout_ UINT *pDataSize,
1928 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1929
1930 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1931 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1932 ID3D12Object * This,
1933 _In_ REFGUID guid,
1934 _In_ UINT DataSize,
1935 _In_reads_bytes_opt_( DataSize ) const void *pData);
1936
1937 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1938 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1939 ID3D12Object * This,
1940 _In_ REFGUID guid,
1941 _In_opt_ const IUnknown *pData);
1942
1943 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1944 HRESULT ( STDMETHODCALLTYPE *SetName )(
1945 ID3D12Object * This,
1946 _In_z_ LPCWSTR Name);
1947
1948 END_INTERFACE
1949 } ID3D12ObjectVtbl;
1950
1951 interface ID3D12Object
1952 {
1953 CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
1954 };
1955
1956
1957
1958#ifdef COBJMACROS
1959
1960
1961#define ID3D12Object_QueryInterface(This,riid,ppvObject) \
1962 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1963
1964#define ID3D12Object_AddRef(This) \
1965 ( (This)->lpVtbl -> AddRef(This) )
1966
1967#define ID3D12Object_Release(This) \
1968 ( (This)->lpVtbl -> Release(This) )
1969
1970
1971#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
1972 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1973
1974#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
1975 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1976
1977#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
1978 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1979
1980#define ID3D12Object_SetName(This,Name) \
1981 ( (This)->lpVtbl -> SetName(This,Name) )
1982
1983#endif /* COBJMACROS */
1984
1985
1986#endif /* C style interface */
1987
1988
1989
1990
1991#endif /* __ID3D12Object_INTERFACE_DEFINED__ */
1992
1993
1994#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
1995#define __ID3D12DeviceChild_INTERFACE_DEFINED__
1996
1997/* interface ID3D12DeviceChild */
1998/* [unique][local][object][uuid] */
1999
2000
2001EXTERN_C const IID IID_ID3D12DeviceChild;
2002
2003#if defined(__cplusplus) && !defined(CINTERFACE)
2004
2005 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
2006 ID3D12DeviceChild : public ID3D12Object
2007 {
2008 public:
2009 virtual HRESULT STDMETHODCALLTYPE GetDevice(
2010 REFIID riid,
2011 _COM_Outptr_opt_ void **ppvDevice) = 0;
2012
2013 };
2014
2015
2016#else /* C style interface */
2017
2018 typedef struct ID3D12DeviceChildVtbl
2019 {
2020 BEGIN_INTERFACE
2021
2022 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2023 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2024 ID3D12DeviceChild * This,
2025 REFIID riid,
2026 _COM_Outptr_ void **ppvObject);
2027
2028 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2029 ULONG ( STDMETHODCALLTYPE *AddRef )(
2030 ID3D12DeviceChild * This);
2031
2032 DECLSPEC_XFGVIRT(IUnknown, Release)
2033 ULONG ( STDMETHODCALLTYPE *Release )(
2034 ID3D12DeviceChild * This);
2035
2036 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2037 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2038 ID3D12DeviceChild * This,
2039 _In_ REFGUID guid,
2040 _Inout_ UINT *pDataSize,
2041 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2042
2043 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2044 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2045 ID3D12DeviceChild * This,
2046 _In_ REFGUID guid,
2047 _In_ UINT DataSize,
2048 _In_reads_bytes_opt_( DataSize ) const void *pData);
2049
2050 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2051 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2052 ID3D12DeviceChild * This,
2053 _In_ REFGUID guid,
2054 _In_opt_ const IUnknown *pData);
2055
2056 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2057 HRESULT ( STDMETHODCALLTYPE *SetName )(
2058 ID3D12DeviceChild * This,
2059 _In_z_ LPCWSTR Name);
2060
2061 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2062 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2063 ID3D12DeviceChild * This,
2064 REFIID riid,
2065 _COM_Outptr_opt_ void **ppvDevice);
2066
2067 END_INTERFACE
2068 } ID3D12DeviceChildVtbl;
2069
2070 interface ID3D12DeviceChild
2071 {
2072 CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
2073 };
2074
2075
2076
2077#ifdef COBJMACROS
2078
2079
2080#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
2081 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2082
2083#define ID3D12DeviceChild_AddRef(This) \
2084 ( (This)->lpVtbl -> AddRef(This) )
2085
2086#define ID3D12DeviceChild_Release(This) \
2087 ( (This)->lpVtbl -> Release(This) )
2088
2089
2090#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
2091 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2092
2093#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
2094 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2095
2096#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
2097 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2098
2099#define ID3D12DeviceChild_SetName(This,Name) \
2100 ( (This)->lpVtbl -> SetName(This,Name) )
2101
2102
2103#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
2104 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2105
2106#endif /* COBJMACROS */
2107
2108
2109#endif /* C style interface */
2110
2111
2112
2113
2114#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
2115
2116
2117#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
2118#define __ID3D12RootSignature_INTERFACE_DEFINED__
2119
2120/* interface ID3D12RootSignature */
2121/* [unique][local][object][uuid] */
2122
2123
2124EXTERN_C const IID IID_ID3D12RootSignature;
2125
2126#if defined(__cplusplus) && !defined(CINTERFACE)
2127
2128 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
2129 ID3D12RootSignature : public ID3D12DeviceChild
2130 {
2131 public:
2132 };
2133
2134
2135#else /* C style interface */
2136
2137 typedef struct ID3D12RootSignatureVtbl
2138 {
2139 BEGIN_INTERFACE
2140
2141 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2142 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2143 ID3D12RootSignature * This,
2144 REFIID riid,
2145 _COM_Outptr_ void **ppvObject);
2146
2147 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2148 ULONG ( STDMETHODCALLTYPE *AddRef )(
2149 ID3D12RootSignature * This);
2150
2151 DECLSPEC_XFGVIRT(IUnknown, Release)
2152 ULONG ( STDMETHODCALLTYPE *Release )(
2153 ID3D12RootSignature * This);
2154
2155 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2156 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2157 ID3D12RootSignature * This,
2158 _In_ REFGUID guid,
2159 _Inout_ UINT *pDataSize,
2160 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2161
2162 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2163 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2164 ID3D12RootSignature * This,
2165 _In_ REFGUID guid,
2166 _In_ UINT DataSize,
2167 _In_reads_bytes_opt_( DataSize ) const void *pData);
2168
2169 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2170 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2171 ID3D12RootSignature * This,
2172 _In_ REFGUID guid,
2173 _In_opt_ const IUnknown *pData);
2174
2175 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2176 HRESULT ( STDMETHODCALLTYPE *SetName )(
2177 ID3D12RootSignature * This,
2178 _In_z_ LPCWSTR Name);
2179
2180 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2181 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2182 ID3D12RootSignature * This,
2183 REFIID riid,
2184 _COM_Outptr_opt_ void **ppvDevice);
2185
2186 END_INTERFACE
2187 } ID3D12RootSignatureVtbl;
2188
2189 interface ID3D12RootSignature
2190 {
2191 CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
2192 };
2193
2194
2195
2196#ifdef COBJMACROS
2197
2198
2199#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
2200 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2201
2202#define ID3D12RootSignature_AddRef(This) \
2203 ( (This)->lpVtbl -> AddRef(This) )
2204
2205#define ID3D12RootSignature_Release(This) \
2206 ( (This)->lpVtbl -> Release(This) )
2207
2208
2209#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
2210 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2211
2212#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
2213 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2214
2215#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
2216 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2217
2218#define ID3D12RootSignature_SetName(This,Name) \
2219 ( (This)->lpVtbl -> SetName(This,Name) )
2220
2221
2222#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
2223 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2224
2225
2226#endif /* COBJMACROS */
2227
2228
2229#endif /* C style interface */
2230
2231
2232
2233
2234#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
2235
2236
2237/* interface __MIDL_itf_d3d12_0000_0001 */
2238/* [local] */
2239
2240typedef struct D3D12_SHADER_BYTECODE
2241 {
2242 _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
2243 SIZE_T BytecodeLength;
2244 } D3D12_SHADER_BYTECODE;
2245
2246typedef struct D3D12_STREAM_OUTPUT_DESC
2247 {
2248 _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
2249 UINT NumEntries;
2250 _Field_size_full_(NumStrides) const UINT *pBufferStrides;
2251 UINT NumStrides;
2252 UINT RasterizedStream;
2253 } D3D12_STREAM_OUTPUT_DESC;
2254
2255typedef struct D3D12_INPUT_LAYOUT_DESC
2256 {
2257 _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
2258 UINT NumElements;
2259 } D3D12_INPUT_LAYOUT_DESC;
2260
2261typedef
2262enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
2263 {
2264 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
2265 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
2266 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
2267 } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
2268
2269typedef
2270enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
2271 {
2272 D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
2273 D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
2274 } D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
2275
2276typedef struct D3D12_CACHED_PIPELINE_STATE
2277 {
2278 _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
2279 SIZE_T CachedBlobSizeInBytes;
2280 } D3D12_CACHED_PIPELINE_STATE;
2281
2282typedef
2283enum D3D12_PIPELINE_STATE_FLAGS
2284 {
2285 D3D12_PIPELINE_STATE_FLAG_NONE = 0,
2286 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
2287 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
2288 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8
2289 } D3D12_PIPELINE_STATE_FLAGS;
2290
2291DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )
2292typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
2293 {
2294 ID3D12RootSignature *pRootSignature;
2295 D3D12_SHADER_BYTECODE VS;
2296 D3D12_SHADER_BYTECODE PS;
2297 D3D12_SHADER_BYTECODE DS;
2298 D3D12_SHADER_BYTECODE HS;
2299 D3D12_SHADER_BYTECODE GS;
2300 D3D12_STREAM_OUTPUT_DESC StreamOutput;
2301 D3D12_BLEND_DESC BlendState;
2302 UINT SampleMask;
2303 D3D12_RASTERIZER_DESC RasterizerState;
2304 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
2305 D3D12_INPUT_LAYOUT_DESC InputLayout;
2306 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
2307 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
2308 UINT NumRenderTargets;
2309 DXGI_FORMAT RTVFormats[ 8 ];
2310 DXGI_FORMAT DSVFormat;
2311 DXGI_SAMPLE_DESC SampleDesc;
2312 UINT NodeMask;
2313 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2314 D3D12_PIPELINE_STATE_FLAGS Flags;
2315 } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
2316
2317typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
2318 {
2319 ID3D12RootSignature *pRootSignature;
2320 D3D12_SHADER_BYTECODE CS;
2321 UINT NodeMask;
2322 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2323 D3D12_PIPELINE_STATE_FLAGS Flags;
2324 } D3D12_COMPUTE_PIPELINE_STATE_DESC;
2325
2326typedef
2327enum D3D_ROOT_SIGNATURE_VERSION
2328 {
2329 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
2330 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2331 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
2332 D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3
2333 } D3D_ROOT_SIGNATURE_VERSION;
2334
2335typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
2336 {
2337 _Field_size_bytes_full_(SerializedBlobSizeInBytes) const void *pSerializedBlob;
2338 SIZE_T SerializedBlobSizeInBytes;
2339 } D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
2340
2341typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
2342 {
2343 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
2344 } D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
2345
2346typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
2347 {
2348 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
2349 } D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
2350
2351struct D3D12_RT_FORMAT_ARRAY
2352 {
2353 DXGI_FORMAT RTFormats[ 8 ];
2354 UINT NumRenderTargets;
2355 } ;
2356typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
2357 {
2358 _In_ SIZE_T SizeInBytes;
2359 _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
2360 } D3D12_PIPELINE_STATE_STREAM_DESC;
2361
2362typedef
2363enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
2364 {
2365 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
2366 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
2367 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
2368 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
2369 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
2370 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
2371 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
2372 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
2373 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
2374 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
2375 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
2376 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
2377 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
2378 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
2379 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
2380 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
2381 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
2382 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
2383 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
2384 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
2385 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
2386 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
2387 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
2388 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24,
2389 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25,
2390 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26,
2391 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27,
2392 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28,
2393 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29,
2394 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE + 1 )
2395 } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
2396
2397typedef
2398enum D3D12_FEATURE
2399 {
2400 D3D12_FEATURE_D3D12_OPTIONS = 0,
2401 D3D12_FEATURE_ARCHITECTURE = 1,
2402 D3D12_FEATURE_FEATURE_LEVELS = 2,
2403 D3D12_FEATURE_FORMAT_SUPPORT = 3,
2404 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
2405 D3D12_FEATURE_FORMAT_INFO = 5,
2406 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
2407 D3D12_FEATURE_SHADER_MODEL = 7,
2408 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
2409 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
2410 D3D12_FEATURE_ROOT_SIGNATURE = 12,
2411 D3D12_FEATURE_ARCHITECTURE1 = 16,
2412 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
2413 D3D12_FEATURE_SHADER_CACHE = 19,
2414 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
2415 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
2416 D3D12_FEATURE_EXISTING_HEAPS = 22,
2417 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
2418 D3D12_FEATURE_SERIALIZATION = 24,
2419 D3D12_FEATURE_CROSS_NODE = 25,
2420 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
2421 D3D12_FEATURE_DISPLAYABLE = 28,
2422 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
2423 D3D12_FEATURE_QUERY_META_COMMAND = 31,
2424 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
2425 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
2426 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
2427 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
2428 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
2429 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
2430 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
2431 D3D12_FEATURE_D3D12_OPTIONS12 = 41,
2432 D3D12_FEATURE_D3D12_OPTIONS13 = 42,
2433 D3D12_FEATURE_D3D12_OPTIONS14 = 43,
2434 D3D12_FEATURE_D3D12_OPTIONS15 = 44,
2435 D3D12_FEATURE_D3D12_OPTIONS16 = 45,
2436 D3D12_FEATURE_D3D12_OPTIONS17 = 46,
2437 D3D12_FEATURE_D3D12_OPTIONS18 = 47,
2438 D3D12_FEATURE_D3D12_OPTIONS19 = 48,
2439 D3D12_FEATURE_D3D12_OPTIONS20 = 49,
2440 D3D12_FEATURE_PREDICATION = 50,
2441 D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
2442 D3D12_FEATURE_HARDWARE_COPY = 52,
2443 D3D12_FEATURE_D3D12_OPTIONS21 = 53,
2444 D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
2445 D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
2446 D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
2447 D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61
2448 } D3D12_FEATURE;
2449
2450typedef
2451enum D3D12_SHADER_MIN_PRECISION_SUPPORT
2452 {
2453 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
2454 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
2455 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
2456 } D3D12_SHADER_MIN_PRECISION_SUPPORT;
2457
2458DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )
2459typedef
2460enum D3D12_TILED_RESOURCES_TIER
2461 {
2462 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
2463 D3D12_TILED_RESOURCES_TIER_1 = 1,
2464 D3D12_TILED_RESOURCES_TIER_2 = 2,
2465 D3D12_TILED_RESOURCES_TIER_3 = 3,
2466 D3D12_TILED_RESOURCES_TIER_4 = 4
2467 } D3D12_TILED_RESOURCES_TIER;
2468
2469typedef
2470enum D3D12_RESOURCE_BINDING_TIER
2471 {
2472 D3D12_RESOURCE_BINDING_TIER_1 = 1,
2473 D3D12_RESOURCE_BINDING_TIER_2 = 2,
2474 D3D12_RESOURCE_BINDING_TIER_3 = 3
2475 } D3D12_RESOURCE_BINDING_TIER;
2476
2477typedef
2478enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
2479 {
2480 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
2481 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
2482 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
2483 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
2484 } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
2485
2486typedef
2487enum D3D12_FORMAT_SUPPORT1
2488 {
2489 D3D12_FORMAT_SUPPORT1_NONE = 0,
2490 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
2491 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
2492 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
2493 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
2494 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
2495 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
2496 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
2497 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
2498 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
2499 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
2500 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
2501 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
2502 D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
2503 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
2504 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
2505 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
2506 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
2507 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
2508 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
2509 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
2510 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
2511 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
2512 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
2513 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
2514 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
2515 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
2516 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
2517 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
2518 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
2519 } D3D12_FORMAT_SUPPORT1;
2520
2521DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )
2522typedef
2523enum D3D12_FORMAT_SUPPORT2
2524 {
2525 D3D12_FORMAT_SUPPORT2_NONE = 0,
2526 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
2527 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
2528 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
2529 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
2530 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
2531 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
2532 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
2533 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
2534 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
2535 D3D12_FORMAT_SUPPORT2_TILED = 0x200,
2536 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
2537 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000,
2538 D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x10000
2539 } D3D12_FORMAT_SUPPORT2;
2540
2541DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )
2542typedef
2543enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
2544 {
2545 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
2546 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
2547 } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
2548
2549DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )
2550typedef
2551enum D3D12_CROSS_NODE_SHARING_TIER
2552 {
2553 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
2554 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
2555 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
2556 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
2557 D3D12_CROSS_NODE_SHARING_TIER_3 = 4
2558 } D3D12_CROSS_NODE_SHARING_TIER;
2559
2560typedef
2561enum D3D12_RESOURCE_HEAP_TIER
2562 {
2563 D3D12_RESOURCE_HEAP_TIER_1 = 1,
2564 D3D12_RESOURCE_HEAP_TIER_2 = 2
2565 } D3D12_RESOURCE_HEAP_TIER;
2566
2567typedef
2568enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
2569 {
2570 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
2571 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
2572 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
2573 } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
2574
2575typedef
2576enum D3D12_VIEW_INSTANCING_TIER
2577 {
2578 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
2579 D3D12_VIEW_INSTANCING_TIER_1 = 1,
2580 D3D12_VIEW_INSTANCING_TIER_2 = 2,
2581 D3D12_VIEW_INSTANCING_TIER_3 = 3
2582 } D3D12_VIEW_INSTANCING_TIER;
2583
2584typedef
2585enum D3D12_WORK_GRAPHS_TIER
2586 {
2587 D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
2588 D3D12_WORK_GRAPHS_TIER_1_0 = 10
2589 } D3D12_WORK_GRAPHS_TIER;
2590
2591typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
2592 {
2593 _Out_ BOOL DoublePrecisionFloatShaderOps;
2594 _Out_ BOOL OutputMergerLogicOp;
2595 _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
2596 _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
2597 _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
2598 _Out_ BOOL PSSpecifiedStencilRefSupported;
2599 _Out_ BOOL TypedUAVLoadAdditionalFormats;
2600 _Out_ BOOL ROVsSupported;
2601 _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
2602 _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
2603 _Out_ BOOL StandardSwizzle64KBSupported;
2604 _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
2605 _Out_ BOOL CrossAdapterRowMajorTextureSupported;
2606 _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
2607 _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
2608 } D3D12_FEATURE_DATA_D3D12_OPTIONS;
2609
2610typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
2611 {
2612 _Out_ BOOL WaveOps;
2613 _Out_ UINT WaveLaneCountMin;
2614 _Out_ UINT WaveLaneCountMax;
2615 _Out_ UINT TotalLaneCount;
2616 _Out_ BOOL ExpandedComputeResourceStates;
2617 _Out_ BOOL Int64ShaderOps;
2618 } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
2619
2620typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
2621 {
2622 _Out_ BOOL DepthBoundsTestSupported;
2623 _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
2624 } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
2625
2626typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
2627 {
2628 _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
2629 } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
2630
2631typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
2632 {
2633 _In_ UINT NodeIndex;
2634 _Out_ BOOL TileBasedRenderer;
2635 _Out_ BOOL UMA;
2636 _Out_ BOOL CacheCoherentUMA;
2637 } D3D12_FEATURE_DATA_ARCHITECTURE;
2638
2639typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
2640 {
2641 _In_ UINT NodeIndex;
2642 _Out_ BOOL TileBasedRenderer;
2643 _Out_ BOOL UMA;
2644 _Out_ BOOL CacheCoherentUMA;
2645 _Out_ BOOL IsolatedMMU;
2646 } D3D12_FEATURE_DATA_ARCHITECTURE1;
2647
2648typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
2649 {
2650 _In_ UINT NumFeatureLevels;
2651 _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
2652 _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
2653 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
2654
2655typedef
2656enum D3D_SHADER_MODEL
2657 {
2658 D3D_SHADER_MODEL_NONE = 0,
2659 D3D_SHADER_MODEL_5_1 = 0x51,
2660 D3D_SHADER_MODEL_6_0 = 0x60,
2661 D3D_SHADER_MODEL_6_1 = 0x61,
2662 D3D_SHADER_MODEL_6_2 = 0x62,
2663 D3D_SHADER_MODEL_6_3 = 0x63,
2664 D3D_SHADER_MODEL_6_4 = 0x64,
2665 D3D_SHADER_MODEL_6_5 = 0x65,
2666 D3D_SHADER_MODEL_6_6 = 0x66,
2667 D3D_SHADER_MODEL_6_7 = 0x67,
2668 D3D_SHADER_MODEL_6_8 = 0x68,
2669 D3D_SHADER_MODEL_6_9 = 0x69,
2670 D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
2671 } D3D_SHADER_MODEL;
2672
2673typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
2674 {
2675 _Inout_ D3D_SHADER_MODEL HighestShaderModel;
2676 } D3D12_FEATURE_DATA_SHADER_MODEL;
2677
2678typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
2679 {
2680 _In_ DXGI_FORMAT Format;
2681 _Out_ D3D12_FORMAT_SUPPORT1 Support1;
2682 _Out_ D3D12_FORMAT_SUPPORT2 Support2;
2683 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
2684
2685typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
2686 {
2687 _In_ DXGI_FORMAT Format;
2688 _In_ UINT SampleCount;
2689 _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
2690 _Out_ UINT NumQualityLevels;
2691 } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
2692
2693typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
2694 {
2695 DXGI_FORMAT Format;
2696 UINT8 PlaneCount;
2697 } D3D12_FEATURE_DATA_FORMAT_INFO;
2698
2699typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
2700 {
2701 UINT MaxGPUVirtualAddressBitsPerResource;
2702 UINT MaxGPUVirtualAddressBitsPerProcess;
2703 } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
2704
2705typedef
2706enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
2707 {
2708 D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
2709 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
2710 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
2711 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
2712 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
2713 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
2714 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
2715 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
2716 } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
2717
2718DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )
2719typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
2720 {
2721 _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
2722 } D3D12_FEATURE_DATA_SHADER_CACHE;
2723
2724typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
2725 {
2726 _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
2727 _In_ UINT Priority;
2728 _Out_ BOOL PriorityForTypeIsSupported;
2729 } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
2730
2731typedef
2732enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
2733 {
2734 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0,
2735 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
2736 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
2737 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
2738 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) ,
2739 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
2740 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
2741 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
2742 } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
2743
2744DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )
2745typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
2746 {
2747 _Out_ BOOL CopyQueueTimestampQueriesSupported;
2748 _Out_ BOOL CastingFullyTypedFormatSupported;
2749 _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
2750 _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
2751 _Out_ BOOL BarycentricsSupported;
2752 } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
2753
2754typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
2755 {
2756 _Out_ BOOL Supported;
2757 } D3D12_FEATURE_DATA_EXISTING_HEAPS;
2758
2759typedef
2760enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
2761 {
2762 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0,
2763 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) ,
2764 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 + 1 )
2765 } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
2766
2767typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
2768 {
2769 _Out_ BOOL DisplayableTexture;
2770 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2771 } D3D12_FEATURE_DATA_DISPLAYABLE;
2772
2773typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
2774 {
2775 _Out_ BOOL MSAA64KBAlignedTextureSupported;
2776 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2777 _Out_ BOOL Native16BitShaderOpsSupported;
2778 } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
2779
2780typedef
2781enum D3D12_HEAP_SERIALIZATION_TIER
2782 {
2783 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
2784 D3D12_HEAP_SERIALIZATION_TIER_10 = 10
2785 } D3D12_HEAP_SERIALIZATION_TIER;
2786
2787typedef struct D3D12_FEATURE_DATA_SERIALIZATION
2788 {
2789 _In_ UINT NodeIndex;
2790 _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
2791 } D3D12_FEATURE_DATA_SERIALIZATION;
2792
2793typedef struct D3D12_FEATURE_DATA_CROSS_NODE
2794 {
2795 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
2796 BOOL AtomicShaderInstructions;
2797 } D3D12_FEATURE_DATA_CROSS_NODE;
2798
2799typedef
2800enum D3D12_RENDER_PASS_TIER
2801 {
2802 D3D12_RENDER_PASS_TIER_0 = 0,
2803 D3D12_RENDER_PASS_TIER_1 = 1,
2804 D3D12_RENDER_PASS_TIER_2 = 2
2805 } D3D12_RENDER_PASS_TIER;
2806
2807typedef
2808enum D3D12_RAYTRACING_TIER
2809 {
2810 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
2811 D3D12_RAYTRACING_TIER_1_0 = 10,
2812 D3D12_RAYTRACING_TIER_1_1 = 11,
2813 D3D12_RAYTRACING_TIER_1_2 = 12
2814 } D3D12_RAYTRACING_TIER;
2815
2816typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
2817 {
2818 _Out_ BOOL SRVOnlyTiledResourceTier3;
2819 _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier;
2820 _Out_ D3D12_RAYTRACING_TIER RaytracingTier;
2821 } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
2822
2823typedef
2824enum D3D12_VARIABLE_SHADING_RATE_TIER
2825 {
2826 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
2827 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
2828 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2
2829 } D3D12_VARIABLE_SHADING_RATE_TIER;
2830
2831typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
2832 {
2833 _Out_ BOOL AdditionalShadingRatesSupported;
2834 _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
2835 _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
2836 _Out_ UINT ShadingRateImageTileSize;
2837 _Out_ BOOL BackgroundProcessingSupported;
2838 } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
2839
2840typedef
2841enum D3D12_MESH_SHADER_TIER
2842 {
2843 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
2844 D3D12_MESH_SHADER_TIER_1 = 10
2845 } D3D12_MESH_SHADER_TIER;
2846
2847typedef
2848enum D3D12_SAMPLER_FEEDBACK_TIER
2849 {
2850 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
2851 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
2852 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
2853 } D3D12_SAMPLER_FEEDBACK_TIER;
2854
2855typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
2856 {
2857 _Out_ D3D12_MESH_SHADER_TIER MeshShaderTier;
2858 _Out_ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
2859 } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
2860
2861typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
2862 {
2863 _In_ GUID CommandId;
2864 _In_ UINT NodeMask;
2865 _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData;
2866 _In_ SIZE_T QueryInputDataSizeInBytes;
2867 _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData;
2868 _In_ SIZE_T QueryOutputDataSizeInBytes;
2869 } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
2870
2871typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
2872 {
2873 _Out_ BOOL UnalignedBlockTexturesSupported;
2874 } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
2875
2876typedef
2877enum D3D12_WAVE_MMA_TIER
2878 {
2879 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
2880 D3D12_WAVE_MMA_TIER_1_0 = 10
2881 } D3D12_WAVE_MMA_TIER;
2882
2883typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
2884 {
2885 _Out_ BOOL MeshShaderPipelineStatsSupported;
2886 _Out_ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
2887 _Out_ BOOL AtomicInt64OnTypedResourceSupported;
2888 _Out_ BOOL AtomicInt64OnGroupSharedSupported;
2889 _Out_ BOOL DerivativesInMeshAndAmplificationShadersSupported;
2890 _Out_ D3D12_WAVE_MMA_TIER WaveMMATier;
2891 } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
2892
2893typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
2894 {
2895 _Out_ BOOL VariableRateShadingSumCombinerSupported;
2896 _Out_ BOOL MeshShaderPerPrimitiveShadingRateSupported;
2897 } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
2898
2899typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
2900 {
2901 _Out_ BOOL AtomicInt64OnDescriptorHeapResourceSupported;
2902 } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
2903
2904typedef
2905enum D3D12_TRI_STATE
2906 {
2907 D3D12_TRI_STATE_UNKNOWN = -1,
2908 D3D12_TRI_STATE_FALSE = 0,
2909 D3D12_TRI_STATE_TRUE = 1
2910 } D3D12_TRI_STATE;
2911
2912typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
2913 {
2914 _Out_ D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
2915 _Out_ BOOL EnhancedBarriersSupported;
2916 _Out_ BOOL RelaxedFormatCastingSupported;
2917 } D3D12_FEATURE_DATA_D3D12_OPTIONS12;
2918
2919typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
2920 {
2921 _Out_ BOOL UnrestrictedBufferTextureCopyPitchSupported;
2922 _Out_ BOOL UnrestrictedVertexElementAlignmentSupported;
2923 _Out_ BOOL InvertedViewportHeightFlipsYSupported;
2924 _Out_ BOOL InvertedViewportDepthFlipsZSupported;
2925 _Out_ BOOL TextureCopyBetweenDimensionsSupported;
2926 _Out_ BOOL AlphaBlendFactorSupported;
2927 } D3D12_FEATURE_DATA_D3D12_OPTIONS13;
2928
2929typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
2930 {
2931 _Out_ BOOL AdvancedTextureOpsSupported;
2932 _Out_ BOOL WriteableMSAATexturesSupported;
2933 _Out_ BOOL IndependentFrontAndBackStencilRefMaskSupported;
2934 } D3D12_FEATURE_DATA_D3D12_OPTIONS14;
2935
2936typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
2937 {
2938 _Out_ BOOL TriangleFanSupported;
2939 _Out_ BOOL DynamicIndexBufferStripCutSupported;
2940 } D3D12_FEATURE_DATA_D3D12_OPTIONS15;
2941
2942typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
2943 {
2944 _Out_ BOOL DynamicDepthBiasSupported;
2945 _Out_ BOOL GPUUploadHeapSupported;
2946 } D3D12_FEATURE_DATA_D3D12_OPTIONS16;
2947
2948typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
2949 {
2950 _Out_ BOOL NonNormalizedCoordinateSamplersSupported;
2951 _Out_ BOOL ManualWriteTrackingResourceSupported;
2952 } D3D12_FEATURE_DATA_D3D12_OPTIONS17;
2953
2954typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
2955 {
2956 _Out_ BOOL RenderPassesValid;
2957 } D3D12_FEATURE_DATA_D3D12_OPTIONS18;
2958
2959typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
2960 {
2961 BOOL MismatchingOutputDimensionsSupported;
2962 UINT SupportedSampleCountsWithNoOutputs;
2963 BOOL PointSamplingAddressesNeverRoundUp;
2964 BOOL RasterizerDesc2Supported;
2965 BOOL NarrowQuadrilateralLinesSupported;
2966 BOOL AnisoFilterWithPointMipSupported;
2967 UINT MaxSamplerDescriptorHeapSize;
2968 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
2969 UINT MaxViewDescriptorHeapSize;
2970 _Out_ BOOL ComputeOnlyCustomHeapSupported;
2971 } D3D12_FEATURE_DATA_D3D12_OPTIONS19;
2972
2973typedef
2974enum D3D12_RECREATE_AT_TIER
2975 {
2976 D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
2977 D3D12_RECREATE_AT_TIER_1 = 1
2978 } D3D12_RECREATE_AT_TIER;
2979
2980typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
2981 {
2982 _Out_ BOOL ComputeOnlyWriteWatchSupported;
2983 D3D12_RECREATE_AT_TIER RecreateAtTier;
2984 } D3D12_FEATURE_DATA_D3D12_OPTIONS20;
2985
2986typedef
2987enum D3D12_EXECUTE_INDIRECT_TIER
2988 {
2989 D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
2990 D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11
2991 } D3D12_EXECUTE_INDIRECT_TIER;
2992
2993typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
2994 {
2995 _Out_ D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
2996 _Out_ D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
2997 _Out_ BOOL SampleCmpGradientAndBiasSupported;
2998 _Out_ BOOL ExtendedCommandInfoSupported;
2999 } D3D12_FEATURE_DATA_D3D12_OPTIONS21;
3000
3001typedef
3002enum D3D12_TIGHT_ALIGNMENT_TIER
3003 {
3004 D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED = 0,
3005 D3D12_TIGHT_ALIGNMENT_TIER_1 = ( D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED + 1 )
3006 } D3D12_TIGHT_ALIGNMENT_TIER;
3007
3008typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
3009 {
3010 _Out_ D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
3011 } D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
3012
3013typedef struct D3D12_FEATURE_DATA_PREDICATION
3014 {
3015 _Out_ BOOL Supported;
3016 } D3D12_FEATURE_DATA_PREDICATION;
3017
3018typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
3019 {
3020 _Out_ BOOL Supported;
3021 } D3D12_FEATURE_DATA_HARDWARE_COPY;
3022
3023typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
3024 {
3025 _Out_ BOOL Supported;
3026 } D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
3027
3028typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
3029 {
3030 _Out_ BOOL Supported;
3031 } D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
3032
3033typedef struct D3D12_RESOURCE_ALLOCATION_INFO
3034 {
3035 UINT64 SizeInBytes;
3036 UINT64 Alignment;
3037 } D3D12_RESOURCE_ALLOCATION_INFO;
3038
3039typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
3040 {
3041 UINT64 Offset;
3042 UINT64 Alignment;
3043 UINT64 SizeInBytes;
3044 } D3D12_RESOURCE_ALLOCATION_INFO1;
3045
3046typedef
3047enum D3D12_HEAP_TYPE
3048 {
3049 D3D12_HEAP_TYPE_DEFAULT = 1,
3050 D3D12_HEAP_TYPE_UPLOAD = 2,
3051 D3D12_HEAP_TYPE_READBACK = 3,
3052 D3D12_HEAP_TYPE_CUSTOM = 4,
3053 D3D12_HEAP_TYPE_GPU_UPLOAD = 5
3054 } D3D12_HEAP_TYPE;
3055
3056typedef
3057enum D3D12_CPU_PAGE_PROPERTY
3058 {
3059 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
3060 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
3061 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
3062 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
3063 } D3D12_CPU_PAGE_PROPERTY;
3064
3065typedef
3066enum D3D12_MEMORY_POOL
3067 {
3068 D3D12_MEMORY_POOL_UNKNOWN = 0,
3069 D3D12_MEMORY_POOL_L0 = 1,
3070 D3D12_MEMORY_POOL_L1 = 2
3071 } D3D12_MEMORY_POOL;
3072
3073typedef struct D3D12_HEAP_PROPERTIES
3074 {
3075 D3D12_HEAP_TYPE Type;
3076 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
3077 D3D12_MEMORY_POOL MemoryPoolPreference;
3078 UINT CreationNodeMask;
3079 UINT VisibleNodeMask;
3080 } D3D12_HEAP_PROPERTIES;
3081
3082typedef
3083enum D3D12_HEAP_FLAGS
3084 {
3085 D3D12_HEAP_FLAG_NONE = 0,
3086 D3D12_HEAP_FLAG_SHARED = 0x1,
3087 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
3088 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
3089 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
3090 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
3091 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
3092 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
3093 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
3094 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
3095 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
3096 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
3097 D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
3098 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
3099 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
3100 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
3101 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
3102 } D3D12_HEAP_FLAGS;
3103
3104DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )
3105typedef struct D3D12_HEAP_DESC
3106 {
3107 UINT64 SizeInBytes;
3108 D3D12_HEAP_PROPERTIES Properties;
3109 UINT64 Alignment;
3110 D3D12_HEAP_FLAGS Flags;
3111 } D3D12_HEAP_DESC;
3112
3113typedef
3114enum D3D12_RESOURCE_DIMENSION
3115 {
3116 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
3117 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
3118 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
3119 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
3120 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
3121 } D3D12_RESOURCE_DIMENSION;
3122
3123typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
3124 {
3125 _In_ DXGI_FORMAT Format;
3126 _In_ D3D12_RESOURCE_DIMENSION Dimension;
3127 _In_ D3D12_HEAP_PROPERTIES DestHeapProperties;
3128 _Out_ BOOL Supported;
3129 } D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
3130
3131typedef
3132enum D3D12_TEXTURE_LAYOUT
3133 {
3134 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
3135 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
3136 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
3137 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
3138 } D3D12_TEXTURE_LAYOUT;
3139
3140typedef
3141enum D3D12_RESOURCE_FLAGS
3142 {
3143 D3D12_RESOURCE_FLAG_NONE = 0,
3144 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
3145 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
3146 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
3147 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
3148 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
3149 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
3150 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
3151 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
3152 D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
3153 D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400
3154 } D3D12_RESOURCE_FLAGS;
3155
3156DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )
3157typedef struct D3D12_MIP_REGION
3158 {
3159 UINT Width;
3160 UINT Height;
3161 UINT Depth;
3162 } D3D12_MIP_REGION;
3163
3164typedef struct D3D12_RESOURCE_DESC
3165 {
3166 D3D12_RESOURCE_DIMENSION Dimension;
3167 UINT64 Alignment;
3168 UINT64 Width;
3169 UINT Height;
3170 UINT16 DepthOrArraySize;
3171 UINT16 MipLevels;
3172 DXGI_FORMAT Format;
3173 DXGI_SAMPLE_DESC SampleDesc;
3174 D3D12_TEXTURE_LAYOUT Layout;
3175 D3D12_RESOURCE_FLAGS Flags;
3176 } D3D12_RESOURCE_DESC;
3177
3178typedef struct D3D12_RESOURCE_DESC1
3179 {
3180 D3D12_RESOURCE_DIMENSION Dimension;
3181 UINT64 Alignment;
3182 UINT64 Width;
3183 UINT Height;
3184 UINT16 DepthOrArraySize;
3185 UINT16 MipLevels;
3186 DXGI_FORMAT Format;
3187 DXGI_SAMPLE_DESC SampleDesc;
3188 D3D12_TEXTURE_LAYOUT Layout;
3189 D3D12_RESOURCE_FLAGS Flags;
3190 D3D12_MIP_REGION SamplerFeedbackMipRegion;
3191 } D3D12_RESOURCE_DESC1;
3192
3193typedef struct D3D12_DEPTH_STENCIL_VALUE
3194 {
3195 FLOAT Depth;
3196 UINT8 Stencil;
3197 } D3D12_DEPTH_STENCIL_VALUE;
3198
3199typedef struct D3D12_CLEAR_VALUE
3200 {
3201 DXGI_FORMAT Format;
3202 union
3203 {
3204 FLOAT Color[ 4 ];
3205 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
3206 } ;
3207 } D3D12_CLEAR_VALUE;
3208
3209typedef struct D3D12_RANGE
3210 {
3211 SIZE_T Begin;
3212 SIZE_T End;
3213 } D3D12_RANGE;
3214
3215typedef struct D3D12_RANGE_UINT64
3216 {
3217 UINT64 Begin;
3218 UINT64 End;
3219 } D3D12_RANGE_UINT64;
3220
3221typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
3222 {
3223 UINT Subresource;
3224 D3D12_RANGE_UINT64 Range;
3225 } D3D12_SUBRESOURCE_RANGE_UINT64;
3226
3227typedef struct D3D12_SUBRESOURCE_INFO
3228 {
3229 UINT64 Offset;
3230 UINT RowPitch;
3231 UINT DepthPitch;
3232 } D3D12_SUBRESOURCE_INFO;
3233
3234typedef struct D3D12_TILED_RESOURCE_COORDINATE
3235 {
3236 UINT X;
3237 UINT Y;
3238 UINT Z;
3239 UINT Subresource;
3240 } D3D12_TILED_RESOURCE_COORDINATE;
3241
3242typedef struct D3D12_TILE_REGION_SIZE
3243 {
3244 UINT NumTiles;
3245 BOOL UseBox;
3246 UINT Width;
3247 UINT16 Height;
3248 UINT16 Depth;
3249 } D3D12_TILE_REGION_SIZE;
3250
3251typedef
3252enum D3D12_TILE_RANGE_FLAGS
3253 {
3254 D3D12_TILE_RANGE_FLAG_NONE = 0,
3255 D3D12_TILE_RANGE_FLAG_NULL = 1,
3256 D3D12_TILE_RANGE_FLAG_SKIP = 2,
3257 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
3258 } D3D12_TILE_RANGE_FLAGS;
3259
3260typedef struct D3D12_SUBRESOURCE_TILING
3261 {
3262 UINT WidthInTiles;
3263 UINT16 HeightInTiles;
3264 UINT16 DepthInTiles;
3265 UINT StartTileIndexInOverallResource;
3266 } D3D12_SUBRESOURCE_TILING;
3267
3268typedef struct D3D12_TILE_SHAPE
3269 {
3270 UINT WidthInTexels;
3271 UINT HeightInTexels;
3272 UINT DepthInTexels;
3273 } D3D12_TILE_SHAPE;
3274
3275typedef struct D3D12_PACKED_MIP_INFO
3276 {
3277 UINT8 NumStandardMips;
3278 UINT8 NumPackedMips;
3279 UINT NumTilesForPackedMips;
3280 UINT StartTileIndexInOverallResource;
3281 } D3D12_PACKED_MIP_INFO;
3282
3283typedef
3284enum D3D12_TILE_MAPPING_FLAGS
3285 {
3286 D3D12_TILE_MAPPING_FLAG_NONE = 0,
3287 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
3288 } D3D12_TILE_MAPPING_FLAGS;
3289
3290DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )
3291typedef
3292enum D3D12_TILE_COPY_FLAGS
3293 {
3294 D3D12_TILE_COPY_FLAG_NONE = 0,
3295 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
3296 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
3297 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
3298 } D3D12_TILE_COPY_FLAGS;
3299
3300DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )
3301typedef
3302enum D3D12_RESOURCE_STATES
3303 {
3304 D3D12_RESOURCE_STATE_COMMON = 0,
3305 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
3306 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
3307 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
3308 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
3309 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
3310 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
3311 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
3312 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
3313 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
3314 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
3315 D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
3316 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
3317 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
3318 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
3319 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
3320 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
3321 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
3322 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
3323 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
3324 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
3325 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
3326 D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
3327 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = ( 0x40 | 0x80 ) ,
3328 D3D12_RESOURCE_STATE_PRESENT = 0,
3329 D3D12_RESOURCE_STATE_PREDICATION = 0x200,
3330 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
3331 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
3332 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
3333 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
3334 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
3335 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
3336 } D3D12_RESOURCE_STATES;
3337
3338DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )
3339typedef
3340enum D3D12_RESOURCE_BARRIER_TYPE
3341 {
3342 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
3343 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
3344 D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
3345 } D3D12_RESOURCE_BARRIER_TYPE;
3346
3347
3348typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
3349 {
3350 ID3D12Resource *pResource;
3351 UINT Subresource;
3352 D3D12_RESOURCE_STATES StateBefore;
3353 D3D12_RESOURCE_STATES StateAfter;
3354 } D3D12_RESOURCE_TRANSITION_BARRIER;
3355
3356typedef struct D3D12_RESOURCE_ALIASING_BARRIER
3357 {
3358 ID3D12Resource *pResourceBefore;
3359 ID3D12Resource *pResourceAfter;
3360 } D3D12_RESOURCE_ALIASING_BARRIER;
3361
3362typedef struct D3D12_RESOURCE_UAV_BARRIER
3363 {
3364 ID3D12Resource *pResource;
3365 } D3D12_RESOURCE_UAV_BARRIER;
3366
3367typedef
3368enum D3D12_RESOURCE_BARRIER_FLAGS
3369 {
3370 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
3371 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
3372 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
3373 } D3D12_RESOURCE_BARRIER_FLAGS;
3374
3375DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )
3376typedef struct D3D12_RESOURCE_BARRIER
3377 {
3378 D3D12_RESOURCE_BARRIER_TYPE Type;
3379 D3D12_RESOURCE_BARRIER_FLAGS Flags;
3380 union
3381 {
3382 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
3383 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
3384 D3D12_RESOURCE_UAV_BARRIER UAV;
3385 } ;
3386 } D3D12_RESOURCE_BARRIER;
3387
3388typedef struct D3D12_SUBRESOURCE_FOOTPRINT
3389 {
3390 DXGI_FORMAT Format;
3391 UINT Width;
3392 UINT Height;
3393 UINT Depth;
3394 UINT RowPitch;
3395 } D3D12_SUBRESOURCE_FOOTPRINT;
3396
3397typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
3398 {
3399 UINT64 Offset;
3400 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
3401 } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
3402
3403typedef
3404enum D3D12_TEXTURE_COPY_TYPE
3405 {
3406 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
3407 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
3408 } D3D12_TEXTURE_COPY_TYPE;
3409
3410typedef struct D3D12_TEXTURE_COPY_LOCATION
3411 {
3412 ID3D12Resource *pResource;
3413 D3D12_TEXTURE_COPY_TYPE Type;
3414 union
3415 {
3416 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
3417 UINT SubresourceIndex;
3418 } ;
3419 } D3D12_TEXTURE_COPY_LOCATION;
3420
3421typedef
3422enum D3D12_RESOLVE_MODE
3423 {
3424 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
3425 D3D12_RESOLVE_MODE_MIN = 1,
3426 D3D12_RESOLVE_MODE_MAX = 2,
3427 D3D12_RESOLVE_MODE_AVERAGE = 3,
3428 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
3429 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
3430 } D3D12_RESOLVE_MODE;
3431
3432typedef struct D3D12_SAMPLE_POSITION
3433 {
3434 INT8 X;
3435 INT8 Y;
3436 } D3D12_SAMPLE_POSITION;
3437
3438typedef struct D3D12_VIEW_INSTANCE_LOCATION
3439 {
3440 UINT ViewportArrayIndex;
3441 UINT RenderTargetArrayIndex;
3442 } D3D12_VIEW_INSTANCE_LOCATION;
3443
3444typedef
3445enum D3D12_VIEW_INSTANCING_FLAGS
3446 {
3447 D3D12_VIEW_INSTANCING_FLAG_NONE = 0,
3448 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
3449 } D3D12_VIEW_INSTANCING_FLAGS;
3450
3451DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )
3452typedef struct D3D12_VIEW_INSTANCING_DESC
3453 {
3454 UINT ViewInstanceCount;
3455 _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
3456 D3D12_VIEW_INSTANCING_FLAGS Flags;
3457 } D3D12_VIEW_INSTANCING_DESC;
3458
3459typedef
3460enum D3D12_SHADER_COMPONENT_MAPPING
3461 {
3462 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
3463 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
3464 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
3465 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
3466 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
3467 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
3468 } D3D12_SHADER_COMPONENT_MAPPING;
3469
3470#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
3471#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
3472#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
3473#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
3474 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
3475 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
3476 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
3477 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
3478#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))
3479#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
3480typedef
3481enum D3D12_BUFFER_SRV_FLAGS
3482 {
3483 D3D12_BUFFER_SRV_FLAG_NONE = 0,
3484 D3D12_BUFFER_SRV_FLAG_RAW = 0x1
3485 } D3D12_BUFFER_SRV_FLAGS;
3486
3487DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )
3488typedef struct D3D12_BUFFER_SRV
3489 {
3490 UINT64 FirstElement;
3491 UINT NumElements;
3492 UINT StructureByteStride;
3493 D3D12_BUFFER_SRV_FLAGS Flags;
3494 } D3D12_BUFFER_SRV;
3495
3496typedef struct D3D12_TEX1D_SRV
3497 {
3498 UINT MostDetailedMip;
3499 UINT MipLevels;
3500 FLOAT ResourceMinLODClamp;
3501 } D3D12_TEX1D_SRV;
3502
3503typedef struct D3D12_TEX1D_ARRAY_SRV
3504 {
3505 UINT MostDetailedMip;
3506 UINT MipLevels;
3507 UINT FirstArraySlice;
3508 UINT ArraySize;
3509 FLOAT ResourceMinLODClamp;
3510 } D3D12_TEX1D_ARRAY_SRV;
3511
3512typedef struct D3D12_TEX2D_SRV
3513 {
3514 UINT MostDetailedMip;
3515 UINT MipLevels;
3516 UINT PlaneSlice;
3517 FLOAT ResourceMinLODClamp;
3518 } D3D12_TEX2D_SRV;
3519
3520typedef struct D3D12_TEX2D_ARRAY_SRV
3521 {
3522 UINT MostDetailedMip;
3523 UINT MipLevels;
3524 UINT FirstArraySlice;
3525 UINT ArraySize;
3526 UINT PlaneSlice;
3527 FLOAT ResourceMinLODClamp;
3528 } D3D12_TEX2D_ARRAY_SRV;
3529
3530typedef struct D3D12_TEX3D_SRV
3531 {
3532 UINT MostDetailedMip;
3533 UINT MipLevels;
3534 FLOAT ResourceMinLODClamp;
3535 } D3D12_TEX3D_SRV;
3536
3537typedef struct D3D12_TEXCUBE_SRV
3538 {
3539 UINT MostDetailedMip;
3540 UINT MipLevels;
3541 FLOAT ResourceMinLODClamp;
3542 } D3D12_TEXCUBE_SRV;
3543
3544typedef struct D3D12_TEXCUBE_ARRAY_SRV
3545 {
3546 UINT MostDetailedMip;
3547 UINT MipLevels;
3548 UINT First2DArrayFace;
3549 UINT NumCubes;
3550 FLOAT ResourceMinLODClamp;
3551 } D3D12_TEXCUBE_ARRAY_SRV;
3552
3553typedef struct D3D12_TEX2DMS_SRV
3554 {
3555 UINT UnusedField_NothingToDefine;
3556 } D3D12_TEX2DMS_SRV;
3557
3558typedef struct D3D12_TEX2DMS_ARRAY_SRV
3559 {
3560 UINT FirstArraySlice;
3561 UINT ArraySize;
3562 } D3D12_TEX2DMS_ARRAY_SRV;
3563
3564typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
3565 {
3566 D3D12_GPU_VIRTUAL_ADDRESS Location;
3567 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
3568
3569typedef
3570enum D3D12_SRV_DIMENSION
3571 {
3572 D3D12_SRV_DIMENSION_UNKNOWN = 0,
3573 D3D12_SRV_DIMENSION_BUFFER = 1,
3574 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
3575 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
3576 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
3577 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
3578 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
3579 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
3580 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
3581 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
3582 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
3583 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
3584 } D3D12_SRV_DIMENSION;
3585
3586typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
3587 {
3588 DXGI_FORMAT Format;
3589 D3D12_SRV_DIMENSION ViewDimension;
3590 UINT Shader4ComponentMapping;
3591 union
3592 {
3593 D3D12_BUFFER_SRV Buffer;
3594 D3D12_TEX1D_SRV Texture1D;
3595 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
3596 D3D12_TEX2D_SRV Texture2D;
3597 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
3598 D3D12_TEX2DMS_SRV Texture2DMS;
3599 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
3600 D3D12_TEX3D_SRV Texture3D;
3601 D3D12_TEXCUBE_SRV TextureCube;
3602 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
3603 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
3604 } ;
3605 } D3D12_SHADER_RESOURCE_VIEW_DESC;
3606
3607typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
3608 {
3609 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3610 UINT SizeInBytes;
3611 } D3D12_CONSTANT_BUFFER_VIEW_DESC;
3612
3613typedef
3614enum D3D12_FILTER
3615 {
3616 D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
3617 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
3618 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
3619 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
3620 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
3621 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
3622 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
3623 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
3624 D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x54,
3625 D3D12_FILTER_ANISOTROPIC = 0x55,
3626 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
3627 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
3628 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
3629 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
3630 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
3631 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
3632 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
3633 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
3634 D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0xd4,
3635 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
3636 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
3637 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
3638 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
3639 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
3640 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
3641 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
3642 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
3643 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
3644 D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x154,
3645 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
3646 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
3647 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
3648 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
3649 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
3650 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
3651 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
3652 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
3653 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
3654 D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x1d4,
3655 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
3656 } D3D12_FILTER;
3657
3658typedef
3659enum D3D12_FILTER_TYPE
3660 {
3661 D3D12_FILTER_TYPE_POINT = 0,
3662 D3D12_FILTER_TYPE_LINEAR = 1
3663 } D3D12_FILTER_TYPE;
3664
3665typedef
3666enum D3D12_FILTER_REDUCTION_TYPE
3667 {
3668 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
3669 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
3670 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
3671 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
3672 } D3D12_FILTER_REDUCTION_TYPE;
3673
3674#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
3675
3676#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
3677
3678#define D3D12_FILTER_TYPE_MASK ( 0x3 )
3679
3680#define D3D12_MIN_FILTER_SHIFT ( 4 )
3681
3682#define D3D12_MAG_FILTER_SHIFT ( 2 )
3683
3684#define D3D12_MIP_FILTER_SHIFT ( 0 )
3685
3686#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
3687
3688#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
3689 ( ( D3D12_FILTER ) ( \
3690 ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
3691 ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
3692 ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
3693 ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
3694#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
3695 ( ( D3D12_FILTER ) ( \
3696 D3D12_ANISOTROPIC_FILTERING_BIT | \
3697 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3698 D3D12_FILTER_TYPE_LINEAR, \
3699 D3D12_FILTER_TYPE_LINEAR, \
3700 reduction ) ) )
3701#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \
3702 ( ( D3D12_FILTER ) ( \
3703 D3D12_ANISOTROPIC_FILTERING_BIT | \
3704 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3705 D3D12_FILTER_TYPE_LINEAR, \
3706 D3D12_FILTER_TYPE_POINT, \
3707 reduction ) ) )
3708#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
3709 ( ( D3D12_FILTER_TYPE ) \
3710 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3711#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
3712 ( ( D3D12_FILTER_TYPE ) \
3713 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3714#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
3715 ( ( D3D12_FILTER_TYPE ) \
3716 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3717#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
3718 ( ( D3D12_FILTER_REDUCTION_TYPE ) \
3719 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
3720#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
3721 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
3722#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
3723 ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
3724 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
3725 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) )
3726typedef
3727enum D3D12_TEXTURE_ADDRESS_MODE
3728 {
3729 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
3730 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
3731 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
3732 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
3733 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
3734 } D3D12_TEXTURE_ADDRESS_MODE;
3735
3736typedef struct D3D12_SAMPLER_DESC
3737 {
3738 D3D12_FILTER Filter;
3739 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3740 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3741 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3742 FLOAT MipLODBias;
3743 UINT MaxAnisotropy;
3744 D3D12_COMPARISON_FUNC ComparisonFunc;
3745 FLOAT BorderColor[ 4 ];
3746 FLOAT MinLOD;
3747 FLOAT MaxLOD;
3748 } D3D12_SAMPLER_DESC;
3749
3750typedef
3751enum D3D12_SAMPLER_FLAGS
3752 {
3753 D3D12_SAMPLER_FLAG_NONE = 0,
3754 D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x1,
3755 D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x2
3756 } D3D12_SAMPLER_FLAGS;
3757
3758DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )
3759typedef struct D3D12_SAMPLER_DESC2
3760 {
3761 D3D12_FILTER Filter;
3762 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3763 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3764 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3765 FLOAT MipLODBias;
3766 UINT MaxAnisotropy;
3767 D3D12_COMPARISON_FUNC ComparisonFunc;
3768 union
3769 {
3770 FLOAT FloatBorderColor[ 4 ];
3771 UINT UintBorderColor[ 4 ];
3772 } ;
3773 FLOAT MinLOD;
3774 FLOAT MaxLOD;
3775 D3D12_SAMPLER_FLAGS Flags;
3776 } D3D12_SAMPLER_DESC2;
3777
3778typedef
3779enum D3D12_BUFFER_UAV_FLAGS
3780 {
3781 D3D12_BUFFER_UAV_FLAG_NONE = 0,
3782 D3D12_BUFFER_UAV_FLAG_RAW = 0x1
3783 } D3D12_BUFFER_UAV_FLAGS;
3784
3785DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )
3786typedef struct D3D12_BUFFER_UAV
3787 {
3788 UINT64 FirstElement;
3789 UINT NumElements;
3790 UINT StructureByteStride;
3791 UINT64 CounterOffsetInBytes;
3792 D3D12_BUFFER_UAV_FLAGS Flags;
3793 } D3D12_BUFFER_UAV;
3794
3795typedef struct D3D12_TEX1D_UAV
3796 {
3797 UINT MipSlice;
3798 } D3D12_TEX1D_UAV;
3799
3800typedef struct D3D12_TEX1D_ARRAY_UAV
3801 {
3802 UINT MipSlice;
3803 UINT FirstArraySlice;
3804 UINT ArraySize;
3805 } D3D12_TEX1D_ARRAY_UAV;
3806
3807typedef struct D3D12_TEX2D_UAV
3808 {
3809 UINT MipSlice;
3810 UINT PlaneSlice;
3811 } D3D12_TEX2D_UAV;
3812
3813typedef struct D3D12_TEX2D_ARRAY_UAV
3814 {
3815 UINT MipSlice;
3816 UINT FirstArraySlice;
3817 UINT ArraySize;
3818 UINT PlaneSlice;
3819 } D3D12_TEX2D_ARRAY_UAV;
3820
3821typedef struct D3D12_TEX2DMS_UAV
3822 {
3823 UINT UnusedField_NothingToDefine;
3824 } D3D12_TEX2DMS_UAV;
3825
3826typedef struct D3D12_TEX2DMS_ARRAY_UAV
3827 {
3828 UINT FirstArraySlice;
3829 UINT ArraySize;
3830 } D3D12_TEX2DMS_ARRAY_UAV;
3831
3832typedef struct D3D12_TEX3D_UAV
3833 {
3834 UINT MipSlice;
3835 UINT FirstWSlice;
3836 UINT WSize;
3837 } D3D12_TEX3D_UAV;
3838
3839typedef
3840enum D3D12_UAV_DIMENSION
3841 {
3842 D3D12_UAV_DIMENSION_UNKNOWN = 0,
3843 D3D12_UAV_DIMENSION_BUFFER = 1,
3844 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
3845 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
3846 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
3847 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
3848 D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
3849 D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
3850 D3D12_UAV_DIMENSION_TEXTURE3D = 8
3851 } D3D12_UAV_DIMENSION;
3852
3853typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
3854 {
3855 DXGI_FORMAT Format;
3856 D3D12_UAV_DIMENSION ViewDimension;
3857 union
3858 {
3859 D3D12_BUFFER_UAV Buffer;
3860 D3D12_TEX1D_UAV Texture1D;
3861 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
3862 D3D12_TEX2D_UAV Texture2D;
3863 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
3864 D3D12_TEX2DMS_UAV Texture2DMS;
3865 D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
3866 D3D12_TEX3D_UAV Texture3D;
3867 } ;
3868 } D3D12_UNORDERED_ACCESS_VIEW_DESC;
3869
3870typedef struct D3D12_BUFFER_RTV
3871 {
3872 UINT64 FirstElement;
3873 UINT NumElements;
3874 } D3D12_BUFFER_RTV;
3875
3876typedef struct D3D12_TEX1D_RTV
3877 {
3878 UINT MipSlice;
3879 } D3D12_TEX1D_RTV;
3880
3881typedef struct D3D12_TEX1D_ARRAY_RTV
3882 {
3883 UINT MipSlice;
3884 UINT FirstArraySlice;
3885 UINT ArraySize;
3886 } D3D12_TEX1D_ARRAY_RTV;
3887
3888typedef struct D3D12_TEX2D_RTV
3889 {
3890 UINT MipSlice;
3891 UINT PlaneSlice;
3892 } D3D12_TEX2D_RTV;
3893
3894typedef struct D3D12_TEX2DMS_RTV
3895 {
3896 UINT UnusedField_NothingToDefine;
3897 } D3D12_TEX2DMS_RTV;
3898
3899typedef struct D3D12_TEX2D_ARRAY_RTV
3900 {
3901 UINT MipSlice;
3902 UINT FirstArraySlice;
3903 UINT ArraySize;
3904 UINT PlaneSlice;
3905 } D3D12_TEX2D_ARRAY_RTV;
3906
3907typedef struct D3D12_TEX2DMS_ARRAY_RTV
3908 {
3909 UINT FirstArraySlice;
3910 UINT ArraySize;
3911 } D3D12_TEX2DMS_ARRAY_RTV;
3912
3913typedef struct D3D12_TEX3D_RTV
3914 {
3915 UINT MipSlice;
3916 UINT FirstWSlice;
3917 UINT WSize;
3918 } D3D12_TEX3D_RTV;
3919
3920typedef
3921enum D3D12_RTV_DIMENSION
3922 {
3923 D3D12_RTV_DIMENSION_UNKNOWN = 0,
3924 D3D12_RTV_DIMENSION_BUFFER = 1,
3925 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
3926 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
3927 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
3928 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
3929 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
3930 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
3931 D3D12_RTV_DIMENSION_TEXTURE3D = 8
3932 } D3D12_RTV_DIMENSION;
3933
3934typedef struct D3D12_RENDER_TARGET_VIEW_DESC
3935 {
3936 DXGI_FORMAT Format;
3937 D3D12_RTV_DIMENSION ViewDimension;
3938 union
3939 {
3940 D3D12_BUFFER_RTV Buffer;
3941 D3D12_TEX1D_RTV Texture1D;
3942 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
3943 D3D12_TEX2D_RTV Texture2D;
3944 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
3945 D3D12_TEX2DMS_RTV Texture2DMS;
3946 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
3947 D3D12_TEX3D_RTV Texture3D;
3948 } ;
3949 } D3D12_RENDER_TARGET_VIEW_DESC;
3950
3951typedef struct D3D12_TEX1D_DSV
3952 {
3953 UINT MipSlice;
3954 } D3D12_TEX1D_DSV;
3955
3956typedef struct D3D12_TEX1D_ARRAY_DSV
3957 {
3958 UINT MipSlice;
3959 UINT FirstArraySlice;
3960 UINT ArraySize;
3961 } D3D12_TEX1D_ARRAY_DSV;
3962
3963typedef struct D3D12_TEX2D_DSV
3964 {
3965 UINT MipSlice;
3966 } D3D12_TEX2D_DSV;
3967
3968typedef struct D3D12_TEX2D_ARRAY_DSV
3969 {
3970 UINT MipSlice;
3971 UINT FirstArraySlice;
3972 UINT ArraySize;
3973 } D3D12_TEX2D_ARRAY_DSV;
3974
3975typedef struct D3D12_TEX2DMS_DSV
3976 {
3977 UINT UnusedField_NothingToDefine;
3978 } D3D12_TEX2DMS_DSV;
3979
3980typedef struct D3D12_TEX2DMS_ARRAY_DSV
3981 {
3982 UINT FirstArraySlice;
3983 UINT ArraySize;
3984 } D3D12_TEX2DMS_ARRAY_DSV;
3985
3986typedef
3987enum D3D12_DSV_FLAGS
3988 {
3989 D3D12_DSV_FLAG_NONE = 0,
3990 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
3991 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
3992 } D3D12_DSV_FLAGS;
3993
3994DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )
3995typedef
3996enum D3D12_DSV_DIMENSION
3997 {
3998 D3D12_DSV_DIMENSION_UNKNOWN = 0,
3999 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
4000 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
4001 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
4002 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
4003 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
4004 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
4005 } D3D12_DSV_DIMENSION;
4006
4007typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
4008 {
4009 DXGI_FORMAT Format;
4010 D3D12_DSV_DIMENSION ViewDimension;
4011 D3D12_DSV_FLAGS Flags;
4012 union
4013 {
4014 D3D12_TEX1D_DSV Texture1D;
4015 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
4016 D3D12_TEX2D_DSV Texture2D;
4017 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
4018 D3D12_TEX2DMS_DSV Texture2DMS;
4019 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
4020 } ;
4021 } D3D12_DEPTH_STENCIL_VIEW_DESC;
4022
4023typedef
4024enum D3D12_CLEAR_FLAGS
4025 {
4026 D3D12_CLEAR_FLAG_DEPTH = 0x1,
4027 D3D12_CLEAR_FLAG_STENCIL = 0x2
4028 } D3D12_CLEAR_FLAGS;
4029
4030DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )
4031typedef
4032enum D3D12_FENCE_FLAGS
4033 {
4034 D3D12_FENCE_FLAG_NONE = 0,
4035 D3D12_FENCE_FLAG_SHARED = 0x1,
4036 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
4037 D3D12_FENCE_FLAG_NON_MONITORED = 0x4
4038 } D3D12_FENCE_FLAGS;
4039
4040DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )
4041typedef
4042enum D3D12_DESCRIPTOR_HEAP_TYPE
4043 {
4044 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
4045 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
4046 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
4047 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
4048 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
4049 } D3D12_DESCRIPTOR_HEAP_TYPE;
4050
4051typedef
4052enum D3D12_DESCRIPTOR_HEAP_FLAGS
4053 {
4054 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
4055 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
4056 } D3D12_DESCRIPTOR_HEAP_FLAGS;
4057
4058DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )
4059typedef struct D3D12_DESCRIPTOR_HEAP_DESC
4060 {
4061 D3D12_DESCRIPTOR_HEAP_TYPE Type;
4062 UINT NumDescriptors;
4063 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
4064 UINT NodeMask;
4065 } D3D12_DESCRIPTOR_HEAP_DESC;
4066
4067typedef
4068enum D3D12_DESCRIPTOR_RANGE_TYPE
4069 {
4070 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
4071 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
4072 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
4073 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
4074 } D3D12_DESCRIPTOR_RANGE_TYPE;
4075
4076typedef struct D3D12_DESCRIPTOR_RANGE
4077 {
4078 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
4079 UINT NumDescriptors;
4080 UINT BaseShaderRegister;
4081 UINT RegisterSpace;
4082 UINT OffsetInDescriptorsFromTableStart;
4083 } D3D12_DESCRIPTOR_RANGE;
4084
4085typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
4086 {
4087 UINT NumDescriptorRanges;
4088 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
4089 } D3D12_ROOT_DESCRIPTOR_TABLE;
4090
4091typedef struct D3D12_ROOT_CONSTANTS
4092 {
4093 UINT ShaderRegister;
4094 UINT RegisterSpace;
4095 UINT Num32BitValues;
4096 } D3D12_ROOT_CONSTANTS;
4097
4098typedef struct D3D12_ROOT_DESCRIPTOR
4099 {
4100 UINT ShaderRegister;
4101 UINT RegisterSpace;
4102 } D3D12_ROOT_DESCRIPTOR;
4103
4104typedef
4105enum D3D12_SHADER_VISIBILITY
4106 {
4107 D3D12_SHADER_VISIBILITY_ALL = 0,
4108 D3D12_SHADER_VISIBILITY_VERTEX = 1,
4109 D3D12_SHADER_VISIBILITY_HULL = 2,
4110 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
4111 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
4112 D3D12_SHADER_VISIBILITY_PIXEL = 5,
4113 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
4114 D3D12_SHADER_VISIBILITY_MESH = 7
4115 } D3D12_SHADER_VISIBILITY;
4116
4117typedef
4118enum D3D12_ROOT_PARAMETER_TYPE
4119 {
4120 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
4121 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
4122 D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
4123 D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
4124 D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
4125 } D3D12_ROOT_PARAMETER_TYPE;
4126
4127typedef struct D3D12_ROOT_PARAMETER
4128 {
4129 D3D12_ROOT_PARAMETER_TYPE ParameterType;
4130 union
4131 {
4132 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
4133 D3D12_ROOT_CONSTANTS Constants;
4134 D3D12_ROOT_DESCRIPTOR Descriptor;
4135 } ;
4136 D3D12_SHADER_VISIBILITY ShaderVisibility;
4137 } D3D12_ROOT_PARAMETER;
4138
4139typedef
4140enum D3D12_ROOT_SIGNATURE_FLAGS
4141 {
4142 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
4143 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
4144 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
4145 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
4146 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
4147 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
4148 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
4149 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
4150 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
4151 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
4152 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
4153 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
4154 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
4155 } D3D12_ROOT_SIGNATURE_FLAGS;
4156
4157DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )
4158typedef
4159enum D3D12_STATIC_BORDER_COLOR
4160 {
4161 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
4162 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
4163 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 ) ,
4164 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE + 1 ) ,
4165 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT + 1 )
4166 } D3D12_STATIC_BORDER_COLOR;
4167
4168typedef struct D3D12_STATIC_SAMPLER_DESC
4169 {
4170 D3D12_FILTER Filter;
4171 D3D12_TEXTURE_ADDRESS_MODE AddressU;
4172 D3D12_TEXTURE_ADDRESS_MODE AddressV;
4173 D3D12_TEXTURE_ADDRESS_MODE AddressW;
4174 FLOAT MipLODBias;
4175 UINT MaxAnisotropy;
4176 D3D12_COMPARISON_FUNC ComparisonFunc;
4177 D3D12_STATIC_BORDER_COLOR BorderColor;
4178 FLOAT MinLOD;
4179 FLOAT MaxLOD;
4180 UINT ShaderRegister;
4181 UINT RegisterSpace;
4182 D3D12_SHADER_VISIBILITY ShaderVisibility;
4183 } D3D12_STATIC_SAMPLER_DESC;
4184
4185typedef struct D3D12_STATIC_SAMPLER_DESC1
4186 {
4187 D3D12_FILTER Filter;
4188 D3D12_TEXTURE_ADDRESS_MODE AddressU;
4189 D3D12_TEXTURE_ADDRESS_MODE AddressV;
4190 D3D12_TEXTURE_ADDRESS_MODE AddressW;
4191 FLOAT MipLODBias;
4192 UINT MaxAnisotropy;
4193 D3D12_COMPARISON_FUNC ComparisonFunc;
4194 D3D12_STATIC_BORDER_COLOR BorderColor;
4195 FLOAT MinLOD;
4196 FLOAT MaxLOD;
4197 UINT ShaderRegister;
4198 UINT RegisterSpace;
4199 D3D12_SHADER_VISIBILITY ShaderVisibility;
4200 D3D12_SAMPLER_FLAGS Flags;
4201 } D3D12_STATIC_SAMPLER_DESC1;
4202
4203typedef struct D3D12_ROOT_SIGNATURE_DESC
4204 {
4205 UINT NumParameters;
4206 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
4207 UINT NumStaticSamplers;
4208 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
4209 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4210 } D3D12_ROOT_SIGNATURE_DESC;
4211
4212typedef
4213enum D3D12_DESCRIPTOR_RANGE_FLAGS
4214 {
4215 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
4216 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
4217 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
4218 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
4219 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
4220 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
4221 } D3D12_DESCRIPTOR_RANGE_FLAGS;
4222
4223DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )
4224typedef struct D3D12_DESCRIPTOR_RANGE1
4225 {
4226 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
4227 UINT NumDescriptors;
4228 UINT BaseShaderRegister;
4229 UINT RegisterSpace;
4230 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
4231 UINT OffsetInDescriptorsFromTableStart;
4232 } D3D12_DESCRIPTOR_RANGE1;
4233
4234typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
4235 {
4236 UINT NumDescriptorRanges;
4237 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
4238 } D3D12_ROOT_DESCRIPTOR_TABLE1;
4239
4240typedef
4241enum D3D12_ROOT_DESCRIPTOR_FLAGS
4242 {
4243 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
4244 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
4245 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
4246 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
4247 } D3D12_ROOT_DESCRIPTOR_FLAGS;
4248
4249DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )
4250typedef struct D3D12_ROOT_DESCRIPTOR1
4251 {
4252 UINT ShaderRegister;
4253 UINT RegisterSpace;
4254 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
4255 } D3D12_ROOT_DESCRIPTOR1;
4256
4257typedef struct D3D12_ROOT_PARAMETER1
4258 {
4259 D3D12_ROOT_PARAMETER_TYPE ParameterType;
4260 union
4261 {
4262 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
4263 D3D12_ROOT_CONSTANTS Constants;
4264 D3D12_ROOT_DESCRIPTOR1 Descriptor;
4265 } ;
4266 D3D12_SHADER_VISIBILITY ShaderVisibility;
4267 } D3D12_ROOT_PARAMETER1;
4268
4269typedef struct D3D12_ROOT_SIGNATURE_DESC1
4270 {
4271 UINT NumParameters;
4272 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
4273 UINT NumStaticSamplers;
4274 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
4275 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4276 } D3D12_ROOT_SIGNATURE_DESC1;
4277
4278typedef struct D3D12_ROOT_SIGNATURE_DESC2
4279 {
4280 UINT NumParameters;
4281 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
4282 UINT NumStaticSamplers;
4283 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1 *pStaticSamplers;
4284 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4285 } D3D12_ROOT_SIGNATURE_DESC2;
4286
4287typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
4288 {
4289 D3D_ROOT_SIGNATURE_VERSION Version;
4290 union
4291 {
4292 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
4293 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
4294 D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
4295 } ;
4296 } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
4297
4298
4299
4300extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
4301extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
4302
4303#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
4304#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
4305
4306/* interface ID3D12RootSignatureDeserializer */
4307/* [unique][local][object][uuid] */
4308
4309
4310EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
4311
4312#if defined(__cplusplus) && !defined(CINTERFACE)
4313
4314 MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
4315 ID3D12RootSignatureDeserializer : public IUnknown
4316 {
4317 public:
4318 virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
4319
4320 };
4321
4322
4323#else /* C style interface */
4324
4325 typedef struct ID3D12RootSignatureDeserializerVtbl
4326 {
4327 BEGIN_INTERFACE
4328
4329 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4330 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4331 ID3D12RootSignatureDeserializer * This,
4332 REFIID riid,
4333 _COM_Outptr_ void **ppvObject);
4334
4335 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4336 ULONG ( STDMETHODCALLTYPE *AddRef )(
4337 ID3D12RootSignatureDeserializer * This);
4338
4339 DECLSPEC_XFGVIRT(IUnknown, Release)
4340 ULONG ( STDMETHODCALLTYPE *Release )(
4341 ID3D12RootSignatureDeserializer * This);
4342
4343 DECLSPEC_XFGVIRT(ID3D12RootSignatureDeserializer, GetRootSignatureDesc)
4344 const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
4345 ID3D12RootSignatureDeserializer * This);
4346
4347 END_INTERFACE
4348 } ID3D12RootSignatureDeserializerVtbl;
4349
4350 interface ID3D12RootSignatureDeserializer
4351 {
4352 CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
4353 };
4354
4355
4356
4357#ifdef COBJMACROS
4358
4359
4360#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
4361 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4362
4363#define ID3D12RootSignatureDeserializer_AddRef(This) \
4364 ( (This)->lpVtbl -> AddRef(This) )
4365
4366#define ID3D12RootSignatureDeserializer_Release(This) \
4367 ( (This)->lpVtbl -> Release(This) )
4368
4369
4370#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
4371 ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
4372
4373#endif /* COBJMACROS */
4374
4375
4376#endif /* C style interface */
4377
4378
4379
4380
4381#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
4382
4383
4384#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
4385#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
4386
4387/* interface ID3D12VersionedRootSignatureDeserializer */
4388/* [unique][local][object][uuid] */
4389
4390
4391EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
4392
4393#if defined(__cplusplus) && !defined(CINTERFACE)
4394
4395 MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
4396 ID3D12VersionedRootSignatureDeserializer : public IUnknown
4397 {
4398 public:
4399 virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
4400 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
4401 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
4402
4403 virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
4404
4405 };
4406
4407
4408#else /* C style interface */
4409
4410 typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
4411 {
4412 BEGIN_INTERFACE
4413
4414 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4415 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4416 ID3D12VersionedRootSignatureDeserializer * This,
4417 REFIID riid,
4418 _COM_Outptr_ void **ppvObject);
4419
4420 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4421 ULONG ( STDMETHODCALLTYPE *AddRef )(
4422 ID3D12VersionedRootSignatureDeserializer * This);
4423
4424 DECLSPEC_XFGVIRT(IUnknown, Release)
4425 ULONG ( STDMETHODCALLTYPE *Release )(
4426 ID3D12VersionedRootSignatureDeserializer * This);
4427
4428 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetRootSignatureDescAtVersion)
4429 HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
4430 ID3D12VersionedRootSignatureDeserializer * This,
4431 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
4432 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
4433
4434 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetUnconvertedRootSignatureDesc)
4435 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
4436 ID3D12VersionedRootSignatureDeserializer * This);
4437
4438 END_INTERFACE
4439 } ID3D12VersionedRootSignatureDeserializerVtbl;
4440
4441 interface ID3D12VersionedRootSignatureDeserializer
4442 {
4443 CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
4444 };
4445
4446
4447
4448#ifdef COBJMACROS
4449
4450
4451#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
4452 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4453
4454#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
4455 ( (This)->lpVtbl -> AddRef(This) )
4456
4457#define ID3D12VersionedRootSignatureDeserializer_Release(This) \
4458 ( (This)->lpVtbl -> Release(This) )
4459
4460
4461#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
4462 ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
4463
4464#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
4465 ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
4466
4467#endif /* COBJMACROS */
4468
4469
4470#endif /* C style interface */
4471
4472
4473
4474
4475#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
4476
4477
4478/* interface __MIDL_itf_d3d12_0000_0003 */
4479/* [local] */
4480
4481typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
4482 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
4483 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
4484 _Out_ ID3DBlob** ppBlob,
4485 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4486
4487HRESULT WINAPI D3D12SerializeRootSignature(
4488 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
4489 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
4490 _Out_ ID3DBlob** ppBlob,
4491 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4492
4493typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
4494 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4495 _In_ SIZE_T SrcDataSizeInBytes,
4496 _In_ REFIID pRootSignatureDeserializerInterface,
4497 _Out_ void** ppRootSignatureDeserializer);
4498
4499HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
4500 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4501 _In_ SIZE_T SrcDataSizeInBytes,
4502 _In_ REFIID pRootSignatureDeserializerInterface,
4503 _Out_ void** ppRootSignatureDeserializer);
4504
4505typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
4506 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
4507 _Out_ ID3DBlob** ppBlob,
4508 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4509
4510HRESULT WINAPI D3D12SerializeVersionedRootSignature(
4511 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
4512 _Out_ ID3DBlob** ppBlob,
4513 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4514
4515typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
4516 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4517 _In_ SIZE_T SrcDataSizeInBytes,
4518 _In_ REFIID pRootSignatureDeserializerInterface,
4519 _Out_ void** ppRootSignatureDeserializer);
4520
4521HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
4522 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4523 _In_ SIZE_T SrcDataSizeInBytes,
4524 _In_ REFIID pRootSignatureDeserializerInterface,
4525 _Out_ void** ppRootSignatureDeserializer);
4526
4527typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(
4528 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4529 _In_ SIZE_T SrcDataSizeInBytes,
4530 _In_ LPCWSTR RootSignatureSubobjectName,
4531 _In_ REFIID pRootSignatureDeserializerInterface,
4532 _Out_ void** ppRootSignatureDeserializer);
4533
4534HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
4535 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4536 _In_ SIZE_T SrcDataSizeInBytes,
4537 _In_opt_ LPCWSTR RootSignatureSubobjectName,
4538 _In_ REFIID pRootSignatureDeserializerInterface,
4539 _Out_ void** ppRootSignatureDeserializer);
4540
4541typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
4542 {
4543 SIZE_T ptr;
4544 } D3D12_CPU_DESCRIPTOR_HANDLE;
4545
4546typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
4547 {
4548 UINT64 ptr;
4549 } D3D12_GPU_DESCRIPTOR_HANDLE;
4550
4551// If rects are supplied in D3D12_DISCARD_REGION, below, the resource
4552// must have 2D subresources with all specified subresources the same dimension.
4553typedef struct D3D12_DISCARD_REGION
4554 {
4555 UINT NumRects;
4556 _In_reads_(NumRects) const D3D12_RECT *pRects;
4557 UINT FirstSubresource;
4558 UINT NumSubresources;
4559 } D3D12_DISCARD_REGION;
4560
4561typedef
4562enum D3D12_QUERY_HEAP_TYPE
4563 {
4564 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
4565 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
4566 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
4567 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
4568 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
4569 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
4570 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
4571 } D3D12_QUERY_HEAP_TYPE;
4572
4573typedef struct D3D12_QUERY_HEAP_DESC
4574 {
4575 D3D12_QUERY_HEAP_TYPE Type;
4576 UINT Count;
4577 UINT NodeMask;
4578 } D3D12_QUERY_HEAP_DESC;
4579
4580typedef
4581enum D3D12_QUERY_TYPE
4582 {
4583 D3D12_QUERY_TYPE_OCCLUSION = 0,
4584 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
4585 D3D12_QUERY_TYPE_TIMESTAMP = 2,
4586 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
4587 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
4588 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
4589 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
4590 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
4591 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
4592 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
4593 } D3D12_QUERY_TYPE;
4594
4595typedef
4596enum D3D12_PREDICATION_OP
4597 {
4598 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
4599 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
4600 } D3D12_PREDICATION_OP;
4601
4602typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
4603 {
4604 UINT64 IAVertices;
4605 UINT64 IAPrimitives;
4606 UINT64 VSInvocations;
4607 UINT64 GSInvocations;
4608 UINT64 GSPrimitives;
4609 UINT64 CInvocations;
4610 UINT64 CPrimitives;
4611 UINT64 PSInvocations;
4612 UINT64 HSInvocations;
4613 UINT64 DSInvocations;
4614 UINT64 CSInvocations;
4615 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
4616
4617typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
4618 {
4619 UINT64 IAVertices;
4620 UINT64 IAPrimitives;
4621 UINT64 VSInvocations;
4622 UINT64 GSInvocations;
4623 UINT64 GSPrimitives;
4624 UINT64 CInvocations;
4625 UINT64 CPrimitives;
4626 UINT64 PSInvocations;
4627 UINT64 HSInvocations;
4628 UINT64 DSInvocations;
4629 UINT64 CSInvocations;
4630 UINT64 ASInvocations;
4631 UINT64 MSInvocations;
4632 UINT64 MSPrimitives;
4633 } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
4634
4635typedef struct D3D12_QUERY_DATA_SO_STATISTICS
4636 {
4637 UINT64 NumPrimitivesWritten;
4638 UINT64 PrimitivesStorageNeeded;
4639 } D3D12_QUERY_DATA_SO_STATISTICS;
4640
4641typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
4642 {
4643 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4644 UINT64 SizeInBytes;
4645 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
4646 } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
4647
4648typedef struct D3D12_DRAW_ARGUMENTS
4649 {
4650 UINT VertexCountPerInstance;
4651 UINT InstanceCount;
4652 UINT StartVertexLocation;
4653 UINT StartInstanceLocation;
4654 } D3D12_DRAW_ARGUMENTS;
4655
4656typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
4657 {
4658 UINT IndexCountPerInstance;
4659 UINT InstanceCount;
4660 UINT StartIndexLocation;
4661 INT BaseVertexLocation;
4662 UINT StartInstanceLocation;
4663 } D3D12_DRAW_INDEXED_ARGUMENTS;
4664
4665typedef struct D3D12_DISPATCH_ARGUMENTS
4666 {
4667 UINT ThreadGroupCountX;
4668 UINT ThreadGroupCountY;
4669 UINT ThreadGroupCountZ;
4670 } D3D12_DISPATCH_ARGUMENTS;
4671
4672typedef struct D3D12_VERTEX_BUFFER_VIEW
4673 {
4674 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4675 UINT SizeInBytes;
4676 UINT StrideInBytes;
4677 } D3D12_VERTEX_BUFFER_VIEW;
4678
4679typedef struct D3D12_INDEX_BUFFER_VIEW
4680 {
4681 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4682 UINT SizeInBytes;
4683 DXGI_FORMAT Format;
4684 } D3D12_INDEX_BUFFER_VIEW;
4685
4686typedef
4687enum D3D12_INDIRECT_ARGUMENT_TYPE
4688 {
4689 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
4690 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
4691 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
4692 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
4693 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
4694 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
4695 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
4696 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
4697 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
4698 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
4699 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 ) ,
4700 D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH + 1 )
4701 } D3D12_INDIRECT_ARGUMENT_TYPE;
4702
4703typedef struct D3D12_INDIRECT_ARGUMENT_DESC
4704 {
4705 D3D12_INDIRECT_ARGUMENT_TYPE Type;
4706 union
4707 {
4708 struct
4709 {
4710 UINT Slot;
4711 } VertexBuffer;
4712 struct
4713 {
4714 UINT RootParameterIndex;
4715 UINT DestOffsetIn32BitValues;
4716 UINT Num32BitValuesToSet;
4717 } Constant;
4718 struct
4719 {
4720 UINT RootParameterIndex;
4721 } ConstantBufferView;
4722 struct
4723 {
4724 UINT RootParameterIndex;
4725 } ShaderResourceView;
4726 struct
4727 {
4728 UINT RootParameterIndex;
4729 } UnorderedAccessView;
4730 struct
4731 {
4732 UINT RootParameterIndex;
4733 UINT DestOffsetIn32BitValues;
4734 } IncrementingConstant;
4735 } ;
4736 } D3D12_INDIRECT_ARGUMENT_DESC;
4737
4738typedef struct D3D12_COMMAND_SIGNATURE_DESC
4739 {
4740 UINT ByteStride;
4741 UINT NumArgumentDescs;
4742 _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
4743 UINT NodeMask;
4744 } D3D12_COMMAND_SIGNATURE_DESC;
4745
4746
4747
4748
4749extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
4750extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
4751
4752#ifndef __ID3D12Pageable_INTERFACE_DEFINED__
4753#define __ID3D12Pageable_INTERFACE_DEFINED__
4754
4755/* interface ID3D12Pageable */
4756/* [unique][local][object][uuid] */
4757
4758
4759EXTERN_C const IID IID_ID3D12Pageable;
4760
4761#if defined(__cplusplus) && !defined(CINTERFACE)
4762
4763 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
4764 ID3D12Pageable : public ID3D12DeviceChild
4765 {
4766 public:
4767 };
4768
4769
4770#else /* C style interface */
4771
4772 typedef struct ID3D12PageableVtbl
4773 {
4774 BEGIN_INTERFACE
4775
4776 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4777 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4778 ID3D12Pageable * This,
4779 REFIID riid,
4780 _COM_Outptr_ void **ppvObject);
4781
4782 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4783 ULONG ( STDMETHODCALLTYPE *AddRef )(
4784 ID3D12Pageable * This);
4785
4786 DECLSPEC_XFGVIRT(IUnknown, Release)
4787 ULONG ( STDMETHODCALLTYPE *Release )(
4788 ID3D12Pageable * This);
4789
4790 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4791 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4792 ID3D12Pageable * This,
4793 _In_ REFGUID guid,
4794 _Inout_ UINT *pDataSize,
4795 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4796
4797 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4798 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4799 ID3D12Pageable * This,
4800 _In_ REFGUID guid,
4801 _In_ UINT DataSize,
4802 _In_reads_bytes_opt_( DataSize ) const void *pData);
4803
4804 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4805 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4806 ID3D12Pageable * This,
4807 _In_ REFGUID guid,
4808 _In_opt_ const IUnknown *pData);
4809
4810 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4811 HRESULT ( STDMETHODCALLTYPE *SetName )(
4812 ID3D12Pageable * This,
4813 _In_z_ LPCWSTR Name);
4814
4815 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4816 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4817 ID3D12Pageable * This,
4818 REFIID riid,
4819 _COM_Outptr_opt_ void **ppvDevice);
4820
4821 END_INTERFACE
4822 } ID3D12PageableVtbl;
4823
4824 interface ID3D12Pageable
4825 {
4826 CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
4827 };
4828
4829
4830
4831#ifdef COBJMACROS
4832
4833
4834#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
4835 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4836
4837#define ID3D12Pageable_AddRef(This) \
4838 ( (This)->lpVtbl -> AddRef(This) )
4839
4840#define ID3D12Pageable_Release(This) \
4841 ( (This)->lpVtbl -> Release(This) )
4842
4843
4844#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
4845 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4846
4847#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
4848 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4849
4850#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
4851 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4852
4853#define ID3D12Pageable_SetName(This,Name) \
4854 ( (This)->lpVtbl -> SetName(This,Name) )
4855
4856
4857#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
4858 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4859
4860
4861#endif /* COBJMACROS */
4862
4863
4864#endif /* C style interface */
4865
4866
4867
4868
4869#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
4870
4871
4872#ifndef __ID3D12Heap_INTERFACE_DEFINED__
4873#define __ID3D12Heap_INTERFACE_DEFINED__
4874
4875/* interface ID3D12Heap */
4876/* [unique][local][object][uuid] */
4877
4878
4879EXTERN_C const IID IID_ID3D12Heap;
4880
4881#if defined(__cplusplus) && !defined(CINTERFACE)
4882
4883 MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
4884 ID3D12Heap : public ID3D12Pageable
4885 {
4886 public:
4887#if defined(_MSC_VER) || !defined(_WIN32)
4888 virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4889#else
4890 virtual D3D12_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
4891 D3D12_HEAP_DESC * RetVal) = 0;
4892#endif
4893
4894 };
4895
4896
4897#else /* C style interface */
4898
4899 typedef struct ID3D12HeapVtbl
4900 {
4901 BEGIN_INTERFACE
4902
4903 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4904 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4905 ID3D12Heap * This,
4906 REFIID riid,
4907 _COM_Outptr_ void **ppvObject);
4908
4909 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4910 ULONG ( STDMETHODCALLTYPE *AddRef )(
4911 ID3D12Heap * This);
4912
4913 DECLSPEC_XFGVIRT(IUnknown, Release)
4914 ULONG ( STDMETHODCALLTYPE *Release )(
4915 ID3D12Heap * This);
4916
4917 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4918 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4919 ID3D12Heap * This,
4920 _In_ REFGUID guid,
4921 _Inout_ UINT *pDataSize,
4922 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4923
4924 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4925 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4926 ID3D12Heap * This,
4927 _In_ REFGUID guid,
4928 _In_ UINT DataSize,
4929 _In_reads_bytes_opt_( DataSize ) const void *pData);
4930
4931 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4932 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4933 ID3D12Heap * This,
4934 _In_ REFGUID guid,
4935 _In_opt_ const IUnknown *pData);
4936
4937 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4938 HRESULT ( STDMETHODCALLTYPE *SetName )(
4939 ID3D12Heap * This,
4940 _In_z_ LPCWSTR Name);
4941
4942 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4943 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4944 ID3D12Heap * This,
4945 REFIID riid,
4946 _COM_Outptr_opt_ void **ppvDevice);
4947
4948 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
4949#if !defined(_WIN32)
4950 D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4951 ID3D12Heap * This);
4952
4953#else
4954 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4955 ID3D12Heap * This,
4956 D3D12_HEAP_DESC * RetVal);
4957
4958#endif
4959
4960 END_INTERFACE
4961 } ID3D12HeapVtbl;
4962
4963 interface ID3D12Heap
4964 {
4965 CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
4966 };
4967
4968
4969
4970#ifdef COBJMACROS
4971
4972
4973#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
4974 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4975
4976#define ID3D12Heap_AddRef(This) \
4977 ( (This)->lpVtbl -> AddRef(This) )
4978
4979#define ID3D12Heap_Release(This) \
4980 ( (This)->lpVtbl -> Release(This) )
4981
4982
4983#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
4984 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4985
4986#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
4987 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4988
4989#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
4990 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4991
4992#define ID3D12Heap_SetName(This,Name) \
4993 ( (This)->lpVtbl -> SetName(This,Name) )
4994
4995
4996#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
4997 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4998
4999
5000#if !defined(_WIN32)
5001
5002#define ID3D12Heap_GetDesc(This) \
5003 ( (This)->lpVtbl -> GetDesc(This) )
5004#else
5005#define ID3D12Heap_GetDesc(This,RetVal) \
5006 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5007#endif
5008
5009#endif /* COBJMACROS */
5010
5011
5012#endif /* C style interface */
5013
5014
5015
5016
5017#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
5018
5019
5020#ifndef __ID3D12Resource_INTERFACE_DEFINED__
5021#define __ID3D12Resource_INTERFACE_DEFINED__
5022
5023/* interface ID3D12Resource */
5024/* [unique][local][object][uuid] */
5025
5026
5027EXTERN_C const IID IID_ID3D12Resource;
5028
5029#if defined(__cplusplus) && !defined(CINTERFACE)
5030
5031 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
5032 ID3D12Resource : public ID3D12Pageable
5033 {
5034 public:
5035 virtual HRESULT STDMETHODCALLTYPE Map(
5036 UINT Subresource,
5037 _In_opt_ const D3D12_RANGE *pReadRange,
5038 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
5039
5040 virtual void STDMETHODCALLTYPE Unmap(
5041 UINT Subresource,
5042 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
5043
5044#if defined(_MSC_VER) || !defined(_WIN32)
5045 virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5046#else
5047 virtual D3D12_RESOURCE_DESC *STDMETHODCALLTYPE GetDesc(
5048 D3D12_RESOURCE_DESC * RetVal) = 0;
5049#endif
5050
5051 virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
5052
5053 virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
5054 UINT DstSubresource,
5055 _In_opt_ const D3D12_BOX *pDstBox,
5056 _In_ const void *pSrcData,
5057 UINT SrcRowPitch,
5058 UINT SrcDepthPitch) = 0;
5059
5060 virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
5061 _Out_ void *pDstData,
5062 UINT DstRowPitch,
5063 UINT DstDepthPitch,
5064 UINT SrcSubresource,
5065 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
5066
5067 virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
5068 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
5069 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
5070
5071 };
5072
5073
5074#else /* C style interface */
5075
5076 typedef struct ID3D12ResourceVtbl
5077 {
5078 BEGIN_INTERFACE
5079
5080 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5081 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5082 ID3D12Resource * This,
5083 REFIID riid,
5084 _COM_Outptr_ void **ppvObject);
5085
5086 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5087 ULONG ( STDMETHODCALLTYPE *AddRef )(
5088 ID3D12Resource * This);
5089
5090 DECLSPEC_XFGVIRT(IUnknown, Release)
5091 ULONG ( STDMETHODCALLTYPE *Release )(
5092 ID3D12Resource * This);
5093
5094 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5095 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5096 ID3D12Resource * This,
5097 _In_ REFGUID guid,
5098 _Inout_ UINT *pDataSize,
5099 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5100
5101 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5102 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5103 ID3D12Resource * This,
5104 _In_ REFGUID guid,
5105 _In_ UINT DataSize,
5106 _In_reads_bytes_opt_( DataSize ) const void *pData);
5107
5108 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5109 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5110 ID3D12Resource * This,
5111 _In_ REFGUID guid,
5112 _In_opt_ const IUnknown *pData);
5113
5114 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5115 HRESULT ( STDMETHODCALLTYPE *SetName )(
5116 ID3D12Resource * This,
5117 _In_z_ LPCWSTR Name);
5118
5119 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5120 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5121 ID3D12Resource * This,
5122 REFIID riid,
5123 _COM_Outptr_opt_ void **ppvDevice);
5124
5125 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
5126 HRESULT ( STDMETHODCALLTYPE *Map )(
5127 ID3D12Resource * This,
5128 UINT Subresource,
5129 _In_opt_ const D3D12_RANGE *pReadRange,
5130 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
5131
5132 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
5133 void ( STDMETHODCALLTYPE *Unmap )(
5134 ID3D12Resource * This,
5135 UINT Subresource,
5136 _In_opt_ const D3D12_RANGE *pWrittenRange);
5137
5138 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
5139#if !defined(_WIN32)
5140 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
5141 ID3D12Resource * This);
5142
5143#else
5144 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
5145 ID3D12Resource * This,
5146 D3D12_RESOURCE_DESC * RetVal);
5147
5148#endif
5149
5150 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
5151 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
5152 ID3D12Resource * This);
5153
5154 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
5155 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
5156 ID3D12Resource * This,
5157 UINT DstSubresource,
5158 _In_opt_ const D3D12_BOX *pDstBox,
5159 _In_ const void *pSrcData,
5160 UINT SrcRowPitch,
5161 UINT SrcDepthPitch);
5162
5163 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
5164 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
5165 ID3D12Resource * This,
5166 _Out_ void *pDstData,
5167 UINT DstRowPitch,
5168 UINT DstDepthPitch,
5169 UINT SrcSubresource,
5170 _In_opt_ const D3D12_BOX *pSrcBox);
5171
5172 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
5173 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
5174 ID3D12Resource * This,
5175 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
5176 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
5177
5178 END_INTERFACE
5179 } ID3D12ResourceVtbl;
5180
5181 interface ID3D12Resource
5182 {
5183 CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
5184 };
5185
5186
5187
5188#ifdef COBJMACROS
5189
5190
5191#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
5192 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5193
5194#define ID3D12Resource_AddRef(This) \
5195 ( (This)->lpVtbl -> AddRef(This) )
5196
5197#define ID3D12Resource_Release(This) \
5198 ( (This)->lpVtbl -> Release(This) )
5199
5200
5201#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
5202 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5203
5204#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
5205 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5206
5207#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
5208 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5209
5210#define ID3D12Resource_SetName(This,Name) \
5211 ( (This)->lpVtbl -> SetName(This,Name) )
5212
5213
5214#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
5215 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5216
5217
5218
5219#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
5220 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
5221
5222#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
5223 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
5224#if !defined(_WIN32)
5225
5226#define ID3D12Resource_GetDesc(This) \
5227 ( (This)->lpVtbl -> GetDesc(This) )
5228#else
5229#define ID3D12Resource_GetDesc(This,RetVal) \
5230 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5231#endif
5232
5233#define ID3D12Resource_GetGPUVirtualAddress(This) \
5234 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
5235
5236#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
5237 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
5238
5239#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
5240 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
5241
5242#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
5243 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
5244
5245#endif /* COBJMACROS */
5246
5247
5248#endif /* C style interface */
5249
5250
5251
5252
5253#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
5254
5255
5256#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
5257#define __ID3D12CommandAllocator_INTERFACE_DEFINED__
5258
5259/* interface ID3D12CommandAllocator */
5260/* [unique][local][object][uuid] */
5261
5262
5263EXTERN_C const IID IID_ID3D12CommandAllocator;
5264
5265#if defined(__cplusplus) && !defined(CINTERFACE)
5266
5267 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
5268 ID3D12CommandAllocator : public ID3D12Pageable
5269 {
5270 public:
5271 virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
5272
5273 };
5274
5275
5276#else /* C style interface */
5277
5278 typedef struct ID3D12CommandAllocatorVtbl
5279 {
5280 BEGIN_INTERFACE
5281
5282 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5283 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5284 ID3D12CommandAllocator * This,
5285 REFIID riid,
5286 _COM_Outptr_ void **ppvObject);
5287
5288 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5289 ULONG ( STDMETHODCALLTYPE *AddRef )(
5290 ID3D12CommandAllocator * This);
5291
5292 DECLSPEC_XFGVIRT(IUnknown, Release)
5293 ULONG ( STDMETHODCALLTYPE *Release )(
5294 ID3D12CommandAllocator * This);
5295
5296 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5297 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5298 ID3D12CommandAllocator * This,
5299 _In_ REFGUID guid,
5300 _Inout_ UINT *pDataSize,
5301 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5302
5303 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5304 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5305 ID3D12CommandAllocator * This,
5306 _In_ REFGUID guid,
5307 _In_ UINT DataSize,
5308 _In_reads_bytes_opt_( DataSize ) const void *pData);
5309
5310 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5311 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5312 ID3D12CommandAllocator * This,
5313 _In_ REFGUID guid,
5314 _In_opt_ const IUnknown *pData);
5315
5316 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5317 HRESULT ( STDMETHODCALLTYPE *SetName )(
5318 ID3D12CommandAllocator * This,
5319 _In_z_ LPCWSTR Name);
5320
5321 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5322 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5323 ID3D12CommandAllocator * This,
5324 REFIID riid,
5325 _COM_Outptr_opt_ void **ppvDevice);
5326
5327 DECLSPEC_XFGVIRT(ID3D12CommandAllocator, Reset)
5328 HRESULT ( STDMETHODCALLTYPE *Reset )(
5329 ID3D12CommandAllocator * This);
5330
5331 END_INTERFACE
5332 } ID3D12CommandAllocatorVtbl;
5333
5334 interface ID3D12CommandAllocator
5335 {
5336 CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
5337 };
5338
5339
5340
5341#ifdef COBJMACROS
5342
5343
5344#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
5345 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5346
5347#define ID3D12CommandAllocator_AddRef(This) \
5348 ( (This)->lpVtbl -> AddRef(This) )
5349
5350#define ID3D12CommandAllocator_Release(This) \
5351 ( (This)->lpVtbl -> Release(This) )
5352
5353
5354#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
5355 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5356
5357#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
5358 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5359
5360#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
5361 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5362
5363#define ID3D12CommandAllocator_SetName(This,Name) \
5364 ( (This)->lpVtbl -> SetName(This,Name) )
5365
5366
5367#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
5368 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5369
5370
5371
5372#define ID3D12CommandAllocator_Reset(This) \
5373 ( (This)->lpVtbl -> Reset(This) )
5374
5375#endif /* COBJMACROS */
5376
5377
5378#endif /* C style interface */
5379
5380
5381
5382
5383#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
5384
5385
5386#ifndef __ID3D12Fence_INTERFACE_DEFINED__
5387#define __ID3D12Fence_INTERFACE_DEFINED__
5388
5389/* interface ID3D12Fence */
5390/* [unique][local][object][uuid] */
5391
5392
5393EXTERN_C const IID IID_ID3D12Fence;
5394
5395#if defined(__cplusplus) && !defined(CINTERFACE)
5396
5397 MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
5398 ID3D12Fence : public ID3D12Pageable
5399 {
5400 public:
5401 virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
5402
5403 virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
5404 UINT64 Value,
5405 HANDLE hEvent) = 0;
5406
5407 virtual HRESULT STDMETHODCALLTYPE Signal(
5408 UINT64 Value) = 0;
5409
5410 };
5411
5412
5413#else /* C style interface */
5414
5415 typedef struct ID3D12FenceVtbl
5416 {
5417 BEGIN_INTERFACE
5418
5419 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5420 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5421 ID3D12Fence * This,
5422 REFIID riid,
5423 _COM_Outptr_ void **ppvObject);
5424
5425 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5426 ULONG ( STDMETHODCALLTYPE *AddRef )(
5427 ID3D12Fence * This);
5428
5429 DECLSPEC_XFGVIRT(IUnknown, Release)
5430 ULONG ( STDMETHODCALLTYPE *Release )(
5431 ID3D12Fence * This);
5432
5433 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5434 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5435 ID3D12Fence * This,
5436 _In_ REFGUID guid,
5437 _Inout_ UINT *pDataSize,
5438 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5439
5440 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5441 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5442 ID3D12Fence * This,
5443 _In_ REFGUID guid,
5444 _In_ UINT DataSize,
5445 _In_reads_bytes_opt_( DataSize ) const void *pData);
5446
5447 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5448 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5449 ID3D12Fence * This,
5450 _In_ REFGUID guid,
5451 _In_opt_ const IUnknown *pData);
5452
5453 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5454 HRESULT ( STDMETHODCALLTYPE *SetName )(
5455 ID3D12Fence * This,
5456 _In_z_ LPCWSTR Name);
5457
5458 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5459 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5460 ID3D12Fence * This,
5461 REFIID riid,
5462 _COM_Outptr_opt_ void **ppvDevice);
5463
5464 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
5465 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
5466 ID3D12Fence * This);
5467
5468 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
5469 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
5470 ID3D12Fence * This,
5471 UINT64 Value,
5472 HANDLE hEvent);
5473
5474 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
5475 HRESULT ( STDMETHODCALLTYPE *Signal )(
5476 ID3D12Fence * This,
5477 UINT64 Value);
5478
5479 END_INTERFACE
5480 } ID3D12FenceVtbl;
5481
5482 interface ID3D12Fence
5483 {
5484 CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
5485 };
5486
5487
5488
5489#ifdef COBJMACROS
5490
5491
5492#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
5493 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5494
5495#define ID3D12Fence_AddRef(This) \
5496 ( (This)->lpVtbl -> AddRef(This) )
5497
5498#define ID3D12Fence_Release(This) \
5499 ( (This)->lpVtbl -> Release(This) )
5500
5501
5502#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
5503 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5504
5505#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
5506 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5507
5508#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
5509 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5510
5511#define ID3D12Fence_SetName(This,Name) \
5512 ( (This)->lpVtbl -> SetName(This,Name) )
5513
5514
5515#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
5516 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5517
5518
5519
5520#define ID3D12Fence_GetCompletedValue(This) \
5521 ( (This)->lpVtbl -> GetCompletedValue(This) )
5522
5523#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
5524 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5525
5526#define ID3D12Fence_Signal(This,Value) \
5527 ( (This)->lpVtbl -> Signal(This,Value) )
5528
5529#endif /* COBJMACROS */
5530
5531
5532#endif /* C style interface */
5533
5534
5535
5536
5537#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
5538
5539
5540#ifndef __ID3D12Fence1_INTERFACE_DEFINED__
5541#define __ID3D12Fence1_INTERFACE_DEFINED__
5542
5543/* interface ID3D12Fence1 */
5544/* [unique][local][object][uuid] */
5545
5546
5547EXTERN_C const IID IID_ID3D12Fence1;
5548
5549#if defined(__cplusplus) && !defined(CINTERFACE)
5550
5551 MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
5552 ID3D12Fence1 : public ID3D12Fence
5553 {
5554 public:
5555 virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0;
5556
5557 };
5558
5559
5560#else /* C style interface */
5561
5562 typedef struct ID3D12Fence1Vtbl
5563 {
5564 BEGIN_INTERFACE
5565
5566 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5567 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5568 ID3D12Fence1 * This,
5569 REFIID riid,
5570 _COM_Outptr_ void **ppvObject);
5571
5572 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5573 ULONG ( STDMETHODCALLTYPE *AddRef )(
5574 ID3D12Fence1 * This);
5575
5576 DECLSPEC_XFGVIRT(IUnknown, Release)
5577 ULONG ( STDMETHODCALLTYPE *Release )(
5578 ID3D12Fence1 * This);
5579
5580 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5581 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5582 ID3D12Fence1 * This,
5583 _In_ REFGUID guid,
5584 _Inout_ UINT *pDataSize,
5585 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5586
5587 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5588 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5589 ID3D12Fence1 * This,
5590 _In_ REFGUID guid,
5591 _In_ UINT DataSize,
5592 _In_reads_bytes_opt_( DataSize ) const void *pData);
5593
5594 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5595 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5596 ID3D12Fence1 * This,
5597 _In_ REFGUID guid,
5598 _In_opt_ const IUnknown *pData);
5599
5600 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5601 HRESULT ( STDMETHODCALLTYPE *SetName )(
5602 ID3D12Fence1 * This,
5603 _In_z_ LPCWSTR Name);
5604
5605 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5606 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5607 ID3D12Fence1 * This,
5608 REFIID riid,
5609 _COM_Outptr_opt_ void **ppvDevice);
5610
5611 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
5612 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
5613 ID3D12Fence1 * This);
5614
5615 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
5616 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
5617 ID3D12Fence1 * This,
5618 UINT64 Value,
5619 HANDLE hEvent);
5620
5621 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
5622 HRESULT ( STDMETHODCALLTYPE *Signal )(
5623 ID3D12Fence1 * This,
5624 UINT64 Value);
5625
5626 DECLSPEC_XFGVIRT(ID3D12Fence1, GetCreationFlags)
5627 D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )(
5628 ID3D12Fence1 * This);
5629
5630 END_INTERFACE
5631 } ID3D12Fence1Vtbl;
5632
5633 interface ID3D12Fence1
5634 {
5635 CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl;
5636 };
5637
5638
5639
5640#ifdef COBJMACROS
5641
5642
5643#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \
5644 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5645
5646#define ID3D12Fence1_AddRef(This) \
5647 ( (This)->lpVtbl -> AddRef(This) )
5648
5649#define ID3D12Fence1_Release(This) \
5650 ( (This)->lpVtbl -> Release(This) )
5651
5652
5653#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \
5654 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5655
5656#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \
5657 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5658
5659#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \
5660 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5661
5662#define ID3D12Fence1_SetName(This,Name) \
5663 ( (This)->lpVtbl -> SetName(This,Name) )
5664
5665
5666#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \
5667 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5668
5669
5670
5671#define ID3D12Fence1_GetCompletedValue(This) \
5672 ( (This)->lpVtbl -> GetCompletedValue(This) )
5673
5674#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \
5675 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5676
5677#define ID3D12Fence1_Signal(This,Value) \
5678 ( (This)->lpVtbl -> Signal(This,Value) )
5679
5680
5681#define ID3D12Fence1_GetCreationFlags(This) \
5682 ( (This)->lpVtbl -> GetCreationFlags(This) )
5683
5684#endif /* COBJMACROS */
5685
5686
5687#endif /* C style interface */
5688
5689
5690
5691
5692#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */
5693
5694
5695#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
5696#define __ID3D12PipelineState_INTERFACE_DEFINED__
5697
5698/* interface ID3D12PipelineState */
5699/* [unique][local][object][uuid] */
5700
5701
5702EXTERN_C const IID IID_ID3D12PipelineState;
5703
5704#if defined(__cplusplus) && !defined(CINTERFACE)
5705
5706 MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
5707 ID3D12PipelineState : public ID3D12Pageable
5708 {
5709 public:
5710 virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
5711 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
5712
5713 };
5714
5715
5716#else /* C style interface */
5717
5718 typedef struct ID3D12PipelineStateVtbl
5719 {
5720 BEGIN_INTERFACE
5721
5722 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5723 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5724 ID3D12PipelineState * This,
5725 REFIID riid,
5726 _COM_Outptr_ void **ppvObject);
5727
5728 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5729 ULONG ( STDMETHODCALLTYPE *AddRef )(
5730 ID3D12PipelineState * This);
5731
5732 DECLSPEC_XFGVIRT(IUnknown, Release)
5733 ULONG ( STDMETHODCALLTYPE *Release )(
5734 ID3D12PipelineState * This);
5735
5736 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5737 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5738 ID3D12PipelineState * This,
5739 _In_ REFGUID guid,
5740 _Inout_ UINT *pDataSize,
5741 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5742
5743 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5744 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5745 ID3D12PipelineState * This,
5746 _In_ REFGUID guid,
5747 _In_ UINT DataSize,
5748 _In_reads_bytes_opt_( DataSize ) const void *pData);
5749
5750 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5751 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5752 ID3D12PipelineState * This,
5753 _In_ REFGUID guid,
5754 _In_opt_ const IUnknown *pData);
5755
5756 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5757 HRESULT ( STDMETHODCALLTYPE *SetName )(
5758 ID3D12PipelineState * This,
5759 _In_z_ LPCWSTR Name);
5760
5761 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5762 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5763 ID3D12PipelineState * This,
5764 REFIID riid,
5765 _COM_Outptr_opt_ void **ppvDevice);
5766
5767 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5768 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5769 ID3D12PipelineState * This,
5770 _COM_Outptr_ ID3DBlob **ppBlob);
5771
5772 END_INTERFACE
5773 } ID3D12PipelineStateVtbl;
5774
5775 interface ID3D12PipelineState
5776 {
5777 CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
5778 };
5779
5780
5781
5782#ifdef COBJMACROS
5783
5784
5785#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
5786 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5787
5788#define ID3D12PipelineState_AddRef(This) \
5789 ( (This)->lpVtbl -> AddRef(This) )
5790
5791#define ID3D12PipelineState_Release(This) \
5792 ( (This)->lpVtbl -> Release(This) )
5793
5794
5795#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
5796 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5797
5798#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
5799 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5800
5801#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
5802 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5803
5804#define ID3D12PipelineState_SetName(This,Name) \
5805 ( (This)->lpVtbl -> SetName(This,Name) )
5806
5807
5808#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
5809 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5810
5811
5812
5813#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
5814 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5815
5816#endif /* COBJMACROS */
5817
5818
5819#endif /* C style interface */
5820
5821
5822
5823
5824#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
5825
5826
5827#ifndef __ID3D12PipelineState1_INTERFACE_DEFINED__
5828#define __ID3D12PipelineState1_INTERFACE_DEFINED__
5829
5830/* interface ID3D12PipelineState1 */
5831/* [unique][local][object][uuid] */
5832
5833
5834EXTERN_C const IID IID_ID3D12PipelineState1;
5835
5836#if defined(__cplusplus) && !defined(CINTERFACE)
5837
5838 MIDL_INTERFACE("5646804c-9638-48f7-9182-b3ee5a6b60fb")
5839 ID3D12PipelineState1 : public ID3D12PipelineState
5840 {
5841 public:
5842 virtual HRESULT STDMETHODCALLTYPE GetRootSignature(
5843 REFIID riid,
5844 _COM_Outptr_ void **ppvRootSignature) = 0;
5845
5846 };
5847
5848
5849#else /* C style interface */
5850
5851 typedef struct ID3D12PipelineState1Vtbl
5852 {
5853 BEGIN_INTERFACE
5854
5855 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5856 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5857 ID3D12PipelineState1 * This,
5858 REFIID riid,
5859 _COM_Outptr_ void **ppvObject);
5860
5861 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5862 ULONG ( STDMETHODCALLTYPE *AddRef )(
5863 ID3D12PipelineState1 * This);
5864
5865 DECLSPEC_XFGVIRT(IUnknown, Release)
5866 ULONG ( STDMETHODCALLTYPE *Release )(
5867 ID3D12PipelineState1 * This);
5868
5869 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5870 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5871 ID3D12PipelineState1 * This,
5872 _In_ REFGUID guid,
5873 _Inout_ UINT *pDataSize,
5874 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5875
5876 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5877 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5878 ID3D12PipelineState1 * This,
5879 _In_ REFGUID guid,
5880 _In_ UINT DataSize,
5881 _In_reads_bytes_opt_( DataSize ) const void *pData);
5882
5883 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5884 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5885 ID3D12PipelineState1 * This,
5886 _In_ REFGUID guid,
5887 _In_opt_ const IUnknown *pData);
5888
5889 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5890 HRESULT ( STDMETHODCALLTYPE *SetName )(
5891 ID3D12PipelineState1 * This,
5892 _In_z_ LPCWSTR Name);
5893
5894 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5895 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5896 ID3D12PipelineState1 * This,
5897 REFIID riid,
5898 _COM_Outptr_opt_ void **ppvDevice);
5899
5900 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5901 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5902 ID3D12PipelineState1 * This,
5903 _COM_Outptr_ ID3DBlob **ppBlob);
5904
5905 DECLSPEC_XFGVIRT(ID3D12PipelineState1, GetRootSignature)
5906 HRESULT ( STDMETHODCALLTYPE *GetRootSignature )(
5907 ID3D12PipelineState1 * This,
5908 REFIID riid,
5909 _COM_Outptr_ void **ppvRootSignature);
5910
5911 END_INTERFACE
5912 } ID3D12PipelineState1Vtbl;
5913
5914 interface ID3D12PipelineState1
5915 {
5916 CONST_VTBL struct ID3D12PipelineState1Vtbl *lpVtbl;
5917 };
5918
5919
5920
5921#ifdef COBJMACROS
5922
5923
5924#define ID3D12PipelineState1_QueryInterface(This,riid,ppvObject) \
5925 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5926
5927#define ID3D12PipelineState1_AddRef(This) \
5928 ( (This)->lpVtbl -> AddRef(This) )
5929
5930#define ID3D12PipelineState1_Release(This) \
5931 ( (This)->lpVtbl -> Release(This) )
5932
5933
5934#define ID3D12PipelineState1_GetPrivateData(This,guid,pDataSize,pData) \
5935 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5936
5937#define ID3D12PipelineState1_SetPrivateData(This,guid,DataSize,pData) \
5938 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5939
5940#define ID3D12PipelineState1_SetPrivateDataInterface(This,guid,pData) \
5941 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5942
5943#define ID3D12PipelineState1_SetName(This,Name) \
5944 ( (This)->lpVtbl -> SetName(This,Name) )
5945
5946
5947#define ID3D12PipelineState1_GetDevice(This,riid,ppvDevice) \
5948 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5949
5950
5951
5952#define ID3D12PipelineState1_GetCachedBlob(This,ppBlob) \
5953 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5954
5955
5956#define ID3D12PipelineState1_GetRootSignature(This,riid,ppvRootSignature) \
5957 ( (This)->lpVtbl -> GetRootSignature(This,riid,ppvRootSignature) )
5958
5959#endif /* COBJMACROS */
5960
5961
5962#endif /* C style interface */
5963
5964
5965
5966
5967#endif /* __ID3D12PipelineState1_INTERFACE_DEFINED__ */
5968
5969
5970#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5971#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5972
5973/* interface ID3D12DescriptorHeap */
5974/* [unique][local][object][uuid] */
5975
5976
5977EXTERN_C const IID IID_ID3D12DescriptorHeap;
5978
5979#if defined(__cplusplus) && !defined(CINTERFACE)
5980
5981 MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
5982 ID3D12DescriptorHeap : public ID3D12Pageable
5983 {
5984 public:
5985#if defined(_MSC_VER) || !defined(_WIN32)
5986 virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5987#else
5988 virtual D3D12_DESCRIPTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
5989 D3D12_DESCRIPTOR_HEAP_DESC * RetVal) = 0;
5990#endif
5991
5992#if defined(_MSC_VER) || !defined(_WIN32)
5993 virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
5994#else
5995 virtual D3D12_CPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart(
5996 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal) = 0;
5997#endif
5998
5999#if defined(_MSC_VER) || !defined(_WIN32)
6000 virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
6001#else
6002 virtual D3D12_GPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart(
6003 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal) = 0;
6004#endif
6005
6006 };
6007
6008
6009#else /* C style interface */
6010
6011 typedef struct ID3D12DescriptorHeapVtbl
6012 {
6013 BEGIN_INTERFACE
6014
6015 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6016 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6017 ID3D12DescriptorHeap * This,
6018 REFIID riid,
6019 _COM_Outptr_ void **ppvObject);
6020
6021 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6022 ULONG ( STDMETHODCALLTYPE *AddRef )(
6023 ID3D12DescriptorHeap * This);
6024
6025 DECLSPEC_XFGVIRT(IUnknown, Release)
6026 ULONG ( STDMETHODCALLTYPE *Release )(
6027 ID3D12DescriptorHeap * This);
6028
6029 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6030 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6031 ID3D12DescriptorHeap * This,
6032 _In_ REFGUID guid,
6033 _Inout_ UINT *pDataSize,
6034 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6035
6036 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6037 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6038 ID3D12DescriptorHeap * This,
6039 _In_ REFGUID guid,
6040 _In_ UINT DataSize,
6041 _In_reads_bytes_opt_( DataSize ) const void *pData);
6042
6043 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6044 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6045 ID3D12DescriptorHeap * This,
6046 _In_ REFGUID guid,
6047 _In_opt_ const IUnknown *pData);
6048
6049 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6050 HRESULT ( STDMETHODCALLTYPE *SetName )(
6051 ID3D12DescriptorHeap * This,
6052 _In_z_ LPCWSTR Name);
6053
6054 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6055 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6056 ID3D12DescriptorHeap * This,
6057 REFIID riid,
6058 _COM_Outptr_opt_ void **ppvDevice);
6059
6060 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetDesc)
6061#if !defined(_WIN32)
6062 D3D12_DESCRIPTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
6063 ID3D12DescriptorHeap * This);
6064
6065#else
6066 D3D12_DESCRIPTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
6067 ID3D12DescriptorHeap * This,
6068 D3D12_DESCRIPTOR_HEAP_DESC * RetVal);
6069
6070#endif
6071
6072 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetCPUDescriptorHandleForHeapStart)
6073#if !defined(_WIN32)
6074 D3D12_CPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
6075 ID3D12DescriptorHeap * This);
6076
6077#else
6078 D3D12_CPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
6079 ID3D12DescriptorHeap * This,
6080 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal);
6081
6082#endif
6083
6084 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetGPUDescriptorHandleForHeapStart)
6085#if !defined(_WIN32)
6086 D3D12_GPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
6087 ID3D12DescriptorHeap * This);
6088
6089#else
6090 D3D12_GPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
6091 ID3D12DescriptorHeap * This,
6092 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal);
6093
6094#endif
6095
6096 END_INTERFACE
6097 } ID3D12DescriptorHeapVtbl;
6098
6099 interface ID3D12DescriptorHeap
6100 {
6101 CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
6102 };
6103
6104
6105
6106#ifdef COBJMACROS
6107
6108
6109#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
6110 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6111
6112#define ID3D12DescriptorHeap_AddRef(This) \
6113 ( (This)->lpVtbl -> AddRef(This) )
6114
6115#define ID3D12DescriptorHeap_Release(This) \
6116 ( (This)->lpVtbl -> Release(This) )
6117
6118
6119#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
6120 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6121
6122#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
6123 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6124
6125#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
6126 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6127
6128#define ID3D12DescriptorHeap_SetName(This,Name) \
6129 ( (This)->lpVtbl -> SetName(This,Name) )
6130
6131
6132#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
6133 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6134
6135
6136#if !defined(_WIN32)
6137
6138#define ID3D12DescriptorHeap_GetDesc(This) \
6139 ( (This)->lpVtbl -> GetDesc(This) )
6140#else
6141#define ID3D12DescriptorHeap_GetDesc(This,RetVal) \
6142 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
6143#endif
6144#if !defined(_WIN32)
6145
6146#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This) \
6147 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This) )
6148#else
6149#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This,RetVal) \
6150 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This,RetVal) )
6151#endif
6152#if !defined(_WIN32)
6153
6154#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This) \
6155 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This) )
6156#else
6157#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This,RetVal) \
6158 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This,RetVal) )
6159#endif
6160
6161#endif /* COBJMACROS */
6162
6163
6164#endif /* C style interface */
6165
6166
6167
6168
6169#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
6170
6171
6172#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
6173#define __ID3D12QueryHeap_INTERFACE_DEFINED__
6174
6175/* interface ID3D12QueryHeap */
6176/* [unique][local][object][uuid] */
6177
6178
6179EXTERN_C const IID IID_ID3D12QueryHeap;
6180
6181#if defined(__cplusplus) && !defined(CINTERFACE)
6182
6183 MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
6184 ID3D12QueryHeap : public ID3D12Pageable
6185 {
6186 public:
6187 };
6188
6189
6190#else /* C style interface */
6191
6192 typedef struct ID3D12QueryHeapVtbl
6193 {
6194 BEGIN_INTERFACE
6195
6196 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6197 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6198 ID3D12QueryHeap * This,
6199 REFIID riid,
6200 _COM_Outptr_ void **ppvObject);
6201
6202 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6203 ULONG ( STDMETHODCALLTYPE *AddRef )(
6204 ID3D12QueryHeap * This);
6205
6206 DECLSPEC_XFGVIRT(IUnknown, Release)
6207 ULONG ( STDMETHODCALLTYPE *Release )(
6208 ID3D12QueryHeap * This);
6209
6210 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6211 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6212 ID3D12QueryHeap * This,
6213 _In_ REFGUID guid,
6214 _Inout_ UINT *pDataSize,
6215 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6216
6217 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6218 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6219 ID3D12QueryHeap * This,
6220 _In_ REFGUID guid,
6221 _In_ UINT DataSize,
6222 _In_reads_bytes_opt_( DataSize ) const void *pData);
6223
6224 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6225 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6226 ID3D12QueryHeap * This,
6227 _In_ REFGUID guid,
6228 _In_opt_ const IUnknown *pData);
6229
6230 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6231 HRESULT ( STDMETHODCALLTYPE *SetName )(
6232 ID3D12QueryHeap * This,
6233 _In_z_ LPCWSTR Name);
6234
6235 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6236 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6237 ID3D12QueryHeap * This,
6238 REFIID riid,
6239 _COM_Outptr_opt_ void **ppvDevice);
6240
6241 END_INTERFACE
6242 } ID3D12QueryHeapVtbl;
6243
6244 interface ID3D12QueryHeap
6245 {
6246 CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
6247 };
6248
6249
6250
6251#ifdef COBJMACROS
6252
6253
6254#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
6255 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6256
6257#define ID3D12QueryHeap_AddRef(This) \
6258 ( (This)->lpVtbl -> AddRef(This) )
6259
6260#define ID3D12QueryHeap_Release(This) \
6261 ( (This)->lpVtbl -> Release(This) )
6262
6263
6264#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
6265 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6266
6267#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
6268 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6269
6270#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
6271 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6272
6273#define ID3D12QueryHeap_SetName(This,Name) \
6274 ( (This)->lpVtbl -> SetName(This,Name) )
6275
6276
6277#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
6278 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6279
6280
6281
6282#endif /* COBJMACROS */
6283
6284
6285#endif /* C style interface */
6286
6287
6288
6289
6290#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
6291
6292
6293#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
6294#define __ID3D12CommandSignature_INTERFACE_DEFINED__
6295
6296/* interface ID3D12CommandSignature */
6297/* [unique][local][object][uuid] */
6298
6299
6300EXTERN_C const IID IID_ID3D12CommandSignature;
6301
6302#if defined(__cplusplus) && !defined(CINTERFACE)
6303
6304 MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
6305 ID3D12CommandSignature : public ID3D12Pageable
6306 {
6307 public:
6308 };
6309
6310
6311#else /* C style interface */
6312
6313 typedef struct ID3D12CommandSignatureVtbl
6314 {
6315 BEGIN_INTERFACE
6316
6317 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6318 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6319 ID3D12CommandSignature * This,
6320 REFIID riid,
6321 _COM_Outptr_ void **ppvObject);
6322
6323 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6324 ULONG ( STDMETHODCALLTYPE *AddRef )(
6325 ID3D12CommandSignature * This);
6326
6327 DECLSPEC_XFGVIRT(IUnknown, Release)
6328 ULONG ( STDMETHODCALLTYPE *Release )(
6329 ID3D12CommandSignature * This);
6330
6331 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6332 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6333 ID3D12CommandSignature * This,
6334 _In_ REFGUID guid,
6335 _Inout_ UINT *pDataSize,
6336 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6337
6338 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6339 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6340 ID3D12CommandSignature * This,
6341 _In_ REFGUID guid,
6342 _In_ UINT DataSize,
6343 _In_reads_bytes_opt_( DataSize ) const void *pData);
6344
6345 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6346 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6347 ID3D12CommandSignature * This,
6348 _In_ REFGUID guid,
6349 _In_opt_ const IUnknown *pData);
6350
6351 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6352 HRESULT ( STDMETHODCALLTYPE *SetName )(
6353 ID3D12CommandSignature * This,
6354 _In_z_ LPCWSTR Name);
6355
6356 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6357 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6358 ID3D12CommandSignature * This,
6359 REFIID riid,
6360 _COM_Outptr_opt_ void **ppvDevice);
6361
6362 END_INTERFACE
6363 } ID3D12CommandSignatureVtbl;
6364
6365 interface ID3D12CommandSignature
6366 {
6367 CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
6368 };
6369
6370
6371
6372#ifdef COBJMACROS
6373
6374
6375#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
6376 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6377
6378#define ID3D12CommandSignature_AddRef(This) \
6379 ( (This)->lpVtbl -> AddRef(This) )
6380
6381#define ID3D12CommandSignature_Release(This) \
6382 ( (This)->lpVtbl -> Release(This) )
6383
6384
6385#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
6386 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6387
6388#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
6389 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6390
6391#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
6392 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6393
6394#define ID3D12CommandSignature_SetName(This,Name) \
6395 ( (This)->lpVtbl -> SetName(This,Name) )
6396
6397
6398#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
6399 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6400
6401
6402
6403#endif /* COBJMACROS */
6404
6405
6406#endif /* C style interface */
6407
6408
6409
6410
6411#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
6412
6413
6414#ifndef __ID3D12CommandList_INTERFACE_DEFINED__
6415#define __ID3D12CommandList_INTERFACE_DEFINED__
6416
6417/* interface ID3D12CommandList */
6418/* [unique][local][object][uuid] */
6419
6420
6421EXTERN_C const IID IID_ID3D12CommandList;
6422
6423#if defined(__cplusplus) && !defined(CINTERFACE)
6424
6425 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
6426 ID3D12CommandList : public ID3D12DeviceChild
6427 {
6428 public:
6429 virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
6430
6431 };
6432
6433
6434#else /* C style interface */
6435
6436 typedef struct ID3D12CommandListVtbl
6437 {
6438 BEGIN_INTERFACE
6439
6440 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6441 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6442 ID3D12CommandList * This,
6443 REFIID riid,
6444 _COM_Outptr_ void **ppvObject);
6445
6446 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6447 ULONG ( STDMETHODCALLTYPE *AddRef )(
6448 ID3D12CommandList * This);
6449
6450 DECLSPEC_XFGVIRT(IUnknown, Release)
6451 ULONG ( STDMETHODCALLTYPE *Release )(
6452 ID3D12CommandList * This);
6453
6454 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6455 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6456 ID3D12CommandList * This,
6457 _In_ REFGUID guid,
6458 _Inout_ UINT *pDataSize,
6459 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6460
6461 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6462 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6463 ID3D12CommandList * This,
6464 _In_ REFGUID guid,
6465 _In_ UINT DataSize,
6466 _In_reads_bytes_opt_( DataSize ) const void *pData);
6467
6468 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6469 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6470 ID3D12CommandList * This,
6471 _In_ REFGUID guid,
6472 _In_opt_ const IUnknown *pData);
6473
6474 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6475 HRESULT ( STDMETHODCALLTYPE *SetName )(
6476 ID3D12CommandList * This,
6477 _In_z_ LPCWSTR Name);
6478
6479 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6480 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6481 ID3D12CommandList * This,
6482 REFIID riid,
6483 _COM_Outptr_opt_ void **ppvDevice);
6484
6485 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6486 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6487 ID3D12CommandList * This);
6488
6489 END_INTERFACE
6490 } ID3D12CommandListVtbl;
6491
6492 interface ID3D12CommandList
6493 {
6494 CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
6495 };
6496
6497
6498
6499#ifdef COBJMACROS
6500
6501
6502#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
6503 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6504
6505#define ID3D12CommandList_AddRef(This) \
6506 ( (This)->lpVtbl -> AddRef(This) )
6507
6508#define ID3D12CommandList_Release(This) \
6509 ( (This)->lpVtbl -> Release(This) )
6510
6511
6512#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
6513 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6514
6515#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
6516 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6517
6518#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
6519 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6520
6521#define ID3D12CommandList_SetName(This,Name) \
6522 ( (This)->lpVtbl -> SetName(This,Name) )
6523
6524
6525#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
6526 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6527
6528
6529#define ID3D12CommandList_GetType(This) \
6530 ( (This)->lpVtbl -> GetType(This) )
6531
6532#endif /* COBJMACROS */
6533
6534
6535#endif /* C style interface */
6536
6537
6538
6539
6540#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
6541
6542
6543#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
6544#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
6545
6546/* interface ID3D12GraphicsCommandList */
6547/* [unique][local][object][uuid] */
6548
6549
6550EXTERN_C const IID IID_ID3D12GraphicsCommandList;
6551
6552#if defined(__cplusplus) && !defined(CINTERFACE)
6553
6554 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
6555 ID3D12GraphicsCommandList : public ID3D12CommandList
6556 {
6557 public:
6558 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
6559
6560 virtual HRESULT STDMETHODCALLTYPE Reset(
6561 _In_ ID3D12CommandAllocator *pAllocator,
6562 _In_opt_ ID3D12PipelineState *pInitialState) = 0;
6563
6564 virtual void STDMETHODCALLTYPE ClearState(
6565 _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
6566
6567 virtual void STDMETHODCALLTYPE DrawInstanced(
6568 _In_ UINT VertexCountPerInstance,
6569 _In_ UINT InstanceCount,
6570 _In_ UINT StartVertexLocation,
6571 _In_ UINT StartInstanceLocation) = 0;
6572
6573 virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
6574 _In_ UINT IndexCountPerInstance,
6575 _In_ UINT InstanceCount,
6576 _In_ UINT StartIndexLocation,
6577 _In_ INT BaseVertexLocation,
6578 _In_ UINT StartInstanceLocation) = 0;
6579
6580 virtual void STDMETHODCALLTYPE Dispatch(
6581 _In_ UINT ThreadGroupCountX,
6582 _In_ UINT ThreadGroupCountY,
6583 _In_ UINT ThreadGroupCountZ) = 0;
6584
6585 virtual void STDMETHODCALLTYPE CopyBufferRegion(
6586 _In_ ID3D12Resource *pDstBuffer,
6587 UINT64 DstOffset,
6588 _In_ ID3D12Resource *pSrcBuffer,
6589 UINT64 SrcOffset,
6590 UINT64 NumBytes) = 0;
6591
6592 virtual void STDMETHODCALLTYPE CopyTextureRegion(
6593 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6594 UINT DstX,
6595 UINT DstY,
6596 UINT DstZ,
6597 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6598 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
6599
6600 virtual void STDMETHODCALLTYPE CopyResource(
6601 _In_ ID3D12Resource *pDstResource,
6602 _In_ ID3D12Resource *pSrcResource) = 0;
6603
6604 virtual void STDMETHODCALLTYPE CopyTiles(
6605 _In_ ID3D12Resource *pTiledResource,
6606 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6607 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6608 _In_ ID3D12Resource *pBuffer,
6609 UINT64 BufferStartOffsetInBytes,
6610 D3D12_TILE_COPY_FLAGS Flags) = 0;
6611
6612 virtual void STDMETHODCALLTYPE ResolveSubresource(
6613 _In_ ID3D12Resource *pDstResource,
6614 _In_ UINT DstSubresource,
6615 _In_ ID3D12Resource *pSrcResource,
6616 _In_ UINT SrcSubresource,
6617 _In_ DXGI_FORMAT Format) = 0;
6618
6619 virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
6620 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
6621
6622 virtual void STDMETHODCALLTYPE RSSetViewports(
6623 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6624 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
6625
6626 virtual void STDMETHODCALLTYPE RSSetScissorRects(
6627 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6628 _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
6629
6630 virtual void STDMETHODCALLTYPE OMSetBlendFactor(
6631 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0;
6632
6633 virtual void STDMETHODCALLTYPE OMSetStencilRef(
6634 _In_ UINT StencilRef) = 0;
6635
6636 virtual void STDMETHODCALLTYPE SetPipelineState(
6637 _In_ ID3D12PipelineState *pPipelineState) = 0;
6638
6639 virtual void STDMETHODCALLTYPE ResourceBarrier(
6640 _In_ UINT NumBarriers,
6641 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
6642
6643 virtual void STDMETHODCALLTYPE ExecuteBundle(
6644 _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
6645
6646 virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
6647 _In_ UINT NumDescriptorHeaps,
6648 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
6649
6650 virtual void STDMETHODCALLTYPE SetComputeRootSignature(
6651 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
6652
6653 virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
6654 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
6655
6656 virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
6657 _In_ UINT RootParameterIndex,
6658 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
6659
6660 virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
6661 _In_ UINT RootParameterIndex,
6662 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
6663
6664 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
6665 _In_ UINT RootParameterIndex,
6666 _In_ UINT SrcData,
6667 _In_ UINT DestOffsetIn32BitValues) = 0;
6668
6669 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
6670 _In_ UINT RootParameterIndex,
6671 _In_ UINT SrcData,
6672 _In_ UINT DestOffsetIn32BitValues) = 0;
6673
6674 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
6675 _In_ UINT RootParameterIndex,
6676 _In_ UINT Num32BitValuesToSet,
6677 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6678 _In_ UINT DestOffsetIn32BitValues) = 0;
6679
6680 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
6681 _In_ UINT RootParameterIndex,
6682 _In_ UINT Num32BitValuesToSet,
6683 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6684 _In_ UINT DestOffsetIn32BitValues) = 0;
6685
6686 virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
6687 _In_ UINT RootParameterIndex,
6688 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6689
6690 virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
6691 _In_ UINT RootParameterIndex,
6692 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6693
6694 virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
6695 _In_ UINT RootParameterIndex,
6696 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6697
6698 virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
6699 _In_ UINT RootParameterIndex,
6700 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6701
6702 virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
6703 _In_ UINT RootParameterIndex,
6704 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6705
6706 virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
6707 _In_ UINT RootParameterIndex,
6708 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6709
6710 virtual void STDMETHODCALLTYPE IASetIndexBuffer(
6711 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
6712
6713 virtual void STDMETHODCALLTYPE IASetVertexBuffers(
6714 _In_ UINT StartSlot,
6715 _In_ UINT NumViews,
6716 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
6717
6718 virtual void STDMETHODCALLTYPE SOSetTargets(
6719 _In_ UINT StartSlot,
6720 _In_ UINT NumViews,
6721 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
6722
6723 virtual void STDMETHODCALLTYPE OMSetRenderTargets(
6724 _In_ UINT NumRenderTargetDescriptors,
6725 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6726 _In_ BOOL RTsSingleHandleToDescriptorRange,
6727 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
6728
6729 virtual void STDMETHODCALLTYPE ClearDepthStencilView(
6730 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6731 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6732 _In_ FLOAT Depth,
6733 _In_ UINT8 Stencil,
6734 _In_ UINT NumRects,
6735 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6736
6737 virtual void STDMETHODCALLTYPE ClearRenderTargetView(
6738 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6739 _In_ const FLOAT ColorRGBA[ 4 ],
6740 _In_ UINT NumRects,
6741 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6742
6743 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
6744 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6745 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6746 _In_ ID3D12Resource *pResource,
6747 _In_ const UINT Values[ 4 ],
6748 _In_ UINT NumRects,
6749 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6750
6751 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
6752 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6753 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6754 _In_ ID3D12Resource *pResource,
6755 _In_ const FLOAT Values[ 4 ],
6756 _In_ UINT NumRects,
6757 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6758
6759 virtual void STDMETHODCALLTYPE DiscardResource(
6760 _In_ ID3D12Resource *pResource,
6761 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
6762
6763 virtual void STDMETHODCALLTYPE BeginQuery(
6764 _In_ ID3D12QueryHeap *pQueryHeap,
6765 _In_ D3D12_QUERY_TYPE Type,
6766 _In_ UINT Index) = 0;
6767
6768 virtual void STDMETHODCALLTYPE EndQuery(
6769 _In_ ID3D12QueryHeap *pQueryHeap,
6770 _In_ D3D12_QUERY_TYPE Type,
6771 _In_ UINT Index) = 0;
6772
6773 virtual void STDMETHODCALLTYPE ResolveQueryData(
6774 _In_ ID3D12QueryHeap *pQueryHeap,
6775 _In_ D3D12_QUERY_TYPE Type,
6776 _In_ UINT StartIndex,
6777 _In_ UINT NumQueries,
6778 _In_ ID3D12Resource *pDestinationBuffer,
6779 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
6780
6781 virtual void STDMETHODCALLTYPE SetPredication(
6782 _In_opt_ ID3D12Resource *pBuffer,
6783 _In_ UINT64 AlignedBufferOffset,
6784 _In_ D3D12_PREDICATION_OP Operation) = 0;
6785
6786 virtual void STDMETHODCALLTYPE SetMarker(
6787 UINT Metadata,
6788 _In_reads_bytes_opt_(Size) const void *pData,
6789 UINT Size) = 0;
6790
6791 virtual void STDMETHODCALLTYPE BeginEvent(
6792 UINT Metadata,
6793 _In_reads_bytes_opt_(Size) const void *pData,
6794 UINT Size) = 0;
6795
6796 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
6797
6798 virtual void STDMETHODCALLTYPE ExecuteIndirect(
6799 _In_ ID3D12CommandSignature *pCommandSignature,
6800 _In_ UINT MaxCommandCount,
6801 _In_ ID3D12Resource *pArgumentBuffer,
6802 _In_ UINT64 ArgumentBufferOffset,
6803 _In_opt_ ID3D12Resource *pCountBuffer,
6804 _In_ UINT64 CountBufferOffset) = 0;
6805
6806 };
6807
6808
6809#else /* C style interface */
6810
6811 typedef struct ID3D12GraphicsCommandListVtbl
6812 {
6813 BEGIN_INTERFACE
6814
6815 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6816 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6817 ID3D12GraphicsCommandList * This,
6818 REFIID riid,
6819 _COM_Outptr_ void **ppvObject);
6820
6821 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6822 ULONG ( STDMETHODCALLTYPE *AddRef )(
6823 ID3D12GraphicsCommandList * This);
6824
6825 DECLSPEC_XFGVIRT(IUnknown, Release)
6826 ULONG ( STDMETHODCALLTYPE *Release )(
6827 ID3D12GraphicsCommandList * This);
6828
6829 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6830 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6831 ID3D12GraphicsCommandList * This,
6832 _In_ REFGUID guid,
6833 _Inout_ UINT *pDataSize,
6834 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6835
6836 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6837 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6838 ID3D12GraphicsCommandList * This,
6839 _In_ REFGUID guid,
6840 _In_ UINT DataSize,
6841 _In_reads_bytes_opt_( DataSize ) const void *pData);
6842
6843 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6844 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6845 ID3D12GraphicsCommandList * This,
6846 _In_ REFGUID guid,
6847 _In_opt_ const IUnknown *pData);
6848
6849 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6850 HRESULT ( STDMETHODCALLTYPE *SetName )(
6851 ID3D12GraphicsCommandList * This,
6852 _In_z_ LPCWSTR Name);
6853
6854 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6855 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6856 ID3D12GraphicsCommandList * This,
6857 REFIID riid,
6858 _COM_Outptr_opt_ void **ppvDevice);
6859
6860 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6861 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6862 ID3D12GraphicsCommandList * This);
6863
6864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6865 HRESULT ( STDMETHODCALLTYPE *Close )(
6866 ID3D12GraphicsCommandList * This);
6867
6868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6869 HRESULT ( STDMETHODCALLTYPE *Reset )(
6870 ID3D12GraphicsCommandList * This,
6871 _In_ ID3D12CommandAllocator *pAllocator,
6872 _In_opt_ ID3D12PipelineState *pInitialState);
6873
6874 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6875 void ( STDMETHODCALLTYPE *ClearState )(
6876 ID3D12GraphicsCommandList * This,
6877 _In_opt_ ID3D12PipelineState *pPipelineState);
6878
6879 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6880 void ( STDMETHODCALLTYPE *DrawInstanced )(
6881 ID3D12GraphicsCommandList * This,
6882 _In_ UINT VertexCountPerInstance,
6883 _In_ UINT InstanceCount,
6884 _In_ UINT StartVertexLocation,
6885 _In_ UINT StartInstanceLocation);
6886
6887 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6888 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6889 ID3D12GraphicsCommandList * This,
6890 _In_ UINT IndexCountPerInstance,
6891 _In_ UINT InstanceCount,
6892 _In_ UINT StartIndexLocation,
6893 _In_ INT BaseVertexLocation,
6894 _In_ UINT StartInstanceLocation);
6895
6896 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6897 void ( STDMETHODCALLTYPE *Dispatch )(
6898 ID3D12GraphicsCommandList * This,
6899 _In_ UINT ThreadGroupCountX,
6900 _In_ UINT ThreadGroupCountY,
6901 _In_ UINT ThreadGroupCountZ);
6902
6903 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6904 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6905 ID3D12GraphicsCommandList * This,
6906 _In_ ID3D12Resource *pDstBuffer,
6907 UINT64 DstOffset,
6908 _In_ ID3D12Resource *pSrcBuffer,
6909 UINT64 SrcOffset,
6910 UINT64 NumBytes);
6911
6912 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6913 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6914 ID3D12GraphicsCommandList * This,
6915 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6916 UINT DstX,
6917 UINT DstY,
6918 UINT DstZ,
6919 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6920 _In_opt_ const D3D12_BOX *pSrcBox);
6921
6922 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6923 void ( STDMETHODCALLTYPE *CopyResource )(
6924 ID3D12GraphicsCommandList * This,
6925 _In_ ID3D12Resource *pDstResource,
6926 _In_ ID3D12Resource *pSrcResource);
6927
6928 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6929 void ( STDMETHODCALLTYPE *CopyTiles )(
6930 ID3D12GraphicsCommandList * This,
6931 _In_ ID3D12Resource *pTiledResource,
6932 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6933 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6934 _In_ ID3D12Resource *pBuffer,
6935 UINT64 BufferStartOffsetInBytes,
6936 D3D12_TILE_COPY_FLAGS Flags);
6937
6938 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6939 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6940 ID3D12GraphicsCommandList * This,
6941 _In_ ID3D12Resource *pDstResource,
6942 _In_ UINT DstSubresource,
6943 _In_ ID3D12Resource *pSrcResource,
6944 _In_ UINT SrcSubresource,
6945 _In_ DXGI_FORMAT Format);
6946
6947 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6948 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6949 ID3D12GraphicsCommandList * This,
6950 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6951
6952 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6953 void ( STDMETHODCALLTYPE *RSSetViewports )(
6954 ID3D12GraphicsCommandList * This,
6955 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6956 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6957
6958 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6959 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6960 ID3D12GraphicsCommandList * This,
6961 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6962 _In_reads_( NumRects) const D3D12_RECT *pRects);
6963
6964 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6965 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6966 ID3D12GraphicsCommandList * This,
6967 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6968
6969 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6970 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6971 ID3D12GraphicsCommandList * This,
6972 _In_ UINT StencilRef);
6973
6974 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6975 void ( STDMETHODCALLTYPE *SetPipelineState )(
6976 ID3D12GraphicsCommandList * This,
6977 _In_ ID3D12PipelineState *pPipelineState);
6978
6979 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6980 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6981 ID3D12GraphicsCommandList * This,
6982 _In_ UINT NumBarriers,
6983 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6984
6985 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6986 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6987 ID3D12GraphicsCommandList * This,
6988 _In_ ID3D12GraphicsCommandList *pCommandList);
6989
6990 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6991 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6992 ID3D12GraphicsCommandList * This,
6993 _In_ UINT NumDescriptorHeaps,
6994 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6995
6996 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6997 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6998 ID3D12GraphicsCommandList * This,
6999 _In_opt_ ID3D12RootSignature *pRootSignature);
7000
7001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7002 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7003 ID3D12GraphicsCommandList * This,
7004 _In_opt_ ID3D12RootSignature *pRootSignature);
7005
7006 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7007 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7008 ID3D12GraphicsCommandList * This,
7009 _In_ UINT RootParameterIndex,
7010 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7011
7012 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7013 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7014 ID3D12GraphicsCommandList * This,
7015 _In_ UINT RootParameterIndex,
7016 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7017
7018 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7019 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7020 ID3D12GraphicsCommandList * This,
7021 _In_ UINT RootParameterIndex,
7022 _In_ UINT SrcData,
7023 _In_ UINT DestOffsetIn32BitValues);
7024
7025 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7026 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7027 ID3D12GraphicsCommandList * This,
7028 _In_ UINT RootParameterIndex,
7029 _In_ UINT SrcData,
7030 _In_ UINT DestOffsetIn32BitValues);
7031
7032 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7033 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7034 ID3D12GraphicsCommandList * This,
7035 _In_ UINT RootParameterIndex,
7036 _In_ UINT Num32BitValuesToSet,
7037 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7038 _In_ UINT DestOffsetIn32BitValues);
7039
7040 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7041 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7042 ID3D12GraphicsCommandList * This,
7043 _In_ UINT RootParameterIndex,
7044 _In_ UINT Num32BitValuesToSet,
7045 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7046 _In_ UINT DestOffsetIn32BitValues);
7047
7048 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7049 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7050 ID3D12GraphicsCommandList * This,
7051 _In_ UINT RootParameterIndex,
7052 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7053
7054 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7055 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7056 ID3D12GraphicsCommandList * This,
7057 _In_ UINT RootParameterIndex,
7058 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7059
7060 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7061 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7062 ID3D12GraphicsCommandList * This,
7063 _In_ UINT RootParameterIndex,
7064 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7065
7066 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7067 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7068 ID3D12GraphicsCommandList * This,
7069 _In_ UINT RootParameterIndex,
7070 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7071
7072 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7073 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7074 ID3D12GraphicsCommandList * This,
7075 _In_ UINT RootParameterIndex,
7076 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7077
7078 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7079 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7080 ID3D12GraphicsCommandList * This,
7081 _In_ UINT RootParameterIndex,
7082 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7083
7084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7085 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7086 ID3D12GraphicsCommandList * This,
7087 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7088
7089 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7090 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7091 ID3D12GraphicsCommandList * This,
7092 _In_ UINT StartSlot,
7093 _In_ UINT NumViews,
7094 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7095
7096 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7097 void ( STDMETHODCALLTYPE *SOSetTargets )(
7098 ID3D12GraphicsCommandList * This,
7099 _In_ UINT StartSlot,
7100 _In_ UINT NumViews,
7101 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7102
7103 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7104 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7105 ID3D12GraphicsCommandList * This,
7106 _In_ UINT NumRenderTargetDescriptors,
7107 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7108 _In_ BOOL RTsSingleHandleToDescriptorRange,
7109 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7110
7111 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7112 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7113 ID3D12GraphicsCommandList * This,
7114 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7115 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7116 _In_ FLOAT Depth,
7117 _In_ UINT8 Stencil,
7118 _In_ UINT NumRects,
7119 _In_reads_(NumRects) const D3D12_RECT *pRects);
7120
7121 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7122 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7123 ID3D12GraphicsCommandList * This,
7124 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7125 _In_ const FLOAT ColorRGBA[ 4 ],
7126 _In_ UINT NumRects,
7127 _In_reads_(NumRects) const D3D12_RECT *pRects);
7128
7129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7130 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7131 ID3D12GraphicsCommandList * This,
7132 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7133 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7134 _In_ ID3D12Resource *pResource,
7135 _In_ const UINT Values[ 4 ],
7136 _In_ UINT NumRects,
7137 _In_reads_(NumRects) const D3D12_RECT *pRects);
7138
7139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7140 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7141 ID3D12GraphicsCommandList * This,
7142 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7143 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7144 _In_ ID3D12Resource *pResource,
7145 _In_ const FLOAT Values[ 4 ],
7146 _In_ UINT NumRects,
7147 _In_reads_(NumRects) const D3D12_RECT *pRects);
7148
7149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7150 void ( STDMETHODCALLTYPE *DiscardResource )(
7151 ID3D12GraphicsCommandList * This,
7152 _In_ ID3D12Resource *pResource,
7153 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7154
7155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7156 void ( STDMETHODCALLTYPE *BeginQuery )(
7157 ID3D12GraphicsCommandList * This,
7158 _In_ ID3D12QueryHeap *pQueryHeap,
7159 _In_ D3D12_QUERY_TYPE Type,
7160 _In_ UINT Index);
7161
7162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7163 void ( STDMETHODCALLTYPE *EndQuery )(
7164 ID3D12GraphicsCommandList * This,
7165 _In_ ID3D12QueryHeap *pQueryHeap,
7166 _In_ D3D12_QUERY_TYPE Type,
7167 _In_ UINT Index);
7168
7169 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7170 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7171 ID3D12GraphicsCommandList * This,
7172 _In_ ID3D12QueryHeap *pQueryHeap,
7173 _In_ D3D12_QUERY_TYPE Type,
7174 _In_ UINT StartIndex,
7175 _In_ UINT NumQueries,
7176 _In_ ID3D12Resource *pDestinationBuffer,
7177 _In_ UINT64 AlignedDestinationBufferOffset);
7178
7179 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7180 void ( STDMETHODCALLTYPE *SetPredication )(
7181 ID3D12GraphicsCommandList * This,
7182 _In_opt_ ID3D12Resource *pBuffer,
7183 _In_ UINT64 AlignedBufferOffset,
7184 _In_ D3D12_PREDICATION_OP Operation);
7185
7186 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7187 void ( STDMETHODCALLTYPE *SetMarker )(
7188 ID3D12GraphicsCommandList * This,
7189 UINT Metadata,
7190 _In_reads_bytes_opt_(Size) const void *pData,
7191 UINT Size);
7192
7193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7194 void ( STDMETHODCALLTYPE *BeginEvent )(
7195 ID3D12GraphicsCommandList * This,
7196 UINT Metadata,
7197 _In_reads_bytes_opt_(Size) const void *pData,
7198 UINT Size);
7199
7200 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7201 void ( STDMETHODCALLTYPE *EndEvent )(
7202 ID3D12GraphicsCommandList * This);
7203
7204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7205 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7206 ID3D12GraphicsCommandList * This,
7207 _In_ ID3D12CommandSignature *pCommandSignature,
7208 _In_ UINT MaxCommandCount,
7209 _In_ ID3D12Resource *pArgumentBuffer,
7210 _In_ UINT64 ArgumentBufferOffset,
7211 _In_opt_ ID3D12Resource *pCountBuffer,
7212 _In_ UINT64 CountBufferOffset);
7213
7214 END_INTERFACE
7215 } ID3D12GraphicsCommandListVtbl;
7216
7217 interface ID3D12GraphicsCommandList
7218 {
7219 CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
7220 };
7221
7222
7223
7224#ifdef COBJMACROS
7225
7226
7227#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
7228 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7229
7230#define ID3D12GraphicsCommandList_AddRef(This) \
7231 ( (This)->lpVtbl -> AddRef(This) )
7232
7233#define ID3D12GraphicsCommandList_Release(This) \
7234 ( (This)->lpVtbl -> Release(This) )
7235
7236
7237#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
7238 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7239
7240#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
7241 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7242
7243#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
7244 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7245
7246#define ID3D12GraphicsCommandList_SetName(This,Name) \
7247 ( (This)->lpVtbl -> SetName(This,Name) )
7248
7249
7250#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
7251 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7252
7253
7254#define ID3D12GraphicsCommandList_GetType(This) \
7255 ( (This)->lpVtbl -> GetType(This) )
7256
7257
7258#define ID3D12GraphicsCommandList_Close(This) \
7259 ( (This)->lpVtbl -> Close(This) )
7260
7261#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
7262 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7263
7264#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
7265 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7266
7267#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7268 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7269
7270#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7271 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7272
7273#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7274 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7275
7276#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7277 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7278
7279#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7280 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7281
7282#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
7283 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7284
7285#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7286 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7287
7288#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7289 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7290
7291#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
7292 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7293
7294#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
7295 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7296
7297#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
7298 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7299
7300#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
7301 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7302
7303#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
7304 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7305
7306#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
7307 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7308
7309#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
7310 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7311
7312#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
7313 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7314
7315#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7316 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7317
7318#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
7319 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7320
7321#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
7322 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7323
7324#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7325 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7326
7327#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7328 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7329
7330#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7331 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7332
7333#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7334 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7335
7336#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7337 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7338
7339#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7340 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7341
7342#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7343 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7344
7345#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7346 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7347
7348#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7349 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7350
7351#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7352 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7353
7354#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7355 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7356
7357#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7358 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7359
7360#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
7361 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7362
7363#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7364 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7365
7366#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
7367 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7368
7369#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7370 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7371
7372#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7373 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7374
7375#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7376 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7377
7378#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7379 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7380
7381#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7382 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7383
7384#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
7385 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
7386
7387#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
7388 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
7389
7390#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
7391 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
7392
7393#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
7394 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
7395
7396#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
7397 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
7398
7399#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
7400 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
7401
7402#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
7403 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
7404
7405#define ID3D12GraphicsCommandList_EndEvent(This) \
7406 ( (This)->lpVtbl -> EndEvent(This) )
7407
7408#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
7409 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
7410
7411#endif /* COBJMACROS */
7412
7413
7414#endif /* C style interface */
7415
7416
7417
7418
7419#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
7420
7421
7422#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
7423#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
7424
7425/* interface ID3D12GraphicsCommandList1 */
7426/* [unique][local][object][uuid] */
7427
7428
7429EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
7430
7431#if defined(__cplusplus) && !defined(CINTERFACE)
7432
7433 MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
7434 ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
7435 {
7436 public:
7437 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
7438 _In_ ID3D12Resource *pDstBuffer,
7439 UINT64 DstOffset,
7440 _In_ ID3D12Resource *pSrcBuffer,
7441 UINT64 SrcOffset,
7442 UINT Dependencies,
7443 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7444 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
7445
7446 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
7447 _In_ ID3D12Resource *pDstBuffer,
7448 UINT64 DstOffset,
7449 _In_ ID3D12Resource *pSrcBuffer,
7450 UINT64 SrcOffset,
7451 UINT Dependencies,
7452 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7453 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
7454
7455 virtual void STDMETHODCALLTYPE OMSetDepthBounds(
7456 _In_ FLOAT Min,
7457 _In_ FLOAT Max) = 0;
7458
7459 virtual void STDMETHODCALLTYPE SetSamplePositions(
7460 _In_ UINT NumSamplesPerPixel,
7461 _In_ UINT NumPixels,
7462 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
7463
7464 virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
7465 _In_ ID3D12Resource *pDstResource,
7466 _In_ UINT DstSubresource,
7467 _In_ UINT DstX,
7468 _In_ UINT DstY,
7469 _In_ ID3D12Resource *pSrcResource,
7470 _In_ UINT SrcSubresource,
7471 _In_opt_ D3D12_RECT *pSrcRect,
7472 _In_ DXGI_FORMAT Format,
7473 _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
7474
7475 virtual void STDMETHODCALLTYPE SetViewInstanceMask(
7476 _In_ UINT Mask) = 0;
7477
7478 };
7479
7480
7481#else /* C style interface */
7482
7483 typedef struct ID3D12GraphicsCommandList1Vtbl
7484 {
7485 BEGIN_INTERFACE
7486
7487 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7488 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7489 ID3D12GraphicsCommandList1 * This,
7490 REFIID riid,
7491 _COM_Outptr_ void **ppvObject);
7492
7493 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7494 ULONG ( STDMETHODCALLTYPE *AddRef )(
7495 ID3D12GraphicsCommandList1 * This);
7496
7497 DECLSPEC_XFGVIRT(IUnknown, Release)
7498 ULONG ( STDMETHODCALLTYPE *Release )(
7499 ID3D12GraphicsCommandList1 * This);
7500
7501 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7502 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7503 ID3D12GraphicsCommandList1 * This,
7504 _In_ REFGUID guid,
7505 _Inout_ UINT *pDataSize,
7506 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7507
7508 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7509 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7510 ID3D12GraphicsCommandList1 * This,
7511 _In_ REFGUID guid,
7512 _In_ UINT DataSize,
7513 _In_reads_bytes_opt_( DataSize ) const void *pData);
7514
7515 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7516 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7517 ID3D12GraphicsCommandList1 * This,
7518 _In_ REFGUID guid,
7519 _In_opt_ const IUnknown *pData);
7520
7521 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7522 HRESULT ( STDMETHODCALLTYPE *SetName )(
7523 ID3D12GraphicsCommandList1 * This,
7524 _In_z_ LPCWSTR Name);
7525
7526 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7527 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7528 ID3D12GraphicsCommandList1 * This,
7529 REFIID riid,
7530 _COM_Outptr_opt_ void **ppvDevice);
7531
7532 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
7533 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
7534 ID3D12GraphicsCommandList1 * This);
7535
7536 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
7537 HRESULT ( STDMETHODCALLTYPE *Close )(
7538 ID3D12GraphicsCommandList1 * This);
7539
7540 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
7541 HRESULT ( STDMETHODCALLTYPE *Reset )(
7542 ID3D12GraphicsCommandList1 * This,
7543 _In_ ID3D12CommandAllocator *pAllocator,
7544 _In_opt_ ID3D12PipelineState *pInitialState);
7545
7546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
7547 void ( STDMETHODCALLTYPE *ClearState )(
7548 ID3D12GraphicsCommandList1 * This,
7549 _In_opt_ ID3D12PipelineState *pPipelineState);
7550
7551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
7552 void ( STDMETHODCALLTYPE *DrawInstanced )(
7553 ID3D12GraphicsCommandList1 * This,
7554 _In_ UINT VertexCountPerInstance,
7555 _In_ UINT InstanceCount,
7556 _In_ UINT StartVertexLocation,
7557 _In_ UINT StartInstanceLocation);
7558
7559 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
7560 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
7561 ID3D12GraphicsCommandList1 * This,
7562 _In_ UINT IndexCountPerInstance,
7563 _In_ UINT InstanceCount,
7564 _In_ UINT StartIndexLocation,
7565 _In_ INT BaseVertexLocation,
7566 _In_ UINT StartInstanceLocation);
7567
7568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
7569 void ( STDMETHODCALLTYPE *Dispatch )(
7570 ID3D12GraphicsCommandList1 * This,
7571 _In_ UINT ThreadGroupCountX,
7572 _In_ UINT ThreadGroupCountY,
7573 _In_ UINT ThreadGroupCountZ);
7574
7575 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
7576 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
7577 ID3D12GraphicsCommandList1 * This,
7578 _In_ ID3D12Resource *pDstBuffer,
7579 UINT64 DstOffset,
7580 _In_ ID3D12Resource *pSrcBuffer,
7581 UINT64 SrcOffset,
7582 UINT64 NumBytes);
7583
7584 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
7585 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
7586 ID3D12GraphicsCommandList1 * This,
7587 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
7588 UINT DstX,
7589 UINT DstY,
7590 UINT DstZ,
7591 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
7592 _In_opt_ const D3D12_BOX *pSrcBox);
7593
7594 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
7595 void ( STDMETHODCALLTYPE *CopyResource )(
7596 ID3D12GraphicsCommandList1 * This,
7597 _In_ ID3D12Resource *pDstResource,
7598 _In_ ID3D12Resource *pSrcResource);
7599
7600 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
7601 void ( STDMETHODCALLTYPE *CopyTiles )(
7602 ID3D12GraphicsCommandList1 * This,
7603 _In_ ID3D12Resource *pTiledResource,
7604 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
7605 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
7606 _In_ ID3D12Resource *pBuffer,
7607 UINT64 BufferStartOffsetInBytes,
7608 D3D12_TILE_COPY_FLAGS Flags);
7609
7610 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
7611 void ( STDMETHODCALLTYPE *ResolveSubresource )(
7612 ID3D12GraphicsCommandList1 * This,
7613 _In_ ID3D12Resource *pDstResource,
7614 _In_ UINT DstSubresource,
7615 _In_ ID3D12Resource *pSrcResource,
7616 _In_ UINT SrcSubresource,
7617 _In_ DXGI_FORMAT Format);
7618
7619 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
7620 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
7621 ID3D12GraphicsCommandList1 * This,
7622 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
7623
7624 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
7625 void ( STDMETHODCALLTYPE *RSSetViewports )(
7626 ID3D12GraphicsCommandList1 * This,
7627 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
7628 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
7629
7630 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
7631 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
7632 ID3D12GraphicsCommandList1 * This,
7633 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
7634 _In_reads_( NumRects) const D3D12_RECT *pRects);
7635
7636 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
7637 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
7638 ID3D12GraphicsCommandList1 * This,
7639 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
7640
7641 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
7642 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
7643 ID3D12GraphicsCommandList1 * This,
7644 _In_ UINT StencilRef);
7645
7646 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
7647 void ( STDMETHODCALLTYPE *SetPipelineState )(
7648 ID3D12GraphicsCommandList1 * This,
7649 _In_ ID3D12PipelineState *pPipelineState);
7650
7651 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
7652 void ( STDMETHODCALLTYPE *ResourceBarrier )(
7653 ID3D12GraphicsCommandList1 * This,
7654 _In_ UINT NumBarriers,
7655 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
7656
7657 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
7658 void ( STDMETHODCALLTYPE *ExecuteBundle )(
7659 ID3D12GraphicsCommandList1 * This,
7660 _In_ ID3D12GraphicsCommandList *pCommandList);
7661
7662 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
7663 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
7664 ID3D12GraphicsCommandList1 * This,
7665 _In_ UINT NumDescriptorHeaps,
7666 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
7667
7668 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
7669 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
7670 ID3D12GraphicsCommandList1 * This,
7671 _In_opt_ ID3D12RootSignature *pRootSignature);
7672
7673 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7674 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7675 ID3D12GraphicsCommandList1 * This,
7676 _In_opt_ ID3D12RootSignature *pRootSignature);
7677
7678 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7679 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7680 ID3D12GraphicsCommandList1 * This,
7681 _In_ UINT RootParameterIndex,
7682 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7683
7684 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7685 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7686 ID3D12GraphicsCommandList1 * This,
7687 _In_ UINT RootParameterIndex,
7688 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7689
7690 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7691 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7692 ID3D12GraphicsCommandList1 * This,
7693 _In_ UINT RootParameterIndex,
7694 _In_ UINT SrcData,
7695 _In_ UINT DestOffsetIn32BitValues);
7696
7697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7698 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7699 ID3D12GraphicsCommandList1 * This,
7700 _In_ UINT RootParameterIndex,
7701 _In_ UINT SrcData,
7702 _In_ UINT DestOffsetIn32BitValues);
7703
7704 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7705 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7706 ID3D12GraphicsCommandList1 * This,
7707 _In_ UINT RootParameterIndex,
7708 _In_ UINT Num32BitValuesToSet,
7709 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7710 _In_ UINT DestOffsetIn32BitValues);
7711
7712 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7713 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7714 ID3D12GraphicsCommandList1 * This,
7715 _In_ UINT RootParameterIndex,
7716 _In_ UINT Num32BitValuesToSet,
7717 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7718 _In_ UINT DestOffsetIn32BitValues);
7719
7720 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7721 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7722 ID3D12GraphicsCommandList1 * This,
7723 _In_ UINT RootParameterIndex,
7724 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7725
7726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7727 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7728 ID3D12GraphicsCommandList1 * This,
7729 _In_ UINT RootParameterIndex,
7730 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7731
7732 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7733 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7734 ID3D12GraphicsCommandList1 * This,
7735 _In_ UINT RootParameterIndex,
7736 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7737
7738 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7739 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7740 ID3D12GraphicsCommandList1 * This,
7741 _In_ UINT RootParameterIndex,
7742 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7743
7744 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7745 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7746 ID3D12GraphicsCommandList1 * This,
7747 _In_ UINT RootParameterIndex,
7748 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7749
7750 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7751 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7752 ID3D12GraphicsCommandList1 * This,
7753 _In_ UINT RootParameterIndex,
7754 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7755
7756 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7757 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7758 ID3D12GraphicsCommandList1 * This,
7759 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7760
7761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7762 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7763 ID3D12GraphicsCommandList1 * This,
7764 _In_ UINT StartSlot,
7765 _In_ UINT NumViews,
7766 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7767
7768 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7769 void ( STDMETHODCALLTYPE *SOSetTargets )(
7770 ID3D12GraphicsCommandList1 * This,
7771 _In_ UINT StartSlot,
7772 _In_ UINT NumViews,
7773 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7774
7775 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7776 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7777 ID3D12GraphicsCommandList1 * This,
7778 _In_ UINT NumRenderTargetDescriptors,
7779 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7780 _In_ BOOL RTsSingleHandleToDescriptorRange,
7781 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7782
7783 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7784 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7785 ID3D12GraphicsCommandList1 * This,
7786 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7787 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7788 _In_ FLOAT Depth,
7789 _In_ UINT8 Stencil,
7790 _In_ UINT NumRects,
7791 _In_reads_(NumRects) const D3D12_RECT *pRects);
7792
7793 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7794 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7795 ID3D12GraphicsCommandList1 * This,
7796 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7797 _In_ const FLOAT ColorRGBA[ 4 ],
7798 _In_ UINT NumRects,
7799 _In_reads_(NumRects) const D3D12_RECT *pRects);
7800
7801 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7802 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7803 ID3D12GraphicsCommandList1 * This,
7804 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7805 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7806 _In_ ID3D12Resource *pResource,
7807 _In_ const UINT Values[ 4 ],
7808 _In_ UINT NumRects,
7809 _In_reads_(NumRects) const D3D12_RECT *pRects);
7810
7811 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7812 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7813 ID3D12GraphicsCommandList1 * This,
7814 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7815 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7816 _In_ ID3D12Resource *pResource,
7817 _In_ const FLOAT Values[ 4 ],
7818 _In_ UINT NumRects,
7819 _In_reads_(NumRects) const D3D12_RECT *pRects);
7820
7821 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7822 void ( STDMETHODCALLTYPE *DiscardResource )(
7823 ID3D12GraphicsCommandList1 * This,
7824 _In_ ID3D12Resource *pResource,
7825 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7826
7827 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7828 void ( STDMETHODCALLTYPE *BeginQuery )(
7829 ID3D12GraphicsCommandList1 * This,
7830 _In_ ID3D12QueryHeap *pQueryHeap,
7831 _In_ D3D12_QUERY_TYPE Type,
7832 _In_ UINT Index);
7833
7834 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7835 void ( STDMETHODCALLTYPE *EndQuery )(
7836 ID3D12GraphicsCommandList1 * This,
7837 _In_ ID3D12QueryHeap *pQueryHeap,
7838 _In_ D3D12_QUERY_TYPE Type,
7839 _In_ UINT Index);
7840
7841 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7842 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7843 ID3D12GraphicsCommandList1 * This,
7844 _In_ ID3D12QueryHeap *pQueryHeap,
7845 _In_ D3D12_QUERY_TYPE Type,
7846 _In_ UINT StartIndex,
7847 _In_ UINT NumQueries,
7848 _In_ ID3D12Resource *pDestinationBuffer,
7849 _In_ UINT64 AlignedDestinationBufferOffset);
7850
7851 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7852 void ( STDMETHODCALLTYPE *SetPredication )(
7853 ID3D12GraphicsCommandList1 * This,
7854 _In_opt_ ID3D12Resource *pBuffer,
7855 _In_ UINT64 AlignedBufferOffset,
7856 _In_ D3D12_PREDICATION_OP Operation);
7857
7858 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7859 void ( STDMETHODCALLTYPE *SetMarker )(
7860 ID3D12GraphicsCommandList1 * This,
7861 UINT Metadata,
7862 _In_reads_bytes_opt_(Size) const void *pData,
7863 UINT Size);
7864
7865 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7866 void ( STDMETHODCALLTYPE *BeginEvent )(
7867 ID3D12GraphicsCommandList1 * This,
7868 UINT Metadata,
7869 _In_reads_bytes_opt_(Size) const void *pData,
7870 UINT Size);
7871
7872 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7873 void ( STDMETHODCALLTYPE *EndEvent )(
7874 ID3D12GraphicsCommandList1 * This);
7875
7876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7877 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7878 ID3D12GraphicsCommandList1 * This,
7879 _In_ ID3D12CommandSignature *pCommandSignature,
7880 _In_ UINT MaxCommandCount,
7881 _In_ ID3D12Resource *pArgumentBuffer,
7882 _In_ UINT64 ArgumentBufferOffset,
7883 _In_opt_ ID3D12Resource *pCountBuffer,
7884 _In_ UINT64 CountBufferOffset);
7885
7886 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7887 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7888 ID3D12GraphicsCommandList1 * This,
7889 _In_ ID3D12Resource *pDstBuffer,
7890 UINT64 DstOffset,
7891 _In_ ID3D12Resource *pSrcBuffer,
7892 UINT64 SrcOffset,
7893 UINT Dependencies,
7894 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7895 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7896
7897 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7898 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7899 ID3D12GraphicsCommandList1 * This,
7900 _In_ ID3D12Resource *pDstBuffer,
7901 UINT64 DstOffset,
7902 _In_ ID3D12Resource *pSrcBuffer,
7903 UINT64 SrcOffset,
7904 UINT Dependencies,
7905 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7906 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7907
7908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7909 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7910 ID3D12GraphicsCommandList1 * This,
7911 _In_ FLOAT Min,
7912 _In_ FLOAT Max);
7913
7914 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7915 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7916 ID3D12GraphicsCommandList1 * This,
7917 _In_ UINT NumSamplesPerPixel,
7918 _In_ UINT NumPixels,
7919 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7920
7921 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7922 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7923 ID3D12GraphicsCommandList1 * This,
7924 _In_ ID3D12Resource *pDstResource,
7925 _In_ UINT DstSubresource,
7926 _In_ UINT DstX,
7927 _In_ UINT DstY,
7928 _In_ ID3D12Resource *pSrcResource,
7929 _In_ UINT SrcSubresource,
7930 _In_opt_ D3D12_RECT *pSrcRect,
7931 _In_ DXGI_FORMAT Format,
7932 _In_ D3D12_RESOLVE_MODE ResolveMode);
7933
7934 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7935 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7936 ID3D12GraphicsCommandList1 * This,
7937 _In_ UINT Mask);
7938
7939 END_INTERFACE
7940 } ID3D12GraphicsCommandList1Vtbl;
7941
7942 interface ID3D12GraphicsCommandList1
7943 {
7944 CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
7945 };
7946
7947
7948
7949#ifdef COBJMACROS
7950
7951
7952#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
7953 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7954
7955#define ID3D12GraphicsCommandList1_AddRef(This) \
7956 ( (This)->lpVtbl -> AddRef(This) )
7957
7958#define ID3D12GraphicsCommandList1_Release(This) \
7959 ( (This)->lpVtbl -> Release(This) )
7960
7961
7962#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
7963 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7964
7965#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
7966 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7967
7968#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
7969 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7970
7971#define ID3D12GraphicsCommandList1_SetName(This,Name) \
7972 ( (This)->lpVtbl -> SetName(This,Name) )
7973
7974
7975#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
7976 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7977
7978
7979#define ID3D12GraphicsCommandList1_GetType(This) \
7980 ( (This)->lpVtbl -> GetType(This) )
7981
7982
7983#define ID3D12GraphicsCommandList1_Close(This) \
7984 ( (This)->lpVtbl -> Close(This) )
7985
7986#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
7987 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7988
7989#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
7990 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7991
7992#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7993 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7994
7995#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7996 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7997
7998#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7999 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
8000
8001#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
8002 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
8003
8004#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
8005 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
8006
8007#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
8008 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
8009
8010#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
8011 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
8012
8013#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
8014 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
8015
8016#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
8017 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
8018
8019#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
8020 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
8021
8022#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
8023 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
8024
8025#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
8026 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
8027
8028#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
8029 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
8030
8031#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
8032 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
8033
8034#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
8035 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8036
8037#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
8038 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
8039
8040#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
8041 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
8042
8043#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
8044 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
8045
8046#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
8047 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
8048
8049#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8050 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8051
8052#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8053 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8054
8055#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8056 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8057
8058#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8059 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8060
8061#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8062 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8063
8064#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8065 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8066
8067#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8068 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8069
8070#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8071 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8072
8073#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8074 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8075
8076#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8077 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8078
8079#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8080 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8081
8082#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8083 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8084
8085#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
8086 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
8087
8088#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
8089 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
8090
8091#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
8092 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
8093
8094#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
8095 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
8096
8097#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
8098 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
8099
8100#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
8101 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
8102
8103#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8104 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8105
8106#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8107 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8108
8109#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
8110 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8111
8112#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
8113 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8114
8115#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
8116 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8117
8118#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8119 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8120
8121#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8122 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8123
8124#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
8125 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8126
8127#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
8128 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8129
8130#define ID3D12GraphicsCommandList1_EndEvent(This) \
8131 ( (This)->lpVtbl -> EndEvent(This) )
8132
8133#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8134 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8135
8136
8137#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8138 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8139
8140#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8141 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8142
8143#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
8144 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8145
8146#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8147 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8148
8149#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8150 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8151
8152#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \
8153 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8154
8155#endif /* COBJMACROS */
8156
8157
8158#endif /* C style interface */
8159
8160
8161
8162
8163#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
8164
8165
8166/* interface __MIDL_itf_d3d12_0000_0019 */
8167/* [local] */
8168
8169typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
8170 {
8171 D3D12_GPU_VIRTUAL_ADDRESS Dest;
8172 UINT32 Value;
8173 } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
8174
8175typedef
8176enum D3D12_WRITEBUFFERIMMEDIATE_MODE
8177 {
8178 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0,
8179 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
8180 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
8181 } D3D12_WRITEBUFFERIMMEDIATE_MODE;
8182
8183
8184
8185extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_c_ifspec;
8186extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_s_ifspec;
8187
8188#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
8189#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
8190
8191/* interface ID3D12GraphicsCommandList2 */
8192/* [unique][local][object][uuid] */
8193
8194
8195EXTERN_C const IID IID_ID3D12GraphicsCommandList2;
8196
8197#if defined(__cplusplus) && !defined(CINTERFACE)
8198
8199 MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28")
8200 ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
8201 {
8202 public:
8203 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
8204 UINT Count,
8205 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8206 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
8207
8208 };
8209
8210
8211#else /* C style interface */
8212
8213 typedef struct ID3D12GraphicsCommandList2Vtbl
8214 {
8215 BEGIN_INTERFACE
8216
8217 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8218 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8219 ID3D12GraphicsCommandList2 * This,
8220 REFIID riid,
8221 _COM_Outptr_ void **ppvObject);
8222
8223 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8224 ULONG ( STDMETHODCALLTYPE *AddRef )(
8225 ID3D12GraphicsCommandList2 * This);
8226
8227 DECLSPEC_XFGVIRT(IUnknown, Release)
8228 ULONG ( STDMETHODCALLTYPE *Release )(
8229 ID3D12GraphicsCommandList2 * This);
8230
8231 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8232 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8233 ID3D12GraphicsCommandList2 * This,
8234 _In_ REFGUID guid,
8235 _Inout_ UINT *pDataSize,
8236 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8237
8238 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8239 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8240 ID3D12GraphicsCommandList2 * This,
8241 _In_ REFGUID guid,
8242 _In_ UINT DataSize,
8243 _In_reads_bytes_opt_( DataSize ) const void *pData);
8244
8245 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8246 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8247 ID3D12GraphicsCommandList2 * This,
8248 _In_ REFGUID guid,
8249 _In_opt_ const IUnknown *pData);
8250
8251 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8252 HRESULT ( STDMETHODCALLTYPE *SetName )(
8253 ID3D12GraphicsCommandList2 * This,
8254 _In_z_ LPCWSTR Name);
8255
8256 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8257 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8258 ID3D12GraphicsCommandList2 * This,
8259 REFIID riid,
8260 _COM_Outptr_opt_ void **ppvDevice);
8261
8262 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8263 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8264 ID3D12GraphicsCommandList2 * This);
8265
8266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
8267 HRESULT ( STDMETHODCALLTYPE *Close )(
8268 ID3D12GraphicsCommandList2 * This);
8269
8270 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
8271 HRESULT ( STDMETHODCALLTYPE *Reset )(
8272 ID3D12GraphicsCommandList2 * This,
8273 _In_ ID3D12CommandAllocator *pAllocator,
8274 _In_opt_ ID3D12PipelineState *pInitialState);
8275
8276 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
8277 void ( STDMETHODCALLTYPE *ClearState )(
8278 ID3D12GraphicsCommandList2 * This,
8279 _In_opt_ ID3D12PipelineState *pPipelineState);
8280
8281 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
8282 void ( STDMETHODCALLTYPE *DrawInstanced )(
8283 ID3D12GraphicsCommandList2 * This,
8284 _In_ UINT VertexCountPerInstance,
8285 _In_ UINT InstanceCount,
8286 _In_ UINT StartVertexLocation,
8287 _In_ UINT StartInstanceLocation);
8288
8289 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
8290 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
8291 ID3D12GraphicsCommandList2 * This,
8292 _In_ UINT IndexCountPerInstance,
8293 _In_ UINT InstanceCount,
8294 _In_ UINT StartIndexLocation,
8295 _In_ INT BaseVertexLocation,
8296 _In_ UINT StartInstanceLocation);
8297
8298 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
8299 void ( STDMETHODCALLTYPE *Dispatch )(
8300 ID3D12GraphicsCommandList2 * This,
8301 _In_ UINT ThreadGroupCountX,
8302 _In_ UINT ThreadGroupCountY,
8303 _In_ UINT ThreadGroupCountZ);
8304
8305 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
8306 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
8307 ID3D12GraphicsCommandList2 * This,
8308 _In_ ID3D12Resource *pDstBuffer,
8309 UINT64 DstOffset,
8310 _In_ ID3D12Resource *pSrcBuffer,
8311 UINT64 SrcOffset,
8312 UINT64 NumBytes);
8313
8314 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
8315 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
8316 ID3D12GraphicsCommandList2 * This,
8317 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
8318 UINT DstX,
8319 UINT DstY,
8320 UINT DstZ,
8321 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
8322 _In_opt_ const D3D12_BOX *pSrcBox);
8323
8324 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
8325 void ( STDMETHODCALLTYPE *CopyResource )(
8326 ID3D12GraphicsCommandList2 * This,
8327 _In_ ID3D12Resource *pDstResource,
8328 _In_ ID3D12Resource *pSrcResource);
8329
8330 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
8331 void ( STDMETHODCALLTYPE *CopyTiles )(
8332 ID3D12GraphicsCommandList2 * This,
8333 _In_ ID3D12Resource *pTiledResource,
8334 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
8335 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
8336 _In_ ID3D12Resource *pBuffer,
8337 UINT64 BufferStartOffsetInBytes,
8338 D3D12_TILE_COPY_FLAGS Flags);
8339
8340 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
8341 void ( STDMETHODCALLTYPE *ResolveSubresource )(
8342 ID3D12GraphicsCommandList2 * This,
8343 _In_ ID3D12Resource *pDstResource,
8344 _In_ UINT DstSubresource,
8345 _In_ ID3D12Resource *pSrcResource,
8346 _In_ UINT SrcSubresource,
8347 _In_ DXGI_FORMAT Format);
8348
8349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
8350 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
8351 ID3D12GraphicsCommandList2 * This,
8352 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
8353
8354 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
8355 void ( STDMETHODCALLTYPE *RSSetViewports )(
8356 ID3D12GraphicsCommandList2 * This,
8357 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
8358 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
8359
8360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
8361 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
8362 ID3D12GraphicsCommandList2 * This,
8363 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
8364 _In_reads_( NumRects) const D3D12_RECT *pRects);
8365
8366 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
8367 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
8368 ID3D12GraphicsCommandList2 * This,
8369 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
8370
8371 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
8372 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
8373 ID3D12GraphicsCommandList2 * This,
8374 _In_ UINT StencilRef);
8375
8376 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
8377 void ( STDMETHODCALLTYPE *SetPipelineState )(
8378 ID3D12GraphicsCommandList2 * This,
8379 _In_ ID3D12PipelineState *pPipelineState);
8380
8381 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
8382 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8383 ID3D12GraphicsCommandList2 * This,
8384 _In_ UINT NumBarriers,
8385 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8386
8387 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
8388 void ( STDMETHODCALLTYPE *ExecuteBundle )(
8389 ID3D12GraphicsCommandList2 * This,
8390 _In_ ID3D12GraphicsCommandList *pCommandList);
8391
8392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
8393 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
8394 ID3D12GraphicsCommandList2 * This,
8395 _In_ UINT NumDescriptorHeaps,
8396 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
8397
8398 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
8399 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
8400 ID3D12GraphicsCommandList2 * This,
8401 _In_opt_ ID3D12RootSignature *pRootSignature);
8402
8403 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
8404 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
8405 ID3D12GraphicsCommandList2 * This,
8406 _In_opt_ ID3D12RootSignature *pRootSignature);
8407
8408 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
8409 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
8410 ID3D12GraphicsCommandList2 * This,
8411 _In_ UINT RootParameterIndex,
8412 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
8413
8414 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
8415 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
8416 ID3D12GraphicsCommandList2 * This,
8417 _In_ UINT RootParameterIndex,
8418 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
8419
8420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
8421 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
8422 ID3D12GraphicsCommandList2 * This,
8423 _In_ UINT RootParameterIndex,
8424 _In_ UINT SrcData,
8425 _In_ UINT DestOffsetIn32BitValues);
8426
8427 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
8428 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
8429 ID3D12GraphicsCommandList2 * This,
8430 _In_ UINT RootParameterIndex,
8431 _In_ UINT SrcData,
8432 _In_ UINT DestOffsetIn32BitValues);
8433
8434 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
8435 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
8436 ID3D12GraphicsCommandList2 * This,
8437 _In_ UINT RootParameterIndex,
8438 _In_ UINT Num32BitValuesToSet,
8439 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
8440 _In_ UINT DestOffsetIn32BitValues);
8441
8442 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
8443 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
8444 ID3D12GraphicsCommandList2 * This,
8445 _In_ UINT RootParameterIndex,
8446 _In_ UINT Num32BitValuesToSet,
8447 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
8448 _In_ UINT DestOffsetIn32BitValues);
8449
8450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
8451 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
8452 ID3D12GraphicsCommandList2 * This,
8453 _In_ UINT RootParameterIndex,
8454 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8455
8456 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
8457 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
8458 ID3D12GraphicsCommandList2 * This,
8459 _In_ UINT RootParameterIndex,
8460 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8461
8462 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
8463 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
8464 ID3D12GraphicsCommandList2 * This,
8465 _In_ UINT RootParameterIndex,
8466 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8467
8468 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
8469 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
8470 ID3D12GraphicsCommandList2 * This,
8471 _In_ UINT RootParameterIndex,
8472 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8473
8474 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
8475 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
8476 ID3D12GraphicsCommandList2 * This,
8477 _In_ UINT RootParameterIndex,
8478 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8479
8480 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
8481 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
8482 ID3D12GraphicsCommandList2 * This,
8483 _In_ UINT RootParameterIndex,
8484 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8485
8486 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
8487 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
8488 ID3D12GraphicsCommandList2 * This,
8489 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
8490
8491 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
8492 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
8493 ID3D12GraphicsCommandList2 * This,
8494 _In_ UINT StartSlot,
8495 _In_ UINT NumViews,
8496 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
8497
8498 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
8499 void ( STDMETHODCALLTYPE *SOSetTargets )(
8500 ID3D12GraphicsCommandList2 * This,
8501 _In_ UINT StartSlot,
8502 _In_ UINT NumViews,
8503 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
8504
8505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
8506 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
8507 ID3D12GraphicsCommandList2 * This,
8508 _In_ UINT NumRenderTargetDescriptors,
8509 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
8510 _In_ BOOL RTsSingleHandleToDescriptorRange,
8511 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
8512
8513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
8514 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
8515 ID3D12GraphicsCommandList2 * This,
8516 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
8517 _In_ D3D12_CLEAR_FLAGS ClearFlags,
8518 _In_ FLOAT Depth,
8519 _In_ UINT8 Stencil,
8520 _In_ UINT NumRects,
8521 _In_reads_(NumRects) const D3D12_RECT *pRects);
8522
8523 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
8524 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
8525 ID3D12GraphicsCommandList2 * This,
8526 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
8527 _In_ const FLOAT ColorRGBA[ 4 ],
8528 _In_ UINT NumRects,
8529 _In_reads_(NumRects) const D3D12_RECT *pRects);
8530
8531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
8532 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
8533 ID3D12GraphicsCommandList2 * This,
8534 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
8535 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
8536 _In_ ID3D12Resource *pResource,
8537 _In_ const UINT Values[ 4 ],
8538 _In_ UINT NumRects,
8539 _In_reads_(NumRects) const D3D12_RECT *pRects);
8540
8541 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
8542 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
8543 ID3D12GraphicsCommandList2 * This,
8544 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
8545 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
8546 _In_ ID3D12Resource *pResource,
8547 _In_ const FLOAT Values[ 4 ],
8548 _In_ UINT NumRects,
8549 _In_reads_(NumRects) const D3D12_RECT *pRects);
8550
8551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
8552 void ( STDMETHODCALLTYPE *DiscardResource )(
8553 ID3D12GraphicsCommandList2 * This,
8554 _In_ ID3D12Resource *pResource,
8555 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8556
8557 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
8558 void ( STDMETHODCALLTYPE *BeginQuery )(
8559 ID3D12GraphicsCommandList2 * This,
8560 _In_ ID3D12QueryHeap *pQueryHeap,
8561 _In_ D3D12_QUERY_TYPE Type,
8562 _In_ UINT Index);
8563
8564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
8565 void ( STDMETHODCALLTYPE *EndQuery )(
8566 ID3D12GraphicsCommandList2 * This,
8567 _In_ ID3D12QueryHeap *pQueryHeap,
8568 _In_ D3D12_QUERY_TYPE Type,
8569 _In_ UINT Index);
8570
8571 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
8572 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8573 ID3D12GraphicsCommandList2 * This,
8574 _In_ ID3D12QueryHeap *pQueryHeap,
8575 _In_ D3D12_QUERY_TYPE Type,
8576 _In_ UINT StartIndex,
8577 _In_ UINT NumQueries,
8578 _In_ ID3D12Resource *pDestinationBuffer,
8579 _In_ UINT64 AlignedDestinationBufferOffset);
8580
8581 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
8582 void ( STDMETHODCALLTYPE *SetPredication )(
8583 ID3D12GraphicsCommandList2 * This,
8584 _In_opt_ ID3D12Resource *pBuffer,
8585 _In_ UINT64 AlignedBufferOffset,
8586 _In_ D3D12_PREDICATION_OP Operation);
8587
8588 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
8589 void ( STDMETHODCALLTYPE *SetMarker )(
8590 ID3D12GraphicsCommandList2 * This,
8591 UINT Metadata,
8592 _In_reads_bytes_opt_(Size) const void *pData,
8593 UINT Size);
8594
8595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
8596 void ( STDMETHODCALLTYPE *BeginEvent )(
8597 ID3D12GraphicsCommandList2 * This,
8598 UINT Metadata,
8599 _In_reads_bytes_opt_(Size) const void *pData,
8600 UINT Size);
8601
8602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
8603 void ( STDMETHODCALLTYPE *EndEvent )(
8604 ID3D12GraphicsCommandList2 * This);
8605
8606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
8607 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
8608 ID3D12GraphicsCommandList2 * This,
8609 _In_ ID3D12CommandSignature *pCommandSignature,
8610 _In_ UINT MaxCommandCount,
8611 _In_ ID3D12Resource *pArgumentBuffer,
8612 _In_ UINT64 ArgumentBufferOffset,
8613 _In_opt_ ID3D12Resource *pCountBuffer,
8614 _In_ UINT64 CountBufferOffset);
8615
8616 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
8617 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
8618 ID3D12GraphicsCommandList2 * This,
8619 _In_ ID3D12Resource *pDstBuffer,
8620 UINT64 DstOffset,
8621 _In_ ID3D12Resource *pSrcBuffer,
8622 UINT64 SrcOffset,
8623 UINT Dependencies,
8624 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
8625 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
8626
8627 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
8628 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
8629 ID3D12GraphicsCommandList2 * This,
8630 _In_ ID3D12Resource *pDstBuffer,
8631 UINT64 DstOffset,
8632 _In_ ID3D12Resource *pSrcBuffer,
8633 UINT64 SrcOffset,
8634 UINT Dependencies,
8635 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
8636 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
8637
8638 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
8639 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
8640 ID3D12GraphicsCommandList2 * This,
8641 _In_ FLOAT Min,
8642 _In_ FLOAT Max);
8643
8644 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
8645 void ( STDMETHODCALLTYPE *SetSamplePositions )(
8646 ID3D12GraphicsCommandList2 * This,
8647 _In_ UINT NumSamplesPerPixel,
8648 _In_ UINT NumPixels,
8649 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
8650
8651 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
8652 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
8653 ID3D12GraphicsCommandList2 * This,
8654 _In_ ID3D12Resource *pDstResource,
8655 _In_ UINT DstSubresource,
8656 _In_ UINT DstX,
8657 _In_ UINT DstY,
8658 _In_ ID3D12Resource *pSrcResource,
8659 _In_ UINT SrcSubresource,
8660 _In_opt_ D3D12_RECT *pSrcRect,
8661 _In_ DXGI_FORMAT Format,
8662 _In_ D3D12_RESOLVE_MODE ResolveMode);
8663
8664 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
8665 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
8666 ID3D12GraphicsCommandList2 * This,
8667 _In_ UINT Mask);
8668
8669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
8670 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8671 ID3D12GraphicsCommandList2 * This,
8672 UINT Count,
8673 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8674 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8675
8676 END_INTERFACE
8677 } ID3D12GraphicsCommandList2Vtbl;
8678
8679 interface ID3D12GraphicsCommandList2
8680 {
8681 CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl;
8682 };
8683
8684
8685
8686#ifdef COBJMACROS
8687
8688
8689#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \
8690 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8691
8692#define ID3D12GraphicsCommandList2_AddRef(This) \
8693 ( (This)->lpVtbl -> AddRef(This) )
8694
8695#define ID3D12GraphicsCommandList2_Release(This) \
8696 ( (This)->lpVtbl -> Release(This) )
8697
8698
8699#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8700 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8701
8702#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8703 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8704
8705#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \
8706 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8707
8708#define ID3D12GraphicsCommandList2_SetName(This,Name) \
8709 ( (This)->lpVtbl -> SetName(This,Name) )
8710
8711
8712#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \
8713 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8714
8715
8716#define ID3D12GraphicsCommandList2_GetType(This) \
8717 ( (This)->lpVtbl -> GetType(This) )
8718
8719
8720#define ID3D12GraphicsCommandList2_Close(This) \
8721 ( (This)->lpVtbl -> Close(This) )
8722
8723#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \
8724 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
8725
8726#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \
8727 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
8728
8729#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
8730 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
8731
8732#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
8733 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
8734
8735#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
8736 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
8737
8738#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
8739 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
8740
8741#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
8742 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
8743
8744#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \
8745 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
8746
8747#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
8748 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
8749
8750#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
8751 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
8752
8753#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \
8754 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
8755
8756#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \
8757 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
8758
8759#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \
8760 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
8761
8762#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \
8763 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
8764
8765#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \
8766 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
8767
8768#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \
8769 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
8770
8771#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8772 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8773
8774#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \
8775 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
8776
8777#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
8778 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
8779
8780#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \
8781 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
8782
8783#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \
8784 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
8785
8786#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8787 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8788
8789#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8790 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8791
8792#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8793 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8794
8795#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8796 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8797
8798#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8799 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8800
8801#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8802 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8803
8804#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8805 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8806
8807#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8808 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8809
8810#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8811 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8812
8813#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8814 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8815
8816#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8817 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8818
8819#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8820 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8821
8822#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \
8823 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
8824
8825#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
8826 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
8827
8828#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \
8829 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
8830
8831#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
8832 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
8833
8834#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
8835 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
8836
8837#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
8838 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
8839
8840#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8841 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8842
8843#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8844 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8845
8846#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \
8847 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8848
8849#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8850 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8851
8852#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8853 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8854
8855#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8856 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8857
8858#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8859 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8860
8861#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \
8862 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8863
8864#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \
8865 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8866
8867#define ID3D12GraphicsCommandList2_EndEvent(This) \
8868 ( (This)->lpVtbl -> EndEvent(This) )
8869
8870#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8871 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8872
8873
8874#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8875 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8876
8877#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8878 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8879
8880#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \
8881 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8882
8883#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8884 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8885
8886#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8887 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8888
8889#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \
8890 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8891
8892
8893#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8894 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8895
8896#endif /* COBJMACROS */
8897
8898
8899#endif /* C style interface */
8900
8901
8902
8903
8904#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
8905
8906
8907#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
8908#define __ID3D12CommandQueue_INTERFACE_DEFINED__
8909
8910/* interface ID3D12CommandQueue */
8911/* [unique][local][object][uuid] */
8912
8913
8914EXTERN_C const IID IID_ID3D12CommandQueue;
8915
8916#if defined(__cplusplus) && !defined(CINTERFACE)
8917
8918 MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
8919 ID3D12CommandQueue : public ID3D12Pageable
8920 {
8921 public:
8922 virtual void STDMETHODCALLTYPE UpdateTileMappings(
8923 _In_ ID3D12Resource *pResource,
8924 UINT NumResourceRegions,
8925 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8926 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8927 _In_opt_ ID3D12Heap *pHeap,
8928 UINT NumRanges,
8929 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8930 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8931 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8932 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8933
8934 virtual void STDMETHODCALLTYPE CopyTileMappings(
8935 _In_ ID3D12Resource *pDstResource,
8936 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8937 _In_ ID3D12Resource *pSrcResource,
8938 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8939 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8940 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8941
8942 virtual void STDMETHODCALLTYPE ExecuteCommandLists(
8943 _In_ UINT NumCommandLists,
8944 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
8945
8946 virtual void STDMETHODCALLTYPE SetMarker(
8947 UINT Metadata,
8948 _In_reads_bytes_opt_(Size) const void *pData,
8949 UINT Size) = 0;
8950
8951 virtual void STDMETHODCALLTYPE BeginEvent(
8952 UINT Metadata,
8953 _In_reads_bytes_opt_(Size) const void *pData,
8954 UINT Size) = 0;
8955
8956 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
8957
8958 virtual HRESULT STDMETHODCALLTYPE Signal(
8959 ID3D12Fence *pFence,
8960 UINT64 Value) = 0;
8961
8962 virtual HRESULT STDMETHODCALLTYPE Wait(
8963 ID3D12Fence *pFence,
8964 UINT64 Value) = 0;
8965
8966 virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
8967 _Out_ UINT64 *pFrequency) = 0;
8968
8969 virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
8970 _Out_ UINT64 *pGpuTimestamp,
8971 _Out_ UINT64 *pCpuTimestamp) = 0;
8972
8973#if defined(_MSC_VER) || !defined(_WIN32)
8974 virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
8975#else
8976 virtual D3D12_COMMAND_QUEUE_DESC *STDMETHODCALLTYPE GetDesc(
8977 D3D12_COMMAND_QUEUE_DESC * RetVal) = 0;
8978#endif
8979
8980 };
8981
8982
8983#else /* C style interface */
8984
8985 typedef struct ID3D12CommandQueueVtbl
8986 {
8987 BEGIN_INTERFACE
8988
8989 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8990 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8991 ID3D12CommandQueue * This,
8992 REFIID riid,
8993 _COM_Outptr_ void **ppvObject);
8994
8995 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8996 ULONG ( STDMETHODCALLTYPE *AddRef )(
8997 ID3D12CommandQueue * This);
8998
8999 DECLSPEC_XFGVIRT(IUnknown, Release)
9000 ULONG ( STDMETHODCALLTYPE *Release )(
9001 ID3D12CommandQueue * This);
9002
9003 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9004 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9005 ID3D12CommandQueue * This,
9006 _In_ REFGUID guid,
9007 _Inout_ UINT *pDataSize,
9008 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9009
9010 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9011 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9012 ID3D12CommandQueue * This,
9013 _In_ REFGUID guid,
9014 _In_ UINT DataSize,
9015 _In_reads_bytes_opt_( DataSize ) const void *pData);
9016
9017 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9018 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9019 ID3D12CommandQueue * This,
9020 _In_ REFGUID guid,
9021 _In_opt_ const IUnknown *pData);
9022
9023 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9024 HRESULT ( STDMETHODCALLTYPE *SetName )(
9025 ID3D12CommandQueue * This,
9026 _In_z_ LPCWSTR Name);
9027
9028 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9029 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9030 ID3D12CommandQueue * This,
9031 REFIID riid,
9032 _COM_Outptr_opt_ void **ppvDevice);
9033
9034 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
9035 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
9036 ID3D12CommandQueue * This,
9037 _In_ ID3D12Resource *pResource,
9038 UINT NumResourceRegions,
9039 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
9040 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
9041 _In_opt_ ID3D12Heap *pHeap,
9042 UINT NumRanges,
9043 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
9044 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
9045 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
9046 D3D12_TILE_MAPPING_FLAGS Flags);
9047
9048 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
9049 void ( STDMETHODCALLTYPE *CopyTileMappings )(
9050 ID3D12CommandQueue * This,
9051 _In_ ID3D12Resource *pDstResource,
9052 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
9053 _In_ ID3D12Resource *pSrcResource,
9054 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
9055 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
9056 D3D12_TILE_MAPPING_FLAGS Flags);
9057
9058 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
9059 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
9060 ID3D12CommandQueue * This,
9061 _In_ UINT NumCommandLists,
9062 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
9063
9064 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
9065 void ( STDMETHODCALLTYPE *SetMarker )(
9066 ID3D12CommandQueue * This,
9067 UINT Metadata,
9068 _In_reads_bytes_opt_(Size) const void *pData,
9069 UINT Size);
9070
9071 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
9072 void ( STDMETHODCALLTYPE *BeginEvent )(
9073 ID3D12CommandQueue * This,
9074 UINT Metadata,
9075 _In_reads_bytes_opt_(Size) const void *pData,
9076 UINT Size);
9077
9078 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
9079 void ( STDMETHODCALLTYPE *EndEvent )(
9080 ID3D12CommandQueue * This);
9081
9082 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
9083 HRESULT ( STDMETHODCALLTYPE *Signal )(
9084 ID3D12CommandQueue * This,
9085 ID3D12Fence *pFence,
9086 UINT64 Value);
9087
9088 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
9089 HRESULT ( STDMETHODCALLTYPE *Wait )(
9090 ID3D12CommandQueue * This,
9091 ID3D12Fence *pFence,
9092 UINT64 Value);
9093
9094 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
9095 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
9096 ID3D12CommandQueue * This,
9097 _Out_ UINT64 *pFrequency);
9098
9099 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
9100 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
9101 ID3D12CommandQueue * This,
9102 _Out_ UINT64 *pGpuTimestamp,
9103 _Out_ UINT64 *pCpuTimestamp);
9104
9105 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
9106#if !defined(_WIN32)
9107 D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
9108 ID3D12CommandQueue * This);
9109
9110#else
9111 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
9112 ID3D12CommandQueue * This,
9113 D3D12_COMMAND_QUEUE_DESC * RetVal);
9114
9115#endif
9116
9117 END_INTERFACE
9118 } ID3D12CommandQueueVtbl;
9119
9120 interface ID3D12CommandQueue
9121 {
9122 CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
9123 };
9124
9125
9126
9127#ifdef COBJMACROS
9128
9129
9130#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
9131 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9132
9133#define ID3D12CommandQueue_AddRef(This) \
9134 ( (This)->lpVtbl -> AddRef(This) )
9135
9136#define ID3D12CommandQueue_Release(This) \
9137 ( (This)->lpVtbl -> Release(This) )
9138
9139
9140#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
9141 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9142
9143#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
9144 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9145
9146#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
9147 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9148
9149#define ID3D12CommandQueue_SetName(This,Name) \
9150 ( (This)->lpVtbl -> SetName(This,Name) )
9151
9152
9153#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
9154 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9155
9156
9157
9158#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
9159 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
9160
9161#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
9162 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
9163
9164#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
9165 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
9166
9167#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
9168 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9169
9170#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
9171 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9172
9173#define ID3D12CommandQueue_EndEvent(This) \
9174 ( (This)->lpVtbl -> EndEvent(This) )
9175
9176#define ID3D12CommandQueue_Signal(This,pFence,Value) \
9177 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
9178
9179#define ID3D12CommandQueue_Wait(This,pFence,Value) \
9180 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
9181
9182#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
9183 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
9184
9185#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
9186 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
9187#if !defined(_WIN32)
9188
9189#define ID3D12CommandQueue_GetDesc(This) \
9190 ( (This)->lpVtbl -> GetDesc(This) )
9191#else
9192#define ID3D12CommandQueue_GetDesc(This,RetVal) \
9193 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
9194#endif
9195
9196#endif /* COBJMACROS */
9197
9198
9199#endif /* C style interface */
9200
9201
9202
9203
9204#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
9205
9206
9207/* interface __MIDL_itf_d3d12_0000_0021 */
9208/* [local] */
9209
9210typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
9211 {
9212 _Out_ UINT ComputeQueuesPer3DQueue;
9213 } D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
9214
9215typedef
9216enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
9217 {
9218 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
9219 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1
9220 } D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
9221
9222typedef
9223enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
9224 {
9225 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
9226 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
9227 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
9228 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
9229 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
9230 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
9231 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
9232 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
9233 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
9234 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
9235 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
9236 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
9237 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
9238 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
9239 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
9240 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
9241 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
9242 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32
9243 } D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
9244
9245
9246
9247extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_c_ifspec;
9248extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_s_ifspec;
9249
9250#ifndef __ID3D12CommandQueue1_INTERFACE_DEFINED__
9251#define __ID3D12CommandQueue1_INTERFACE_DEFINED__
9252
9253/* interface ID3D12CommandQueue1 */
9254/* [unique][local][object][uuid] */
9255
9256
9257EXTERN_C const IID IID_ID3D12CommandQueue1;
9258
9259#if defined(__cplusplus) && !defined(CINTERFACE)
9260
9261 MIDL_INTERFACE("3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9")
9262 ID3D12CommandQueue1 : public ID3D12CommandQueue
9263 {
9264 public:
9265 virtual HRESULT STDMETHODCALLTYPE SetProcessPriority(
9266 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority) = 0;
9267
9268 virtual HRESULT STDMETHODCALLTYPE GetProcessPriority(
9269 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue) = 0;
9270
9271 virtual HRESULT STDMETHODCALLTYPE SetGlobalPriority(
9272 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority) = 0;
9273
9274 virtual HRESULT STDMETHODCALLTYPE GetGlobalPriority(
9275 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue) = 0;
9276
9277 };
9278
9279
9280#else /* C style interface */
9281
9282 typedef struct ID3D12CommandQueue1Vtbl
9283 {
9284 BEGIN_INTERFACE
9285
9286 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9287 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9288 ID3D12CommandQueue1 * This,
9289 REFIID riid,
9290 _COM_Outptr_ void **ppvObject);
9291
9292 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9293 ULONG ( STDMETHODCALLTYPE *AddRef )(
9294 ID3D12CommandQueue1 * This);
9295
9296 DECLSPEC_XFGVIRT(IUnknown, Release)
9297 ULONG ( STDMETHODCALLTYPE *Release )(
9298 ID3D12CommandQueue1 * This);
9299
9300 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9301 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9302 ID3D12CommandQueue1 * This,
9303 _In_ REFGUID guid,
9304 _Inout_ UINT *pDataSize,
9305 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9306
9307 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9308 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9309 ID3D12CommandQueue1 * This,
9310 _In_ REFGUID guid,
9311 _In_ UINT DataSize,
9312 _In_reads_bytes_opt_( DataSize ) const void *pData);
9313
9314 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9315 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9316 ID3D12CommandQueue1 * This,
9317 _In_ REFGUID guid,
9318 _In_opt_ const IUnknown *pData);
9319
9320 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9321 HRESULT ( STDMETHODCALLTYPE *SetName )(
9322 ID3D12CommandQueue1 * This,
9323 _In_z_ LPCWSTR Name);
9324
9325 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9326 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9327 ID3D12CommandQueue1 * This,
9328 REFIID riid,
9329 _COM_Outptr_opt_ void **ppvDevice);
9330
9331 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
9332 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
9333 ID3D12CommandQueue1 * This,
9334 _In_ ID3D12Resource *pResource,
9335 UINT NumResourceRegions,
9336 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
9337 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
9338 _In_opt_ ID3D12Heap *pHeap,
9339 UINT NumRanges,
9340 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
9341 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
9342 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
9343 D3D12_TILE_MAPPING_FLAGS Flags);
9344
9345 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
9346 void ( STDMETHODCALLTYPE *CopyTileMappings )(
9347 ID3D12CommandQueue1 * This,
9348 _In_ ID3D12Resource *pDstResource,
9349 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
9350 _In_ ID3D12Resource *pSrcResource,
9351 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
9352 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
9353 D3D12_TILE_MAPPING_FLAGS Flags);
9354
9355 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
9356 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
9357 ID3D12CommandQueue1 * This,
9358 _In_ UINT NumCommandLists,
9359 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
9360
9361 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
9362 void ( STDMETHODCALLTYPE *SetMarker )(
9363 ID3D12CommandQueue1 * This,
9364 UINT Metadata,
9365 _In_reads_bytes_opt_(Size) const void *pData,
9366 UINT Size);
9367
9368 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
9369 void ( STDMETHODCALLTYPE *BeginEvent )(
9370 ID3D12CommandQueue1 * This,
9371 UINT Metadata,
9372 _In_reads_bytes_opt_(Size) const void *pData,
9373 UINT Size);
9374
9375 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
9376 void ( STDMETHODCALLTYPE *EndEvent )(
9377 ID3D12CommandQueue1 * This);
9378
9379 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
9380 HRESULT ( STDMETHODCALLTYPE *Signal )(
9381 ID3D12CommandQueue1 * This,
9382 ID3D12Fence *pFence,
9383 UINT64 Value);
9384
9385 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
9386 HRESULT ( STDMETHODCALLTYPE *Wait )(
9387 ID3D12CommandQueue1 * This,
9388 ID3D12Fence *pFence,
9389 UINT64 Value);
9390
9391 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
9392 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
9393 ID3D12CommandQueue1 * This,
9394 _Out_ UINT64 *pFrequency);
9395
9396 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
9397 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
9398 ID3D12CommandQueue1 * This,
9399 _Out_ UINT64 *pGpuTimestamp,
9400 _Out_ UINT64 *pCpuTimestamp);
9401
9402 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
9403#if !defined(_WIN32)
9404 D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
9405 ID3D12CommandQueue1 * This);
9406
9407#else
9408 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
9409 ID3D12CommandQueue1 * This,
9410 D3D12_COMMAND_QUEUE_DESC * RetVal);
9411
9412#endif
9413
9414 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetProcessPriority)
9415 HRESULT ( STDMETHODCALLTYPE *SetProcessPriority )(
9416 ID3D12CommandQueue1 * This,
9417 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
9418
9419 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetProcessPriority)
9420 HRESULT ( STDMETHODCALLTYPE *GetProcessPriority )(
9421 ID3D12CommandQueue1 * This,
9422 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue);
9423
9424 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetGlobalPriority)
9425 HRESULT ( STDMETHODCALLTYPE *SetGlobalPriority )(
9426 ID3D12CommandQueue1 * This,
9427 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
9428
9429 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetGlobalPriority)
9430 HRESULT ( STDMETHODCALLTYPE *GetGlobalPriority )(
9431 ID3D12CommandQueue1 * This,
9432 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue);
9433
9434 END_INTERFACE
9435 } ID3D12CommandQueue1Vtbl;
9436
9437 interface ID3D12CommandQueue1
9438 {
9439 CONST_VTBL struct ID3D12CommandQueue1Vtbl *lpVtbl;
9440 };
9441
9442
9443
9444#ifdef COBJMACROS
9445
9446
9447#define ID3D12CommandQueue1_QueryInterface(This,riid,ppvObject) \
9448 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9449
9450#define ID3D12CommandQueue1_AddRef(This) \
9451 ( (This)->lpVtbl -> AddRef(This) )
9452
9453#define ID3D12CommandQueue1_Release(This) \
9454 ( (This)->lpVtbl -> Release(This) )
9455
9456
9457#define ID3D12CommandQueue1_GetPrivateData(This,guid,pDataSize,pData) \
9458 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9459
9460#define ID3D12CommandQueue1_SetPrivateData(This,guid,DataSize,pData) \
9461 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9462
9463#define ID3D12CommandQueue1_SetPrivateDataInterface(This,guid,pData) \
9464 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9465
9466#define ID3D12CommandQueue1_SetName(This,Name) \
9467 ( (This)->lpVtbl -> SetName(This,Name) )
9468
9469
9470#define ID3D12CommandQueue1_GetDevice(This,riid,ppvDevice) \
9471 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9472
9473
9474
9475#define ID3D12CommandQueue1_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
9476 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
9477
9478#define ID3D12CommandQueue1_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
9479 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
9480
9481#define ID3D12CommandQueue1_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
9482 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
9483
9484#define ID3D12CommandQueue1_SetMarker(This,Metadata,pData,Size) \
9485 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9486
9487#define ID3D12CommandQueue1_BeginEvent(This,Metadata,pData,Size) \
9488 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9489
9490#define ID3D12CommandQueue1_EndEvent(This) \
9491 ( (This)->lpVtbl -> EndEvent(This) )
9492
9493#define ID3D12CommandQueue1_Signal(This,pFence,Value) \
9494 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
9495
9496#define ID3D12CommandQueue1_Wait(This,pFence,Value) \
9497 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
9498
9499#define ID3D12CommandQueue1_GetTimestampFrequency(This,pFrequency) \
9500 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
9501
9502#define ID3D12CommandQueue1_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
9503 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
9504#if !defined(_WIN32)
9505
9506#define ID3D12CommandQueue1_GetDesc(This) \
9507 ( (This)->lpVtbl -> GetDesc(This) )
9508#else
9509#define ID3D12CommandQueue1_GetDesc(This,RetVal) \
9510 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
9511#endif
9512
9513
9514#define ID3D12CommandQueue1_SetProcessPriority(This,Priority) \
9515 ( (This)->lpVtbl -> SetProcessPriority(This,Priority) )
9516
9517#define ID3D12CommandQueue1_GetProcessPriority(This,pOutValue) \
9518 ( (This)->lpVtbl -> GetProcessPriority(This,pOutValue) )
9519
9520#define ID3D12CommandQueue1_SetGlobalPriority(This,Priority) \
9521 ( (This)->lpVtbl -> SetGlobalPriority(This,Priority) )
9522
9523#define ID3D12CommandQueue1_GetGlobalPriority(This,pOutValue) \
9524 ( (This)->lpVtbl -> GetGlobalPriority(This,pOutValue) )
9525
9526#endif /* COBJMACROS */
9527
9528
9529#endif /* C style interface */
9530
9531
9532
9533
9534#endif /* __ID3D12CommandQueue1_INTERFACE_DEFINED__ */
9535
9536
9537#ifndef __ID3D12Device_INTERFACE_DEFINED__
9538#define __ID3D12Device_INTERFACE_DEFINED__
9539
9540/* interface ID3D12Device */
9541/* [unique][local][object][uuid] */
9542
9543
9544EXTERN_C const IID IID_ID3D12Device;
9545
9546#if defined(__cplusplus) && !defined(CINTERFACE)
9547
9548 MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
9549 ID3D12Device : public ID3D12Object
9550 {
9551 public:
9552 virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
9553
9554 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
9555 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9556 REFIID riid,
9557 _COM_Outptr_ void **ppCommandQueue) = 0;
9558
9559 virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
9560 _In_ D3D12_COMMAND_LIST_TYPE type,
9561 REFIID riid,
9562 _COM_Outptr_ void **ppCommandAllocator) = 0;
9563
9564 virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
9565 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9566 REFIID riid,
9567 _COM_Outptr_ void **ppPipelineState) = 0;
9568
9569 virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
9570 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9571 REFIID riid,
9572 _COM_Outptr_ void **ppPipelineState) = 0;
9573
9574 virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
9575 _In_ UINT nodeMask,
9576 _In_ D3D12_COMMAND_LIST_TYPE type,
9577 _In_ ID3D12CommandAllocator *pCommandAllocator,
9578 _In_opt_ ID3D12PipelineState *pInitialState,
9579 REFIID riid,
9580 _COM_Outptr_ void **ppCommandList) = 0;
9581
9582 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
9583 D3D12_FEATURE Feature,
9584 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9585 UINT FeatureSupportDataSize) = 0;
9586
9587 virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
9588 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9589 REFIID riid,
9590 _COM_Outptr_ void **ppvHeap) = 0;
9591
9592 virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
9593 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
9594
9595 virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
9596 _In_ UINT nodeMask,
9597 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9598 _In_ SIZE_T blobLengthInBytes,
9599 REFIID riid,
9600 _COM_Outptr_ void **ppvRootSignature) = 0;
9601
9602 virtual void STDMETHODCALLTYPE CreateConstantBufferView(
9603 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9604 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9605
9606 virtual void STDMETHODCALLTYPE CreateShaderResourceView(
9607 _In_opt_ ID3D12Resource *pResource,
9608 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9609 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9610
9611 virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
9612 _In_opt_ ID3D12Resource *pResource,
9613 _In_opt_ ID3D12Resource *pCounterResource,
9614 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9615 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9616
9617 virtual void STDMETHODCALLTYPE CreateRenderTargetView(
9618 _In_opt_ ID3D12Resource *pResource,
9619 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9620 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9621
9622 virtual void STDMETHODCALLTYPE CreateDepthStencilView(
9623 _In_opt_ ID3D12Resource *pResource,
9624 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9625 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9626
9627 virtual void STDMETHODCALLTYPE CreateSampler(
9628 _In_ const D3D12_SAMPLER_DESC *pDesc,
9629 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9630
9631 virtual void STDMETHODCALLTYPE CopyDescriptors(
9632 _In_ UINT NumDestDescriptorRanges,
9633 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9634 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9635 _In_ UINT NumSrcDescriptorRanges,
9636 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9637 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9638 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
9639
9640 virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
9641 _In_ UINT NumDescriptors,
9642 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9643 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9644 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
9645
9646#if defined(_MSC_VER) || !defined(_WIN32)
9647 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
9648 _In_ UINT visibleMask,
9649 _In_ UINT numResourceDescs,
9650 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
9651#else
9652 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo(
9653 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9654 _In_ UINT visibleMask,
9655 _In_ UINT numResourceDescs,
9656 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
9657#endif
9658
9659#if defined(_MSC_VER) || !defined(_WIN32)
9660 virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
9661 _In_ UINT nodeMask,
9662 D3D12_HEAP_TYPE heapType) = 0;
9663#else
9664 virtual D3D12_HEAP_PROPERTIES *STDMETHODCALLTYPE GetCustomHeapProperties(
9665 D3D12_HEAP_PROPERTIES * RetVal,
9666 _In_ UINT nodeMask,
9667 D3D12_HEAP_TYPE heapType) = 0;
9668#endif
9669
9670 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
9671 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9672 D3D12_HEAP_FLAGS HeapFlags,
9673 _In_ const D3D12_RESOURCE_DESC *pDesc,
9674 D3D12_RESOURCE_STATES InitialResourceState,
9675 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9676 REFIID riidResource,
9677 _COM_Outptr_opt_ void **ppvResource) = 0;
9678
9679 virtual HRESULT STDMETHODCALLTYPE CreateHeap(
9680 _In_ const D3D12_HEAP_DESC *pDesc,
9681 REFIID riid,
9682 _COM_Outptr_opt_ void **ppvHeap) = 0;
9683
9684 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
9685 _In_ ID3D12Heap *pHeap,
9686 UINT64 HeapOffset,
9687 _In_ const D3D12_RESOURCE_DESC *pDesc,
9688 D3D12_RESOURCE_STATES InitialState,
9689 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9690 REFIID riid,
9691 _COM_Outptr_opt_ void **ppvResource) = 0;
9692
9693 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
9694 _In_ const D3D12_RESOURCE_DESC *pDesc,
9695 D3D12_RESOURCE_STATES InitialState,
9696 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9697 REFIID riid,
9698 _COM_Outptr_opt_ void **ppvResource) = 0;
9699
9700 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
9701 _In_ ID3D12DeviceChild *pObject,
9702 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
9703 DWORD Access,
9704 _In_opt_ LPCWSTR Name,
9705 _Out_ HANDLE *pHandle) = 0;
9706
9707 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
9708 _In_ HANDLE NTHandle,
9709 REFIID riid,
9710 _COM_Outptr_opt_ void **ppvObj) = 0;
9711
9712 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
9713 _In_ LPCWSTR Name,
9714 DWORD Access,
9715 /* [annotation][out] */
9716 _Out_ HANDLE *pNTHandle) = 0;
9717
9718 virtual HRESULT STDMETHODCALLTYPE MakeResident(
9719 UINT NumObjects,
9720 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
9721
9722 virtual HRESULT STDMETHODCALLTYPE Evict(
9723 UINT NumObjects,
9724 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
9725
9726 virtual HRESULT STDMETHODCALLTYPE CreateFence(
9727 UINT64 InitialValue,
9728 D3D12_FENCE_FLAGS Flags,
9729 REFIID riid,
9730 _COM_Outptr_ void **ppFence) = 0;
9731
9732 virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
9733
9734 virtual void STDMETHODCALLTYPE GetCopyableFootprints(
9735 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
9736 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
9737 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
9738 UINT64 BaseOffset,
9739 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
9740 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
9741 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
9742 _Out_opt_ UINT64 *pTotalBytes) = 0;
9743
9744 virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
9745 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
9746 REFIID riid,
9747 _COM_Outptr_opt_ void **ppvHeap) = 0;
9748
9749 virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
9750 BOOL Enable) = 0;
9751
9752 virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
9753 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
9754 _In_opt_ ID3D12RootSignature *pRootSignature,
9755 REFIID riid,
9756 _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
9757
9758 virtual void STDMETHODCALLTYPE GetResourceTiling(
9759 _In_ ID3D12Resource *pTiledResource,
9760 _Out_opt_ UINT *pNumTilesForEntireResource,
9761 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
9762 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
9763 _Inout_opt_ UINT *pNumSubresourceTilings,
9764 _In_ UINT FirstSubresourceTilingToGet,
9765 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
9766
9767#if defined(_MSC_VER) || !defined(_WIN32)
9768 virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
9769#else
9770 virtual LUID *STDMETHODCALLTYPE GetAdapterLuid(
9771 LUID * RetVal) = 0;
9772#endif
9773
9774 };
9775
9776
9777#else /* C style interface */
9778
9779 typedef struct ID3D12DeviceVtbl
9780 {
9781 BEGIN_INTERFACE
9782
9783 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9784 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9785 ID3D12Device * This,
9786 REFIID riid,
9787 _COM_Outptr_ void **ppvObject);
9788
9789 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9790 ULONG ( STDMETHODCALLTYPE *AddRef )(
9791 ID3D12Device * This);
9792
9793 DECLSPEC_XFGVIRT(IUnknown, Release)
9794 ULONG ( STDMETHODCALLTYPE *Release )(
9795 ID3D12Device * This);
9796
9797 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9798 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9799 ID3D12Device * This,
9800 _In_ REFGUID guid,
9801 _Inout_ UINT *pDataSize,
9802 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9803
9804 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9805 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9806 ID3D12Device * This,
9807 _In_ REFGUID guid,
9808 _In_ UINT DataSize,
9809 _In_reads_bytes_opt_( DataSize ) const void *pData);
9810
9811 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9812 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9813 ID3D12Device * This,
9814 _In_ REFGUID guid,
9815 _In_opt_ const IUnknown *pData);
9816
9817 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9818 HRESULT ( STDMETHODCALLTYPE *SetName )(
9819 ID3D12Device * This,
9820 _In_z_ LPCWSTR Name);
9821
9822 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
9823 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
9824 ID3D12Device * This);
9825
9826 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
9827 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
9828 ID3D12Device * This,
9829 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9830 REFIID riid,
9831 _COM_Outptr_ void **ppCommandQueue);
9832
9833 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
9834 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
9835 ID3D12Device * This,
9836 _In_ D3D12_COMMAND_LIST_TYPE type,
9837 REFIID riid,
9838 _COM_Outptr_ void **ppCommandAllocator);
9839
9840 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
9841 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
9842 ID3D12Device * This,
9843 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9844 REFIID riid,
9845 _COM_Outptr_ void **ppPipelineState);
9846
9847 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
9848 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
9849 ID3D12Device * This,
9850 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9851 REFIID riid,
9852 _COM_Outptr_ void **ppPipelineState);
9853
9854 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
9855 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
9856 ID3D12Device * This,
9857 _In_ UINT nodeMask,
9858 _In_ D3D12_COMMAND_LIST_TYPE type,
9859 _In_ ID3D12CommandAllocator *pCommandAllocator,
9860 _In_opt_ ID3D12PipelineState *pInitialState,
9861 REFIID riid,
9862 _COM_Outptr_ void **ppCommandList);
9863
9864 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
9865 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9866 ID3D12Device * This,
9867 D3D12_FEATURE Feature,
9868 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9869 UINT FeatureSupportDataSize);
9870
9871 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
9872 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
9873 ID3D12Device * This,
9874 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9875 REFIID riid,
9876 _COM_Outptr_ void **ppvHeap);
9877
9878 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
9879 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
9880 ID3D12Device * This,
9881 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
9882
9883 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
9884 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
9885 ID3D12Device * This,
9886 _In_ UINT nodeMask,
9887 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9888 _In_ SIZE_T blobLengthInBytes,
9889 REFIID riid,
9890 _COM_Outptr_ void **ppvRootSignature);
9891
9892 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
9893 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
9894 ID3D12Device * This,
9895 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9896 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9897
9898 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
9899 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
9900 ID3D12Device * This,
9901 _In_opt_ ID3D12Resource *pResource,
9902 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9903 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9904
9905 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
9906 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
9907 ID3D12Device * This,
9908 _In_opt_ ID3D12Resource *pResource,
9909 _In_opt_ ID3D12Resource *pCounterResource,
9910 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9911 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9912
9913 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
9914 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
9915 ID3D12Device * This,
9916 _In_opt_ ID3D12Resource *pResource,
9917 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9918 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9919
9920 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
9921 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
9922 ID3D12Device * This,
9923 _In_opt_ ID3D12Resource *pResource,
9924 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9925 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9926
9927 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
9928 void ( STDMETHODCALLTYPE *CreateSampler )(
9929 ID3D12Device * This,
9930 _In_ const D3D12_SAMPLER_DESC *pDesc,
9931 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9932
9933 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
9934 void ( STDMETHODCALLTYPE *CopyDescriptors )(
9935 ID3D12Device * This,
9936 _In_ UINT NumDestDescriptorRanges,
9937 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9938 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9939 _In_ UINT NumSrcDescriptorRanges,
9940 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9941 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9942 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9943
9944 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
9945 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
9946 ID3D12Device * This,
9947 _In_ UINT NumDescriptors,
9948 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9949 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9950 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9951
9952 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
9953#if !defined(_WIN32)
9954 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9955 ID3D12Device * This,
9956 _In_ UINT visibleMask,
9957 _In_ UINT numResourceDescs,
9958 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9959
9960#else
9961 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9962 ID3D12Device * This,
9963 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9964 _In_ UINT visibleMask,
9965 _In_ UINT numResourceDescs,
9966 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9967
9968#endif
9969
9970 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
9971#if !defined(_WIN32)
9972 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9973 ID3D12Device * This,
9974 _In_ UINT nodeMask,
9975 D3D12_HEAP_TYPE heapType);
9976
9977#else
9978 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9979 ID3D12Device * This,
9980 D3D12_HEAP_PROPERTIES * RetVal,
9981 _In_ UINT nodeMask,
9982 D3D12_HEAP_TYPE heapType);
9983
9984#endif
9985
9986 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
9987 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
9988 ID3D12Device * This,
9989 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9990 D3D12_HEAP_FLAGS HeapFlags,
9991 _In_ const D3D12_RESOURCE_DESC *pDesc,
9992 D3D12_RESOURCE_STATES InitialResourceState,
9993 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9994 REFIID riidResource,
9995 _COM_Outptr_opt_ void **ppvResource);
9996
9997 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
9998 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
9999 ID3D12Device * This,
10000 _In_ const D3D12_HEAP_DESC *pDesc,
10001 REFIID riid,
10002 _COM_Outptr_opt_ void **ppvHeap);
10003
10004 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10005 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10006 ID3D12Device * This,
10007 _In_ ID3D12Heap *pHeap,
10008 UINT64 HeapOffset,
10009 _In_ const D3D12_RESOURCE_DESC *pDesc,
10010 D3D12_RESOURCE_STATES InitialState,
10011 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10012 REFIID riid,
10013 _COM_Outptr_opt_ void **ppvResource);
10014
10015 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10016 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10017 ID3D12Device * This,
10018 _In_ const D3D12_RESOURCE_DESC *pDesc,
10019 D3D12_RESOURCE_STATES InitialState,
10020 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10021 REFIID riid,
10022 _COM_Outptr_opt_ void **ppvResource);
10023
10024 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10025 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10026 ID3D12Device * This,
10027 _In_ ID3D12DeviceChild *pObject,
10028 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10029 DWORD Access,
10030 _In_opt_ LPCWSTR Name,
10031 _Out_ HANDLE *pHandle);
10032
10033 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10034 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10035 ID3D12Device * This,
10036 _In_ HANDLE NTHandle,
10037 REFIID riid,
10038 _COM_Outptr_opt_ void **ppvObj);
10039
10040 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10041 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10042 ID3D12Device * This,
10043 _In_ LPCWSTR Name,
10044 DWORD Access,
10045 /* [annotation][out] */
10046 _Out_ HANDLE *pNTHandle);
10047
10048 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10049 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10050 ID3D12Device * This,
10051 UINT NumObjects,
10052 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10053
10054 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10055 HRESULT ( STDMETHODCALLTYPE *Evict )(
10056 ID3D12Device * This,
10057 UINT NumObjects,
10058 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10059
10060 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10061 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10062 ID3D12Device * This,
10063 UINT64 InitialValue,
10064 D3D12_FENCE_FLAGS Flags,
10065 REFIID riid,
10066 _COM_Outptr_ void **ppFence);
10067
10068 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10069 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10070 ID3D12Device * This);
10071
10072 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10073 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10074 ID3D12Device * This,
10075 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10076 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10077 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10078 UINT64 BaseOffset,
10079 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10080 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10081 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10082 _Out_opt_ UINT64 *pTotalBytes);
10083
10084 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10085 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10086 ID3D12Device * This,
10087 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10088 REFIID riid,
10089 _COM_Outptr_opt_ void **ppvHeap);
10090
10091 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10092 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10093 ID3D12Device * This,
10094 BOOL Enable);
10095
10096 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10097 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10098 ID3D12Device * This,
10099 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10100 _In_opt_ ID3D12RootSignature *pRootSignature,
10101 REFIID riid,
10102 _COM_Outptr_opt_ void **ppvCommandSignature);
10103
10104 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10105 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10106 ID3D12Device * This,
10107 _In_ ID3D12Resource *pTiledResource,
10108 _Out_opt_ UINT *pNumTilesForEntireResource,
10109 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10110 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10111 _Inout_opt_ UINT *pNumSubresourceTilings,
10112 _In_ UINT FirstSubresourceTilingToGet,
10113 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10114
10115 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10116#if !defined(_WIN32)
10117 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
10118 ID3D12Device * This);
10119
10120#else
10121 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10122 ID3D12Device * This,
10123 LUID * RetVal);
10124
10125#endif
10126
10127 END_INTERFACE
10128 } ID3D12DeviceVtbl;
10129
10130 interface ID3D12Device
10131 {
10132 CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
10133 };
10134
10135
10136
10137#ifdef COBJMACROS
10138
10139
10140#define ID3D12Device_QueryInterface(This,riid,ppvObject) \
10141 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10142
10143#define ID3D12Device_AddRef(This) \
10144 ( (This)->lpVtbl -> AddRef(This) )
10145
10146#define ID3D12Device_Release(This) \
10147 ( (This)->lpVtbl -> Release(This) )
10148
10149
10150#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
10151 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10152
10153#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
10154 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10155
10156#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
10157 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10158
10159#define ID3D12Device_SetName(This,Name) \
10160 ( (This)->lpVtbl -> SetName(This,Name) )
10161
10162
10163#define ID3D12Device_GetNodeCount(This) \
10164 ( (This)->lpVtbl -> GetNodeCount(This) )
10165
10166#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
10167 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
10168
10169#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
10170 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
10171
10172#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
10173 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
10174
10175#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
10176 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
10177
10178#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
10179 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
10180
10181#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
10182 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
10183
10184#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
10185 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
10186
10187#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
10188 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
10189
10190#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
10191 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
10192
10193#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
10194 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
10195
10196#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
10197 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
10198
10199#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
10200 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
10201
10202#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
10203 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
10204
10205#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
10206 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
10207
10208#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
10209 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
10210
10211#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
10212 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
10213
10214#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
10215 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
10216#if !defined(_WIN32)
10217
10218#define ID3D12Device_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
10219 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
10220#else
10221#define ID3D12Device_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
10222 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
10223#endif
10224#if !defined(_WIN32)
10225
10226#define ID3D12Device_GetCustomHeapProperties(This,nodeMask,heapType) \
10227 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
10228#else
10229#define ID3D12Device_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
10230 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
10231#endif
10232
10233#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
10234 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
10235
10236#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
10237 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
10238
10239#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10240 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10241
10242#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10243 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10244
10245#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
10246 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
10247
10248#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
10249 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
10250
10251#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
10252 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
10253
10254#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
10255 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
10256
10257#define ID3D12Device_Evict(This,NumObjects,ppObjects) \
10258 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
10259
10260#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
10261 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
10262
10263#define ID3D12Device_GetDeviceRemovedReason(This) \
10264 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
10265
10266#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
10267 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
10268
10269#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
10270 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
10271
10272#define ID3D12Device_SetStablePowerState(This,Enable) \
10273 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
10274
10275#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
10276 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
10277
10278#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
10279 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
10280#if !defined(_WIN32)
10281
10282#define ID3D12Device_GetAdapterLuid(This) \
10283 ( (This)->lpVtbl -> GetAdapterLuid(This) )
10284#else
10285#define ID3D12Device_GetAdapterLuid(This,RetVal) \
10286 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10287#endif
10288
10289#endif /* COBJMACROS */
10290
10291
10292#endif /* C style interface */
10293
10294
10295
10296
10297#endif /* __ID3D12Device_INTERFACE_DEFINED__ */
10298
10299
10300#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
10301#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
10302
10303/* interface ID3D12PipelineLibrary */
10304/* [unique][local][object][uuid] */
10305
10306
10307EXTERN_C const IID IID_ID3D12PipelineLibrary;
10308
10309#if defined(__cplusplus) && !defined(CINTERFACE)
10310
10311 MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
10312 ID3D12PipelineLibrary : public ID3D12DeviceChild
10313 {
10314 public:
10315 virtual HRESULT STDMETHODCALLTYPE StorePipeline(
10316 _In_opt_ LPCWSTR pName,
10317 _In_ ID3D12PipelineState *pPipeline) = 0;
10318
10319 virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
10320 _In_ LPCWSTR pName,
10321 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10322 REFIID riid,
10323 _COM_Outptr_ void **ppPipelineState) = 0;
10324
10325 virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
10326 _In_ LPCWSTR pName,
10327 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10328 REFIID riid,
10329 _COM_Outptr_ void **ppPipelineState) = 0;
10330
10331 virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
10332
10333 virtual HRESULT STDMETHODCALLTYPE Serialize(
10334 _Out_writes_(DataSizeInBytes) void *pData,
10335 SIZE_T DataSizeInBytes) = 0;
10336
10337 };
10338
10339
10340#else /* C style interface */
10341
10342 typedef struct ID3D12PipelineLibraryVtbl
10343 {
10344 BEGIN_INTERFACE
10345
10346 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10347 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10348 ID3D12PipelineLibrary * This,
10349 REFIID riid,
10350 _COM_Outptr_ void **ppvObject);
10351
10352 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10353 ULONG ( STDMETHODCALLTYPE *AddRef )(
10354 ID3D12PipelineLibrary * This);
10355
10356 DECLSPEC_XFGVIRT(IUnknown, Release)
10357 ULONG ( STDMETHODCALLTYPE *Release )(
10358 ID3D12PipelineLibrary * This);
10359
10360 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10361 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10362 ID3D12PipelineLibrary * This,
10363 _In_ REFGUID guid,
10364 _Inout_ UINT *pDataSize,
10365 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10366
10367 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10368 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10369 ID3D12PipelineLibrary * This,
10370 _In_ REFGUID guid,
10371 _In_ UINT DataSize,
10372 _In_reads_bytes_opt_( DataSize ) const void *pData);
10373
10374 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10375 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10376 ID3D12PipelineLibrary * This,
10377 _In_ REFGUID guid,
10378 _In_opt_ const IUnknown *pData);
10379
10380 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10381 HRESULT ( STDMETHODCALLTYPE *SetName )(
10382 ID3D12PipelineLibrary * This,
10383 _In_z_ LPCWSTR Name);
10384
10385 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10386 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10387 ID3D12PipelineLibrary * This,
10388 REFIID riid,
10389 _COM_Outptr_opt_ void **ppvDevice);
10390
10391 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
10392 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
10393 ID3D12PipelineLibrary * This,
10394 _In_opt_ LPCWSTR pName,
10395 _In_ ID3D12PipelineState *pPipeline);
10396
10397 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
10398 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
10399 ID3D12PipelineLibrary * This,
10400 _In_ LPCWSTR pName,
10401 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10402 REFIID riid,
10403 _COM_Outptr_ void **ppPipelineState);
10404
10405 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
10406 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
10407 ID3D12PipelineLibrary * This,
10408 _In_ LPCWSTR pName,
10409 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10410 REFIID riid,
10411 _COM_Outptr_ void **ppPipelineState);
10412
10413 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
10414 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
10415 ID3D12PipelineLibrary * This);
10416
10417 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
10418 HRESULT ( STDMETHODCALLTYPE *Serialize )(
10419 ID3D12PipelineLibrary * This,
10420 _Out_writes_(DataSizeInBytes) void *pData,
10421 SIZE_T DataSizeInBytes);
10422
10423 END_INTERFACE
10424 } ID3D12PipelineLibraryVtbl;
10425
10426 interface ID3D12PipelineLibrary
10427 {
10428 CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
10429 };
10430
10431
10432
10433#ifdef COBJMACROS
10434
10435
10436#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
10437 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10438
10439#define ID3D12PipelineLibrary_AddRef(This) \
10440 ( (This)->lpVtbl -> AddRef(This) )
10441
10442#define ID3D12PipelineLibrary_Release(This) \
10443 ( (This)->lpVtbl -> Release(This) )
10444
10445
10446#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
10447 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10448
10449#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
10450 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10451
10452#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
10453 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10454
10455#define ID3D12PipelineLibrary_SetName(This,Name) \
10456 ( (This)->lpVtbl -> SetName(This,Name) )
10457
10458
10459#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
10460 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10461
10462
10463#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
10464 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
10465
10466#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
10467 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
10468
10469#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
10470 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
10471
10472#define ID3D12PipelineLibrary_GetSerializedSize(This) \
10473 ( (This)->lpVtbl -> GetSerializedSize(This) )
10474
10475#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
10476 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
10477
10478#endif /* COBJMACROS */
10479
10480
10481#endif /* C style interface */
10482
10483
10484
10485
10486#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
10487
10488
10489#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
10490#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
10491
10492/* interface ID3D12PipelineLibrary1 */
10493/* [unique][local][object][uuid] */
10494
10495
10496EXTERN_C const IID IID_ID3D12PipelineLibrary1;
10497
10498#if defined(__cplusplus) && !defined(CINTERFACE)
10499
10500 MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
10501 ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
10502 {
10503 public:
10504 virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
10505 _In_ LPCWSTR pName,
10506 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10507 REFIID riid,
10508 _COM_Outptr_ void **ppPipelineState) = 0;
10509
10510 };
10511
10512
10513#else /* C style interface */
10514
10515 typedef struct ID3D12PipelineLibrary1Vtbl
10516 {
10517 BEGIN_INTERFACE
10518
10519 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10520 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10521 ID3D12PipelineLibrary1 * This,
10522 REFIID riid,
10523 _COM_Outptr_ void **ppvObject);
10524
10525 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10526 ULONG ( STDMETHODCALLTYPE *AddRef )(
10527 ID3D12PipelineLibrary1 * This);
10528
10529 DECLSPEC_XFGVIRT(IUnknown, Release)
10530 ULONG ( STDMETHODCALLTYPE *Release )(
10531 ID3D12PipelineLibrary1 * This);
10532
10533 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10534 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10535 ID3D12PipelineLibrary1 * This,
10536 _In_ REFGUID guid,
10537 _Inout_ UINT *pDataSize,
10538 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10539
10540 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10541 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10542 ID3D12PipelineLibrary1 * This,
10543 _In_ REFGUID guid,
10544 _In_ UINT DataSize,
10545 _In_reads_bytes_opt_( DataSize ) const void *pData);
10546
10547 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10548 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10549 ID3D12PipelineLibrary1 * This,
10550 _In_ REFGUID guid,
10551 _In_opt_ const IUnknown *pData);
10552
10553 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10554 HRESULT ( STDMETHODCALLTYPE *SetName )(
10555 ID3D12PipelineLibrary1 * This,
10556 _In_z_ LPCWSTR Name);
10557
10558 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10559 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10560 ID3D12PipelineLibrary1 * This,
10561 REFIID riid,
10562 _COM_Outptr_opt_ void **ppvDevice);
10563
10564 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
10565 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
10566 ID3D12PipelineLibrary1 * This,
10567 _In_opt_ LPCWSTR pName,
10568 _In_ ID3D12PipelineState *pPipeline);
10569
10570 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
10571 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
10572 ID3D12PipelineLibrary1 * This,
10573 _In_ LPCWSTR pName,
10574 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10575 REFIID riid,
10576 _COM_Outptr_ void **ppPipelineState);
10577
10578 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
10579 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
10580 ID3D12PipelineLibrary1 * This,
10581 _In_ LPCWSTR pName,
10582 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10583 REFIID riid,
10584 _COM_Outptr_ void **ppPipelineState);
10585
10586 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
10587 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
10588 ID3D12PipelineLibrary1 * This);
10589
10590 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
10591 HRESULT ( STDMETHODCALLTYPE *Serialize )(
10592 ID3D12PipelineLibrary1 * This,
10593 _Out_writes_(DataSizeInBytes) void *pData,
10594 SIZE_T DataSizeInBytes);
10595
10596 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary1, LoadPipeline)
10597 HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
10598 ID3D12PipelineLibrary1 * This,
10599 _In_ LPCWSTR pName,
10600 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10601 REFIID riid,
10602 _COM_Outptr_ void **ppPipelineState);
10603
10604 END_INTERFACE
10605 } ID3D12PipelineLibrary1Vtbl;
10606
10607 interface ID3D12PipelineLibrary1
10608 {
10609 CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
10610 };
10611
10612
10613
10614#ifdef COBJMACROS
10615
10616
10617#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
10618 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10619
10620#define ID3D12PipelineLibrary1_AddRef(This) \
10621 ( (This)->lpVtbl -> AddRef(This) )
10622
10623#define ID3D12PipelineLibrary1_Release(This) \
10624 ( (This)->lpVtbl -> Release(This) )
10625
10626
10627#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
10628 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10629
10630#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
10631 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10632
10633#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
10634 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10635
10636#define ID3D12PipelineLibrary1_SetName(This,Name) \
10637 ( (This)->lpVtbl -> SetName(This,Name) )
10638
10639
10640#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
10641 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10642
10643
10644#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
10645 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
10646
10647#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
10648 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
10649
10650#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
10651 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
10652
10653#define ID3D12PipelineLibrary1_GetSerializedSize(This) \
10654 ( (This)->lpVtbl -> GetSerializedSize(This) )
10655
10656#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
10657 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
10658
10659
10660#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
10661 ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
10662
10663#endif /* COBJMACROS */
10664
10665
10666#endif /* C style interface */
10667
10668
10669
10670
10671#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
10672
10673
10674/* interface __MIDL_itf_d3d12_0000_0025 */
10675/* [local] */
10676
10677typedef
10678enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
10679 {
10680 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
10681 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
10682 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
10683 } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
10684
10685DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )
10686typedef
10687enum D3D12_RESIDENCY_PRIORITY
10688 {
10689 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
10690 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
10691 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
10692 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
10693 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
10694 } D3D12_RESIDENCY_PRIORITY;
10695
10696
10697
10698extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
10699extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
10700
10701#ifndef __ID3D12Device1_INTERFACE_DEFINED__
10702#define __ID3D12Device1_INTERFACE_DEFINED__
10703
10704/* interface ID3D12Device1 */
10705/* [unique][local][object][uuid] */
10706
10707
10708EXTERN_C const IID IID_ID3D12Device1;
10709
10710#if defined(__cplusplus) && !defined(CINTERFACE)
10711
10712 MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
10713 ID3D12Device1 : public ID3D12Device
10714 {
10715 public:
10716 virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
10717 _In_reads_(BlobLength) const void *pLibraryBlob,
10718 SIZE_T BlobLength,
10719 REFIID riid,
10720 _COM_Outptr_ void **ppPipelineLibrary) = 0;
10721
10722 virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
10723 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10724 _In_reads_(NumFences) const UINT64 *pFenceValues,
10725 UINT NumFences,
10726 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10727 HANDLE hEvent) = 0;
10728
10729 virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
10730 UINT NumObjects,
10731 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10732 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
10733
10734 };
10735
10736
10737#else /* C style interface */
10738
10739 typedef struct ID3D12Device1Vtbl
10740 {
10741 BEGIN_INTERFACE
10742
10743 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10744 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10745 ID3D12Device1 * This,
10746 REFIID riid,
10747 _COM_Outptr_ void **ppvObject);
10748
10749 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10750 ULONG ( STDMETHODCALLTYPE *AddRef )(
10751 ID3D12Device1 * This);
10752
10753 DECLSPEC_XFGVIRT(IUnknown, Release)
10754 ULONG ( STDMETHODCALLTYPE *Release )(
10755 ID3D12Device1 * This);
10756
10757 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10758 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10759 ID3D12Device1 * This,
10760 _In_ REFGUID guid,
10761 _Inout_ UINT *pDataSize,
10762 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10763
10764 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10765 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10766 ID3D12Device1 * This,
10767 _In_ REFGUID guid,
10768 _In_ UINT DataSize,
10769 _In_reads_bytes_opt_( DataSize ) const void *pData);
10770
10771 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10772 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10773 ID3D12Device1 * This,
10774 _In_ REFGUID guid,
10775 _In_opt_ const IUnknown *pData);
10776
10777 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10778 HRESULT ( STDMETHODCALLTYPE *SetName )(
10779 ID3D12Device1 * This,
10780 _In_z_ LPCWSTR Name);
10781
10782 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10783 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10784 ID3D12Device1 * This);
10785
10786 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10787 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10788 ID3D12Device1 * This,
10789 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10790 REFIID riid,
10791 _COM_Outptr_ void **ppCommandQueue);
10792
10793 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10794 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10795 ID3D12Device1 * This,
10796 _In_ D3D12_COMMAND_LIST_TYPE type,
10797 REFIID riid,
10798 _COM_Outptr_ void **ppCommandAllocator);
10799
10800 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10801 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10802 ID3D12Device1 * This,
10803 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10804 REFIID riid,
10805 _COM_Outptr_ void **ppPipelineState);
10806
10807 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10808 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10809 ID3D12Device1 * This,
10810 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10811 REFIID riid,
10812 _COM_Outptr_ void **ppPipelineState);
10813
10814 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10815 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10816 ID3D12Device1 * This,
10817 _In_ UINT nodeMask,
10818 _In_ D3D12_COMMAND_LIST_TYPE type,
10819 _In_ ID3D12CommandAllocator *pCommandAllocator,
10820 _In_opt_ ID3D12PipelineState *pInitialState,
10821 REFIID riid,
10822 _COM_Outptr_ void **ppCommandList);
10823
10824 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10825 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10826 ID3D12Device1 * This,
10827 D3D12_FEATURE Feature,
10828 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10829 UINT FeatureSupportDataSize);
10830
10831 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10832 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10833 ID3D12Device1 * This,
10834 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10835 REFIID riid,
10836 _COM_Outptr_ void **ppvHeap);
10837
10838 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10839 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10840 ID3D12Device1 * This,
10841 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10842
10843 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10844 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10845 ID3D12Device1 * This,
10846 _In_ UINT nodeMask,
10847 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10848 _In_ SIZE_T blobLengthInBytes,
10849 REFIID riid,
10850 _COM_Outptr_ void **ppvRootSignature);
10851
10852 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10853 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10854 ID3D12Device1 * This,
10855 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10856 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10857
10858 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10859 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10860 ID3D12Device1 * This,
10861 _In_opt_ ID3D12Resource *pResource,
10862 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10863 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10864
10865 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10866 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10867 ID3D12Device1 * This,
10868 _In_opt_ ID3D12Resource *pResource,
10869 _In_opt_ ID3D12Resource *pCounterResource,
10870 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10871 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10872
10873 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10874 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10875 ID3D12Device1 * This,
10876 _In_opt_ ID3D12Resource *pResource,
10877 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10878 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10879
10880 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10881 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10882 ID3D12Device1 * This,
10883 _In_opt_ ID3D12Resource *pResource,
10884 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10885 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10886
10887 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10888 void ( STDMETHODCALLTYPE *CreateSampler )(
10889 ID3D12Device1 * This,
10890 _In_ const D3D12_SAMPLER_DESC *pDesc,
10891 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10892
10893 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10894 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10895 ID3D12Device1 * This,
10896 _In_ UINT NumDestDescriptorRanges,
10897 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10898 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10899 _In_ UINT NumSrcDescriptorRanges,
10900 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10901 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10902 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10903
10904 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10905 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10906 ID3D12Device1 * This,
10907 _In_ UINT NumDescriptors,
10908 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10909 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10910 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10911
10912 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10913#if !defined(_WIN32)
10914 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10915 ID3D12Device1 * This,
10916 _In_ UINT visibleMask,
10917 _In_ UINT numResourceDescs,
10918 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10919
10920#else
10921 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10922 ID3D12Device1 * This,
10923 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10924 _In_ UINT visibleMask,
10925 _In_ UINT numResourceDescs,
10926 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10927
10928#endif
10929
10930 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10931#if !defined(_WIN32)
10932 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10933 ID3D12Device1 * This,
10934 _In_ UINT nodeMask,
10935 D3D12_HEAP_TYPE heapType);
10936
10937#else
10938 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10939 ID3D12Device1 * This,
10940 D3D12_HEAP_PROPERTIES * RetVal,
10941 _In_ UINT nodeMask,
10942 D3D12_HEAP_TYPE heapType);
10943
10944#endif
10945
10946 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10947 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10948 ID3D12Device1 * This,
10949 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10950 D3D12_HEAP_FLAGS HeapFlags,
10951 _In_ const D3D12_RESOURCE_DESC *pDesc,
10952 D3D12_RESOURCE_STATES InitialResourceState,
10953 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10954 REFIID riidResource,
10955 _COM_Outptr_opt_ void **ppvResource);
10956
10957 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10958 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10959 ID3D12Device1 * This,
10960 _In_ const D3D12_HEAP_DESC *pDesc,
10961 REFIID riid,
10962 _COM_Outptr_opt_ void **ppvHeap);
10963
10964 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10965 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10966 ID3D12Device1 * This,
10967 _In_ ID3D12Heap *pHeap,
10968 UINT64 HeapOffset,
10969 _In_ const D3D12_RESOURCE_DESC *pDesc,
10970 D3D12_RESOURCE_STATES InitialState,
10971 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10972 REFIID riid,
10973 _COM_Outptr_opt_ void **ppvResource);
10974
10975 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10976 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10977 ID3D12Device1 * This,
10978 _In_ const D3D12_RESOURCE_DESC *pDesc,
10979 D3D12_RESOURCE_STATES InitialState,
10980 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10981 REFIID riid,
10982 _COM_Outptr_opt_ void **ppvResource);
10983
10984 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10985 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10986 ID3D12Device1 * This,
10987 _In_ ID3D12DeviceChild *pObject,
10988 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10989 DWORD Access,
10990 _In_opt_ LPCWSTR Name,
10991 _Out_ HANDLE *pHandle);
10992
10993 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10994 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10995 ID3D12Device1 * This,
10996 _In_ HANDLE NTHandle,
10997 REFIID riid,
10998 _COM_Outptr_opt_ void **ppvObj);
10999
11000 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11001 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11002 ID3D12Device1 * This,
11003 _In_ LPCWSTR Name,
11004 DWORD Access,
11005 /* [annotation][out] */
11006 _Out_ HANDLE *pNTHandle);
11007
11008 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11009 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11010 ID3D12Device1 * This,
11011 UINT NumObjects,
11012 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11013
11014 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11015 HRESULT ( STDMETHODCALLTYPE *Evict )(
11016 ID3D12Device1 * This,
11017 UINT NumObjects,
11018 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11019
11020 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11021 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11022 ID3D12Device1 * This,
11023 UINT64 InitialValue,
11024 D3D12_FENCE_FLAGS Flags,
11025 REFIID riid,
11026 _COM_Outptr_ void **ppFence);
11027
11028 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11029 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11030 ID3D12Device1 * This);
11031
11032 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11033 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11034 ID3D12Device1 * This,
11035 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11036 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11037 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11038 UINT64 BaseOffset,
11039 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11040 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11041 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11042 _Out_opt_ UINT64 *pTotalBytes);
11043
11044 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11045 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11046 ID3D12Device1 * This,
11047 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11048 REFIID riid,
11049 _COM_Outptr_opt_ void **ppvHeap);
11050
11051 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11052 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11053 ID3D12Device1 * This,
11054 BOOL Enable);
11055
11056 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11057 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11058 ID3D12Device1 * This,
11059 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11060 _In_opt_ ID3D12RootSignature *pRootSignature,
11061 REFIID riid,
11062 _COM_Outptr_opt_ void **ppvCommandSignature);
11063
11064 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11065 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11066 ID3D12Device1 * This,
11067 _In_ ID3D12Resource *pTiledResource,
11068 _Out_opt_ UINT *pNumTilesForEntireResource,
11069 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11070 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11071 _Inout_opt_ UINT *pNumSubresourceTilings,
11072 _In_ UINT FirstSubresourceTilingToGet,
11073 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11074
11075 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11076#if !defined(_WIN32)
11077 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
11078 ID3D12Device1 * This);
11079
11080#else
11081 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11082 ID3D12Device1 * This,
11083 LUID * RetVal);
11084
11085#endif
11086
11087 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11088 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11089 ID3D12Device1 * This,
11090 _In_reads_(BlobLength) const void *pLibraryBlob,
11091 SIZE_T BlobLength,
11092 REFIID riid,
11093 _COM_Outptr_ void **ppPipelineLibrary);
11094
11095 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11096 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11097 ID3D12Device1 * This,
11098 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11099 _In_reads_(NumFences) const UINT64 *pFenceValues,
11100 UINT NumFences,
11101 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11102 HANDLE hEvent);
11103
11104 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11105 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11106 ID3D12Device1 * This,
11107 UINT NumObjects,
11108 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11109 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11110
11111 END_INTERFACE
11112 } ID3D12Device1Vtbl;
11113
11114 interface ID3D12Device1
11115 {
11116 CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
11117 };
11118
11119
11120
11121#ifdef COBJMACROS
11122
11123
11124#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
11125 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11126
11127#define ID3D12Device1_AddRef(This) \
11128 ( (This)->lpVtbl -> AddRef(This) )
11129
11130#define ID3D12Device1_Release(This) \
11131 ( (This)->lpVtbl -> Release(This) )
11132
11133
11134#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
11135 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11136
11137#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
11138 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11139
11140#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
11141 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11142
11143#define ID3D12Device1_SetName(This,Name) \
11144 ( (This)->lpVtbl -> SetName(This,Name) )
11145
11146
11147#define ID3D12Device1_GetNodeCount(This) \
11148 ( (This)->lpVtbl -> GetNodeCount(This) )
11149
11150#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11151 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11152
11153#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11154 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11155
11156#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11157 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11158
11159#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11160 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11161
11162#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11163 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11164
11165#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11166 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11167
11168#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11169 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11170
11171#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11172 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11173
11174#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11175 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11176
11177#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11178 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11179
11180#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11181 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11182
11183#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11184 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11185
11186#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11187 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11188
11189#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11190 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11191
11192#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
11193 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11194
11195#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11196 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11197
11198#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11199 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11200#if !defined(_WIN32)
11201
11202#define ID3D12Device1_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
11203 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
11204#else
11205#define ID3D12Device1_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11206 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11207#endif
11208#if !defined(_WIN32)
11209
11210#define ID3D12Device1_GetCustomHeapProperties(This,nodeMask,heapType) \
11211 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
11212#else
11213#define ID3D12Device1_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11214 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11215#endif
11216
11217#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11218 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11219
11220#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
11221 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11222
11223#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11224 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11225
11226#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11227 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11228
11229#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11230 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11231
11232#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11233 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11234
11235#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11236 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11237
11238#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
11239 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11240
11241#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
11242 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11243
11244#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11245 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11246
11247#define ID3D12Device1_GetDeviceRemovedReason(This) \
11248 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11249
11250#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11251 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11252
11253#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11254 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11255
11256#define ID3D12Device1_SetStablePowerState(This,Enable) \
11257 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11258
11259#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11260 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11261
11262#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11263 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11264#if !defined(_WIN32)
11265
11266#define ID3D12Device1_GetAdapterLuid(This) \
11267 ( (This)->lpVtbl -> GetAdapterLuid(This) )
11268#else
11269#define ID3D12Device1_GetAdapterLuid(This,RetVal) \
11270 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11271#endif
11272
11273
11274#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11275 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11276
11277#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11278 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11279
11280#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11281 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11282
11283#endif /* COBJMACROS */
11284
11285
11286#endif /* C style interface */
11287
11288
11289
11290
11291#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
11292
11293
11294#ifndef __ID3D12Device2_INTERFACE_DEFINED__
11295#define __ID3D12Device2_INTERFACE_DEFINED__
11296
11297/* interface ID3D12Device2 */
11298/* [unique][local][object][uuid] */
11299
11300
11301EXTERN_C const IID IID_ID3D12Device2;
11302
11303#if defined(__cplusplus) && !defined(CINTERFACE)
11304
11305 MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
11306 ID3D12Device2 : public ID3D12Device1
11307 {
11308 public:
11309 virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
11310 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11311 REFIID riid,
11312 _COM_Outptr_ void **ppPipelineState) = 0;
11313
11314 };
11315
11316
11317#else /* C style interface */
11318
11319 typedef struct ID3D12Device2Vtbl
11320 {
11321 BEGIN_INTERFACE
11322
11323 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11324 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11325 ID3D12Device2 * This,
11326 REFIID riid,
11327 _COM_Outptr_ void **ppvObject);
11328
11329 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11330 ULONG ( STDMETHODCALLTYPE *AddRef )(
11331 ID3D12Device2 * This);
11332
11333 DECLSPEC_XFGVIRT(IUnknown, Release)
11334 ULONG ( STDMETHODCALLTYPE *Release )(
11335 ID3D12Device2 * This);
11336
11337 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11338 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11339 ID3D12Device2 * This,
11340 _In_ REFGUID guid,
11341 _Inout_ UINT *pDataSize,
11342 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11343
11344 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11345 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11346 ID3D12Device2 * This,
11347 _In_ REFGUID guid,
11348 _In_ UINT DataSize,
11349 _In_reads_bytes_opt_( DataSize ) const void *pData);
11350
11351 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11352 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11353 ID3D12Device2 * This,
11354 _In_ REFGUID guid,
11355 _In_opt_ const IUnknown *pData);
11356
11357 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11358 HRESULT ( STDMETHODCALLTYPE *SetName )(
11359 ID3D12Device2 * This,
11360 _In_z_ LPCWSTR Name);
11361
11362 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11363 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11364 ID3D12Device2 * This);
11365
11366 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11367 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11368 ID3D12Device2 * This,
11369 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11370 REFIID riid,
11371 _COM_Outptr_ void **ppCommandQueue);
11372
11373 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11374 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11375 ID3D12Device2 * This,
11376 _In_ D3D12_COMMAND_LIST_TYPE type,
11377 REFIID riid,
11378 _COM_Outptr_ void **ppCommandAllocator);
11379
11380 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11381 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11382 ID3D12Device2 * This,
11383 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11384 REFIID riid,
11385 _COM_Outptr_ void **ppPipelineState);
11386
11387 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
11388 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
11389 ID3D12Device2 * This,
11390 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
11391 REFIID riid,
11392 _COM_Outptr_ void **ppPipelineState);
11393
11394 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
11395 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
11396 ID3D12Device2 * This,
11397 _In_ UINT nodeMask,
11398 _In_ D3D12_COMMAND_LIST_TYPE type,
11399 _In_ ID3D12CommandAllocator *pCommandAllocator,
11400 _In_opt_ ID3D12PipelineState *pInitialState,
11401 REFIID riid,
11402 _COM_Outptr_ void **ppCommandList);
11403
11404 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
11405 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
11406 ID3D12Device2 * This,
11407 D3D12_FEATURE Feature,
11408 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
11409 UINT FeatureSupportDataSize);
11410
11411 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
11412 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
11413 ID3D12Device2 * This,
11414 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
11415 REFIID riid,
11416 _COM_Outptr_ void **ppvHeap);
11417
11418 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
11419 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
11420 ID3D12Device2 * This,
11421 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
11422
11423 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
11424 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
11425 ID3D12Device2 * This,
11426 _In_ UINT nodeMask,
11427 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
11428 _In_ SIZE_T blobLengthInBytes,
11429 REFIID riid,
11430 _COM_Outptr_ void **ppvRootSignature);
11431
11432 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
11433 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
11434 ID3D12Device2 * This,
11435 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
11436 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11437
11438 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
11439 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
11440 ID3D12Device2 * This,
11441 _In_opt_ ID3D12Resource *pResource,
11442 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
11443 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11444
11445 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
11446 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
11447 ID3D12Device2 * This,
11448 _In_opt_ ID3D12Resource *pResource,
11449 _In_opt_ ID3D12Resource *pCounterResource,
11450 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
11451 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11452
11453 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
11454 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
11455 ID3D12Device2 * This,
11456 _In_opt_ ID3D12Resource *pResource,
11457 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
11458 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11459
11460 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
11461 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
11462 ID3D12Device2 * This,
11463 _In_opt_ ID3D12Resource *pResource,
11464 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
11465 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11466
11467 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
11468 void ( STDMETHODCALLTYPE *CreateSampler )(
11469 ID3D12Device2 * This,
11470 _In_ const D3D12_SAMPLER_DESC *pDesc,
11471 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11472
11473 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
11474 void ( STDMETHODCALLTYPE *CopyDescriptors )(
11475 ID3D12Device2 * This,
11476 _In_ UINT NumDestDescriptorRanges,
11477 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
11478 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
11479 _In_ UINT NumSrcDescriptorRanges,
11480 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
11481 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
11482 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11483
11484 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
11485 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
11486 ID3D12Device2 * This,
11487 _In_ UINT NumDescriptors,
11488 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
11489 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
11490 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11491
11492 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
11493#if !defined(_WIN32)
11494 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11495 ID3D12Device2 * This,
11496 _In_ UINT visibleMask,
11497 _In_ UINT numResourceDescs,
11498 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11499
11500#else
11501 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11502 ID3D12Device2 * This,
11503 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
11504 _In_ UINT visibleMask,
11505 _In_ UINT numResourceDescs,
11506 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11507
11508#endif
11509
11510 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
11511#if !defined(_WIN32)
11512 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11513 ID3D12Device2 * This,
11514 _In_ UINT nodeMask,
11515 D3D12_HEAP_TYPE heapType);
11516
11517#else
11518 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11519 ID3D12Device2 * This,
11520 D3D12_HEAP_PROPERTIES * RetVal,
11521 _In_ UINT nodeMask,
11522 D3D12_HEAP_TYPE heapType);
11523
11524#endif
11525
11526 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
11527 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
11528 ID3D12Device2 * This,
11529 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11530 D3D12_HEAP_FLAGS HeapFlags,
11531 _In_ const D3D12_RESOURCE_DESC *pDesc,
11532 D3D12_RESOURCE_STATES InitialResourceState,
11533 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11534 REFIID riidResource,
11535 _COM_Outptr_opt_ void **ppvResource);
11536
11537 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
11538 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
11539 ID3D12Device2 * This,
11540 _In_ const D3D12_HEAP_DESC *pDesc,
11541 REFIID riid,
11542 _COM_Outptr_opt_ void **ppvHeap);
11543
11544 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
11545 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
11546 ID3D12Device2 * This,
11547 _In_ ID3D12Heap *pHeap,
11548 UINT64 HeapOffset,
11549 _In_ const D3D12_RESOURCE_DESC *pDesc,
11550 D3D12_RESOURCE_STATES InitialState,
11551 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11552 REFIID riid,
11553 _COM_Outptr_opt_ void **ppvResource);
11554
11555 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
11556 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
11557 ID3D12Device2 * This,
11558 _In_ const D3D12_RESOURCE_DESC *pDesc,
11559 D3D12_RESOURCE_STATES InitialState,
11560 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11561 REFIID riid,
11562 _COM_Outptr_opt_ void **ppvResource);
11563
11564 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
11565 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
11566 ID3D12Device2 * This,
11567 _In_ ID3D12DeviceChild *pObject,
11568 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
11569 DWORD Access,
11570 _In_opt_ LPCWSTR Name,
11571 _Out_ HANDLE *pHandle);
11572
11573 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
11574 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
11575 ID3D12Device2 * This,
11576 _In_ HANDLE NTHandle,
11577 REFIID riid,
11578 _COM_Outptr_opt_ void **ppvObj);
11579
11580 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11581 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11582 ID3D12Device2 * This,
11583 _In_ LPCWSTR Name,
11584 DWORD Access,
11585 /* [annotation][out] */
11586 _Out_ HANDLE *pNTHandle);
11587
11588 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11589 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11590 ID3D12Device2 * This,
11591 UINT NumObjects,
11592 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11593
11594 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11595 HRESULT ( STDMETHODCALLTYPE *Evict )(
11596 ID3D12Device2 * This,
11597 UINT NumObjects,
11598 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11599
11600 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11601 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11602 ID3D12Device2 * This,
11603 UINT64 InitialValue,
11604 D3D12_FENCE_FLAGS Flags,
11605 REFIID riid,
11606 _COM_Outptr_ void **ppFence);
11607
11608 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11609 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11610 ID3D12Device2 * This);
11611
11612 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11613 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11614 ID3D12Device2 * This,
11615 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11616 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11617 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11618 UINT64 BaseOffset,
11619 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11620 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11621 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11622 _Out_opt_ UINT64 *pTotalBytes);
11623
11624 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11625 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11626 ID3D12Device2 * This,
11627 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11628 REFIID riid,
11629 _COM_Outptr_opt_ void **ppvHeap);
11630
11631 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11632 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11633 ID3D12Device2 * This,
11634 BOOL Enable);
11635
11636 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11637 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11638 ID3D12Device2 * This,
11639 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11640 _In_opt_ ID3D12RootSignature *pRootSignature,
11641 REFIID riid,
11642 _COM_Outptr_opt_ void **ppvCommandSignature);
11643
11644 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11645 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11646 ID3D12Device2 * This,
11647 _In_ ID3D12Resource *pTiledResource,
11648 _Out_opt_ UINT *pNumTilesForEntireResource,
11649 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11650 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11651 _Inout_opt_ UINT *pNumSubresourceTilings,
11652 _In_ UINT FirstSubresourceTilingToGet,
11653 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11654
11655 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11656#if !defined(_WIN32)
11657 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
11658 ID3D12Device2 * This);
11659
11660#else
11661 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11662 ID3D12Device2 * This,
11663 LUID * RetVal);
11664
11665#endif
11666
11667 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11668 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11669 ID3D12Device2 * This,
11670 _In_reads_(BlobLength) const void *pLibraryBlob,
11671 SIZE_T BlobLength,
11672 REFIID riid,
11673 _COM_Outptr_ void **ppPipelineLibrary);
11674
11675 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11676 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11677 ID3D12Device2 * This,
11678 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11679 _In_reads_(NumFences) const UINT64 *pFenceValues,
11680 UINT NumFences,
11681 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11682 HANDLE hEvent);
11683
11684 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11685 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11686 ID3D12Device2 * This,
11687 UINT NumObjects,
11688 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11689 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11690
11691 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
11692 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
11693 ID3D12Device2 * This,
11694 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11695 REFIID riid,
11696 _COM_Outptr_ void **ppPipelineState);
11697
11698 END_INTERFACE
11699 } ID3D12Device2Vtbl;
11700
11701 interface ID3D12Device2
11702 {
11703 CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
11704 };
11705
11706
11707
11708#ifdef COBJMACROS
11709
11710
11711#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
11712 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11713
11714#define ID3D12Device2_AddRef(This) \
11715 ( (This)->lpVtbl -> AddRef(This) )
11716
11717#define ID3D12Device2_Release(This) \
11718 ( (This)->lpVtbl -> Release(This) )
11719
11720
11721#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
11722 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11723
11724#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
11725 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11726
11727#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
11728 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11729
11730#define ID3D12Device2_SetName(This,Name) \
11731 ( (This)->lpVtbl -> SetName(This,Name) )
11732
11733
11734#define ID3D12Device2_GetNodeCount(This) \
11735 ( (This)->lpVtbl -> GetNodeCount(This) )
11736
11737#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11738 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11739
11740#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11741 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11742
11743#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11744 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11745
11746#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11747 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11748
11749#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11750 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11751
11752#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11753 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11754
11755#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11756 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11757
11758#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11759 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11760
11761#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11762 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11763
11764#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11765 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11766
11767#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11768 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11769
11770#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11771 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11772
11773#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11774 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11775
11776#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11777 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11778
11779#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
11780 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11781
11782#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11783 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11784
11785#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11786 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11787#if !defined(_WIN32)
11788
11789#define ID3D12Device2_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
11790 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
11791#else
11792#define ID3D12Device2_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11793 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11794#endif
11795#if !defined(_WIN32)
11796
11797#define ID3D12Device2_GetCustomHeapProperties(This,nodeMask,heapType) \
11798 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
11799#else
11800#define ID3D12Device2_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11801 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11802#endif
11803
11804#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11805 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11806
11807#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
11808 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11809
11810#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11811 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11812
11813#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11814 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11815
11816#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11817 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11818
11819#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11820 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11821
11822#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11823 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11824
11825#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
11826 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11827
11828#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
11829 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11830
11831#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11832 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11833
11834#define ID3D12Device2_GetDeviceRemovedReason(This) \
11835 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11836
11837#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11838 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11839
11840#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11841 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11842
11843#define ID3D12Device2_SetStablePowerState(This,Enable) \
11844 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11845
11846#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11847 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11848
11849#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11850 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11851#if !defined(_WIN32)
11852
11853#define ID3D12Device2_GetAdapterLuid(This) \
11854 ( (This)->lpVtbl -> GetAdapterLuid(This) )
11855#else
11856#define ID3D12Device2_GetAdapterLuid(This,RetVal) \
11857 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11858#endif
11859
11860
11861#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11862 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11863
11864#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11865 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11866
11867#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11868 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11869
11870
11871#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
11872 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
11873
11874#endif /* COBJMACROS */
11875
11876
11877#endif /* C style interface */
11878
11879
11880
11881
11882#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
11883
11884
11885/* interface __MIDL_itf_d3d12_0000_0027 */
11886/* [local] */
11887
11888typedef
11889enum D3D12_RESIDENCY_FLAGS
11890 {
11891 D3D12_RESIDENCY_FLAG_NONE = 0,
11892 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
11893 } D3D12_RESIDENCY_FLAGS;
11894
11895DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )
11896
11897
11898extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
11899extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
11900
11901#ifndef __ID3D12Device3_INTERFACE_DEFINED__
11902#define __ID3D12Device3_INTERFACE_DEFINED__
11903
11904/* interface ID3D12Device3 */
11905/* [unique][local][object][uuid] */
11906
11907
11908EXTERN_C const IID IID_ID3D12Device3;
11909
11910#if defined(__cplusplus) && !defined(CINTERFACE)
11911
11912 MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
11913 ID3D12Device3 : public ID3D12Device2
11914 {
11915 public:
11916 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
11917 _In_ const void *pAddress,
11918 REFIID riid,
11919 _COM_Outptr_ void **ppvHeap) = 0;
11920
11921 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
11922 _In_ HANDLE hFileMapping,
11923 REFIID riid,
11924 _COM_Outptr_ void **ppvHeap) = 0;
11925
11926 virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
11927 D3D12_RESIDENCY_FLAGS Flags,
11928 UINT NumObjects,
11929 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11930 _In_ ID3D12Fence *pFenceToSignal,
11931 UINT64 FenceValueToSignal) = 0;
11932
11933 };
11934
11935
11936#else /* C style interface */
11937
11938 typedef struct ID3D12Device3Vtbl
11939 {
11940 BEGIN_INTERFACE
11941
11942 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11943 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11944 ID3D12Device3 * This,
11945 REFIID riid,
11946 _COM_Outptr_ void **ppvObject);
11947
11948 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11949 ULONG ( STDMETHODCALLTYPE *AddRef )(
11950 ID3D12Device3 * This);
11951
11952 DECLSPEC_XFGVIRT(IUnknown, Release)
11953 ULONG ( STDMETHODCALLTYPE *Release )(
11954 ID3D12Device3 * This);
11955
11956 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11957 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11958 ID3D12Device3 * This,
11959 _In_ REFGUID guid,
11960 _Inout_ UINT *pDataSize,
11961 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11962
11963 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11964 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11965 ID3D12Device3 * This,
11966 _In_ REFGUID guid,
11967 _In_ UINT DataSize,
11968 _In_reads_bytes_opt_( DataSize ) const void *pData);
11969
11970 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11971 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11972 ID3D12Device3 * This,
11973 _In_ REFGUID guid,
11974 _In_opt_ const IUnknown *pData);
11975
11976 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11977 HRESULT ( STDMETHODCALLTYPE *SetName )(
11978 ID3D12Device3 * This,
11979 _In_z_ LPCWSTR Name);
11980
11981 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11982 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11983 ID3D12Device3 * This);
11984
11985 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11986 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11987 ID3D12Device3 * This,
11988 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11989 REFIID riid,
11990 _COM_Outptr_ void **ppCommandQueue);
11991
11992 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11993 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11994 ID3D12Device3 * This,
11995 _In_ D3D12_COMMAND_LIST_TYPE type,
11996 REFIID riid,
11997 _COM_Outptr_ void **ppCommandAllocator);
11998
11999 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
12000 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
12001 ID3D12Device3 * This,
12002 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
12003 REFIID riid,
12004 _COM_Outptr_ void **ppPipelineState);
12005
12006 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
12007 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
12008 ID3D12Device3 * This,
12009 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
12010 REFIID riid,
12011 _COM_Outptr_ void **ppPipelineState);
12012
12013 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
12014 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
12015 ID3D12Device3 * This,
12016 _In_ UINT nodeMask,
12017 _In_ D3D12_COMMAND_LIST_TYPE type,
12018 _In_ ID3D12CommandAllocator *pCommandAllocator,
12019 _In_opt_ ID3D12PipelineState *pInitialState,
12020 REFIID riid,
12021 _COM_Outptr_ void **ppCommandList);
12022
12023 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
12024 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
12025 ID3D12Device3 * This,
12026 D3D12_FEATURE Feature,
12027 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
12028 UINT FeatureSupportDataSize);
12029
12030 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
12031 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
12032 ID3D12Device3 * This,
12033 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
12034 REFIID riid,
12035 _COM_Outptr_ void **ppvHeap);
12036
12037 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
12038 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
12039 ID3D12Device3 * This,
12040 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
12041
12042 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
12043 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
12044 ID3D12Device3 * This,
12045 _In_ UINT nodeMask,
12046 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
12047 _In_ SIZE_T blobLengthInBytes,
12048 REFIID riid,
12049 _COM_Outptr_ void **ppvRootSignature);
12050
12051 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
12052 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
12053 ID3D12Device3 * This,
12054 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
12055 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12056
12057 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
12058 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
12059 ID3D12Device3 * This,
12060 _In_opt_ ID3D12Resource *pResource,
12061 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
12062 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12063
12064 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
12065 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
12066 ID3D12Device3 * This,
12067 _In_opt_ ID3D12Resource *pResource,
12068 _In_opt_ ID3D12Resource *pCounterResource,
12069 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
12070 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12071
12072 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
12073 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
12074 ID3D12Device3 * This,
12075 _In_opt_ ID3D12Resource *pResource,
12076 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
12077 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12078
12079 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
12080 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
12081 ID3D12Device3 * This,
12082 _In_opt_ ID3D12Resource *pResource,
12083 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
12084 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12085
12086 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
12087 void ( STDMETHODCALLTYPE *CreateSampler )(
12088 ID3D12Device3 * This,
12089 _In_ const D3D12_SAMPLER_DESC *pDesc,
12090 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12091
12092 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
12093 void ( STDMETHODCALLTYPE *CopyDescriptors )(
12094 ID3D12Device3 * This,
12095 _In_ UINT NumDestDescriptorRanges,
12096 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
12097 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
12098 _In_ UINT NumSrcDescriptorRanges,
12099 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
12100 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
12101 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
12102
12103 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
12104 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
12105 ID3D12Device3 * This,
12106 _In_ UINT NumDescriptors,
12107 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
12108 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
12109 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
12110
12111 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
12112#if !defined(_WIN32)
12113 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
12114 ID3D12Device3 * This,
12115 _In_ UINT visibleMask,
12116 _In_ UINT numResourceDescs,
12117 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
12118
12119#else
12120 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
12121 ID3D12Device3 * This,
12122 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12123 _In_ UINT visibleMask,
12124 _In_ UINT numResourceDescs,
12125 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
12126
12127#endif
12128
12129 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
12130#if !defined(_WIN32)
12131 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
12132 ID3D12Device3 * This,
12133 _In_ UINT nodeMask,
12134 D3D12_HEAP_TYPE heapType);
12135
12136#else
12137 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
12138 ID3D12Device3 * This,
12139 D3D12_HEAP_PROPERTIES * RetVal,
12140 _In_ UINT nodeMask,
12141 D3D12_HEAP_TYPE heapType);
12142
12143#endif
12144
12145 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
12146 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
12147 ID3D12Device3 * This,
12148 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12149 D3D12_HEAP_FLAGS HeapFlags,
12150 _In_ const D3D12_RESOURCE_DESC *pDesc,
12151 D3D12_RESOURCE_STATES InitialResourceState,
12152 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12153 REFIID riidResource,
12154 _COM_Outptr_opt_ void **ppvResource);
12155
12156 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
12157 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
12158 ID3D12Device3 * This,
12159 _In_ const D3D12_HEAP_DESC *pDesc,
12160 REFIID riid,
12161 _COM_Outptr_opt_ void **ppvHeap);
12162
12163 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
12164 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
12165 ID3D12Device3 * This,
12166 _In_ ID3D12Heap *pHeap,
12167 UINT64 HeapOffset,
12168 _In_ const D3D12_RESOURCE_DESC *pDesc,
12169 D3D12_RESOURCE_STATES InitialState,
12170 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12171 REFIID riid,
12172 _COM_Outptr_opt_ void **ppvResource);
12173
12174 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
12175 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
12176 ID3D12Device3 * This,
12177 _In_ const D3D12_RESOURCE_DESC *pDesc,
12178 D3D12_RESOURCE_STATES InitialState,
12179 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12180 REFIID riid,
12181 _COM_Outptr_opt_ void **ppvResource);
12182
12183 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
12184 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
12185 ID3D12Device3 * This,
12186 _In_ ID3D12DeviceChild *pObject,
12187 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
12188 DWORD Access,
12189 _In_opt_ LPCWSTR Name,
12190 _Out_ HANDLE *pHandle);
12191
12192 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
12193 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
12194 ID3D12Device3 * This,
12195 _In_ HANDLE NTHandle,
12196 REFIID riid,
12197 _COM_Outptr_opt_ void **ppvObj);
12198
12199 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
12200 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
12201 ID3D12Device3 * This,
12202 _In_ LPCWSTR Name,
12203 DWORD Access,
12204 /* [annotation][out] */
12205 _Out_ HANDLE *pNTHandle);
12206
12207 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
12208 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
12209 ID3D12Device3 * This,
12210 UINT NumObjects,
12211 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
12212
12213 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
12214 HRESULT ( STDMETHODCALLTYPE *Evict )(
12215 ID3D12Device3 * This,
12216 UINT NumObjects,
12217 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
12218
12219 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
12220 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
12221 ID3D12Device3 * This,
12222 UINT64 InitialValue,
12223 D3D12_FENCE_FLAGS Flags,
12224 REFIID riid,
12225 _COM_Outptr_ void **ppFence);
12226
12227 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
12228 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
12229 ID3D12Device3 * This);
12230
12231 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
12232 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
12233 ID3D12Device3 * This,
12234 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
12235 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
12236 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
12237 UINT64 BaseOffset,
12238 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
12239 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
12240 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
12241 _Out_opt_ UINT64 *pTotalBytes);
12242
12243 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
12244 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
12245 ID3D12Device3 * This,
12246 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
12247 REFIID riid,
12248 _COM_Outptr_opt_ void **ppvHeap);
12249
12250 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
12251 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
12252 ID3D12Device3 * This,
12253 BOOL Enable);
12254
12255 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
12256 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
12257 ID3D12Device3 * This,
12258 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
12259 _In_opt_ ID3D12RootSignature *pRootSignature,
12260 REFIID riid,
12261 _COM_Outptr_opt_ void **ppvCommandSignature);
12262
12263 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
12264 void ( STDMETHODCALLTYPE *GetResourceTiling )(
12265 ID3D12Device3 * This,
12266 _In_ ID3D12Resource *pTiledResource,
12267 _Out_opt_ UINT *pNumTilesForEntireResource,
12268 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
12269 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
12270 _Inout_opt_ UINT *pNumSubresourceTilings,
12271 _In_ UINT FirstSubresourceTilingToGet,
12272 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
12273
12274 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
12275#if !defined(_WIN32)
12276 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
12277 ID3D12Device3 * This);
12278
12279#else
12280 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
12281 ID3D12Device3 * This,
12282 LUID * RetVal);
12283
12284#endif
12285
12286 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
12287 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
12288 ID3D12Device3 * This,
12289 _In_reads_(BlobLength) const void *pLibraryBlob,
12290 SIZE_T BlobLength,
12291 REFIID riid,
12292 _COM_Outptr_ void **ppPipelineLibrary);
12293
12294 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
12295 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
12296 ID3D12Device3 * This,
12297 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
12298 _In_reads_(NumFences) const UINT64 *pFenceValues,
12299 UINT NumFences,
12300 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
12301 HANDLE hEvent);
12302
12303 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
12304 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
12305 ID3D12Device3 * This,
12306 UINT NumObjects,
12307 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
12308 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
12309
12310 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
12311 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
12312 ID3D12Device3 * This,
12313 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
12314 REFIID riid,
12315 _COM_Outptr_ void **ppPipelineState);
12316
12317 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
12318 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
12319 ID3D12Device3 * This,
12320 _In_ const void *pAddress,
12321 REFIID riid,
12322 _COM_Outptr_ void **ppvHeap);
12323
12324 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
12325 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
12326 ID3D12Device3 * This,
12327 _In_ HANDLE hFileMapping,
12328 REFIID riid,
12329 _COM_Outptr_ void **ppvHeap);
12330
12331 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
12332 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
12333 ID3D12Device3 * This,
12334 D3D12_RESIDENCY_FLAGS Flags,
12335 UINT NumObjects,
12336 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
12337 _In_ ID3D12Fence *pFenceToSignal,
12338 UINT64 FenceValueToSignal);
12339
12340 END_INTERFACE
12341 } ID3D12Device3Vtbl;
12342
12343 interface ID3D12Device3
12344 {
12345 CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl;
12346 };
12347
12348
12349
12350#ifdef COBJMACROS
12351
12352
12353#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \
12354 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12355
12356#define ID3D12Device3_AddRef(This) \
12357 ( (This)->lpVtbl -> AddRef(This) )
12358
12359#define ID3D12Device3_Release(This) \
12360 ( (This)->lpVtbl -> Release(This) )
12361
12362
12363#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \
12364 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12365
12366#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \
12367 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12368
12369#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \
12370 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12371
12372#define ID3D12Device3_SetName(This,Name) \
12373 ( (This)->lpVtbl -> SetName(This,Name) )
12374
12375
12376#define ID3D12Device3_GetNodeCount(This) \
12377 ( (This)->lpVtbl -> GetNodeCount(This) )
12378
12379#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
12380 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
12381
12382#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
12383 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
12384
12385#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
12386 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
12387
12388#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
12389 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
12390
12391#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
12392 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
12393
12394#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
12395 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
12396
12397#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
12398 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
12399
12400#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
12401 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
12402
12403#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
12404 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
12405
12406#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \
12407 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
12408
12409#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
12410 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
12411
12412#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
12413 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
12414
12415#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
12416 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
12417
12418#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
12419 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
12420
12421#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \
12422 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
12423
12424#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
12425 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
12426
12427#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
12428 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
12429#if !defined(_WIN32)
12430
12431#define ID3D12Device3_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
12432 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
12433#else
12434#define ID3D12Device3_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
12435 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
12436#endif
12437#if !defined(_WIN32)
12438
12439#define ID3D12Device3_GetCustomHeapProperties(This,nodeMask,heapType) \
12440 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
12441#else
12442#define ID3D12Device3_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
12443 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
12444#endif
12445
12446#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
12447 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
12448
12449#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \
12450 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
12451
12452#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12453 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12454
12455#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12456 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12457
12458#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
12459 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
12460
12461#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
12462 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
12463
12464#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
12465 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
12466
12467#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \
12468 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
12469
12470#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \
12471 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
12472
12473#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \
12474 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
12475
12476#define ID3D12Device3_GetDeviceRemovedReason(This) \
12477 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
12478
12479#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
12480 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
12481
12482#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
12483 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
12484
12485#define ID3D12Device3_SetStablePowerState(This,Enable) \
12486 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
12487
12488#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
12489 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
12490
12491#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
12492 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
12493#if !defined(_WIN32)
12494
12495#define ID3D12Device3_GetAdapterLuid(This) \
12496 ( (This)->lpVtbl -> GetAdapterLuid(This) )
12497#else
12498#define ID3D12Device3_GetAdapterLuid(This,RetVal) \
12499 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
12500#endif
12501
12502
12503#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
12504 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
12505
12506#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
12507 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
12508
12509#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
12510 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
12511
12512
12513#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
12514 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
12515
12516
12517#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
12518 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
12519
12520#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
12521 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
12522
12523#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
12524 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
12525
12526#endif /* COBJMACROS */
12527
12528
12529#endif /* C style interface */
12530
12531
12532
12533
12534#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
12535
12536
12537/* interface __MIDL_itf_d3d12_0000_0028 */
12538/* [local] */
12539
12540typedef
12541enum D3D12_COMMAND_LIST_FLAGS
12542 {
12543 D3D12_COMMAND_LIST_FLAG_NONE = 0
12544 } D3D12_COMMAND_LIST_FLAGS;
12545
12546DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )
12547typedef
12548enum D3D12_COMMAND_POOL_FLAGS
12549 {
12550 D3D12_COMMAND_POOL_FLAG_NONE = 0
12551 } D3D12_COMMAND_POOL_FLAGS;
12552
12553DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )
12554typedef
12555enum D3D12_COMMAND_RECORDER_FLAGS
12556 {
12557 D3D12_COMMAND_RECORDER_FLAG_NONE = 0
12558 } D3D12_COMMAND_RECORDER_FLAGS;
12559
12560DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )
12561typedef
12562enum D3D12_PROTECTED_SESSION_STATUS
12563 {
12564 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
12565 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
12566 } D3D12_PROTECTED_SESSION_STATUS;
12567
12568
12569
12570extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_c_ifspec;
12571extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_s_ifspec;
12572
12573#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
12574#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
12575
12576/* interface ID3D12ProtectedSession */
12577/* [unique][local][object][uuid] */
12578
12579
12580EXTERN_C const IID IID_ID3D12ProtectedSession;
12581
12582#if defined(__cplusplus) && !defined(CINTERFACE)
12583
12584 MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B")
12585 ID3D12ProtectedSession : public ID3D12DeviceChild
12586 {
12587 public:
12588 virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
12589 REFIID riid,
12590 _COM_Outptr_opt_ void **ppFence) = 0;
12591
12592 virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0;
12593
12594 };
12595
12596
12597#else /* C style interface */
12598
12599 typedef struct ID3D12ProtectedSessionVtbl
12600 {
12601 BEGIN_INTERFACE
12602
12603 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12604 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12605 ID3D12ProtectedSession * This,
12606 REFIID riid,
12607 _COM_Outptr_ void **ppvObject);
12608
12609 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12610 ULONG ( STDMETHODCALLTYPE *AddRef )(
12611 ID3D12ProtectedSession * This);
12612
12613 DECLSPEC_XFGVIRT(IUnknown, Release)
12614 ULONG ( STDMETHODCALLTYPE *Release )(
12615 ID3D12ProtectedSession * This);
12616
12617 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12618 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12619 ID3D12ProtectedSession * This,
12620 _In_ REFGUID guid,
12621 _Inout_ UINT *pDataSize,
12622 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12623
12624 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12625 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12626 ID3D12ProtectedSession * This,
12627 _In_ REFGUID guid,
12628 _In_ UINT DataSize,
12629 _In_reads_bytes_opt_( DataSize ) const void *pData);
12630
12631 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12632 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12633 ID3D12ProtectedSession * This,
12634 _In_ REFGUID guid,
12635 _In_opt_ const IUnknown *pData);
12636
12637 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12638 HRESULT ( STDMETHODCALLTYPE *SetName )(
12639 ID3D12ProtectedSession * This,
12640 _In_z_ LPCWSTR Name);
12641
12642 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12643 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12644 ID3D12ProtectedSession * This,
12645 REFIID riid,
12646 _COM_Outptr_opt_ void **ppvDevice);
12647
12648 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
12649 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
12650 ID3D12ProtectedSession * This,
12651 REFIID riid,
12652 _COM_Outptr_opt_ void **ppFence);
12653
12654 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
12655 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
12656 ID3D12ProtectedSession * This);
12657
12658 END_INTERFACE
12659 } ID3D12ProtectedSessionVtbl;
12660
12661 interface ID3D12ProtectedSession
12662 {
12663 CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl;
12664 };
12665
12666
12667
12668#ifdef COBJMACROS
12669
12670
12671#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \
12672 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12673
12674#define ID3D12ProtectedSession_AddRef(This) \
12675 ( (This)->lpVtbl -> AddRef(This) )
12676
12677#define ID3D12ProtectedSession_Release(This) \
12678 ( (This)->lpVtbl -> Release(This) )
12679
12680
12681#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \
12682 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12683
12684#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \
12685 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12686
12687#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \
12688 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12689
12690#define ID3D12ProtectedSession_SetName(This,Name) \
12691 ( (This)->lpVtbl -> SetName(This,Name) )
12692
12693
12694#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \
12695 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12696
12697
12698#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \
12699 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
12700
12701#define ID3D12ProtectedSession_GetSessionStatus(This) \
12702 ( (This)->lpVtbl -> GetSessionStatus(This) )
12703
12704#endif /* COBJMACROS */
12705
12706
12707#endif /* C style interface */
12708
12709
12710
12711
12712#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
12713
12714
12715/* interface __MIDL_itf_d3d12_0000_0029 */
12716/* [local] */
12717
12718typedef
12719enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
12720 {
12721 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0,
12722 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
12723 } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
12724
12725DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )
12726typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
12727 {
12728 UINT NodeIndex;
12729 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
12730 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
12731
12732typedef
12733enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
12734 {
12735 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
12736 } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
12737
12738DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )
12739typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
12740 {
12741 UINT NodeMask;
12742 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
12743 } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
12744
12745
12746
12747extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
12748extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
12749
12750#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
12751#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
12752
12753/* interface ID3D12ProtectedResourceSession */
12754/* [unique][local][object][uuid] */
12755
12756
12757EXTERN_C const IID IID_ID3D12ProtectedResourceSession;
12758
12759#if defined(__cplusplus) && !defined(CINTERFACE)
12760
12761 MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D")
12762 ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
12763 {
12764 public:
12765#if defined(_MSC_VER) || !defined(_WIN32)
12766 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
12767#else
12768 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
12769 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal) = 0;
12770#endif
12771
12772 };
12773
12774
12775#else /* C style interface */
12776
12777 typedef struct ID3D12ProtectedResourceSessionVtbl
12778 {
12779 BEGIN_INTERFACE
12780
12781 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12782 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12783 ID3D12ProtectedResourceSession * This,
12784 REFIID riid,
12785 _COM_Outptr_ void **ppvObject);
12786
12787 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12788 ULONG ( STDMETHODCALLTYPE *AddRef )(
12789 ID3D12ProtectedResourceSession * This);
12790
12791 DECLSPEC_XFGVIRT(IUnknown, Release)
12792 ULONG ( STDMETHODCALLTYPE *Release )(
12793 ID3D12ProtectedResourceSession * This);
12794
12795 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12796 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12797 ID3D12ProtectedResourceSession * This,
12798 _In_ REFGUID guid,
12799 _Inout_ UINT *pDataSize,
12800 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12801
12802 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12803 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12804 ID3D12ProtectedResourceSession * This,
12805 _In_ REFGUID guid,
12806 _In_ UINT DataSize,
12807 _In_reads_bytes_opt_( DataSize ) const void *pData);
12808
12809 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12810 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12811 ID3D12ProtectedResourceSession * This,
12812 _In_ REFGUID guid,
12813 _In_opt_ const IUnknown *pData);
12814
12815 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12816 HRESULT ( STDMETHODCALLTYPE *SetName )(
12817 ID3D12ProtectedResourceSession * This,
12818 _In_z_ LPCWSTR Name);
12819
12820 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12821 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12822 ID3D12ProtectedResourceSession * This,
12823 REFIID riid,
12824 _COM_Outptr_opt_ void **ppvDevice);
12825
12826 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
12827 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
12828 ID3D12ProtectedResourceSession * This,
12829 REFIID riid,
12830 _COM_Outptr_opt_ void **ppFence);
12831
12832 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
12833 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
12834 ID3D12ProtectedResourceSession * This);
12835
12836 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
12837#if !defined(_WIN32)
12838 D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
12839 ID3D12ProtectedResourceSession * This);
12840
12841#else
12842 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
12843 ID3D12ProtectedResourceSession * This,
12844 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
12845
12846#endif
12847
12848 END_INTERFACE
12849 } ID3D12ProtectedResourceSessionVtbl;
12850
12851 interface ID3D12ProtectedResourceSession
12852 {
12853 CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl;
12854 };
12855
12856
12857
12858#ifdef COBJMACROS
12859
12860
12861#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \
12862 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12863
12864#define ID3D12ProtectedResourceSession_AddRef(This) \
12865 ( (This)->lpVtbl -> AddRef(This) )
12866
12867#define ID3D12ProtectedResourceSession_Release(This) \
12868 ( (This)->lpVtbl -> Release(This) )
12869
12870
12871#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \
12872 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12873
12874#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \
12875 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12876
12877#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \
12878 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12879
12880#define ID3D12ProtectedResourceSession_SetName(This,Name) \
12881 ( (This)->lpVtbl -> SetName(This,Name) )
12882
12883
12884#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \
12885 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12886
12887
12888#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \
12889 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
12890
12891#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \
12892 ( (This)->lpVtbl -> GetSessionStatus(This) )
12893
12894#if !defined(_WIN32)
12895
12896#define ID3D12ProtectedResourceSession_GetDesc(This) \
12897 ( (This)->lpVtbl -> GetDesc(This) )
12898#else
12899#define ID3D12ProtectedResourceSession_GetDesc(This,RetVal) \
12900 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
12901#endif
12902
12903#endif /* COBJMACROS */
12904
12905
12906#endif /* C style interface */
12907
12908
12909
12910
12911#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
12912
12913
12914#ifndef __ID3D12Device4_INTERFACE_DEFINED__
12915#define __ID3D12Device4_INTERFACE_DEFINED__
12916
12917/* interface ID3D12Device4 */
12918/* [unique][local][object][uuid] */
12919
12920
12921EXTERN_C const IID IID_ID3D12Device4;
12922
12923#if defined(__cplusplus) && !defined(CINTERFACE)
12924
12925 MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
12926 ID3D12Device4 : public ID3D12Device3
12927 {
12928 public:
12929 virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
12930 _In_ UINT nodeMask,
12931 _In_ D3D12_COMMAND_LIST_TYPE type,
12932 _In_ D3D12_COMMAND_LIST_FLAGS flags,
12933 REFIID riid,
12934 _COM_Outptr_ void **ppCommandList) = 0;
12935
12936 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
12937 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
12938 _In_ REFIID riid,
12939 _COM_Outptr_ void **ppSession) = 0;
12940
12941 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
12942 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12943 D3D12_HEAP_FLAGS HeapFlags,
12944 _In_ const D3D12_RESOURCE_DESC *pDesc,
12945 D3D12_RESOURCE_STATES InitialResourceState,
12946 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12947 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12948 REFIID riidResource,
12949 _COM_Outptr_opt_ void **ppvResource) = 0;
12950
12951 virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
12952 _In_ const D3D12_HEAP_DESC *pDesc,
12953 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12954 REFIID riid,
12955 _COM_Outptr_opt_ void **ppvHeap) = 0;
12956
12957 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
12958 _In_ const D3D12_RESOURCE_DESC *pDesc,
12959 D3D12_RESOURCE_STATES InitialState,
12960 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12961 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12962 REFIID riid,
12963 _COM_Outptr_opt_ void **ppvResource) = 0;
12964
12965#if defined(_MSC_VER) || !defined(_WIN32)
12966 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
12967 UINT visibleMask,
12968 UINT numResourceDescs,
12969 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12970 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
12971#else
12972 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo1(
12973 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12974 UINT visibleMask,
12975 UINT numResourceDescs,
12976 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12977 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
12978#endif
12979
12980 };
12981
12982
12983#else /* C style interface */
12984
12985 typedef struct ID3D12Device4Vtbl
12986 {
12987 BEGIN_INTERFACE
12988
12989 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12990 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12991 ID3D12Device4 * This,
12992 REFIID riid,
12993 _COM_Outptr_ void **ppvObject);
12994
12995 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12996 ULONG ( STDMETHODCALLTYPE *AddRef )(
12997 ID3D12Device4 * This);
12998
12999 DECLSPEC_XFGVIRT(IUnknown, Release)
13000 ULONG ( STDMETHODCALLTYPE *Release )(
13001 ID3D12Device4 * This);
13002
13003 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13004 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13005 ID3D12Device4 * This,
13006 _In_ REFGUID guid,
13007 _Inout_ UINT *pDataSize,
13008 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13009
13010 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13011 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13012 ID3D12Device4 * This,
13013 _In_ REFGUID guid,
13014 _In_ UINT DataSize,
13015 _In_reads_bytes_opt_( DataSize ) const void *pData);
13016
13017 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13018 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13019 ID3D12Device4 * This,
13020 _In_ REFGUID guid,
13021 _In_opt_ const IUnknown *pData);
13022
13023 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13024 HRESULT ( STDMETHODCALLTYPE *SetName )(
13025 ID3D12Device4 * This,
13026 _In_z_ LPCWSTR Name);
13027
13028 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
13029 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
13030 ID3D12Device4 * This);
13031
13032 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
13033 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
13034 ID3D12Device4 * This,
13035 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
13036 REFIID riid,
13037 _COM_Outptr_ void **ppCommandQueue);
13038
13039 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
13040 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
13041 ID3D12Device4 * This,
13042 _In_ D3D12_COMMAND_LIST_TYPE type,
13043 REFIID riid,
13044 _COM_Outptr_ void **ppCommandAllocator);
13045
13046 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
13047 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
13048 ID3D12Device4 * This,
13049 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
13050 REFIID riid,
13051 _COM_Outptr_ void **ppPipelineState);
13052
13053 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
13054 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
13055 ID3D12Device4 * This,
13056 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
13057 REFIID riid,
13058 _COM_Outptr_ void **ppPipelineState);
13059
13060 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
13061 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
13062 ID3D12Device4 * This,
13063 _In_ UINT nodeMask,
13064 _In_ D3D12_COMMAND_LIST_TYPE type,
13065 _In_ ID3D12CommandAllocator *pCommandAllocator,
13066 _In_opt_ ID3D12PipelineState *pInitialState,
13067 REFIID riid,
13068 _COM_Outptr_ void **ppCommandList);
13069
13070 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
13071 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
13072 ID3D12Device4 * This,
13073 D3D12_FEATURE Feature,
13074 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
13075 UINT FeatureSupportDataSize);
13076
13077 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
13078 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
13079 ID3D12Device4 * This,
13080 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
13081 REFIID riid,
13082 _COM_Outptr_ void **ppvHeap);
13083
13084 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
13085 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
13086 ID3D12Device4 * This,
13087 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
13088
13089 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
13090 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
13091 ID3D12Device4 * This,
13092 _In_ UINT nodeMask,
13093 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
13094 _In_ SIZE_T blobLengthInBytes,
13095 REFIID riid,
13096 _COM_Outptr_ void **ppvRootSignature);
13097
13098 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
13099 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
13100 ID3D12Device4 * This,
13101 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
13102 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13103
13104 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
13105 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
13106 ID3D12Device4 * This,
13107 _In_opt_ ID3D12Resource *pResource,
13108 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
13109 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13110
13111 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
13112 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
13113 ID3D12Device4 * This,
13114 _In_opt_ ID3D12Resource *pResource,
13115 _In_opt_ ID3D12Resource *pCounterResource,
13116 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
13117 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13118
13119 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
13120 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
13121 ID3D12Device4 * This,
13122 _In_opt_ ID3D12Resource *pResource,
13123 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
13124 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13125
13126 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
13127 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
13128 ID3D12Device4 * This,
13129 _In_opt_ ID3D12Resource *pResource,
13130 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
13131 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13132
13133 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
13134 void ( STDMETHODCALLTYPE *CreateSampler )(
13135 ID3D12Device4 * This,
13136 _In_ const D3D12_SAMPLER_DESC *pDesc,
13137 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13138
13139 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
13140 void ( STDMETHODCALLTYPE *CopyDescriptors )(
13141 ID3D12Device4 * This,
13142 _In_ UINT NumDestDescriptorRanges,
13143 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
13144 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
13145 _In_ UINT NumSrcDescriptorRanges,
13146 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
13147 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
13148 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13149
13150 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
13151 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
13152 ID3D12Device4 * This,
13153 _In_ UINT NumDescriptors,
13154 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
13155 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
13156 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13157
13158 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
13159#if !defined(_WIN32)
13160 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13161 ID3D12Device4 * This,
13162 _In_ UINT visibleMask,
13163 _In_ UINT numResourceDescs,
13164 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13165
13166#else
13167 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13168 ID3D12Device4 * This,
13169 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13170 _In_ UINT visibleMask,
13171 _In_ UINT numResourceDescs,
13172 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13173
13174#endif
13175
13176 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
13177#if !defined(_WIN32)
13178 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13179 ID3D12Device4 * This,
13180 _In_ UINT nodeMask,
13181 D3D12_HEAP_TYPE heapType);
13182
13183#else
13184 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13185 ID3D12Device4 * This,
13186 D3D12_HEAP_PROPERTIES * RetVal,
13187 _In_ UINT nodeMask,
13188 D3D12_HEAP_TYPE heapType);
13189
13190#endif
13191
13192 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
13193 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
13194 ID3D12Device4 * This,
13195 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13196 D3D12_HEAP_FLAGS HeapFlags,
13197 _In_ const D3D12_RESOURCE_DESC *pDesc,
13198 D3D12_RESOURCE_STATES InitialResourceState,
13199 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13200 REFIID riidResource,
13201 _COM_Outptr_opt_ void **ppvResource);
13202
13203 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
13204 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
13205 ID3D12Device4 * This,
13206 _In_ const D3D12_HEAP_DESC *pDesc,
13207 REFIID riid,
13208 _COM_Outptr_opt_ void **ppvHeap);
13209
13210 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
13211 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
13212 ID3D12Device4 * This,
13213 _In_ ID3D12Heap *pHeap,
13214 UINT64 HeapOffset,
13215 _In_ const D3D12_RESOURCE_DESC *pDesc,
13216 D3D12_RESOURCE_STATES InitialState,
13217 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13218 REFIID riid,
13219 _COM_Outptr_opt_ void **ppvResource);
13220
13221 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
13222 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
13223 ID3D12Device4 * This,
13224 _In_ const D3D12_RESOURCE_DESC *pDesc,
13225 D3D12_RESOURCE_STATES InitialState,
13226 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13227 REFIID riid,
13228 _COM_Outptr_opt_ void **ppvResource);
13229
13230 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
13231 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
13232 ID3D12Device4 * This,
13233 _In_ ID3D12DeviceChild *pObject,
13234 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
13235 DWORD Access,
13236 _In_opt_ LPCWSTR Name,
13237 _Out_ HANDLE *pHandle);
13238
13239 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
13240 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
13241 ID3D12Device4 * This,
13242 _In_ HANDLE NTHandle,
13243 REFIID riid,
13244 _COM_Outptr_opt_ void **ppvObj);
13245
13246 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
13247 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
13248 ID3D12Device4 * This,
13249 _In_ LPCWSTR Name,
13250 DWORD Access,
13251 /* [annotation][out] */
13252 _Out_ HANDLE *pNTHandle);
13253
13254 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
13255 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
13256 ID3D12Device4 * This,
13257 UINT NumObjects,
13258 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13259
13260 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
13261 HRESULT ( STDMETHODCALLTYPE *Evict )(
13262 ID3D12Device4 * This,
13263 UINT NumObjects,
13264 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13265
13266 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
13267 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
13268 ID3D12Device4 * This,
13269 UINT64 InitialValue,
13270 D3D12_FENCE_FLAGS Flags,
13271 REFIID riid,
13272 _COM_Outptr_ void **ppFence);
13273
13274 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
13275 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
13276 ID3D12Device4 * This);
13277
13278 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
13279 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
13280 ID3D12Device4 * This,
13281 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
13282 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
13283 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
13284 UINT64 BaseOffset,
13285 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
13286 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
13287 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
13288 _Out_opt_ UINT64 *pTotalBytes);
13289
13290 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
13291 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
13292 ID3D12Device4 * This,
13293 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
13294 REFIID riid,
13295 _COM_Outptr_opt_ void **ppvHeap);
13296
13297 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
13298 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
13299 ID3D12Device4 * This,
13300 BOOL Enable);
13301
13302 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
13303 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
13304 ID3D12Device4 * This,
13305 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
13306 _In_opt_ ID3D12RootSignature *pRootSignature,
13307 REFIID riid,
13308 _COM_Outptr_opt_ void **ppvCommandSignature);
13309
13310 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
13311 void ( STDMETHODCALLTYPE *GetResourceTiling )(
13312 ID3D12Device4 * This,
13313 _In_ ID3D12Resource *pTiledResource,
13314 _Out_opt_ UINT *pNumTilesForEntireResource,
13315 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
13316 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
13317 _Inout_opt_ UINT *pNumSubresourceTilings,
13318 _In_ UINT FirstSubresourceTilingToGet,
13319 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
13320
13321 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
13322#if !defined(_WIN32)
13323 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
13324 ID3D12Device4 * This);
13325
13326#else
13327 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
13328 ID3D12Device4 * This,
13329 LUID * RetVal);
13330
13331#endif
13332
13333 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
13334 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
13335 ID3D12Device4 * This,
13336 _In_reads_(BlobLength) const void *pLibraryBlob,
13337 SIZE_T BlobLength,
13338 REFIID riid,
13339 _COM_Outptr_ void **ppPipelineLibrary);
13340
13341 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
13342 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
13343 ID3D12Device4 * This,
13344 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
13345 _In_reads_(NumFences) const UINT64 *pFenceValues,
13346 UINT NumFences,
13347 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
13348 HANDLE hEvent);
13349
13350 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
13351 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
13352 ID3D12Device4 * This,
13353 UINT NumObjects,
13354 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13355 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
13356
13357 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
13358 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
13359 ID3D12Device4 * This,
13360 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
13361 REFIID riid,
13362 _COM_Outptr_ void **ppPipelineState);
13363
13364 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
13365 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
13366 ID3D12Device4 * This,
13367 _In_ const void *pAddress,
13368 REFIID riid,
13369 _COM_Outptr_ void **ppvHeap);
13370
13371 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
13372 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
13373 ID3D12Device4 * This,
13374 _In_ HANDLE hFileMapping,
13375 REFIID riid,
13376 _COM_Outptr_ void **ppvHeap);
13377
13378 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
13379 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
13380 ID3D12Device4 * This,
13381 D3D12_RESIDENCY_FLAGS Flags,
13382 UINT NumObjects,
13383 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13384 _In_ ID3D12Fence *pFenceToSignal,
13385 UINT64 FenceValueToSignal);
13386
13387 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
13388 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
13389 ID3D12Device4 * This,
13390 _In_ UINT nodeMask,
13391 _In_ D3D12_COMMAND_LIST_TYPE type,
13392 _In_ D3D12_COMMAND_LIST_FLAGS flags,
13393 REFIID riid,
13394 _COM_Outptr_ void **ppCommandList);
13395
13396 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
13397 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
13398 ID3D12Device4 * This,
13399 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
13400 _In_ REFIID riid,
13401 _COM_Outptr_ void **ppSession);
13402
13403 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
13404 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
13405 ID3D12Device4 * This,
13406 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13407 D3D12_HEAP_FLAGS HeapFlags,
13408 _In_ const D3D12_RESOURCE_DESC *pDesc,
13409 D3D12_RESOURCE_STATES InitialResourceState,
13410 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13411 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13412 REFIID riidResource,
13413 _COM_Outptr_opt_ void **ppvResource);
13414
13415 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
13416 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
13417 ID3D12Device4 * This,
13418 _In_ const D3D12_HEAP_DESC *pDesc,
13419 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13420 REFIID riid,
13421 _COM_Outptr_opt_ void **ppvHeap);
13422
13423 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
13424 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
13425 ID3D12Device4 * This,
13426 _In_ const D3D12_RESOURCE_DESC *pDesc,
13427 D3D12_RESOURCE_STATES InitialState,
13428 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13429 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13430 REFIID riid,
13431 _COM_Outptr_opt_ void **ppvResource);
13432
13433 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
13434#if !defined(_WIN32)
13435 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13436 ID3D12Device4 * This,
13437 UINT visibleMask,
13438 UINT numResourceDescs,
13439 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13440 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13441
13442#else
13443 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13444 ID3D12Device4 * This,
13445 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13446 UINT visibleMask,
13447 UINT numResourceDescs,
13448 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13449 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13450
13451#endif
13452
13453 END_INTERFACE
13454 } ID3D12Device4Vtbl;
13455
13456 interface ID3D12Device4
13457 {
13458 CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl;
13459 };
13460
13461
13462
13463#ifdef COBJMACROS
13464
13465
13466#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \
13467 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13468
13469#define ID3D12Device4_AddRef(This) \
13470 ( (This)->lpVtbl -> AddRef(This) )
13471
13472#define ID3D12Device4_Release(This) \
13473 ( (This)->lpVtbl -> Release(This) )
13474
13475
13476#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \
13477 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
13478
13479#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \
13480 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
13481
13482#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \
13483 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
13484
13485#define ID3D12Device4_SetName(This,Name) \
13486 ( (This)->lpVtbl -> SetName(This,Name) )
13487
13488
13489#define ID3D12Device4_GetNodeCount(This) \
13490 ( (This)->lpVtbl -> GetNodeCount(This) )
13491
13492#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
13493 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
13494
13495#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
13496 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
13497
13498#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
13499 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
13500
13501#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
13502 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
13503
13504#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
13505 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
13506
13507#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
13508 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
13509
13510#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
13511 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
13512
13513#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
13514 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
13515
13516#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
13517 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
13518
13519#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \
13520 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
13521
13522#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
13523 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
13524
13525#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
13526 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
13527
13528#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
13529 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
13530
13531#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
13532 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
13533
13534#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \
13535 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
13536
13537#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
13538 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
13539
13540#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
13541 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
13542#if !defined(_WIN32)
13543
13544#define ID3D12Device4_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
13545 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
13546#else
13547#define ID3D12Device4_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
13548 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
13549#endif
13550#if !defined(_WIN32)
13551
13552#define ID3D12Device4_GetCustomHeapProperties(This,nodeMask,heapType) \
13553 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
13554#else
13555#define ID3D12Device4_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
13556 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
13557#endif
13558
13559#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
13560 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
13561
13562#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \
13563 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
13564
13565#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13566 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13567
13568#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13569 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13570
13571#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
13572 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
13573
13574#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
13575 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
13576
13577#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
13578 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
13579
13580#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \
13581 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
13582
13583#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \
13584 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
13585
13586#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \
13587 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
13588
13589#define ID3D12Device4_GetDeviceRemovedReason(This) \
13590 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
13591
13592#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
13593 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
13594
13595#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
13596 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
13597
13598#define ID3D12Device4_SetStablePowerState(This,Enable) \
13599 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
13600
13601#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
13602 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
13603
13604#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
13605 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
13606#if !defined(_WIN32)
13607
13608#define ID3D12Device4_GetAdapterLuid(This) \
13609 ( (This)->lpVtbl -> GetAdapterLuid(This) )
13610#else
13611#define ID3D12Device4_GetAdapterLuid(This,RetVal) \
13612 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
13613#endif
13614
13615
13616#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
13617 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
13618
13619#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
13620 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
13621
13622#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
13623 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
13624
13625
13626#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
13627 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
13628
13629
13630#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
13631 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
13632
13633#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
13634 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
13635
13636#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
13637 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
13638
13639
13640#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
13641 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
13642
13643#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
13644 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
13645
13646#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
13647 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
13648
13649#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
13650 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
13651
13652#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
13653 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
13654#if !defined(_WIN32)
13655
13656#define ID3D12Device4_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
13657 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
13658#else
13659#define ID3D12Device4_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
13660 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
13661#endif
13662
13663#endif /* COBJMACROS */
13664
13665
13666#endif /* C style interface */
13667
13668
13669
13670
13671#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
13672
13673
13674/* interface __MIDL_itf_d3d12_0000_0031 */
13675/* [local] */
13676
13677typedef
13678enum D3D12_LIFETIME_STATE
13679 {
13680 D3D12_LIFETIME_STATE_IN_USE = 0,
13681 D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 )
13682 } D3D12_LIFETIME_STATE;
13683
13684
13685
13686
13687extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_c_ifspec;
13688extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_s_ifspec;
13689
13690#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
13691#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
13692
13693/* interface ID3D12LifetimeOwner */
13694/* [unique][local][object][uuid] */
13695
13696
13697EXTERN_C const IID IID_ID3D12LifetimeOwner;
13698
13699#if defined(__cplusplus) && !defined(CINTERFACE)
13700
13701 MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
13702 ID3D12LifetimeOwner : public IUnknown
13703 {
13704 public:
13705 virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
13706 D3D12_LIFETIME_STATE NewState) = 0;
13707
13708 };
13709
13710
13711#else /* C style interface */
13712
13713 typedef struct ID3D12LifetimeOwnerVtbl
13714 {
13715 BEGIN_INTERFACE
13716
13717 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13718 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13719 ID3D12LifetimeOwner * This,
13720 REFIID riid,
13721 _COM_Outptr_ void **ppvObject);
13722
13723 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13724 ULONG ( STDMETHODCALLTYPE *AddRef )(
13725 ID3D12LifetimeOwner * This);
13726
13727 DECLSPEC_XFGVIRT(IUnknown, Release)
13728 ULONG ( STDMETHODCALLTYPE *Release )(
13729 ID3D12LifetimeOwner * This);
13730
13731 DECLSPEC_XFGVIRT(ID3D12LifetimeOwner, LifetimeStateUpdated)
13732 void ( STDMETHODCALLTYPE *LifetimeStateUpdated )(
13733 ID3D12LifetimeOwner * This,
13734 D3D12_LIFETIME_STATE NewState);
13735
13736 END_INTERFACE
13737 } ID3D12LifetimeOwnerVtbl;
13738
13739 interface ID3D12LifetimeOwner
13740 {
13741 CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl;
13742 };
13743
13744
13745
13746#ifdef COBJMACROS
13747
13748
13749#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \
13750 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13751
13752#define ID3D12LifetimeOwner_AddRef(This) \
13753 ( (This)->lpVtbl -> AddRef(This) )
13754
13755#define ID3D12LifetimeOwner_Release(This) \
13756 ( (This)->lpVtbl -> Release(This) )
13757
13758
13759#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \
13760 ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) )
13761
13762#endif /* COBJMACROS */
13763
13764
13765#endif /* C style interface */
13766
13767
13768
13769
13770#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
13771
13772
13773#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
13774#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
13775
13776/* interface ID3D12SwapChainAssistant */
13777/* [unique][local][object][uuid] */
13778
13779
13780EXTERN_C const IID IID_ID3D12SwapChainAssistant;
13781
13782#if defined(__cplusplus) && !defined(CINTERFACE)
13783
13784 MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
13785 ID3D12SwapChainAssistant : public IUnknown
13786 {
13787 public:
13788#if defined(_MSC_VER) || !defined(_WIN32)
13789 virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0;
13790#else
13791 virtual LUID *STDMETHODCALLTYPE GetLUID(
13792 LUID * RetVal) = 0;
13793#endif
13794
13795 virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
13796 REFIID riid,
13797 _COM_Outptr_ void **ppv) = 0;
13798
13799 virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
13800 REFIID riidResource,
13801 _COM_Outptr_ void **ppvResource,
13802 REFIID riidQueue,
13803 _COM_Outptr_ void **ppvQueue) = 0;
13804
13805 virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0;
13806
13807 };
13808
13809
13810#else /* C style interface */
13811
13812 typedef struct ID3D12SwapChainAssistantVtbl
13813 {
13814 BEGIN_INTERFACE
13815
13816 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13817 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13818 ID3D12SwapChainAssistant * This,
13819 REFIID riid,
13820 _COM_Outptr_ void **ppvObject);
13821
13822 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13823 ULONG ( STDMETHODCALLTYPE *AddRef )(
13824 ID3D12SwapChainAssistant * This);
13825
13826 DECLSPEC_XFGVIRT(IUnknown, Release)
13827 ULONG ( STDMETHODCALLTYPE *Release )(
13828 ID3D12SwapChainAssistant * This);
13829
13830 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetLUID)
13831#if !defined(_WIN32)
13832 LUID ( STDMETHODCALLTYPE *GetLUID )(
13833 ID3D12SwapChainAssistant * This);
13834
13835#else
13836 LUID *( STDMETHODCALLTYPE *GetLUID )(
13837 ID3D12SwapChainAssistant * This,
13838 LUID * RetVal);
13839
13840#endif
13841
13842 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetSwapChainObject)
13843 HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )(
13844 ID3D12SwapChainAssistant * This,
13845 REFIID riid,
13846 _COM_Outptr_ void **ppv);
13847
13848 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetCurrentResourceAndCommandQueue)
13849 HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )(
13850 ID3D12SwapChainAssistant * This,
13851 REFIID riidResource,
13852 _COM_Outptr_ void **ppvResource,
13853 REFIID riidQueue,
13854 _COM_Outptr_ void **ppvQueue);
13855
13856 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, InsertImplicitSync)
13857 HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )(
13858 ID3D12SwapChainAssistant * This);
13859
13860 END_INTERFACE
13861 } ID3D12SwapChainAssistantVtbl;
13862
13863 interface ID3D12SwapChainAssistant
13864 {
13865 CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl;
13866 };
13867
13868
13869
13870#ifdef COBJMACROS
13871
13872
13873#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \
13874 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13875
13876#define ID3D12SwapChainAssistant_AddRef(This) \
13877 ( (This)->lpVtbl -> AddRef(This) )
13878
13879#define ID3D12SwapChainAssistant_Release(This) \
13880 ( (This)->lpVtbl -> Release(This) )
13881
13882#if !defined(_WIN32)
13883
13884#define ID3D12SwapChainAssistant_GetLUID(This) \
13885 ( (This)->lpVtbl -> GetLUID(This) )
13886#else
13887#define ID3D12SwapChainAssistant_GetLUID(This,RetVal) \
13888 ( (This)->lpVtbl -> GetLUID(This,RetVal) )
13889#endif
13890
13891#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \
13892 ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) )
13893
13894#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \
13895 ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) )
13896
13897#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \
13898 ( (This)->lpVtbl -> InsertImplicitSync(This) )
13899
13900#endif /* COBJMACROS */
13901
13902
13903#endif /* C style interface */
13904
13905
13906
13907
13908#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
13909
13910
13911#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
13912#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
13913
13914/* interface ID3D12LifetimeTracker */
13915/* [unique][local][object][uuid] */
13916
13917
13918EXTERN_C const IID IID_ID3D12LifetimeTracker;
13919
13920#if defined(__cplusplus) && !defined(CINTERFACE)
13921
13922 MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
13923 ID3D12LifetimeTracker : public ID3D12DeviceChild
13924 {
13925 public:
13926 virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
13927 _In_ ID3D12DeviceChild *pObject) = 0;
13928
13929 };
13930
13931
13932#else /* C style interface */
13933
13934 typedef struct ID3D12LifetimeTrackerVtbl
13935 {
13936 BEGIN_INTERFACE
13937
13938 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13939 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13940 ID3D12LifetimeTracker * This,
13941 REFIID riid,
13942 _COM_Outptr_ void **ppvObject);
13943
13944 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13945 ULONG ( STDMETHODCALLTYPE *AddRef )(
13946 ID3D12LifetimeTracker * This);
13947
13948 DECLSPEC_XFGVIRT(IUnknown, Release)
13949 ULONG ( STDMETHODCALLTYPE *Release )(
13950 ID3D12LifetimeTracker * This);
13951
13952 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13953 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13954 ID3D12LifetimeTracker * This,
13955 _In_ REFGUID guid,
13956 _Inout_ UINT *pDataSize,
13957 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13958
13959 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13960 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13961 ID3D12LifetimeTracker * This,
13962 _In_ REFGUID guid,
13963 _In_ UINT DataSize,
13964 _In_reads_bytes_opt_( DataSize ) const void *pData);
13965
13966 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13967 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13968 ID3D12LifetimeTracker * This,
13969 _In_ REFGUID guid,
13970 _In_opt_ const IUnknown *pData);
13971
13972 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13973 HRESULT ( STDMETHODCALLTYPE *SetName )(
13974 ID3D12LifetimeTracker * This,
13975 _In_z_ LPCWSTR Name);
13976
13977 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
13978 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
13979 ID3D12LifetimeTracker * This,
13980 REFIID riid,
13981 _COM_Outptr_opt_ void **ppvDevice);
13982
13983 DECLSPEC_XFGVIRT(ID3D12LifetimeTracker, DestroyOwnedObject)
13984 HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )(
13985 ID3D12LifetimeTracker * This,
13986 _In_ ID3D12DeviceChild *pObject);
13987
13988 END_INTERFACE
13989 } ID3D12LifetimeTrackerVtbl;
13990
13991 interface ID3D12LifetimeTracker
13992 {
13993 CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl;
13994 };
13995
13996
13997
13998#ifdef COBJMACROS
13999
14000
14001#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \
14002 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14003
14004#define ID3D12LifetimeTracker_AddRef(This) \
14005 ( (This)->lpVtbl -> AddRef(This) )
14006
14007#define ID3D12LifetimeTracker_Release(This) \
14008 ( (This)->lpVtbl -> Release(This) )
14009
14010
14011#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \
14012 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
14013
14014#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \
14015 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
14016
14017#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \
14018 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
14019
14020#define ID3D12LifetimeTracker_SetName(This,Name) \
14021 ( (This)->lpVtbl -> SetName(This,Name) )
14022
14023
14024#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \
14025 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
14026
14027
14028#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \
14029 ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) )
14030
14031#endif /* COBJMACROS */
14032
14033
14034#endif /* C style interface */
14035
14036
14037
14038
14039#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
14040
14041
14042/* interface __MIDL_itf_d3d12_0000_0034 */
14043/* [local] */
14044
14045typedef
14046enum D3D12_META_COMMAND_PARAMETER_TYPE
14047 {
14048 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
14049 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
14050 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
14051 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
14052 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4
14053 } D3D12_META_COMMAND_PARAMETER_TYPE;
14054
14055typedef
14056enum D3D12_META_COMMAND_PARAMETER_FLAGS
14057 {
14058 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
14059 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
14060 } D3D12_META_COMMAND_PARAMETER_FLAGS;
14061
14062DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )
14063typedef
14064enum D3D12_META_COMMAND_PARAMETER_STAGE
14065 {
14066 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
14067 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
14068 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2
14069 } D3D12_META_COMMAND_PARAMETER_STAGE;
14070
14071typedef struct D3D12_META_COMMAND_PARAMETER_DESC
14072 {
14073 LPCWSTR Name;
14074 D3D12_META_COMMAND_PARAMETER_TYPE Type;
14075 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
14076 D3D12_RESOURCE_STATES RequiredResourceState;
14077 UINT StructureOffset;
14078 } D3D12_META_COMMAND_PARAMETER_DESC;
14079
14080typedef
14081enum D3D12_GRAPHICS_STATES
14082 {
14083 D3D12_GRAPHICS_STATE_NONE = 0,
14084 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) ,
14085 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) ,
14086 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) ,
14087 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) ,
14088 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) ,
14089 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) ,
14090 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) ,
14091 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) ,
14092 D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) ,
14093 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) ,
14094 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) ,
14095 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) ,
14096 D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) ,
14097 D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) ,
14098 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) ,
14099 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) ,
14100 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
14101 } D3D12_GRAPHICS_STATES;
14102
14103DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )
14104typedef struct D3D12_META_COMMAND_DESC
14105 {
14106 GUID Id;
14107 LPCWSTR Name;
14108 D3D12_GRAPHICS_STATES InitializationDirtyState;
14109 D3D12_GRAPHICS_STATES ExecutionDirtyState;
14110 } D3D12_META_COMMAND_DESC;
14111
14112
14113
14114extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
14115extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
14116
14117#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
14118#define __ID3D12StateObject_INTERFACE_DEFINED__
14119
14120/* interface ID3D12StateObject */
14121/* [unique][local][object][uuid] */
14122
14123
14124EXTERN_C const IID IID_ID3D12StateObject;
14125
14126#if defined(__cplusplus) && !defined(CINTERFACE)
14127
14128 MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
14129 ID3D12StateObject : public ID3D12Pageable
14130 {
14131 public:
14132 };
14133
14134
14135#else /* C style interface */
14136
14137 typedef struct ID3D12StateObjectVtbl
14138 {
14139 BEGIN_INTERFACE
14140
14141 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14142 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14143 ID3D12StateObject * This,
14144 REFIID riid,
14145 _COM_Outptr_ void **ppvObject);
14146
14147 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14148 ULONG ( STDMETHODCALLTYPE *AddRef )(
14149 ID3D12StateObject * This);
14150
14151 DECLSPEC_XFGVIRT(IUnknown, Release)
14152 ULONG ( STDMETHODCALLTYPE *Release )(
14153 ID3D12StateObject * This);
14154
14155 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
14156 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
14157 ID3D12StateObject * This,
14158 _In_ REFGUID guid,
14159 _Inout_ UINT *pDataSize,
14160 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
14161
14162 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
14163 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
14164 ID3D12StateObject * This,
14165 _In_ REFGUID guid,
14166 _In_ UINT DataSize,
14167 _In_reads_bytes_opt_( DataSize ) const void *pData);
14168
14169 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
14170 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
14171 ID3D12StateObject * This,
14172 _In_ REFGUID guid,
14173 _In_opt_ const IUnknown *pData);
14174
14175 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
14176 HRESULT ( STDMETHODCALLTYPE *SetName )(
14177 ID3D12StateObject * This,
14178 _In_z_ LPCWSTR Name);
14179
14180 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
14181 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
14182 ID3D12StateObject * This,
14183 REFIID riid,
14184 _COM_Outptr_opt_ void **ppvDevice);
14185
14186 END_INTERFACE
14187 } ID3D12StateObjectVtbl;
14188
14189 interface ID3D12StateObject
14190 {
14191 CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl;
14192 };
14193
14194
14195
14196#ifdef COBJMACROS
14197
14198
14199#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \
14200 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14201
14202#define ID3D12StateObject_AddRef(This) \
14203 ( (This)->lpVtbl -> AddRef(This) )
14204
14205#define ID3D12StateObject_Release(This) \
14206 ( (This)->lpVtbl -> Release(This) )
14207
14208
14209#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \
14210 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
14211
14212#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \
14213 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
14214
14215#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \
14216 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
14217
14218#define ID3D12StateObject_SetName(This,Name) \
14219 ( (This)->lpVtbl -> SetName(This,Name) )
14220
14221
14222#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \
14223 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
14224
14225
14226
14227#endif /* COBJMACROS */
14228
14229
14230#endif /* C style interface */
14231
14232
14233
14234
14235#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */
14236
14237
14238#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
14239#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
14240
14241/* interface ID3D12StateObjectProperties */
14242/* [unique][local][object][uuid] */
14243
14244
14245EXTERN_C const IID IID_ID3D12StateObjectProperties;
14246
14247#if defined(__cplusplus) && !defined(CINTERFACE)
14248
14249 MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
14250 ID3D12StateObjectProperties : public IUnknown
14251 {
14252 public:
14253 virtual void *STDMETHODCALLTYPE GetShaderIdentifier(
14254 _In_ LPCWSTR pExportName) = 0;
14255
14256 virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
14257 _In_ LPCWSTR pExportName) = 0;
14258
14259 virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0;
14260
14261 virtual void STDMETHODCALLTYPE SetPipelineStackSize(
14262 UINT64 PipelineStackSizeInBytes) = 0;
14263
14264 };
14265
14266
14267#else /* C style interface */
14268
14269 typedef struct ID3D12StateObjectPropertiesVtbl
14270 {
14271 BEGIN_INTERFACE
14272
14273 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14274 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14275 ID3D12StateObjectProperties * This,
14276 REFIID riid,
14277 _COM_Outptr_ void **ppvObject);
14278
14279 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14280 ULONG ( STDMETHODCALLTYPE *AddRef )(
14281 ID3D12StateObjectProperties * This);
14282
14283 DECLSPEC_XFGVIRT(IUnknown, Release)
14284 ULONG ( STDMETHODCALLTYPE *Release )(
14285 ID3D12StateObjectProperties * This);
14286
14287 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14288 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14289 ID3D12StateObjectProperties * This,
14290 _In_ LPCWSTR pExportName);
14291
14292 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14293 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14294 ID3D12StateObjectProperties * This,
14295 _In_ LPCWSTR pExportName);
14296
14297 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14298 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14299 ID3D12StateObjectProperties * This);
14300
14301 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14302 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14303 ID3D12StateObjectProperties * This,
14304 UINT64 PipelineStackSizeInBytes);
14305
14306 END_INTERFACE
14307 } ID3D12StateObjectPropertiesVtbl;
14308
14309 interface ID3D12StateObjectProperties
14310 {
14311 CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl;
14312 };
14313
14314
14315
14316#ifdef COBJMACROS
14317
14318
14319#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \
14320 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14321
14322#define ID3D12StateObjectProperties_AddRef(This) \
14323 ( (This)->lpVtbl -> AddRef(This) )
14324
14325#define ID3D12StateObjectProperties_Release(This) \
14326 ( (This)->lpVtbl -> Release(This) )
14327
14328
14329#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \
14330 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14331
14332#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \
14333 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14334
14335#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \
14336 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14337
14338#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14339 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14340
14341#endif /* COBJMACROS */
14342
14343
14344#endif /* C style interface */
14345
14346
14347
14348
14349#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
14350
14351
14352/* interface __MIDL_itf_d3d12_0000_0036 */
14353/* [local] */
14354
14355typedef struct D3D12_PROGRAM_IDENTIFIER
14356 {
14357 UINT64 OpaqueData[ 4 ];
14358 } D3D12_PROGRAM_IDENTIFIER;
14359
14360
14361
14362extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_c_ifspec;
14363extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_s_ifspec;
14364
14365#ifndef __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
14366#define __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
14367
14368/* interface ID3D12StateObjectProperties1 */
14369/* [unique][local][object][uuid] */
14370
14371
14372EXTERN_C const IID IID_ID3D12StateObjectProperties1;
14373
14374#if defined(__cplusplus) && !defined(CINTERFACE)
14375
14376 MIDL_INTERFACE("460caac7-1d24-446a-a184-ca67db494138")
14377 ID3D12StateObjectProperties1 : public ID3D12StateObjectProperties
14378 {
14379 public:
14380#if defined(_MSC_VER) || !defined(_WIN32)
14381 virtual D3D12_PROGRAM_IDENTIFIER STDMETHODCALLTYPE GetProgramIdentifier(
14382 LPCWSTR pProgramName) = 0;
14383#else
14384 virtual D3D12_PROGRAM_IDENTIFIER *STDMETHODCALLTYPE GetProgramIdentifier(
14385 D3D12_PROGRAM_IDENTIFIER * RetVal,
14386 LPCWSTR pProgramName) = 0;
14387#endif
14388
14389 };
14390
14391
14392#else /* C style interface */
14393
14394 typedef struct ID3D12StateObjectProperties1Vtbl
14395 {
14396 BEGIN_INTERFACE
14397
14398 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14399 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14400 ID3D12StateObjectProperties1 * This,
14401 REFIID riid,
14402 _COM_Outptr_ void **ppvObject);
14403
14404 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14405 ULONG ( STDMETHODCALLTYPE *AddRef )(
14406 ID3D12StateObjectProperties1 * This);
14407
14408 DECLSPEC_XFGVIRT(IUnknown, Release)
14409 ULONG ( STDMETHODCALLTYPE *Release )(
14410 ID3D12StateObjectProperties1 * This);
14411
14412 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14413 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14414 ID3D12StateObjectProperties1 * This,
14415 _In_ LPCWSTR pExportName);
14416
14417 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14418 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14419 ID3D12StateObjectProperties1 * This,
14420 _In_ LPCWSTR pExportName);
14421
14422 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14423 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14424 ID3D12StateObjectProperties1 * This);
14425
14426 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14427 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14428 ID3D12StateObjectProperties1 * This,
14429 UINT64 PipelineStackSizeInBytes);
14430
14431 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
14432#if !defined(_WIN32)
14433 D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
14434 ID3D12StateObjectProperties1 * This,
14435 LPCWSTR pProgramName);
14436
14437#else
14438 D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
14439 ID3D12StateObjectProperties1 * This,
14440 D3D12_PROGRAM_IDENTIFIER * RetVal,
14441 LPCWSTR pProgramName);
14442
14443#endif
14444
14445 END_INTERFACE
14446 } ID3D12StateObjectProperties1Vtbl;
14447
14448 interface ID3D12StateObjectProperties1
14449 {
14450 CONST_VTBL struct ID3D12StateObjectProperties1Vtbl *lpVtbl;
14451 };
14452
14453
14454
14455#ifdef COBJMACROS
14456
14457
14458#define ID3D12StateObjectProperties1_QueryInterface(This,riid,ppvObject) \
14459 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14460
14461#define ID3D12StateObjectProperties1_AddRef(This) \
14462 ( (This)->lpVtbl -> AddRef(This) )
14463
14464#define ID3D12StateObjectProperties1_Release(This) \
14465 ( (This)->lpVtbl -> Release(This) )
14466
14467
14468#define ID3D12StateObjectProperties1_GetShaderIdentifier(This,pExportName) \
14469 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14470
14471#define ID3D12StateObjectProperties1_GetShaderStackSize(This,pExportName) \
14472 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14473
14474#define ID3D12StateObjectProperties1_GetPipelineStackSize(This) \
14475 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14476
14477#define ID3D12StateObjectProperties1_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14478 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14479
14480#if !defined(_WIN32)
14481
14482#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,pProgramName) \
14483 ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
14484#else
14485#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,RetVal,pProgramName) \
14486 ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
14487#endif
14488
14489#endif /* COBJMACROS */
14490
14491
14492#endif /* C style interface */
14493
14494
14495
14496
14497#endif /* __ID3D12StateObjectProperties1_INTERFACE_DEFINED__ */
14498
14499
14500#ifndef __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
14501#define __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
14502
14503/* interface ID3D12StateObjectProperties2 */
14504/* [unique][local][object][uuid] */
14505
14506
14507EXTERN_C const IID IID_ID3D12StateObjectProperties2;
14508
14509#if defined(__cplusplus) && !defined(CINTERFACE)
14510
14511 MIDL_INTERFACE("d5e82917-f0f1-44cf-ae5e-ce222dd0b884")
14512 ID3D12StateObjectProperties2 : public ID3D12StateObjectProperties1
14513 {
14514 public:
14515 virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForProgram(
14516 LPCWSTR pProgramName,
14517 REFIID riid,
14518 _COM_Outptr_ void **ppvRootSignature) = 0;
14519
14520 virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForShader(
14521 LPCWSTR pExportName,
14522 REFIID riid,
14523 _COM_Outptr_ void **ppvRootSignature) = 0;
14524
14525 };
14526
14527
14528#else /* C style interface */
14529
14530 typedef struct ID3D12StateObjectProperties2Vtbl
14531 {
14532 BEGIN_INTERFACE
14533
14534 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14535 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14536 ID3D12StateObjectProperties2 * This,
14537 REFIID riid,
14538 _COM_Outptr_ void **ppvObject);
14539
14540 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14541 ULONG ( STDMETHODCALLTYPE *AddRef )(
14542 ID3D12StateObjectProperties2 * This);
14543
14544 DECLSPEC_XFGVIRT(IUnknown, Release)
14545 ULONG ( STDMETHODCALLTYPE *Release )(
14546 ID3D12StateObjectProperties2 * This);
14547
14548 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14549 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14550 ID3D12StateObjectProperties2 * This,
14551 _In_ LPCWSTR pExportName);
14552
14553 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14554 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14555 ID3D12StateObjectProperties2 * This,
14556 _In_ LPCWSTR pExportName);
14557
14558 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14559 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14560 ID3D12StateObjectProperties2 * This);
14561
14562 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14563 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14564 ID3D12StateObjectProperties2 * This,
14565 UINT64 PipelineStackSizeInBytes);
14566
14567 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
14568#if !defined(_WIN32)
14569 D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
14570 ID3D12StateObjectProperties2 * This,
14571 LPCWSTR pProgramName);
14572
14573#else
14574 D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
14575 ID3D12StateObjectProperties2 * This,
14576 D3D12_PROGRAM_IDENTIFIER * RetVal,
14577 LPCWSTR pProgramName);
14578
14579#endif
14580
14581 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForProgram)
14582 HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForProgram )(
14583 ID3D12StateObjectProperties2 * This,
14584 LPCWSTR pProgramName,
14585 REFIID riid,
14586 _COM_Outptr_ void **ppvRootSignature);
14587
14588 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForShader)
14589 HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForShader )(
14590 ID3D12StateObjectProperties2 * This,
14591 LPCWSTR pExportName,
14592 REFIID riid,
14593 _COM_Outptr_ void **ppvRootSignature);
14594
14595 END_INTERFACE
14596 } ID3D12StateObjectProperties2Vtbl;
14597
14598 interface ID3D12StateObjectProperties2
14599 {
14600 CONST_VTBL struct ID3D12StateObjectProperties2Vtbl *lpVtbl;
14601 };
14602
14603
14604
14605#ifdef COBJMACROS
14606
14607
14608#define ID3D12StateObjectProperties2_QueryInterface(This,riid,ppvObject) \
14609 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14610
14611#define ID3D12StateObjectProperties2_AddRef(This) \
14612 ( (This)->lpVtbl -> AddRef(This) )
14613
14614#define ID3D12StateObjectProperties2_Release(This) \
14615 ( (This)->lpVtbl -> Release(This) )
14616
14617
14618#define ID3D12StateObjectProperties2_GetShaderIdentifier(This,pExportName) \
14619 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14620
14621#define ID3D12StateObjectProperties2_GetShaderStackSize(This,pExportName) \
14622 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14623
14624#define ID3D12StateObjectProperties2_GetPipelineStackSize(This) \
14625 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14626
14627#define ID3D12StateObjectProperties2_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14628 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14629
14630#if !defined(_WIN32)
14631
14632#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,pProgramName) \
14633 ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
14634#else
14635#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,RetVal,pProgramName) \
14636 ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
14637#endif
14638
14639
14640#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) \
14641 ( (This)->lpVtbl -> GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) )
14642
14643#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) \
14644 ( (This)->lpVtbl -> GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) )
14645
14646#endif /* COBJMACROS */
14647
14648
14649#endif /* C style interface */
14650
14651
14652
14653
14654#endif /* __ID3D12StateObjectProperties2_INTERFACE_DEFINED__ */
14655
14656
14657/* interface __MIDL_itf_d3d12_0000_0038 */
14658/* [local] */
14659
14660typedef struct D3D12_NODE_ID
14661 {
14662 LPCWSTR Name;
14663 UINT ArrayIndex;
14664 } D3D12_NODE_ID;
14665
14666typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
14667 {
14668 UINT64 MinSizeInBytes;
14669 UINT64 MaxSizeInBytes;
14670 UINT SizeGranularityInBytes;
14671 } D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
14672
14673
14674
14675extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_c_ifspec;
14676extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_s_ifspec;
14677
14678#ifndef __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
14679#define __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
14680
14681/* interface ID3D12WorkGraphProperties */
14682/* [unique][local][object][uuid] */
14683
14684
14685EXTERN_C const IID IID_ID3D12WorkGraphProperties;
14686
14687#if defined(__cplusplus) && !defined(CINTERFACE)
14688
14689 MIDL_INTERFACE("065acf71-f863-4b89-82f4-02e4d5886757")
14690 ID3D12WorkGraphProperties : public IUnknown
14691 {
14692 public:
14693 virtual UINT STDMETHODCALLTYPE GetNumWorkGraphs( void) = 0;
14694
14695 virtual LPCWSTR STDMETHODCALLTYPE GetProgramName(
14696 UINT WorkGraphIndex) = 0;
14697
14698 virtual UINT STDMETHODCALLTYPE GetWorkGraphIndex(
14699 LPCWSTR pProgramName) = 0;
14700
14701 virtual UINT STDMETHODCALLTYPE GetNumNodes(
14702 UINT WorkGraphIndex) = 0;
14703
14704#if defined(_MSC_VER) || !defined(_WIN32)
14705 virtual D3D12_NODE_ID STDMETHODCALLTYPE GetNodeID(
14706 UINT WorkGraphIndex,
14707 UINT NodeIndex) = 0;
14708#else
14709 virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetNodeID(
14710 D3D12_NODE_ID * RetVal,
14711 UINT WorkGraphIndex,
14712 UINT NodeIndex) = 0;
14713#endif
14714
14715 virtual UINT STDMETHODCALLTYPE GetNodeIndex(
14716 UINT WorkGraphIndex,
14717 D3D12_NODE_ID NodeID) = 0;
14718
14719 virtual UINT STDMETHODCALLTYPE GetNodeLocalRootArgumentsTableIndex(
14720 UINT WorkGraphIndex,
14721 UINT NodeIndex) = 0;
14722
14723 virtual UINT STDMETHODCALLTYPE GetNumEntrypoints(
14724 UINT WorkGraphIndex) = 0;
14725
14726#if defined(_MSC_VER) || !defined(_WIN32)
14727 virtual D3D12_NODE_ID STDMETHODCALLTYPE GetEntrypointID(
14728 UINT WorkGraphIndex,
14729 UINT EntrypointIndex) = 0;
14730#else
14731 virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetEntrypointID(
14732 D3D12_NODE_ID * RetVal,
14733 UINT WorkGraphIndex,
14734 UINT EntrypointIndex) = 0;
14735#endif
14736
14737 virtual UINT STDMETHODCALLTYPE GetEntrypointIndex(
14738 UINT WorkGraphIndex,
14739 D3D12_NODE_ID NodeID) = 0;
14740
14741 virtual UINT STDMETHODCALLTYPE GetEntrypointRecordSizeInBytes(
14742 UINT WorkGraphIndex,
14743 UINT EntrypointIndex) = 0;
14744
14745 virtual void STDMETHODCALLTYPE GetWorkGraphMemoryRequirements(
14746 UINT WorkGraphIndex,
14747 _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements) = 0;
14748
14749 virtual UINT STDMETHODCALLTYPE GetEntrypointRecordAlignmentInBytes(
14750 UINT WorkGraphIndex,
14751 UINT EntrypointIndex) = 0;
14752
14753 };
14754
14755
14756#else /* C style interface */
14757
14758 typedef struct ID3D12WorkGraphPropertiesVtbl
14759 {
14760 BEGIN_INTERFACE
14761
14762 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14763 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14764 ID3D12WorkGraphProperties * This,
14765 REFIID riid,
14766 _COM_Outptr_ void **ppvObject);
14767
14768 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14769 ULONG ( STDMETHODCALLTYPE *AddRef )(
14770 ID3D12WorkGraphProperties * This);
14771
14772 DECLSPEC_XFGVIRT(IUnknown, Release)
14773 ULONG ( STDMETHODCALLTYPE *Release )(
14774 ID3D12WorkGraphProperties * This);
14775
14776 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumWorkGraphs)
14777 UINT ( STDMETHODCALLTYPE *GetNumWorkGraphs )(
14778 ID3D12WorkGraphProperties * This);
14779
14780 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetProgramName)
14781 LPCWSTR ( STDMETHODCALLTYPE *GetProgramName )(
14782 ID3D12WorkGraphProperties * This,
14783 UINT WorkGraphIndex);
14784
14785 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphIndex)
14786 UINT ( STDMETHODCALLTYPE *GetWorkGraphIndex )(
14787 ID3D12WorkGraphProperties * This,
14788 LPCWSTR pProgramName);
14789
14790 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumNodes)
14791 UINT ( STDMETHODCALLTYPE *GetNumNodes )(
14792 ID3D12WorkGraphProperties * This,
14793 UINT WorkGraphIndex);
14794
14795 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeID)
14796#if !defined(_WIN32)
14797 D3D12_NODE_ID ( STDMETHODCALLTYPE *GetNodeID )(
14798 ID3D12WorkGraphProperties * This,
14799 UINT WorkGraphIndex,
14800 UINT NodeIndex);
14801
14802#else
14803 D3D12_NODE_ID *( STDMETHODCALLTYPE *GetNodeID )(
14804 ID3D12WorkGraphProperties * This,
14805 D3D12_NODE_ID * RetVal,
14806 UINT WorkGraphIndex,
14807 UINT NodeIndex);
14808
14809#endif
14810
14811 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeIndex)
14812 UINT ( STDMETHODCALLTYPE *GetNodeIndex )(
14813 ID3D12WorkGraphProperties * This,
14814 UINT WorkGraphIndex,
14815 D3D12_NODE_ID NodeID);
14816
14817 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeLocalRootArgumentsTableIndex)
14818 UINT ( STDMETHODCALLTYPE *GetNodeLocalRootArgumentsTableIndex )(
14819 ID3D12WorkGraphProperties * This,
14820 UINT WorkGraphIndex,
14821 UINT NodeIndex);
14822
14823 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumEntrypoints)
14824 UINT ( STDMETHODCALLTYPE *GetNumEntrypoints )(
14825 ID3D12WorkGraphProperties * This,
14826 UINT WorkGraphIndex);
14827
14828 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointID)
14829#if !defined(_WIN32)
14830 D3D12_NODE_ID ( STDMETHODCALLTYPE *GetEntrypointID )(
14831 ID3D12WorkGraphProperties * This,
14832 UINT WorkGraphIndex,
14833 UINT EntrypointIndex);
14834
14835#else
14836 D3D12_NODE_ID *( STDMETHODCALLTYPE *GetEntrypointID )(
14837 ID3D12WorkGraphProperties * This,
14838 D3D12_NODE_ID * RetVal,
14839 UINT WorkGraphIndex,
14840 UINT EntrypointIndex);
14841
14842#endif
14843
14844 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointIndex)
14845 UINT ( STDMETHODCALLTYPE *GetEntrypointIndex )(
14846 ID3D12WorkGraphProperties * This,
14847 UINT WorkGraphIndex,
14848 D3D12_NODE_ID NodeID);
14849
14850 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordSizeInBytes)
14851 UINT ( STDMETHODCALLTYPE *GetEntrypointRecordSizeInBytes )(
14852 ID3D12WorkGraphProperties * This,
14853 UINT WorkGraphIndex,
14854 UINT EntrypointIndex);
14855
14856 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphMemoryRequirements)
14857 void ( STDMETHODCALLTYPE *GetWorkGraphMemoryRequirements )(
14858 ID3D12WorkGraphProperties * This,
14859 UINT WorkGraphIndex,
14860 _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements);
14861
14862 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordAlignmentInBytes)
14863 UINT ( STDMETHODCALLTYPE *GetEntrypointRecordAlignmentInBytes )(
14864 ID3D12WorkGraphProperties * This,
14865 UINT WorkGraphIndex,
14866 UINT EntrypointIndex);
14867
14868 END_INTERFACE
14869 } ID3D12WorkGraphPropertiesVtbl;
14870
14871 interface ID3D12WorkGraphProperties
14872 {
14873 CONST_VTBL struct ID3D12WorkGraphPropertiesVtbl *lpVtbl;
14874 };
14875
14876
14877
14878#ifdef COBJMACROS
14879
14880
14881#define ID3D12WorkGraphProperties_QueryInterface(This,riid,ppvObject) \
14882 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14883
14884#define ID3D12WorkGraphProperties_AddRef(This) \
14885 ( (This)->lpVtbl -> AddRef(This) )
14886
14887#define ID3D12WorkGraphProperties_Release(This) \
14888 ( (This)->lpVtbl -> Release(This) )
14889
14890
14891#define ID3D12WorkGraphProperties_GetNumWorkGraphs(This) \
14892 ( (This)->lpVtbl -> GetNumWorkGraphs(This) )
14893
14894#define ID3D12WorkGraphProperties_GetProgramName(This,WorkGraphIndex) \
14895 ( (This)->lpVtbl -> GetProgramName(This,WorkGraphIndex) )
14896
14897#define ID3D12WorkGraphProperties_GetWorkGraphIndex(This,pProgramName) \
14898 ( (This)->lpVtbl -> GetWorkGraphIndex(This,pProgramName) )
14899
14900#define ID3D12WorkGraphProperties_GetNumNodes(This,WorkGraphIndex) \
14901 ( (This)->lpVtbl -> GetNumNodes(This,WorkGraphIndex) )
14902#if !defined(_WIN32)
14903
14904#define ID3D12WorkGraphProperties_GetNodeID(This,WorkGraphIndex,NodeIndex) \
14905 ( (This)->lpVtbl -> GetNodeID(This,WorkGraphIndex,NodeIndex) )
14906#else
14907#define ID3D12WorkGraphProperties_GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) \
14908 ( (This)->lpVtbl -> GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) )
14909#endif
14910
14911#define ID3D12WorkGraphProperties_GetNodeIndex(This,WorkGraphIndex,NodeID) \
14912 ( (This)->lpVtbl -> GetNodeIndex(This,WorkGraphIndex,NodeID) )
14913
14914#define ID3D12WorkGraphProperties_GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) \
14915 ( (This)->lpVtbl -> GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) )
14916
14917#define ID3D12WorkGraphProperties_GetNumEntrypoints(This,WorkGraphIndex) \
14918 ( (This)->lpVtbl -> GetNumEntrypoints(This,WorkGraphIndex) )
14919#if !defined(_WIN32)
14920
14921#define ID3D12WorkGraphProperties_GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) \
14922 ( (This)->lpVtbl -> GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) )
14923#else
14924#define ID3D12WorkGraphProperties_GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) \
14925 ( (This)->lpVtbl -> GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) )
14926#endif
14927
14928#define ID3D12WorkGraphProperties_GetEntrypointIndex(This,WorkGraphIndex,NodeID) \
14929 ( (This)->lpVtbl -> GetEntrypointIndex(This,WorkGraphIndex,NodeID) )
14930
14931#define ID3D12WorkGraphProperties_GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) \
14932 ( (This)->lpVtbl -> GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) )
14933
14934#define ID3D12WorkGraphProperties_GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) \
14935 ( (This)->lpVtbl -> GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) )
14936
14937#define ID3D12WorkGraphProperties_GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) \
14938 ( (This)->lpVtbl -> GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) )
14939
14940#endif /* COBJMACROS */
14941
14942
14943#endif /* C style interface */
14944
14945
14946
14947
14948#endif /* __ID3D12WorkGraphProperties_INTERFACE_DEFINED__ */
14949
14950
14951/* interface __MIDL_itf_d3d12_0000_0039 */
14952/* [local] */
14953
14954typedef
14955enum D3D12_STATE_SUBOBJECT_TYPE
14956 {
14957 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0,
14958 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1,
14959 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2,
14960 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3,
14961 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5,
14962 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6,
14963 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
14964 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
14965 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
14966 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
14967 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
14968 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
14969 D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13,
14970 D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14,
14971 D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15,
14972 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16,
14973 D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17,
14974 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18,
14975 D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19,
14976 D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20,
14977 D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21,
14978 D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22,
14979 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23,
14980 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24,
14981 D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26,
14982 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27,
14983 D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28,
14984 D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29,
14985 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30,
14986 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31,
14987 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32,
14988 D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33,
14989 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36,
14990 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY + 1 )
14991 } D3D12_STATE_SUBOBJECT_TYPE;
14992
14993typedef struct D3D12_STATE_SUBOBJECT
14994 {
14995 D3D12_STATE_SUBOBJECT_TYPE Type;
14996 const void *pDesc;
14997 } D3D12_STATE_SUBOBJECT;
14998
14999typedef
15000enum D3D12_STATE_OBJECT_FLAGS
15001 {
15002 D3D12_STATE_OBJECT_FLAG_NONE = 0,
15003 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
15004 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
15005 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
15006 } D3D12_STATE_OBJECT_FLAGS;
15007
15008DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )
15009typedef struct D3D12_STATE_OBJECT_CONFIG
15010 {
15011 D3D12_STATE_OBJECT_FLAGS Flags;
15012 } D3D12_STATE_OBJECT_CONFIG;
15013
15014typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
15015 {
15016 ID3D12RootSignature *pGlobalRootSignature;
15017 } D3D12_GLOBAL_ROOT_SIGNATURE;
15018
15019typedef struct D3D12_LOCAL_ROOT_SIGNATURE
15020 {
15021 ID3D12RootSignature *pLocalRootSignature;
15022 } D3D12_LOCAL_ROOT_SIGNATURE;
15023
15024typedef struct D3D12_NODE_MASK
15025 {
15026 UINT NodeMask;
15027 } D3D12_NODE_MASK;
15028
15029typedef struct D3D12_SAMPLE_MASK
15030 {
15031 UINT SampleMask;
15032 } D3D12_SAMPLE_MASK;
15033
15034typedef struct D3D12_IB_STRIP_CUT_VALUE
15035 {
15036 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
15037 } D3D12_IB_STRIP_CUT_VALUE;
15038
15039typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
15040 {
15041 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
15042 } D3D12_PRIMITIVE_TOPOLOGY_DESC;
15043
15044typedef struct D3D12_DEPTH_STENCIL_FORMAT
15045 {
15046 DXGI_FORMAT DepthStencilFormat;
15047 } D3D12_DEPTH_STENCIL_FORMAT;
15048
15049typedef
15050enum D3D12_EXPORT_FLAGS
15051 {
15052 D3D12_EXPORT_FLAG_NONE = 0
15053 } D3D12_EXPORT_FLAGS;
15054
15055DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )
15056typedef struct D3D12_EXPORT_DESC
15057 {
15058 LPCWSTR Name;
15059 _In_opt_ LPCWSTR ExportToRename;
15060 D3D12_EXPORT_FLAGS Flags;
15061 } D3D12_EXPORT_DESC;
15062
15063typedef struct D3D12_DXIL_LIBRARY_DESC
15064 {
15065 D3D12_SHADER_BYTECODE DXILLibrary;
15066 UINT NumExports;
15067 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
15068 } D3D12_DXIL_LIBRARY_DESC;
15069
15070typedef struct D3D12_EXISTING_COLLECTION_DESC
15071 {
15072 ID3D12StateObject *pExistingCollection;
15073 UINT NumExports;
15074 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
15075 } D3D12_EXISTING_COLLECTION_DESC;
15076
15077typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
15078 {
15079 const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
15080 UINT NumExports;
15081 _In_reads_(NumExports) LPCWSTR *pExports;
15082 } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
15083
15084typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
15085 {
15086 LPCWSTR SubobjectToAssociate;
15087 UINT NumExports;
15088 _In_reads_(NumExports) LPCWSTR *pExports;
15089 } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
15090
15091typedef
15092enum D3D12_HIT_GROUP_TYPE
15093 {
15094 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0,
15095 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
15096 } D3D12_HIT_GROUP_TYPE;
15097
15098typedef struct D3D12_HIT_GROUP_DESC
15099 {
15100 LPCWSTR HitGroupExport;
15101 D3D12_HIT_GROUP_TYPE Type;
15102 _In_opt_ LPCWSTR AnyHitShaderImport;
15103 _In_opt_ LPCWSTR ClosestHitShaderImport;
15104 _In_opt_ LPCWSTR IntersectionShaderImport;
15105 } D3D12_HIT_GROUP_DESC;
15106
15107typedef struct D3D12_RAYTRACING_SHADER_CONFIG
15108 {
15109 UINT MaxPayloadSizeInBytes;
15110 UINT MaxAttributeSizeInBytes;
15111 } D3D12_RAYTRACING_SHADER_CONFIG;
15112
15113typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
15114 {
15115 UINT MaxTraceRecursionDepth;
15116 } D3D12_RAYTRACING_PIPELINE_CONFIG;
15117
15118typedef
15119enum D3D12_RAYTRACING_PIPELINE_FLAGS
15120 {
15121 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
15122 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
15123 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
15124 D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400
15125 } D3D12_RAYTRACING_PIPELINE_FLAGS;
15126
15127DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )
15128typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
15129 {
15130 UINT MaxTraceRecursionDepth;
15131 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
15132 } D3D12_RAYTRACING_PIPELINE_CONFIG1;
15133
15134typedef struct D3D12_NODE_OUTPUT_OVERRIDES
15135 {
15136 UINT OutputIndex;
15137 _In_opt_ const D3D12_NODE_ID *pNewName;
15138 _In_opt_ const BOOL *pAllowSparseNodes;
15139 _In_opt_ const UINT *pMaxRecords;
15140 _In_opt_ const UINT *pMaxRecordsSharedWithOutputIndex;
15141 } D3D12_NODE_OUTPUT_OVERRIDES;
15142
15143typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
15144 {
15145 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15146 _In_opt_ const BOOL *pProgramEntry;
15147 _In_opt_ const D3D12_NODE_ID *pNewName;
15148 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15149 _In_reads_opt_(3) const UINT *pDispatchGrid;
15150 _In_reads_opt_(3) const UINT *pMaxDispatchGrid;
15151 UINT NumOutputOverrides;
15152 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15153 } D3D12_BROADCASTING_LAUNCH_OVERRIDES;
15154
15155typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
15156 {
15157 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15158 _In_opt_ const BOOL *pProgramEntry;
15159 _In_opt_ const D3D12_NODE_ID *pNewName;
15160 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15161 UINT NumOutputOverrides;
15162 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15163 } D3D12_COALESCING_LAUNCH_OVERRIDES;
15164
15165typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
15166 {
15167 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15168 _In_opt_ const BOOL *pProgramEntry;
15169 _In_opt_ const D3D12_NODE_ID *pNewName;
15170 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15171 UINT NumOutputOverrides;
15172 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15173 } D3D12_THREAD_LAUNCH_OVERRIDES;
15174
15175typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
15176 {
15177 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15178 _In_opt_ const BOOL *pProgramEntry;
15179 _In_opt_ const D3D12_NODE_ID *pNewName;
15180 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15181 UINT NumOutputOverrides;
15182 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15183 } D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
15184
15185typedef
15186enum D3D12_NODE_OVERRIDES_TYPE
15187 {
15188 D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
15189 D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
15190 D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
15191 D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
15192 D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4
15193 } D3D12_NODE_OVERRIDES_TYPE;
15194
15195typedef struct D3D12_SHADER_NODE
15196 {
15197 LPCWSTR Shader;
15198 D3D12_NODE_OVERRIDES_TYPE OverridesType;
15199 union
15200 {
15201 const D3D12_BROADCASTING_LAUNCH_OVERRIDES *pBroadcastingLaunchOverrides;
15202 const D3D12_COALESCING_LAUNCH_OVERRIDES *pCoalescingLaunchOverrides;
15203 const D3D12_THREAD_LAUNCH_OVERRIDES *pThreadLaunchOverrides;
15204 const D3D12_COMMON_COMPUTE_NODE_OVERRIDES *pCommonComputeNodeOverrides;
15205 } ;
15206 } D3D12_SHADER_NODE;
15207
15208typedef
15209enum D3D12_NODE_TYPE
15210 {
15211 D3D12_NODE_TYPE_SHADER = 0
15212 } D3D12_NODE_TYPE;
15213
15214typedef struct D3D12_NODE
15215 {
15216 D3D12_NODE_TYPE NodeType;
15217 union
15218 {
15219 D3D12_SHADER_NODE Shader;
15220 } ;
15221 } D3D12_NODE;
15222
15223typedef
15224enum D3D12_WORK_GRAPH_FLAGS
15225 {
15226 D3D12_WORK_GRAPH_FLAG_NONE = 0,
15227 D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1
15228 } D3D12_WORK_GRAPH_FLAGS;
15229
15230DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )
15231typedef struct D3D12_WORK_GRAPH_DESC
15232 {
15233 LPCWSTR ProgramName;
15234 D3D12_WORK_GRAPH_FLAGS Flags;
15235 UINT NumEntrypoints;
15236 _In_reads_opt_(NumEntrypoints) const D3D12_NODE_ID *pEntrypoints;
15237 UINT NumExplicitlyDefinedNodes;
15238 _In_reads_opt_(NumExplicitlyDefinedNodes) const D3D12_NODE *pExplicitlyDefinedNodes;
15239 } D3D12_WORK_GRAPH_DESC;
15240
15241typedef struct D3D12_GENERIC_PROGRAM_DESC
15242 {
15243 LPCWSTR ProgramName;
15244 UINT NumExports;
15245 _In_reads_(NumExports) LPCWSTR *pExports;
15246 UINT NumSubobjects;
15247 _In_reads_opt_(NumSubobjects) const D3D12_STATE_SUBOBJECT *const *ppSubobjects;
15248 } D3D12_GENERIC_PROGRAM_DESC;
15249
15250typedef
15251enum D3D12_STATE_OBJECT_TYPE
15252 {
15253 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
15254 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
15255 D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
15256 } D3D12_STATE_OBJECT_TYPE;
15257
15258typedef struct D3D12_STATE_OBJECT_DESC
15259 {
15260 D3D12_STATE_OBJECT_TYPE Type;
15261 UINT NumSubobjects;
15262 _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects;
15263 } D3D12_STATE_OBJECT_DESC;
15264
15265typedef
15266enum D3D12_RAYTRACING_GEOMETRY_FLAGS
15267 {
15268 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
15269 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
15270 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
15271 } D3D12_RAYTRACING_GEOMETRY_FLAGS;
15272
15273DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )
15274typedef
15275enum D3D12_RAYTRACING_GEOMETRY_TYPE
15276 {
15277 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
15278 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 ) ,
15279 D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES = ( D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS + 1 )
15280 } D3D12_RAYTRACING_GEOMETRY_TYPE;
15281
15282typedef
15283enum D3D12_RAYTRACING_INSTANCE_FLAGS
15284 {
15285 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
15286 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
15287 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
15288 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
15289 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
15290 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
15291 D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
15292 } D3D12_RAYTRACING_INSTANCE_FLAGS;
15293
15294DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )
15295typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
15296 {
15297 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15298 UINT64 StrideInBytes;
15299 } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
15300
15301typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
15302 {
15303 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15304 UINT64 SizeInBytes;
15305 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
15306
15307typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
15308 {
15309 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15310 UINT64 SizeInBytes;
15311 UINT64 StrideInBytes;
15312 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
15313
15314typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
15315 {
15316 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
15317 DXGI_FORMAT IndexFormat;
15318 DXGI_FORMAT VertexFormat;
15319 UINT IndexCount;
15320 UINT VertexCount;
15321 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
15322 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
15323 } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
15324
15325typedef struct D3D12_RAYTRACING_AABB
15326 {
15327 FLOAT MinX;
15328 FLOAT MinY;
15329 FLOAT MinZ;
15330 FLOAT MaxX;
15331 FLOAT MaxY;
15332 FLOAT MaxZ;
15333 } D3D12_RAYTRACING_AABB;
15334
15335typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
15336 {
15337 UINT64 AABBCount;
15338 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
15339 } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
15340
15341typedef
15342enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
15343 {
15344 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
15345 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
15346 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
15347 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4
15348 } D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
15349
15350typedef
15351enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
15352 {
15353 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
15354 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
15355 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
15356 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3
15357 } D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
15358
15359typedef
15360enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
15361 {
15362 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
15363 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2
15364 } D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
15365
15366typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC
15367{
15368 UINT ByteOffset;
15369 UINT SubdivisionLevel : 16;
15370 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;
15371} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;
15372typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
15373 {
15374 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
15375 DXGI_FORMAT OpacityMicromapIndexFormat;
15376 UINT OpacityMicromapBaseLocation;
15377 D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
15378 } D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
15379
15380typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
15381 {
15382 const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC *pTriangles;
15383 const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC *pOmmLinkage;
15384 } D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
15385
15386typedef
15387enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
15388 {
15389 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
15390 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
15391 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
15392 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
15393 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
15394 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
15395 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
15396 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
15397 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80
15398 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
15399
15400DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )
15401typedef
15402enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
15403 {
15404 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
15405 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
15406 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
15407 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
15408 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
15409 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
15410
15411typedef
15412enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
15413 {
15414 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
15415 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
15416 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2
15417 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
15418
15419typedef
15420enum D3D12_ELEMENTS_LAYOUT
15421 {
15422 D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
15423 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
15424 } D3D12_ELEMENTS_LAYOUT;
15425
15426typedef
15427enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
15428 {
15429 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0,
15430 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
15431 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
15432 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
15433 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
15434
15435typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
15436 {
15437 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
15438 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
15439 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
15440
15441typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
15442 {
15443 UINT64 CompactedSizeInBytes;
15444 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
15445
15446typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
15447 {
15448 UINT64 DecodedSizeInBytes;
15449 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
15450
15451typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
15452 {
15453 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
15454 UINT NumDescs;
15455 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
15456
15457// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,
15458// depending on Type field, NumDescs above is followed by either:
15459// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
15460// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
15461// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).
15462//
15463// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer
15464//
15465// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
15466
15467typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
15468 {
15469 UINT64 SerializedSizeInBytes;
15470 union
15471 {
15472 UINT64 NumBottomLevelAccelerationStructurePointers;
15473 UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
15474 } ;
15475 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
15476
15477typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
15478 {
15479 GUID DriverOpaqueGUID;
15480 BYTE DriverOpaqueVersioningData[ 16 ];
15481 } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
15482
15483typedef
15484enum D3D12_SERIALIZED_DATA_TYPE
15485 {
15486 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0,
15487 D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1
15488 } D3D12_SERIALIZED_DATA_TYPE;
15489
15490typedef
15491enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
15492 {
15493 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0,
15494 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
15495 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
15496 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
15497 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
15498 } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
15499
15500typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
15501 {
15502 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
15503 UINT64 SerializedSizeInBytesIncludingHeader;
15504 UINT64 DeserializedSizeInBytes;
15505 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
15506 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
15507
15508typedef
15509enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
15510 {
15511 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
15512 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
15513 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
15514 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
15515
15516typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
15517 {
15518 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
15519 UINT64 SerializedSizeInBytesIncludingHeader;
15520 UINT64 DeserializedSizeInBytes;
15521 union
15522 {
15523 UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
15524 UINT NumBlocks;
15525 } ;
15526 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
15527 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
15528
15529typedef
15530enum D3D12_SERIALIZED_BLOCK_TYPE
15531 {
15532 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0
15533 } D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
15534
15535typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
15536 {
15537 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
15538 UINT64 NumBlockPointersAfterHeader;
15539 } D3D12_RAYTRACING_SERIALIZED_BLOCK;
15540
15541typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
15542 {
15543 UINT64 CurrentSizeInBytes;
15544 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
15545
15546typedef struct D3D12_RAYTRACING_INSTANCE_DESC
15547 {
15548 FLOAT Transform[ 3 ][ 4 ];
15549 UINT InstanceID : 24;
15550 UINT InstanceMask : 8;
15551 UINT InstanceContributionToHitGroupIndex : 24;
15552 UINT Flags : 8;
15553 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
15554 } D3D12_RAYTRACING_INSTANCE_DESC;
15555
15556typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
15557 {
15558 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
15559 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
15560 union
15561 {
15562 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
15563 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
15564 D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
15565 } ;
15566 } D3D12_RAYTRACING_GEOMETRY_DESC;
15567
15568typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
15569 {
15570 UINT Count;
15571 UINT SubdivisionLevel;
15572 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
15573 } D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
15574
15575typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
15576 {
15577 UINT NumOmmHistogramEntries;
15578 const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY *pOmmHistogram;
15579 D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
15580 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
15581 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
15582
15583typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
15584 {
15585 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
15586 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
15587 UINT NumDescs;
15588 D3D12_ELEMENTS_LAYOUT DescsLayout;
15589 union
15590 {
15591 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
15592 const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
15593 const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
15594 const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC *pOpacityMicromapArrayDesc;
15595 } ;
15596 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
15597
15598typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
15599 {
15600 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
15601 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
15602 _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
15603 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
15604 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
15605
15606typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
15607 {
15608 UINT64 ResultDataMaxSizeInBytes;
15609 UINT64 ScratchDataSizeInBytes;
15610 UINT64 UpdateScratchDataSizeInBytes;
15611 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
15612
15613typedef
15614enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
15615 {
15616 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0,
15617 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1
15618 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
15619
15620typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
15621 {
15622 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
15623 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
15624 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
15625
15626typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
15627 {
15628 UINT64 CurrentSizeInBytes;
15629 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
15630
15631typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
15632 {
15633 UINT64 DecodedSizeInBytes;
15634 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
15635
15636typedef
15637enum D3D12_RAY_FLAGS
15638 {
15639 D3D12_RAY_FLAG_NONE = 0,
15640 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
15641 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
15642 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
15643 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
15644 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
15645 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
15646 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
15647 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
15648 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
15649 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
15650 D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400
15651 } D3D12_RAY_FLAGS;
15652
15653DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )
15654typedef
15655enum D3D12_HIT_KIND
15656 {
15657 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
15658 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
15659 } D3D12_HIT_KIND;
15660
15661
15662
15663extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_c_ifspec;
15664extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_s_ifspec;
15665
15666#ifndef __ID3D12Device5_INTERFACE_DEFINED__
15667#define __ID3D12Device5_INTERFACE_DEFINED__
15668
15669/* interface ID3D12Device5 */
15670/* [unique][local][object][uuid] */
15671
15672
15673EXTERN_C const IID IID_ID3D12Device5;
15674
15675#if defined(__cplusplus) && !defined(CINTERFACE)
15676
15677 MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
15678 ID3D12Device5 : public ID3D12Device4
15679 {
15680 public:
15681 virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
15682 _In_ ID3D12LifetimeOwner *pOwner,
15683 REFIID riid,
15684 _COM_Outptr_ void **ppvTracker) = 0;
15685
15686 virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0;
15687
15688 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
15689 _Inout_ UINT *pNumMetaCommands,
15690 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0;
15691
15692 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
15693 _In_ REFGUID CommandId,
15694 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
15695 _Out_opt_ UINT *pTotalStructureSizeInBytes,
15696 _Inout_ UINT *pParameterCount,
15697 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0;
15698
15699 virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
15700 _In_ REFGUID CommandId,
15701 _In_ UINT NodeMask,
15702 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
15703 _In_ SIZE_T CreationParametersDataSizeInBytes,
15704 REFIID riid,
15705 _COM_Outptr_ void **ppMetaCommand) = 0;
15706
15707 virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
15708 const D3D12_STATE_OBJECT_DESC *pDesc,
15709 REFIID riid,
15710 _COM_Outptr_ void **ppStateObject) = 0;
15711
15712 virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
15713 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
15714 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0;
15715
15716 virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
15717 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
15718 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0;
15719
15720 };
15721
15722
15723#else /* C style interface */
15724
15725 typedef struct ID3D12Device5Vtbl
15726 {
15727 BEGIN_INTERFACE
15728
15729 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15730 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15731 ID3D12Device5 * This,
15732 REFIID riid,
15733 _COM_Outptr_ void **ppvObject);
15734
15735 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15736 ULONG ( STDMETHODCALLTYPE *AddRef )(
15737 ID3D12Device5 * This);
15738
15739 DECLSPEC_XFGVIRT(IUnknown, Release)
15740 ULONG ( STDMETHODCALLTYPE *Release )(
15741 ID3D12Device5 * This);
15742
15743 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15744 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15745 ID3D12Device5 * This,
15746 _In_ REFGUID guid,
15747 _Inout_ UINT *pDataSize,
15748 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15749
15750 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15751 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15752 ID3D12Device5 * This,
15753 _In_ REFGUID guid,
15754 _In_ UINT DataSize,
15755 _In_reads_bytes_opt_( DataSize ) const void *pData);
15756
15757 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15758 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15759 ID3D12Device5 * This,
15760 _In_ REFGUID guid,
15761 _In_opt_ const IUnknown *pData);
15762
15763 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15764 HRESULT ( STDMETHODCALLTYPE *SetName )(
15765 ID3D12Device5 * This,
15766 _In_z_ LPCWSTR Name);
15767
15768 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
15769 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
15770 ID3D12Device5 * This);
15771
15772 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
15773 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
15774 ID3D12Device5 * This,
15775 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
15776 REFIID riid,
15777 _COM_Outptr_ void **ppCommandQueue);
15778
15779 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15780 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15781 ID3D12Device5 * This,
15782 _In_ D3D12_COMMAND_LIST_TYPE type,
15783 REFIID riid,
15784 _COM_Outptr_ void **ppCommandAllocator);
15785
15786 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15787 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15788 ID3D12Device5 * This,
15789 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15790 REFIID riid,
15791 _COM_Outptr_ void **ppPipelineState);
15792
15793 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15794 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15795 ID3D12Device5 * This,
15796 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15797 REFIID riid,
15798 _COM_Outptr_ void **ppPipelineState);
15799
15800 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15801 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15802 ID3D12Device5 * This,
15803 _In_ UINT nodeMask,
15804 _In_ D3D12_COMMAND_LIST_TYPE type,
15805 _In_ ID3D12CommandAllocator *pCommandAllocator,
15806 _In_opt_ ID3D12PipelineState *pInitialState,
15807 REFIID riid,
15808 _COM_Outptr_ void **ppCommandList);
15809
15810 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15811 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15812 ID3D12Device5 * This,
15813 D3D12_FEATURE Feature,
15814 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15815 UINT FeatureSupportDataSize);
15816
15817 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15818 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15819 ID3D12Device5 * This,
15820 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15821 REFIID riid,
15822 _COM_Outptr_ void **ppvHeap);
15823
15824 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15825 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15826 ID3D12Device5 * This,
15827 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15828
15829 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15830 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15831 ID3D12Device5 * This,
15832 _In_ UINT nodeMask,
15833 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15834 _In_ SIZE_T blobLengthInBytes,
15835 REFIID riid,
15836 _COM_Outptr_ void **ppvRootSignature);
15837
15838 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
15839 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
15840 ID3D12Device5 * This,
15841 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
15842 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15843
15844 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
15845 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
15846 ID3D12Device5 * This,
15847 _In_opt_ ID3D12Resource *pResource,
15848 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
15849 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15850
15851 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
15852 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
15853 ID3D12Device5 * This,
15854 _In_opt_ ID3D12Resource *pResource,
15855 _In_opt_ ID3D12Resource *pCounterResource,
15856 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
15857 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15858
15859 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
15860 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
15861 ID3D12Device5 * This,
15862 _In_opt_ ID3D12Resource *pResource,
15863 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
15864 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15865
15866 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
15867 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
15868 ID3D12Device5 * This,
15869 _In_opt_ ID3D12Resource *pResource,
15870 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
15871 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15872
15873 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
15874 void ( STDMETHODCALLTYPE *CreateSampler )(
15875 ID3D12Device5 * This,
15876 _In_ const D3D12_SAMPLER_DESC *pDesc,
15877 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15878
15879 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
15880 void ( STDMETHODCALLTYPE *CopyDescriptors )(
15881 ID3D12Device5 * This,
15882 _In_ UINT NumDestDescriptorRanges,
15883 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
15884 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
15885 _In_ UINT NumSrcDescriptorRanges,
15886 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
15887 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
15888 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15889
15890 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
15891 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
15892 ID3D12Device5 * This,
15893 _In_ UINT NumDescriptors,
15894 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
15895 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
15896 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15897
15898 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
15899#if !defined(_WIN32)
15900 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15901 ID3D12Device5 * This,
15902 _In_ UINT visibleMask,
15903 _In_ UINT numResourceDescs,
15904 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15905
15906#else
15907 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15908 ID3D12Device5 * This,
15909 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15910 _In_ UINT visibleMask,
15911 _In_ UINT numResourceDescs,
15912 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15913
15914#endif
15915
15916 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
15917#if !defined(_WIN32)
15918 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15919 ID3D12Device5 * This,
15920 _In_ UINT nodeMask,
15921 D3D12_HEAP_TYPE heapType);
15922
15923#else
15924 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15925 ID3D12Device5 * This,
15926 D3D12_HEAP_PROPERTIES * RetVal,
15927 _In_ UINT nodeMask,
15928 D3D12_HEAP_TYPE heapType);
15929
15930#endif
15931
15932 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
15933 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
15934 ID3D12Device5 * This,
15935 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15936 D3D12_HEAP_FLAGS HeapFlags,
15937 _In_ const D3D12_RESOURCE_DESC *pDesc,
15938 D3D12_RESOURCE_STATES InitialResourceState,
15939 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15940 REFIID riidResource,
15941 _COM_Outptr_opt_ void **ppvResource);
15942
15943 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
15944 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
15945 ID3D12Device5 * This,
15946 _In_ const D3D12_HEAP_DESC *pDesc,
15947 REFIID riid,
15948 _COM_Outptr_opt_ void **ppvHeap);
15949
15950 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
15951 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
15952 ID3D12Device5 * This,
15953 _In_ ID3D12Heap *pHeap,
15954 UINT64 HeapOffset,
15955 _In_ const D3D12_RESOURCE_DESC *pDesc,
15956 D3D12_RESOURCE_STATES InitialState,
15957 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15958 REFIID riid,
15959 _COM_Outptr_opt_ void **ppvResource);
15960
15961 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
15962 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
15963 ID3D12Device5 * This,
15964 _In_ const D3D12_RESOURCE_DESC *pDesc,
15965 D3D12_RESOURCE_STATES InitialState,
15966 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15967 REFIID riid,
15968 _COM_Outptr_opt_ void **ppvResource);
15969
15970 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
15971 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
15972 ID3D12Device5 * This,
15973 _In_ ID3D12DeviceChild *pObject,
15974 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
15975 DWORD Access,
15976 _In_opt_ LPCWSTR Name,
15977 _Out_ HANDLE *pHandle);
15978
15979 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
15980 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
15981 ID3D12Device5 * This,
15982 _In_ HANDLE NTHandle,
15983 REFIID riid,
15984 _COM_Outptr_opt_ void **ppvObj);
15985
15986 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
15987 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
15988 ID3D12Device5 * This,
15989 _In_ LPCWSTR Name,
15990 DWORD Access,
15991 /* [annotation][out] */
15992 _Out_ HANDLE *pNTHandle);
15993
15994 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
15995 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
15996 ID3D12Device5 * This,
15997 UINT NumObjects,
15998 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15999
16000 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
16001 HRESULT ( STDMETHODCALLTYPE *Evict )(
16002 ID3D12Device5 * This,
16003 UINT NumObjects,
16004 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16005
16006 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16007 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16008 ID3D12Device5 * This,
16009 UINT64 InitialValue,
16010 D3D12_FENCE_FLAGS Flags,
16011 REFIID riid,
16012 _COM_Outptr_ void **ppFence);
16013
16014 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16015 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16016 ID3D12Device5 * This);
16017
16018 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16019 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16020 ID3D12Device5 * This,
16021 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16022 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16023 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16024 UINT64 BaseOffset,
16025 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16026 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16027 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16028 _Out_opt_ UINT64 *pTotalBytes);
16029
16030 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16031 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16032 ID3D12Device5 * This,
16033 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16034 REFIID riid,
16035 _COM_Outptr_opt_ void **ppvHeap);
16036
16037 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16038 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16039 ID3D12Device5 * This,
16040 BOOL Enable);
16041
16042 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16043 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16044 ID3D12Device5 * This,
16045 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16046 _In_opt_ ID3D12RootSignature *pRootSignature,
16047 REFIID riid,
16048 _COM_Outptr_opt_ void **ppvCommandSignature);
16049
16050 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16051 void ( STDMETHODCALLTYPE *GetResourceTiling )(
16052 ID3D12Device5 * This,
16053 _In_ ID3D12Resource *pTiledResource,
16054 _Out_opt_ UINT *pNumTilesForEntireResource,
16055 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
16056 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
16057 _Inout_opt_ UINT *pNumSubresourceTilings,
16058 _In_ UINT FirstSubresourceTilingToGet,
16059 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
16060
16061 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
16062#if !defined(_WIN32)
16063 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
16064 ID3D12Device5 * This);
16065
16066#else
16067 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
16068 ID3D12Device5 * This,
16069 LUID * RetVal);
16070
16071#endif
16072
16073 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
16074 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
16075 ID3D12Device5 * This,
16076 _In_reads_(BlobLength) const void *pLibraryBlob,
16077 SIZE_T BlobLength,
16078 REFIID riid,
16079 _COM_Outptr_ void **ppPipelineLibrary);
16080
16081 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
16082 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
16083 ID3D12Device5 * This,
16084 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
16085 _In_reads_(NumFences) const UINT64 *pFenceValues,
16086 UINT NumFences,
16087 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
16088 HANDLE hEvent);
16089
16090 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
16091 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
16092 ID3D12Device5 * This,
16093 UINT NumObjects,
16094 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16095 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
16096
16097 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
16098 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
16099 ID3D12Device5 * This,
16100 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
16101 REFIID riid,
16102 _COM_Outptr_ void **ppPipelineState);
16103
16104 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
16105 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
16106 ID3D12Device5 * This,
16107 _In_ const void *pAddress,
16108 REFIID riid,
16109 _COM_Outptr_ void **ppvHeap);
16110
16111 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
16112 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
16113 ID3D12Device5 * This,
16114 _In_ HANDLE hFileMapping,
16115 REFIID riid,
16116 _COM_Outptr_ void **ppvHeap);
16117
16118 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
16119 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
16120 ID3D12Device5 * This,
16121 D3D12_RESIDENCY_FLAGS Flags,
16122 UINT NumObjects,
16123 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16124 _In_ ID3D12Fence *pFenceToSignal,
16125 UINT64 FenceValueToSignal);
16126
16127 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
16128 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
16129 ID3D12Device5 * This,
16130 _In_ UINT nodeMask,
16131 _In_ D3D12_COMMAND_LIST_TYPE type,
16132 _In_ D3D12_COMMAND_LIST_FLAGS flags,
16133 REFIID riid,
16134 _COM_Outptr_ void **ppCommandList);
16135
16136 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
16137 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
16138 ID3D12Device5 * This,
16139 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
16140 _In_ REFIID riid,
16141 _COM_Outptr_ void **ppSession);
16142
16143 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
16144 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
16145 ID3D12Device5 * This,
16146 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16147 D3D12_HEAP_FLAGS HeapFlags,
16148 _In_ const D3D12_RESOURCE_DESC *pDesc,
16149 D3D12_RESOURCE_STATES InitialResourceState,
16150 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16151 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16152 REFIID riidResource,
16153 _COM_Outptr_opt_ void **ppvResource);
16154
16155 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
16156 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
16157 ID3D12Device5 * This,
16158 _In_ const D3D12_HEAP_DESC *pDesc,
16159 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16160 REFIID riid,
16161 _COM_Outptr_opt_ void **ppvHeap);
16162
16163 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
16164 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
16165 ID3D12Device5 * This,
16166 _In_ const D3D12_RESOURCE_DESC *pDesc,
16167 D3D12_RESOURCE_STATES InitialState,
16168 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16169 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16170 REFIID riid,
16171 _COM_Outptr_opt_ void **ppvResource);
16172
16173 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
16174#if !defined(_WIN32)
16175 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16176 ID3D12Device5 * This,
16177 UINT visibleMask,
16178 UINT numResourceDescs,
16179 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16180 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16181
16182#else
16183 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16184 ID3D12Device5 * This,
16185 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16186 UINT visibleMask,
16187 UINT numResourceDescs,
16188 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16189 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16190
16191#endif
16192
16193 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
16194 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
16195 ID3D12Device5 * This,
16196 _In_ ID3D12LifetimeOwner *pOwner,
16197 REFIID riid,
16198 _COM_Outptr_ void **ppvTracker);
16199
16200 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
16201 void ( STDMETHODCALLTYPE *RemoveDevice )(
16202 ID3D12Device5 * This);
16203
16204 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
16205 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
16206 ID3D12Device5 * This,
16207 _Inout_ UINT *pNumMetaCommands,
16208 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
16209
16210 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
16211 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
16212 ID3D12Device5 * This,
16213 _In_ REFGUID CommandId,
16214 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
16215 _Out_opt_ UINT *pTotalStructureSizeInBytes,
16216 _Inout_ UINT *pParameterCount,
16217 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
16218
16219 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
16220 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
16221 ID3D12Device5 * This,
16222 _In_ REFGUID CommandId,
16223 _In_ UINT NodeMask,
16224 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
16225 _In_ SIZE_T CreationParametersDataSizeInBytes,
16226 REFIID riid,
16227 _COM_Outptr_ void **ppMetaCommand);
16228
16229 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
16230 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
16231 ID3D12Device5 * This,
16232 const D3D12_STATE_OBJECT_DESC *pDesc,
16233 REFIID riid,
16234 _COM_Outptr_ void **ppStateObject);
16235
16236 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
16237 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
16238 ID3D12Device5 * This,
16239 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
16240 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
16241
16242 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
16243 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
16244 ID3D12Device5 * This,
16245 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
16246 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
16247
16248 END_INTERFACE
16249 } ID3D12Device5Vtbl;
16250
16251 interface ID3D12Device5
16252 {
16253 CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl;
16254 };
16255
16256
16257
16258#ifdef COBJMACROS
16259
16260
16261#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \
16262 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16263
16264#define ID3D12Device5_AddRef(This) \
16265 ( (This)->lpVtbl -> AddRef(This) )
16266
16267#define ID3D12Device5_Release(This) \
16268 ( (This)->lpVtbl -> Release(This) )
16269
16270
16271#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \
16272 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
16273
16274#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \
16275 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
16276
16277#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \
16278 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
16279
16280#define ID3D12Device5_SetName(This,Name) \
16281 ( (This)->lpVtbl -> SetName(This,Name) )
16282
16283
16284#define ID3D12Device5_GetNodeCount(This) \
16285 ( (This)->lpVtbl -> GetNodeCount(This) )
16286
16287#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
16288 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
16289
16290#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
16291 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
16292
16293#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
16294 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
16295
16296#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
16297 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
16298
16299#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
16300 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
16301
16302#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
16303 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
16304
16305#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
16306 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
16307
16308#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
16309 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
16310
16311#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
16312 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
16313
16314#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \
16315 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
16316
16317#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
16318 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
16319
16320#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
16321 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
16322
16323#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
16324 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
16325
16326#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
16327 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
16328
16329#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \
16330 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
16331
16332#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
16333 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
16334
16335#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
16336 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
16337#if !defined(_WIN32)
16338
16339#define ID3D12Device5_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
16340 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
16341#else
16342#define ID3D12Device5_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
16343 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
16344#endif
16345#if !defined(_WIN32)
16346
16347#define ID3D12Device5_GetCustomHeapProperties(This,nodeMask,heapType) \
16348 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
16349#else
16350#define ID3D12Device5_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
16351 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
16352#endif
16353
16354#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
16355 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
16356
16357#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \
16358 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
16359
16360#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16361 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16362
16363#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16364 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16365
16366#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
16367 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
16368
16369#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
16370 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
16371
16372#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
16373 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
16374
16375#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \
16376 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
16377
16378#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \
16379 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
16380
16381#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \
16382 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
16383
16384#define ID3D12Device5_GetDeviceRemovedReason(This) \
16385 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
16386
16387#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
16388 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
16389
16390#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
16391 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
16392
16393#define ID3D12Device5_SetStablePowerState(This,Enable) \
16394 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
16395
16396#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
16397 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
16398
16399#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
16400 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
16401#if !defined(_WIN32)
16402
16403#define ID3D12Device5_GetAdapterLuid(This) \
16404 ( (This)->lpVtbl -> GetAdapterLuid(This) )
16405#else
16406#define ID3D12Device5_GetAdapterLuid(This,RetVal) \
16407 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
16408#endif
16409
16410
16411#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
16412 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
16413
16414#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
16415 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
16416
16417#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
16418 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
16419
16420
16421#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
16422 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
16423
16424
16425#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
16426 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
16427
16428#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
16429 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
16430
16431#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
16432 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
16433
16434
16435#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
16436 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
16437
16438#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
16439 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
16440
16441#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
16442 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
16443
16444#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
16445 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
16446
16447#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
16448 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
16449#if !defined(_WIN32)
16450
16451#define ID3D12Device5_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16452 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16453#else
16454#define ID3D12Device5_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16455 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16456#endif
16457
16458
16459#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
16460 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
16461
16462#define ID3D12Device5_RemoveDevice(This) \
16463 ( (This)->lpVtbl -> RemoveDevice(This) )
16464
16465#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
16466 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
16467
16468#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
16469 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
16470
16471#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
16472 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
16473
16474#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \
16475 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
16476
16477#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
16478 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
16479
16480#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
16481 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
16482
16483#endif /* COBJMACROS */
16484
16485
16486#endif /* C style interface */
16487
16488
16489
16490
16491#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
16492
16493
16494/* interface __MIDL_itf_d3d12_0000_0040 */
16495/* [local] */
16496
16497typedef
16498enum D3D12_MARKER_API
16499 {
16500 D3D12_MARKER_API_SETMARKER = 0,
16501 D3D12_MARKER_API_BEGINEVENT = 1,
16502 D3D12_MARKER_API_ENDEVENT = 2,
16503 D3D12_MARKER_API_DRAWINSTANCED = 3,
16504 D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
16505 D3D12_MARKER_API_EXECUTEINDIRECT = 5,
16506 D3D12_MARKER_API_DISPATCH = 6,
16507 D3D12_MARKER_API_COPYBUFFERREGION = 7,
16508 D3D12_MARKER_API_COPYTEXTUREREGION = 8,
16509 D3D12_MARKER_API_COPYRESOURCE = 9,
16510 D3D12_MARKER_API_COPYTILES = 10,
16511 D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
16512 D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
16513 D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
16514 D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
16515 D3D12_MARKER_API_RESOURCEBARRIER = 15,
16516 D3D12_MARKER_API_EXECUTEBUNDLE = 16,
16517 D3D12_MARKER_API_PRESENT = 17,
16518 D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
16519 D3D12_MARKER_API_BEGINSUBMISSION = 19,
16520 D3D12_MARKER_API_ENDSUBMISSION = 20,
16521 D3D12_MARKER_API_DECODEFRAME = 21,
16522 D3D12_MARKER_API_PROCESSFRAMES = 22,
16523 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
16524 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
16525 D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
16526 D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
16527 D3D12_MARKER_API_DECODEFRAME1 = 27,
16528 D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
16529 D3D12_MARKER_API_DECODEFRAME2 = 29,
16530 D3D12_MARKER_API_PROCESSFRAMES1 = 30,
16531 D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
16532 D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
16533 D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
16534 D3D12_MARKER_API_DISPATCHRAYS = 34,
16535 D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
16536 D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
16537 D3D12_MARKER_API_ESTIMATEMOTION = 37,
16538 D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
16539 D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
16540 D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
16541 D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
16542 D3D12_MARKER_API_DISPATCHMESH = 42,
16543 D3D12_MARKER_API_ENCODEFRAME = 43,
16544 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
16545 D3D12_MARKER_API_BARRIER = 45,
16546 D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
16547 D3D12_MARKER_API_DISPATCHGRAPH = 47,
16548 D3D12_MARKER_API_SETPROGRAM = 48,
16549 D3D12_MARKER_API_ENCODEFRAME1 = 49,
16550 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
16551 D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
16552 D3D12_MARKER_API_PROCESSFRAMES2 = 52,
16553 D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53
16554 } D3D12_MARKER_API;
16555
16556typedef
16557enum D3D12_AUTO_BREADCRUMB_OP
16558 {
16559 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
16560 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
16561 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
16562 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
16563 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
16564 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
16565 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
16566 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
16567 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
16568 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
16569 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
16570 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
16571 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
16572 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
16573 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
16574 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
16575 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
16576 D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
16577 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
16578 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
16579 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
16580 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
16581 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
16582 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
16583 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
16584 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
16585 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
16586 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
16587 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
16588 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
16589 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
16590 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
16591 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
16592 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
16593 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
16594 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
16595 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
16596 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
16597 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
16598 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
16599 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
16600 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
16601 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
16602 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
16603 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
16604 D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
16605 D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
16606 D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
16607 D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
16608 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
16609 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
16610 D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
16611 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
16612 D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS
16613 } D3D12_AUTO_BREADCRUMB_OP;
16614
16615typedef struct D3D12_AUTO_BREADCRUMB_NODE
16616 {
16617 const char *pCommandListDebugNameA;
16618 const wchar_t *pCommandListDebugNameW;
16619 const char *pCommandQueueDebugNameA;
16620 const wchar_t *pCommandQueueDebugNameW;
16621 ID3D12GraphicsCommandList *pCommandList;
16622 ID3D12CommandQueue *pCommandQueue;
16623 UINT32 BreadcrumbCount;
16624 const UINT32 *pLastBreadcrumbValue;
16625 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
16626 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
16627 } D3D12_AUTO_BREADCRUMB_NODE;
16628
16629typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
16630 {
16631 UINT BreadcrumbIndex;
16632 const wchar_t *pContextString;
16633 } D3D12_DRED_BREADCRUMB_CONTEXT;
16634
16635typedef struct D3D12_AUTO_BREADCRUMB_NODE1
16636 {
16637 const char *pCommandListDebugNameA;
16638 const wchar_t *pCommandListDebugNameW;
16639 const char *pCommandQueueDebugNameA;
16640 const wchar_t *pCommandQueueDebugNameW;
16641 ID3D12GraphicsCommandList *pCommandList;
16642 ID3D12CommandQueue *pCommandQueue;
16643 UINT BreadcrumbCount;
16644 const UINT *pLastBreadcrumbValue;
16645 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
16646 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
16647 UINT BreadcrumbContextsCount;
16648 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
16649 } D3D12_AUTO_BREADCRUMB_NODE1;
16650
16651typedef
16652enum D3D12_DRED_VERSION
16653 {
16654 D3D12_DRED_VERSION_1_0 = 0x1,
16655 D3D12_DRED_VERSION_1_1 = 0x2,
16656 D3D12_DRED_VERSION_1_2 = 0x3,
16657 D3D12_DRED_VERSION_1_3 = 0x4
16658 } D3D12_DRED_VERSION;
16659
16660typedef
16661enum D3D12_DRED_FLAGS
16662 {
16663 D3D12_DRED_FLAG_NONE = 0,
16664 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
16665 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
16666 } D3D12_DRED_FLAGS;
16667
16668DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )
16669typedef
16670enum D3D12_DRED_ENABLEMENT
16671 {
16672 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
16673 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
16674 D3D12_DRED_ENABLEMENT_FORCED_ON = 2
16675 } D3D12_DRED_ENABLEMENT;
16676
16677typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
16678 {
16679 _In_ D3D12_DRED_FLAGS Flags;
16680 _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
16681 } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
16682
16683typedef
16684enum D3D12_DRED_ALLOCATION_TYPE
16685 {
16686 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
16687 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
16688 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
16689 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
16690 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
16691 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
16692 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
16693 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
16694 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
16695 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
16696 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
16697 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
16698 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
16699 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
16700 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
16701 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
16702 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
16703 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
16704 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
16705 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
16706 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
16707 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
16708 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
16709 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
16710 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
16711 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
16712 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
16713 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
16714 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
16715 } D3D12_DRED_ALLOCATION_TYPE;
16716
16717typedef struct D3D12_DRED_ALLOCATION_NODE
16718 {
16719 const char *ObjectNameA;
16720 const wchar_t *ObjectNameW;
16721 D3D12_DRED_ALLOCATION_TYPE AllocationType;
16722 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
16723 } D3D12_DRED_ALLOCATION_NODE;
16724
16725typedef struct D3D12_DRED_ALLOCATION_NODE1
16726 {
16727 const char *ObjectNameA;
16728 const wchar_t *ObjectNameW;
16729 D3D12_DRED_ALLOCATION_TYPE AllocationType;
16730 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
16731 const IUnknown *pObject;
16732 } D3D12_DRED_ALLOCATION_NODE1;
16733
16734typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
16735 {
16736 _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
16737 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
16738
16739typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
16740 {
16741 _Out_ const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
16742 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
16743
16744typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
16745 {
16746 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16747 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
16748 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
16749 } D3D12_DRED_PAGE_FAULT_OUTPUT;
16750
16751typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
16752 {
16753 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16754 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
16755 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
16756 } D3D12_DRED_PAGE_FAULT_OUTPUT1;
16757
16758typedef
16759enum D3D12_DRED_PAGE_FAULT_FLAGS
16760 {
16761 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
16762 } D3D12_DRED_PAGE_FAULT_FLAGS;
16763
16764DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )
16765typedef
16766enum D3D12_DRED_DEVICE_STATE
16767 {
16768 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0,
16769 D3D12_DRED_DEVICE_STATE_HUNG = 3,
16770 D3D12_DRED_DEVICE_STATE_FAULT = 6,
16771 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7
16772 } D3D12_DRED_DEVICE_STATE;
16773
16774typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
16775 {
16776 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16777 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
16778 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
16779 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
16780 } D3D12_DRED_PAGE_FAULT_OUTPUT2;
16781
16782typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
16783 {
16784 HRESULT DeviceRemovedReason;
16785 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
16786 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
16787 } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
16788
16789typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
16790 {
16791 HRESULT DeviceRemovedReason;
16792 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
16793 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
16794 } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
16795
16796typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
16797 {
16798 HRESULT DeviceRemovedReason;
16799 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
16800 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
16801 D3D12_DRED_DEVICE_STATE DeviceState;
16802 } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
16803
16804typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
16805 {
16806 D3D12_DRED_VERSION Version;
16807 union
16808 {
16809 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
16810 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
16811 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
16812 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
16813 } ;
16814 } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
16815
16816
16817
16818extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
16819extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
16820
16821#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
16822#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
16823
16824/* interface ID3D12DeviceRemovedExtendedDataSettings */
16825/* [unique][local][object][uuid] */
16826
16827
16828EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings;
16829
16830#if defined(__cplusplus) && !defined(CINTERFACE)
16831
16832 MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")
16833 ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
16834 {
16835 public:
16836 virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
16837 D3D12_DRED_ENABLEMENT Enablement) = 0;
16838
16839 virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
16840 D3D12_DRED_ENABLEMENT Enablement) = 0;
16841
16842 virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
16843 D3D12_DRED_ENABLEMENT Enablement) = 0;
16844
16845 };
16846
16847
16848#else /* C style interface */
16849
16850 typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl
16851 {
16852 BEGIN_INTERFACE
16853
16854 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16855 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16856 ID3D12DeviceRemovedExtendedDataSettings * This,
16857 REFIID riid,
16858 _COM_Outptr_ void **ppvObject);
16859
16860 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16861 ULONG ( STDMETHODCALLTYPE *AddRef )(
16862 ID3D12DeviceRemovedExtendedDataSettings * This);
16863
16864 DECLSPEC_XFGVIRT(IUnknown, Release)
16865 ULONG ( STDMETHODCALLTYPE *Release )(
16866 ID3D12DeviceRemovedExtendedDataSettings * This);
16867
16868 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
16869 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
16870 ID3D12DeviceRemovedExtendedDataSettings * This,
16871 D3D12_DRED_ENABLEMENT Enablement);
16872
16873 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
16874 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
16875 ID3D12DeviceRemovedExtendedDataSettings * This,
16876 D3D12_DRED_ENABLEMENT Enablement);
16877
16878 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
16879 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
16880 ID3D12DeviceRemovedExtendedDataSettings * This,
16881 D3D12_DRED_ENABLEMENT Enablement);
16882
16883 END_INTERFACE
16884 } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
16885
16886 interface ID3D12DeviceRemovedExtendedDataSettings
16887 {
16888 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl;
16889 };
16890
16891
16892
16893#ifdef COBJMACROS
16894
16895
16896#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \
16897 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16898
16899#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \
16900 ( (This)->lpVtbl -> AddRef(This) )
16901
16902#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \
16903 ( (This)->lpVtbl -> Release(This) )
16904
16905
16906#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement) \
16907 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
16908
16909#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement) \
16910 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
16911
16912#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement) \
16913 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
16914
16915#endif /* COBJMACROS */
16916
16917
16918#endif /* C style interface */
16919
16920
16921
16922
16923#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
16924
16925
16926#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
16927#define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
16928
16929/* interface ID3D12DeviceRemovedExtendedDataSettings1 */
16930/* [unique][local][object][uuid] */
16931
16932
16933EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings1;
16934
16935#if defined(__cplusplus) && !defined(CINTERFACE)
16936
16937 MIDL_INTERFACE("DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B")
16938 ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
16939 {
16940 public:
16941 virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
16942 D3D12_DRED_ENABLEMENT Enablement) = 0;
16943
16944 };
16945
16946
16947#else /* C style interface */
16948
16949 typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl
16950 {
16951 BEGIN_INTERFACE
16952
16953 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16954 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16955 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16956 REFIID riid,
16957 _COM_Outptr_ void **ppvObject);
16958
16959 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16960 ULONG ( STDMETHODCALLTYPE *AddRef )(
16961 ID3D12DeviceRemovedExtendedDataSettings1 * This);
16962
16963 DECLSPEC_XFGVIRT(IUnknown, Release)
16964 ULONG ( STDMETHODCALLTYPE *Release )(
16965 ID3D12DeviceRemovedExtendedDataSettings1 * This);
16966
16967 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
16968 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
16969 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16970 D3D12_DRED_ENABLEMENT Enablement);
16971
16972 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
16973 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
16974 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16975 D3D12_DRED_ENABLEMENT Enablement);
16976
16977 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
16978 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
16979 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16980 D3D12_DRED_ENABLEMENT Enablement);
16981
16982 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
16983 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
16984 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16985 D3D12_DRED_ENABLEMENT Enablement);
16986
16987 END_INTERFACE
16988 } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
16989
16990 interface ID3D12DeviceRemovedExtendedDataSettings1
16991 {
16992 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl *lpVtbl;
16993 };
16994
16995
16996
16997#ifdef COBJMACROS
16998
16999
17000#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) \
17001 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17002
17003#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) \
17004 ( (This)->lpVtbl -> AddRef(This) )
17005
17006#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) \
17007 ( (This)->lpVtbl -> Release(This) )
17008
17009
17010#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement) \
17011 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
17012
17013#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement) \
17014 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
17015
17016#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement) \
17017 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
17018
17019
17020#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement) \
17021 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
17022
17023#endif /* COBJMACROS */
17024
17025
17026#endif /* C style interface */
17027
17028
17029
17030
17031#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
17032
17033
17034#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
17035#define __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
17036
17037/* interface ID3D12DeviceRemovedExtendedDataSettings2 */
17038/* [unique][local][object][uuid] */
17039
17040
17041EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings2;
17042
17043#if defined(__cplusplus) && !defined(CINTERFACE)
17044
17045 MIDL_INTERFACE("61552388-01ab-4008-a436-83db189566ea")
17046 ID3D12DeviceRemovedExtendedDataSettings2 : public ID3D12DeviceRemovedExtendedDataSettings1
17047 {
17048 public:
17049 virtual void STDMETHODCALLTYPE UseMarkersOnlyAutoBreadcrumbs(
17050 BOOL MarkersOnly) = 0;
17051
17052 };
17053
17054
17055#else /* C style interface */
17056
17057 typedef struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl
17058 {
17059 BEGIN_INTERFACE
17060
17061 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17062 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17063 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17064 REFIID riid,
17065 _COM_Outptr_ void **ppvObject);
17066
17067 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17068 ULONG ( STDMETHODCALLTYPE *AddRef )(
17069 ID3D12DeviceRemovedExtendedDataSettings2 * This);
17070
17071 DECLSPEC_XFGVIRT(IUnknown, Release)
17072 ULONG ( STDMETHODCALLTYPE *Release )(
17073 ID3D12DeviceRemovedExtendedDataSettings2 * This);
17074
17075 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
17076 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
17077 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17078 D3D12_DRED_ENABLEMENT Enablement);
17079
17080 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
17081 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
17082 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17083 D3D12_DRED_ENABLEMENT Enablement);
17084
17085 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
17086 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
17087 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17088 D3D12_DRED_ENABLEMENT Enablement);
17089
17090 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
17091 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
17092 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17093 D3D12_DRED_ENABLEMENT Enablement);
17094
17095 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings2, UseMarkersOnlyAutoBreadcrumbs)
17096 void ( STDMETHODCALLTYPE *UseMarkersOnlyAutoBreadcrumbs )(
17097 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17098 BOOL MarkersOnly);
17099
17100 END_INTERFACE
17101 } ID3D12DeviceRemovedExtendedDataSettings2Vtbl;
17102
17103 interface ID3D12DeviceRemovedExtendedDataSettings2
17104 {
17105 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl *lpVtbl;
17106 };
17107
17108
17109
17110#ifdef COBJMACROS
17111
17112
17113#define ID3D12DeviceRemovedExtendedDataSettings2_QueryInterface(This,riid,ppvObject) \
17114 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17115
17116#define ID3D12DeviceRemovedExtendedDataSettings2_AddRef(This) \
17117 ( (This)->lpVtbl -> AddRef(This) )
17118
17119#define ID3D12DeviceRemovedExtendedDataSettings2_Release(This) \
17120 ( (This)->lpVtbl -> Release(This) )
17121
17122
17123#define ID3D12DeviceRemovedExtendedDataSettings2_SetAutoBreadcrumbsEnablement(This,Enablement) \
17124 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
17125
17126#define ID3D12DeviceRemovedExtendedDataSettings2_SetPageFaultEnablement(This,Enablement) \
17127 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
17128
17129#define ID3D12DeviceRemovedExtendedDataSettings2_SetWatsonDumpEnablement(This,Enablement) \
17130 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
17131
17132
17133#define ID3D12DeviceRemovedExtendedDataSettings2_SetBreadcrumbContextEnablement(This,Enablement) \
17134 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
17135
17136
17137#define ID3D12DeviceRemovedExtendedDataSettings2_UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) \
17138 ( (This)->lpVtbl -> UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) )
17139
17140#endif /* COBJMACROS */
17141
17142
17143#endif /* C style interface */
17144
17145
17146
17147
17148#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__ */
17149
17150
17151#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
17152#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
17153
17154/* interface ID3D12DeviceRemovedExtendedData */
17155/* [unique][local][object][uuid] */
17156
17157
17158EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData;
17159
17160#if defined(__cplusplus) && !defined(CINTERFACE)
17161
17162 MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71")
17163 ID3D12DeviceRemovedExtendedData : public IUnknown
17164 {
17165 public:
17166 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
17167 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0;
17168
17169 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
17170 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0;
17171
17172 };
17173
17174
17175#else /* C style interface */
17176
17177 typedef struct ID3D12DeviceRemovedExtendedDataVtbl
17178 {
17179 BEGIN_INTERFACE
17180
17181 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17182 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17183 ID3D12DeviceRemovedExtendedData * This,
17184 REFIID riid,
17185 _COM_Outptr_ void **ppvObject);
17186
17187 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17188 ULONG ( STDMETHODCALLTYPE *AddRef )(
17189 ID3D12DeviceRemovedExtendedData * This);
17190
17191 DECLSPEC_XFGVIRT(IUnknown, Release)
17192 ULONG ( STDMETHODCALLTYPE *Release )(
17193 ID3D12DeviceRemovedExtendedData * This);
17194
17195 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17196 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17197 ID3D12DeviceRemovedExtendedData * This,
17198 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17199
17200 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17201 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17202 ID3D12DeviceRemovedExtendedData * This,
17203 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17204
17205 END_INTERFACE
17206 } ID3D12DeviceRemovedExtendedDataVtbl;
17207
17208 interface ID3D12DeviceRemovedExtendedData
17209 {
17210 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl;
17211 };
17212
17213
17214
17215#ifdef COBJMACROS
17216
17217
17218#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \
17219 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17220
17221#define ID3D12DeviceRemovedExtendedData_AddRef(This) \
17222 ( (This)->lpVtbl -> AddRef(This) )
17223
17224#define ID3D12DeviceRemovedExtendedData_Release(This) \
17225 ( (This)->lpVtbl -> Release(This) )
17226
17227
17228#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \
17229 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17230
17231#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \
17232 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17233
17234#endif /* COBJMACROS */
17235
17236
17237#endif /* C style interface */
17238
17239
17240
17241
17242#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
17243
17244
17245#ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
17246#define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
17247
17248/* interface ID3D12DeviceRemovedExtendedData1 */
17249/* [unique][local][object][uuid] */
17250
17251
17252EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData1;
17253
17254#if defined(__cplusplus) && !defined(CINTERFACE)
17255
17256 MIDL_INTERFACE("9727A022-CF1D-4DDA-9EBA-EFFA653FC506")
17257 ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
17258 {
17259 public:
17260 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
17261 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput) = 0;
17262
17263 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
17264 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput) = 0;
17265
17266 };
17267
17268
17269#else /* C style interface */
17270
17271 typedef struct ID3D12DeviceRemovedExtendedData1Vtbl
17272 {
17273 BEGIN_INTERFACE
17274
17275 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17276 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17277 ID3D12DeviceRemovedExtendedData1 * This,
17278 REFIID riid,
17279 _COM_Outptr_ void **ppvObject);
17280
17281 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17282 ULONG ( STDMETHODCALLTYPE *AddRef )(
17283 ID3D12DeviceRemovedExtendedData1 * This);
17284
17285 DECLSPEC_XFGVIRT(IUnknown, Release)
17286 ULONG ( STDMETHODCALLTYPE *Release )(
17287 ID3D12DeviceRemovedExtendedData1 * This);
17288
17289 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17290 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17291 ID3D12DeviceRemovedExtendedData1 * This,
17292 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17293
17294 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17295 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17296 ID3D12DeviceRemovedExtendedData1 * This,
17297 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17298
17299 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
17300 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
17301 ID3D12DeviceRemovedExtendedData1 * This,
17302 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
17303
17304 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
17305 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
17306 ID3D12DeviceRemovedExtendedData1 * This,
17307 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
17308
17309 END_INTERFACE
17310 } ID3D12DeviceRemovedExtendedData1Vtbl;
17311
17312 interface ID3D12DeviceRemovedExtendedData1
17313 {
17314 CONST_VTBL struct ID3D12DeviceRemovedExtendedData1Vtbl *lpVtbl;
17315 };
17316
17317
17318
17319#ifdef COBJMACROS
17320
17321
17322#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) \
17323 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17324
17325#define ID3D12DeviceRemovedExtendedData1_AddRef(This) \
17326 ( (This)->lpVtbl -> AddRef(This) )
17327
17328#define ID3D12DeviceRemovedExtendedData1_Release(This) \
17329 ( (This)->lpVtbl -> Release(This) )
17330
17331
17332#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput) \
17333 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17334
17335#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput) \
17336 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17337
17338
17339#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput) \
17340 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
17341
17342#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput) \
17343 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
17344
17345#endif /* COBJMACROS */
17346
17347
17348#endif /* C style interface */
17349
17350
17351
17352
17353#endif /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
17354
17355
17356#ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
17357#define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
17358
17359/* interface ID3D12DeviceRemovedExtendedData2 */
17360/* [unique][local][object][uuid] */
17361
17362
17363EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
17364
17365#if defined(__cplusplus) && !defined(CINTERFACE)
17366
17367 MIDL_INTERFACE("67FC5816-E4CA-4915-BF18-42541272DA54")
17368 ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
17369 {
17370 public:
17371 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
17372 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput) = 0;
17373
17374 virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState( void) = 0;
17375
17376 };
17377
17378
17379#else /* C style interface */
17380
17381 typedef struct ID3D12DeviceRemovedExtendedData2Vtbl
17382 {
17383 BEGIN_INTERFACE
17384
17385 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17386 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17387 ID3D12DeviceRemovedExtendedData2 * This,
17388 REFIID riid,
17389 _COM_Outptr_ void **ppvObject);
17390
17391 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17392 ULONG ( STDMETHODCALLTYPE *AddRef )(
17393 ID3D12DeviceRemovedExtendedData2 * This);
17394
17395 DECLSPEC_XFGVIRT(IUnknown, Release)
17396 ULONG ( STDMETHODCALLTYPE *Release )(
17397 ID3D12DeviceRemovedExtendedData2 * This);
17398
17399 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17400 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17401 ID3D12DeviceRemovedExtendedData2 * This,
17402 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17403
17404 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17405 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17406 ID3D12DeviceRemovedExtendedData2 * This,
17407 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17408
17409 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
17410 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
17411 ID3D12DeviceRemovedExtendedData2 * This,
17412 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
17413
17414 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
17415 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
17416 ID3D12DeviceRemovedExtendedData2 * This,
17417 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
17418
17419 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetPageFaultAllocationOutput2)
17420 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput2 )(
17421 ID3D12DeviceRemovedExtendedData2 * This,
17422 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
17423
17424 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetDeviceState)
17425 D3D12_DRED_DEVICE_STATE ( STDMETHODCALLTYPE *GetDeviceState )(
17426 ID3D12DeviceRemovedExtendedData2 * This);
17427
17428 END_INTERFACE
17429 } ID3D12DeviceRemovedExtendedData2Vtbl;
17430
17431 interface ID3D12DeviceRemovedExtendedData2
17432 {
17433 CONST_VTBL struct ID3D12DeviceRemovedExtendedData2Vtbl *lpVtbl;
17434 };
17435
17436
17437
17438#ifdef COBJMACROS
17439
17440
17441#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) \
17442 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17443
17444#define ID3D12DeviceRemovedExtendedData2_AddRef(This) \
17445 ( (This)->lpVtbl -> AddRef(This) )
17446
17447#define ID3D12DeviceRemovedExtendedData2_Release(This) \
17448 ( (This)->lpVtbl -> Release(This) )
17449
17450
17451#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput) \
17452 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17453
17454#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput) \
17455 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17456
17457
17458#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput) \
17459 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
17460
17461#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput) \
17462 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
17463
17464
17465#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput) \
17466 ( (This)->lpVtbl -> GetPageFaultAllocationOutput2(This,pOutput) )
17467
17468#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) \
17469 ( (This)->lpVtbl -> GetDeviceState(This) )
17470
17471#endif /* COBJMACROS */
17472
17473
17474#endif /* C style interface */
17475
17476
17477
17478
17479#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
17480
17481
17482/* interface __MIDL_itf_d3d12_0000_0046 */
17483/* [local] */
17484
17485typedef
17486enum D3D12_BACKGROUND_PROCESSING_MODE
17487 {
17488 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0,
17489 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
17490 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
17491 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
17492 } D3D12_BACKGROUND_PROCESSING_MODE;
17493
17494typedef
17495enum D3D12_MEASUREMENTS_ACTION
17496 {
17497 D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0,
17498 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
17499 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
17500 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
17501 } D3D12_MEASUREMENTS_ACTION;
17502
17503
17504
17505extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_c_ifspec;
17506extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_s_ifspec;
17507
17508#ifndef __ID3D12Device6_INTERFACE_DEFINED__
17509#define __ID3D12Device6_INTERFACE_DEFINED__
17510
17511/* interface ID3D12Device6 */
17512/* [unique][local][object][uuid] */
17513
17514
17515EXTERN_C const IID IID_ID3D12Device6;
17516
17517#if defined(__cplusplus) && !defined(CINTERFACE)
17518
17519 MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
17520 ID3D12Device6 : public ID3D12Device5
17521 {
17522 public:
17523 virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
17524 D3D12_BACKGROUND_PROCESSING_MODE Mode,
17525 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
17526 _In_opt_ HANDLE hEventToSignalUponCompletion,
17527 _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0;
17528
17529 };
17530
17531
17532#else /* C style interface */
17533
17534 typedef struct ID3D12Device6Vtbl
17535 {
17536 BEGIN_INTERFACE
17537
17538 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17539 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17540 ID3D12Device6 * This,
17541 REFIID riid,
17542 _COM_Outptr_ void **ppvObject);
17543
17544 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17545 ULONG ( STDMETHODCALLTYPE *AddRef )(
17546 ID3D12Device6 * This);
17547
17548 DECLSPEC_XFGVIRT(IUnknown, Release)
17549 ULONG ( STDMETHODCALLTYPE *Release )(
17550 ID3D12Device6 * This);
17551
17552 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17553 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17554 ID3D12Device6 * This,
17555 _In_ REFGUID guid,
17556 _Inout_ UINT *pDataSize,
17557 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17558
17559 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17560 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17561 ID3D12Device6 * This,
17562 _In_ REFGUID guid,
17563 _In_ UINT DataSize,
17564 _In_reads_bytes_opt_( DataSize ) const void *pData);
17565
17566 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17567 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17568 ID3D12Device6 * This,
17569 _In_ REFGUID guid,
17570 _In_opt_ const IUnknown *pData);
17571
17572 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17573 HRESULT ( STDMETHODCALLTYPE *SetName )(
17574 ID3D12Device6 * This,
17575 _In_z_ LPCWSTR Name);
17576
17577 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
17578 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
17579 ID3D12Device6 * This);
17580
17581 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
17582 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
17583 ID3D12Device6 * This,
17584 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
17585 REFIID riid,
17586 _COM_Outptr_ void **ppCommandQueue);
17587
17588 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
17589 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
17590 ID3D12Device6 * This,
17591 _In_ D3D12_COMMAND_LIST_TYPE type,
17592 REFIID riid,
17593 _COM_Outptr_ void **ppCommandAllocator);
17594
17595 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
17596 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
17597 ID3D12Device6 * This,
17598 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
17599 REFIID riid,
17600 _COM_Outptr_ void **ppPipelineState);
17601
17602 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
17603 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
17604 ID3D12Device6 * This,
17605 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
17606 REFIID riid,
17607 _COM_Outptr_ void **ppPipelineState);
17608
17609 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
17610 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
17611 ID3D12Device6 * This,
17612 _In_ UINT nodeMask,
17613 _In_ D3D12_COMMAND_LIST_TYPE type,
17614 _In_ ID3D12CommandAllocator *pCommandAllocator,
17615 _In_opt_ ID3D12PipelineState *pInitialState,
17616 REFIID riid,
17617 _COM_Outptr_ void **ppCommandList);
17618
17619 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
17620 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
17621 ID3D12Device6 * This,
17622 D3D12_FEATURE Feature,
17623 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
17624 UINT FeatureSupportDataSize);
17625
17626 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
17627 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
17628 ID3D12Device6 * This,
17629 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
17630 REFIID riid,
17631 _COM_Outptr_ void **ppvHeap);
17632
17633 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
17634 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
17635 ID3D12Device6 * This,
17636 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
17637
17638 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
17639 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
17640 ID3D12Device6 * This,
17641 _In_ UINT nodeMask,
17642 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
17643 _In_ SIZE_T blobLengthInBytes,
17644 REFIID riid,
17645 _COM_Outptr_ void **ppvRootSignature);
17646
17647 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
17648 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
17649 ID3D12Device6 * This,
17650 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
17651 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17652
17653 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
17654 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
17655 ID3D12Device6 * This,
17656 _In_opt_ ID3D12Resource *pResource,
17657 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
17658 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17659
17660 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
17661 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
17662 ID3D12Device6 * This,
17663 _In_opt_ ID3D12Resource *pResource,
17664 _In_opt_ ID3D12Resource *pCounterResource,
17665 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
17666 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17667
17668 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
17669 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
17670 ID3D12Device6 * This,
17671 _In_opt_ ID3D12Resource *pResource,
17672 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
17673 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17674
17675 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
17676 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
17677 ID3D12Device6 * This,
17678 _In_opt_ ID3D12Resource *pResource,
17679 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
17680 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17681
17682 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
17683 void ( STDMETHODCALLTYPE *CreateSampler )(
17684 ID3D12Device6 * This,
17685 _In_ const D3D12_SAMPLER_DESC *pDesc,
17686 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17687
17688 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
17689 void ( STDMETHODCALLTYPE *CopyDescriptors )(
17690 ID3D12Device6 * This,
17691 _In_ UINT NumDestDescriptorRanges,
17692 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
17693 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
17694 _In_ UINT NumSrcDescriptorRanges,
17695 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
17696 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
17697 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
17698
17699 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
17700 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
17701 ID3D12Device6 * This,
17702 _In_ UINT NumDescriptors,
17703 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
17704 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
17705 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
17706
17707 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
17708#if !defined(_WIN32)
17709 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
17710 ID3D12Device6 * This,
17711 _In_ UINT visibleMask,
17712 _In_ UINT numResourceDescs,
17713 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
17714
17715#else
17716 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
17717 ID3D12Device6 * This,
17718 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17719 _In_ UINT visibleMask,
17720 _In_ UINT numResourceDescs,
17721 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
17722
17723#endif
17724
17725 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
17726#if !defined(_WIN32)
17727 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
17728 ID3D12Device6 * This,
17729 _In_ UINT nodeMask,
17730 D3D12_HEAP_TYPE heapType);
17731
17732#else
17733 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
17734 ID3D12Device6 * This,
17735 D3D12_HEAP_PROPERTIES * RetVal,
17736 _In_ UINT nodeMask,
17737 D3D12_HEAP_TYPE heapType);
17738
17739#endif
17740
17741 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
17742 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
17743 ID3D12Device6 * This,
17744 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17745 D3D12_HEAP_FLAGS HeapFlags,
17746 _In_ const D3D12_RESOURCE_DESC *pDesc,
17747 D3D12_RESOURCE_STATES InitialResourceState,
17748 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17749 REFIID riidResource,
17750 _COM_Outptr_opt_ void **ppvResource);
17751
17752 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
17753 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
17754 ID3D12Device6 * This,
17755 _In_ const D3D12_HEAP_DESC *pDesc,
17756 REFIID riid,
17757 _COM_Outptr_opt_ void **ppvHeap);
17758
17759 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
17760 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
17761 ID3D12Device6 * This,
17762 _In_ ID3D12Heap *pHeap,
17763 UINT64 HeapOffset,
17764 _In_ const D3D12_RESOURCE_DESC *pDesc,
17765 D3D12_RESOURCE_STATES InitialState,
17766 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17767 REFIID riid,
17768 _COM_Outptr_opt_ void **ppvResource);
17769
17770 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
17771 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
17772 ID3D12Device6 * This,
17773 _In_ const D3D12_RESOURCE_DESC *pDesc,
17774 D3D12_RESOURCE_STATES InitialState,
17775 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17776 REFIID riid,
17777 _COM_Outptr_opt_ void **ppvResource);
17778
17779 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
17780 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
17781 ID3D12Device6 * This,
17782 _In_ ID3D12DeviceChild *pObject,
17783 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
17784 DWORD Access,
17785 _In_opt_ LPCWSTR Name,
17786 _Out_ HANDLE *pHandle);
17787
17788 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
17789 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
17790 ID3D12Device6 * This,
17791 _In_ HANDLE NTHandle,
17792 REFIID riid,
17793 _COM_Outptr_opt_ void **ppvObj);
17794
17795 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
17796 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
17797 ID3D12Device6 * This,
17798 _In_ LPCWSTR Name,
17799 DWORD Access,
17800 /* [annotation][out] */
17801 _Out_ HANDLE *pNTHandle);
17802
17803 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
17804 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
17805 ID3D12Device6 * This,
17806 UINT NumObjects,
17807 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
17808
17809 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
17810 HRESULT ( STDMETHODCALLTYPE *Evict )(
17811 ID3D12Device6 * This,
17812 UINT NumObjects,
17813 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
17814
17815 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
17816 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
17817 ID3D12Device6 * This,
17818 UINT64 InitialValue,
17819 D3D12_FENCE_FLAGS Flags,
17820 REFIID riid,
17821 _COM_Outptr_ void **ppFence);
17822
17823 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
17824 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
17825 ID3D12Device6 * This);
17826
17827 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
17828 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
17829 ID3D12Device6 * This,
17830 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
17831 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
17832 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
17833 UINT64 BaseOffset,
17834 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
17835 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
17836 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
17837 _Out_opt_ UINT64 *pTotalBytes);
17838
17839 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
17840 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
17841 ID3D12Device6 * This,
17842 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
17843 REFIID riid,
17844 _COM_Outptr_opt_ void **ppvHeap);
17845
17846 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
17847 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
17848 ID3D12Device6 * This,
17849 BOOL Enable);
17850
17851 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
17852 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
17853 ID3D12Device6 * This,
17854 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
17855 _In_opt_ ID3D12RootSignature *pRootSignature,
17856 REFIID riid,
17857 _COM_Outptr_opt_ void **ppvCommandSignature);
17858
17859 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
17860 void ( STDMETHODCALLTYPE *GetResourceTiling )(
17861 ID3D12Device6 * This,
17862 _In_ ID3D12Resource *pTiledResource,
17863 _Out_opt_ UINT *pNumTilesForEntireResource,
17864 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
17865 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
17866 _Inout_opt_ UINT *pNumSubresourceTilings,
17867 _In_ UINT FirstSubresourceTilingToGet,
17868 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
17869
17870 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
17871#if !defined(_WIN32)
17872 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
17873 ID3D12Device6 * This);
17874
17875#else
17876 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
17877 ID3D12Device6 * This,
17878 LUID * RetVal);
17879
17880#endif
17881
17882 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
17883 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
17884 ID3D12Device6 * This,
17885 _In_reads_(BlobLength) const void *pLibraryBlob,
17886 SIZE_T BlobLength,
17887 REFIID riid,
17888 _COM_Outptr_ void **ppPipelineLibrary);
17889
17890 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
17891 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
17892 ID3D12Device6 * This,
17893 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
17894 _In_reads_(NumFences) const UINT64 *pFenceValues,
17895 UINT NumFences,
17896 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
17897 HANDLE hEvent);
17898
17899 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
17900 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
17901 ID3D12Device6 * This,
17902 UINT NumObjects,
17903 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17904 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
17905
17906 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
17907 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
17908 ID3D12Device6 * This,
17909 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
17910 REFIID riid,
17911 _COM_Outptr_ void **ppPipelineState);
17912
17913 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
17914 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
17915 ID3D12Device6 * This,
17916 _In_ const void *pAddress,
17917 REFIID riid,
17918 _COM_Outptr_ void **ppvHeap);
17919
17920 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
17921 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
17922 ID3D12Device6 * This,
17923 _In_ HANDLE hFileMapping,
17924 REFIID riid,
17925 _COM_Outptr_ void **ppvHeap);
17926
17927 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
17928 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
17929 ID3D12Device6 * This,
17930 D3D12_RESIDENCY_FLAGS Flags,
17931 UINT NumObjects,
17932 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17933 _In_ ID3D12Fence *pFenceToSignal,
17934 UINT64 FenceValueToSignal);
17935
17936 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
17937 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
17938 ID3D12Device6 * This,
17939 _In_ UINT nodeMask,
17940 _In_ D3D12_COMMAND_LIST_TYPE type,
17941 _In_ D3D12_COMMAND_LIST_FLAGS flags,
17942 REFIID riid,
17943 _COM_Outptr_ void **ppCommandList);
17944
17945 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
17946 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
17947 ID3D12Device6 * This,
17948 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
17949 _In_ REFIID riid,
17950 _COM_Outptr_ void **ppSession);
17951
17952 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
17953 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
17954 ID3D12Device6 * This,
17955 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17956 D3D12_HEAP_FLAGS HeapFlags,
17957 _In_ const D3D12_RESOURCE_DESC *pDesc,
17958 D3D12_RESOURCE_STATES InitialResourceState,
17959 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17960 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17961 REFIID riidResource,
17962 _COM_Outptr_opt_ void **ppvResource);
17963
17964 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
17965 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
17966 ID3D12Device6 * This,
17967 _In_ const D3D12_HEAP_DESC *pDesc,
17968 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17969 REFIID riid,
17970 _COM_Outptr_opt_ void **ppvHeap);
17971
17972 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
17973 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
17974 ID3D12Device6 * This,
17975 _In_ const D3D12_RESOURCE_DESC *pDesc,
17976 D3D12_RESOURCE_STATES InitialState,
17977 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17978 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17979 REFIID riid,
17980 _COM_Outptr_opt_ void **ppvResource);
17981
17982 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
17983#if !defined(_WIN32)
17984 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17985 ID3D12Device6 * This,
17986 UINT visibleMask,
17987 UINT numResourceDescs,
17988 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17989 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17990
17991#else
17992 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17993 ID3D12Device6 * This,
17994 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17995 UINT visibleMask,
17996 UINT numResourceDescs,
17997 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17998 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17999
18000#endif
18001
18002 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
18003 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
18004 ID3D12Device6 * This,
18005 _In_ ID3D12LifetimeOwner *pOwner,
18006 REFIID riid,
18007 _COM_Outptr_ void **ppvTracker);
18008
18009 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
18010 void ( STDMETHODCALLTYPE *RemoveDevice )(
18011 ID3D12Device6 * This);
18012
18013 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
18014 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
18015 ID3D12Device6 * This,
18016 _Inout_ UINT *pNumMetaCommands,
18017 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
18018
18019 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
18020 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
18021 ID3D12Device6 * This,
18022 _In_ REFGUID CommandId,
18023 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18024 _Out_opt_ UINT *pTotalStructureSizeInBytes,
18025 _Inout_ UINT *pParameterCount,
18026 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
18027
18028 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
18029 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
18030 ID3D12Device6 * This,
18031 _In_ REFGUID CommandId,
18032 _In_ UINT NodeMask,
18033 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
18034 _In_ SIZE_T CreationParametersDataSizeInBytes,
18035 REFIID riid,
18036 _COM_Outptr_ void **ppMetaCommand);
18037
18038 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
18039 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
18040 ID3D12Device6 * This,
18041 const D3D12_STATE_OBJECT_DESC *pDesc,
18042 REFIID riid,
18043 _COM_Outptr_ void **ppStateObject);
18044
18045 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
18046 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
18047 ID3D12Device6 * This,
18048 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
18049 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
18050
18051 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
18052 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
18053 ID3D12Device6 * This,
18054 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
18055 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
18056
18057 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
18058 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
18059 ID3D12Device6 * This,
18060 D3D12_BACKGROUND_PROCESSING_MODE Mode,
18061 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
18062 _In_opt_ HANDLE hEventToSignalUponCompletion,
18063 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
18064
18065 END_INTERFACE
18066 } ID3D12Device6Vtbl;
18067
18068 interface ID3D12Device6
18069 {
18070 CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl;
18071 };
18072
18073
18074
18075#ifdef COBJMACROS
18076
18077
18078#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \
18079 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18080
18081#define ID3D12Device6_AddRef(This) \
18082 ( (This)->lpVtbl -> AddRef(This) )
18083
18084#define ID3D12Device6_Release(This) \
18085 ( (This)->lpVtbl -> Release(This) )
18086
18087
18088#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \
18089 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18090
18091#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \
18092 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18093
18094#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \
18095 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18096
18097#define ID3D12Device6_SetName(This,Name) \
18098 ( (This)->lpVtbl -> SetName(This,Name) )
18099
18100
18101#define ID3D12Device6_GetNodeCount(This) \
18102 ( (This)->lpVtbl -> GetNodeCount(This) )
18103
18104#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
18105 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
18106
18107#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
18108 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
18109
18110#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
18111 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
18112
18113#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
18114 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
18115
18116#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
18117 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
18118
18119#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
18120 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
18121
18122#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
18123 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
18124
18125#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
18126 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
18127
18128#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
18129 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
18130
18131#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \
18132 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
18133
18134#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
18135 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
18136
18137#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
18138 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
18139
18140#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
18141 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
18142
18143#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
18144 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
18145
18146#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \
18147 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
18148
18149#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
18150 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
18151
18152#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
18153 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
18154#if !defined(_WIN32)
18155
18156#define ID3D12Device6_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
18157 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
18158#else
18159#define ID3D12Device6_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
18160 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
18161#endif
18162#if !defined(_WIN32)
18163
18164#define ID3D12Device6_GetCustomHeapProperties(This,nodeMask,heapType) \
18165 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
18166#else
18167#define ID3D12Device6_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
18168 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
18169#endif
18170
18171#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
18172 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
18173
18174#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \
18175 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
18176
18177#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
18178 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
18179
18180#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
18181 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
18182
18183#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
18184 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
18185
18186#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
18187 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
18188
18189#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
18190 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
18191
18192#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \
18193 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
18194
18195#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \
18196 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
18197
18198#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \
18199 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
18200
18201#define ID3D12Device6_GetDeviceRemovedReason(This) \
18202 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
18203
18204#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
18205 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
18206
18207#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
18208 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
18209
18210#define ID3D12Device6_SetStablePowerState(This,Enable) \
18211 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
18212
18213#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
18214 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
18215
18216#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
18217 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
18218#if !defined(_WIN32)
18219
18220#define ID3D12Device6_GetAdapterLuid(This) \
18221 ( (This)->lpVtbl -> GetAdapterLuid(This) )
18222#else
18223#define ID3D12Device6_GetAdapterLuid(This,RetVal) \
18224 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
18225#endif
18226
18227
18228#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
18229 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
18230
18231#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
18232 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
18233
18234#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
18235 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
18236
18237
18238#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
18239 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
18240
18241
18242#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
18243 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
18244
18245#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
18246 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
18247
18248#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
18249 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
18250
18251
18252#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
18253 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
18254
18255#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
18256 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
18257
18258#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
18259 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
18260
18261#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
18262 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
18263
18264#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
18265 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
18266#if !defined(_WIN32)
18267
18268#define ID3D12Device6_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
18269 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
18270#else
18271#define ID3D12Device6_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
18272 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
18273#endif
18274
18275
18276#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
18277 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
18278
18279#define ID3D12Device6_RemoveDevice(This) \
18280 ( (This)->lpVtbl -> RemoveDevice(This) )
18281
18282#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
18283 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
18284
18285#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
18286 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
18287
18288#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
18289 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
18290
18291#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \
18292 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
18293
18294#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
18295 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
18296
18297#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
18298 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
18299
18300
18301#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
18302 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
18303
18304#endif /* COBJMACROS */
18305
18306
18307#endif /* C style interface */
18308
18309
18310
18311
18312#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
18313
18314
18315/* interface __MIDL_itf_d3d12_0000_0047 */
18316/* [local] */
18317
18318DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
18319typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
18320 {
18321 UINT NodeIndex;
18322 UINT Count;
18323 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
18324
18325typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
18326 {
18327 UINT NodeIndex;
18328 UINT Count;
18329 GUID *pTypes;
18330 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
18331
18332typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
18333 {
18334 UINT NodeMask;
18335 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
18336 GUID ProtectionType;
18337 } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
18338
18339
18340
18341extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_c_ifspec;
18342extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_s_ifspec;
18343
18344#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
18345#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
18346
18347/* interface ID3D12ProtectedResourceSession1 */
18348/* [unique][local][object][uuid] */
18349
18350
18351EXTERN_C const IID IID_ID3D12ProtectedResourceSession1;
18352
18353#if defined(__cplusplus) && !defined(CINTERFACE)
18354
18355 MIDL_INTERFACE("D6F12DD6-76FB-406E-8961-4296EEFC0409")
18356 ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
18357 {
18358 public:
18359#if defined(_MSC_VER) || !defined(_WIN32)
18360 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
18361#else
18362 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *STDMETHODCALLTYPE GetDesc1(
18363 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal) = 0;
18364#endif
18365
18366 };
18367
18368
18369#else /* C style interface */
18370
18371 typedef struct ID3D12ProtectedResourceSession1Vtbl
18372 {
18373 BEGIN_INTERFACE
18374
18375 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18376 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18377 ID3D12ProtectedResourceSession1 * This,
18378 REFIID riid,
18379 _COM_Outptr_ void **ppvObject);
18380
18381 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18382 ULONG ( STDMETHODCALLTYPE *AddRef )(
18383 ID3D12ProtectedResourceSession1 * This);
18384
18385 DECLSPEC_XFGVIRT(IUnknown, Release)
18386 ULONG ( STDMETHODCALLTYPE *Release )(
18387 ID3D12ProtectedResourceSession1 * This);
18388
18389 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18390 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18391 ID3D12ProtectedResourceSession1 * This,
18392 _In_ REFGUID guid,
18393 _Inout_ UINT *pDataSize,
18394 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18395
18396 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18397 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18398 ID3D12ProtectedResourceSession1 * This,
18399 _In_ REFGUID guid,
18400 _In_ UINT DataSize,
18401 _In_reads_bytes_opt_( DataSize ) const void *pData);
18402
18403 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18404 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18405 ID3D12ProtectedResourceSession1 * This,
18406 _In_ REFGUID guid,
18407 _In_opt_ const IUnknown *pData);
18408
18409 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18410 HRESULT ( STDMETHODCALLTYPE *SetName )(
18411 ID3D12ProtectedResourceSession1 * This,
18412 _In_z_ LPCWSTR Name);
18413
18414 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18415 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18416 ID3D12ProtectedResourceSession1 * This,
18417 REFIID riid,
18418 _COM_Outptr_opt_ void **ppvDevice);
18419
18420 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
18421 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
18422 ID3D12ProtectedResourceSession1 * This,
18423 REFIID riid,
18424 _COM_Outptr_opt_ void **ppFence);
18425
18426 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
18427 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
18428 ID3D12ProtectedResourceSession1 * This);
18429
18430 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
18431#if !defined(_WIN32)
18432 D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
18433 ID3D12ProtectedResourceSession1 * This);
18434
18435#else
18436 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
18437 ID3D12ProtectedResourceSession1 * This,
18438 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
18439
18440#endif
18441
18442 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession1, GetDesc1)
18443#if !defined(_WIN32)
18444 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
18445 ID3D12ProtectedResourceSession1 * This);
18446
18447#else
18448 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
18449 ID3D12ProtectedResourceSession1 * This,
18450 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal);
18451
18452#endif
18453
18454 END_INTERFACE
18455 } ID3D12ProtectedResourceSession1Vtbl;
18456
18457 interface ID3D12ProtectedResourceSession1
18458 {
18459 CONST_VTBL struct ID3D12ProtectedResourceSession1Vtbl *lpVtbl;
18460 };
18461
18462
18463
18464#ifdef COBJMACROS
18465
18466
18467#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) \
18468 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18469
18470#define ID3D12ProtectedResourceSession1_AddRef(This) \
18471 ( (This)->lpVtbl -> AddRef(This) )
18472
18473#define ID3D12ProtectedResourceSession1_Release(This) \
18474 ( (This)->lpVtbl -> Release(This) )
18475
18476
18477#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData) \
18478 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18479
18480#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData) \
18481 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18482
18483#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData) \
18484 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18485
18486#define ID3D12ProtectedResourceSession1_SetName(This,Name) \
18487 ( (This)->lpVtbl -> SetName(This,Name) )
18488
18489
18490#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice) \
18491 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18492
18493
18494#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence) \
18495 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
18496
18497#define ID3D12ProtectedResourceSession1_GetSessionStatus(This) \
18498 ( (This)->lpVtbl -> GetSessionStatus(This) )
18499
18500#if !defined(_WIN32)
18501
18502#define ID3D12ProtectedResourceSession1_GetDesc(This) \
18503 ( (This)->lpVtbl -> GetDesc(This) )
18504#else
18505#define ID3D12ProtectedResourceSession1_GetDesc(This,RetVal) \
18506 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
18507#endif
18508
18509#if !defined(_WIN32)
18510
18511#define ID3D12ProtectedResourceSession1_GetDesc1(This) \
18512 ( (This)->lpVtbl -> GetDesc1(This) )
18513#else
18514#define ID3D12ProtectedResourceSession1_GetDesc1(This,RetVal) \
18515 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
18516#endif
18517
18518#endif /* COBJMACROS */
18519
18520
18521#endif /* C style interface */
18522
18523
18524
18525
18526#endif /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
18527
18528
18529#ifndef __ID3D12Device7_INTERFACE_DEFINED__
18530#define __ID3D12Device7_INTERFACE_DEFINED__
18531
18532/* interface ID3D12Device7 */
18533/* [unique][local][object][uuid] */
18534
18535
18536EXTERN_C const IID IID_ID3D12Device7;
18537
18538#if defined(__cplusplus) && !defined(CINTERFACE)
18539
18540 MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
18541 ID3D12Device7 : public ID3D12Device6
18542 {
18543 public:
18544 virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
18545 const D3D12_STATE_OBJECT_DESC *pAddition,
18546 ID3D12StateObject *pStateObjectToGrowFrom,
18547 REFIID riid,
18548 _COM_Outptr_ void **ppNewStateObject) = 0;
18549
18550 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
18551 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
18552 _In_ REFIID riid,
18553 _COM_Outptr_ void **ppSession) = 0;
18554
18555 };
18556
18557
18558#else /* C style interface */
18559
18560 typedef struct ID3D12Device7Vtbl
18561 {
18562 BEGIN_INTERFACE
18563
18564 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18565 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18566 ID3D12Device7 * This,
18567 REFIID riid,
18568 _COM_Outptr_ void **ppvObject);
18569
18570 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18571 ULONG ( STDMETHODCALLTYPE *AddRef )(
18572 ID3D12Device7 * This);
18573
18574 DECLSPEC_XFGVIRT(IUnknown, Release)
18575 ULONG ( STDMETHODCALLTYPE *Release )(
18576 ID3D12Device7 * This);
18577
18578 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18579 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18580 ID3D12Device7 * This,
18581 _In_ REFGUID guid,
18582 _Inout_ UINT *pDataSize,
18583 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18584
18585 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18586 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18587 ID3D12Device7 * This,
18588 _In_ REFGUID guid,
18589 _In_ UINT DataSize,
18590 _In_reads_bytes_opt_( DataSize ) const void *pData);
18591
18592 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18593 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18594 ID3D12Device7 * This,
18595 _In_ REFGUID guid,
18596 _In_opt_ const IUnknown *pData);
18597
18598 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18599 HRESULT ( STDMETHODCALLTYPE *SetName )(
18600 ID3D12Device7 * This,
18601 _In_z_ LPCWSTR Name);
18602
18603 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
18604 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
18605 ID3D12Device7 * This);
18606
18607 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
18608 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
18609 ID3D12Device7 * This,
18610 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
18611 REFIID riid,
18612 _COM_Outptr_ void **ppCommandQueue);
18613
18614 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
18615 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
18616 ID3D12Device7 * This,
18617 _In_ D3D12_COMMAND_LIST_TYPE type,
18618 REFIID riid,
18619 _COM_Outptr_ void **ppCommandAllocator);
18620
18621 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
18622 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
18623 ID3D12Device7 * This,
18624 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
18625 REFIID riid,
18626 _COM_Outptr_ void **ppPipelineState);
18627
18628 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
18629 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
18630 ID3D12Device7 * This,
18631 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
18632 REFIID riid,
18633 _COM_Outptr_ void **ppPipelineState);
18634
18635 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
18636 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
18637 ID3D12Device7 * This,
18638 _In_ UINT nodeMask,
18639 _In_ D3D12_COMMAND_LIST_TYPE type,
18640 _In_ ID3D12CommandAllocator *pCommandAllocator,
18641 _In_opt_ ID3D12PipelineState *pInitialState,
18642 REFIID riid,
18643 _COM_Outptr_ void **ppCommandList);
18644
18645 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
18646 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
18647 ID3D12Device7 * This,
18648 D3D12_FEATURE Feature,
18649 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
18650 UINT FeatureSupportDataSize);
18651
18652 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
18653 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
18654 ID3D12Device7 * This,
18655 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
18656 REFIID riid,
18657 _COM_Outptr_ void **ppvHeap);
18658
18659 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
18660 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
18661 ID3D12Device7 * This,
18662 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
18663
18664 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
18665 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
18666 ID3D12Device7 * This,
18667 _In_ UINT nodeMask,
18668 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
18669 _In_ SIZE_T blobLengthInBytes,
18670 REFIID riid,
18671 _COM_Outptr_ void **ppvRootSignature);
18672
18673 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
18674 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
18675 ID3D12Device7 * This,
18676 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
18677 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18678
18679 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
18680 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
18681 ID3D12Device7 * This,
18682 _In_opt_ ID3D12Resource *pResource,
18683 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
18684 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18685
18686 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
18687 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
18688 ID3D12Device7 * This,
18689 _In_opt_ ID3D12Resource *pResource,
18690 _In_opt_ ID3D12Resource *pCounterResource,
18691 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
18692 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18693
18694 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
18695 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
18696 ID3D12Device7 * This,
18697 _In_opt_ ID3D12Resource *pResource,
18698 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
18699 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18700
18701 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
18702 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
18703 ID3D12Device7 * This,
18704 _In_opt_ ID3D12Resource *pResource,
18705 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
18706 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18707
18708 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
18709 void ( STDMETHODCALLTYPE *CreateSampler )(
18710 ID3D12Device7 * This,
18711 _In_ const D3D12_SAMPLER_DESC *pDesc,
18712 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18713
18714 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
18715 void ( STDMETHODCALLTYPE *CopyDescriptors )(
18716 ID3D12Device7 * This,
18717 _In_ UINT NumDestDescriptorRanges,
18718 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
18719 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
18720 _In_ UINT NumSrcDescriptorRanges,
18721 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
18722 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
18723 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
18724
18725 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
18726 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
18727 ID3D12Device7 * This,
18728 _In_ UINT NumDescriptors,
18729 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
18730 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
18731 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
18732
18733 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
18734#if !defined(_WIN32)
18735 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
18736 ID3D12Device7 * This,
18737 _In_ UINT visibleMask,
18738 _In_ UINT numResourceDescs,
18739 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
18740
18741#else
18742 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
18743 ID3D12Device7 * This,
18744 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
18745 _In_ UINT visibleMask,
18746 _In_ UINT numResourceDescs,
18747 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
18748
18749#endif
18750
18751 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
18752#if !defined(_WIN32)
18753 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
18754 ID3D12Device7 * This,
18755 _In_ UINT nodeMask,
18756 D3D12_HEAP_TYPE heapType);
18757
18758#else
18759 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
18760 ID3D12Device7 * This,
18761 D3D12_HEAP_PROPERTIES * RetVal,
18762 _In_ UINT nodeMask,
18763 D3D12_HEAP_TYPE heapType);
18764
18765#endif
18766
18767 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
18768 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
18769 ID3D12Device7 * This,
18770 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
18771 D3D12_HEAP_FLAGS HeapFlags,
18772 _In_ const D3D12_RESOURCE_DESC *pDesc,
18773 D3D12_RESOURCE_STATES InitialResourceState,
18774 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18775 REFIID riidResource,
18776 _COM_Outptr_opt_ void **ppvResource);
18777
18778 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
18779 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
18780 ID3D12Device7 * This,
18781 _In_ const D3D12_HEAP_DESC *pDesc,
18782 REFIID riid,
18783 _COM_Outptr_opt_ void **ppvHeap);
18784
18785 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
18786 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
18787 ID3D12Device7 * This,
18788 _In_ ID3D12Heap *pHeap,
18789 UINT64 HeapOffset,
18790 _In_ const D3D12_RESOURCE_DESC *pDesc,
18791 D3D12_RESOURCE_STATES InitialState,
18792 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18793 REFIID riid,
18794 _COM_Outptr_opt_ void **ppvResource);
18795
18796 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
18797 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
18798 ID3D12Device7 * This,
18799 _In_ const D3D12_RESOURCE_DESC *pDesc,
18800 D3D12_RESOURCE_STATES InitialState,
18801 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18802 REFIID riid,
18803 _COM_Outptr_opt_ void **ppvResource);
18804
18805 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
18806 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
18807 ID3D12Device7 * This,
18808 _In_ ID3D12DeviceChild *pObject,
18809 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
18810 DWORD Access,
18811 _In_opt_ LPCWSTR Name,
18812 _Out_ HANDLE *pHandle);
18813
18814 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
18815 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
18816 ID3D12Device7 * This,
18817 _In_ HANDLE NTHandle,
18818 REFIID riid,
18819 _COM_Outptr_opt_ void **ppvObj);
18820
18821 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
18822 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
18823 ID3D12Device7 * This,
18824 _In_ LPCWSTR Name,
18825 DWORD Access,
18826 /* [annotation][out] */
18827 _Out_ HANDLE *pNTHandle);
18828
18829 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
18830 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
18831 ID3D12Device7 * This,
18832 UINT NumObjects,
18833 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
18834
18835 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
18836 HRESULT ( STDMETHODCALLTYPE *Evict )(
18837 ID3D12Device7 * This,
18838 UINT NumObjects,
18839 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
18840
18841 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
18842 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
18843 ID3D12Device7 * This,
18844 UINT64 InitialValue,
18845 D3D12_FENCE_FLAGS Flags,
18846 REFIID riid,
18847 _COM_Outptr_ void **ppFence);
18848
18849 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
18850 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
18851 ID3D12Device7 * This);
18852
18853 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
18854 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
18855 ID3D12Device7 * This,
18856 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
18857 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
18858 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
18859 UINT64 BaseOffset,
18860 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
18861 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
18862 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
18863 _Out_opt_ UINT64 *pTotalBytes);
18864
18865 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
18866 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
18867 ID3D12Device7 * This,
18868 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
18869 REFIID riid,
18870 _COM_Outptr_opt_ void **ppvHeap);
18871
18872 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
18873 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
18874 ID3D12Device7 * This,
18875 BOOL Enable);
18876
18877 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
18878 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
18879 ID3D12Device7 * This,
18880 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
18881 _In_opt_ ID3D12RootSignature *pRootSignature,
18882 REFIID riid,
18883 _COM_Outptr_opt_ void **ppvCommandSignature);
18884
18885 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
18886 void ( STDMETHODCALLTYPE *GetResourceTiling )(
18887 ID3D12Device7 * This,
18888 _In_ ID3D12Resource *pTiledResource,
18889 _Out_opt_ UINT *pNumTilesForEntireResource,
18890 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
18891 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
18892 _Inout_opt_ UINT *pNumSubresourceTilings,
18893 _In_ UINT FirstSubresourceTilingToGet,
18894 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
18895
18896 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
18897#if !defined(_WIN32)
18898 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
18899 ID3D12Device7 * This);
18900
18901#else
18902 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
18903 ID3D12Device7 * This,
18904 LUID * RetVal);
18905
18906#endif
18907
18908 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
18909 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
18910 ID3D12Device7 * This,
18911 _In_reads_(BlobLength) const void *pLibraryBlob,
18912 SIZE_T BlobLength,
18913 REFIID riid,
18914 _COM_Outptr_ void **ppPipelineLibrary);
18915
18916 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
18917 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
18918 ID3D12Device7 * This,
18919 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
18920 _In_reads_(NumFences) const UINT64 *pFenceValues,
18921 UINT NumFences,
18922 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
18923 HANDLE hEvent);
18924
18925 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
18926 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
18927 ID3D12Device7 * This,
18928 UINT NumObjects,
18929 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
18930 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
18931
18932 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
18933 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
18934 ID3D12Device7 * This,
18935 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
18936 REFIID riid,
18937 _COM_Outptr_ void **ppPipelineState);
18938
18939 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
18940 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
18941 ID3D12Device7 * This,
18942 _In_ const void *pAddress,
18943 REFIID riid,
18944 _COM_Outptr_ void **ppvHeap);
18945
18946 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
18947 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
18948 ID3D12Device7 * This,
18949 _In_ HANDLE hFileMapping,
18950 REFIID riid,
18951 _COM_Outptr_ void **ppvHeap);
18952
18953 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
18954 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
18955 ID3D12Device7 * This,
18956 D3D12_RESIDENCY_FLAGS Flags,
18957 UINT NumObjects,
18958 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
18959 _In_ ID3D12Fence *pFenceToSignal,
18960 UINT64 FenceValueToSignal);
18961
18962 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
18963 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
18964 ID3D12Device7 * This,
18965 _In_ UINT nodeMask,
18966 _In_ D3D12_COMMAND_LIST_TYPE type,
18967 _In_ D3D12_COMMAND_LIST_FLAGS flags,
18968 REFIID riid,
18969 _COM_Outptr_ void **ppCommandList);
18970
18971 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
18972 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
18973 ID3D12Device7 * This,
18974 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
18975 _In_ REFIID riid,
18976 _COM_Outptr_ void **ppSession);
18977
18978 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
18979 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
18980 ID3D12Device7 * This,
18981 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
18982 D3D12_HEAP_FLAGS HeapFlags,
18983 _In_ const D3D12_RESOURCE_DESC *pDesc,
18984 D3D12_RESOURCE_STATES InitialResourceState,
18985 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18986 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
18987 REFIID riidResource,
18988 _COM_Outptr_opt_ void **ppvResource);
18989
18990 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
18991 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
18992 ID3D12Device7 * This,
18993 _In_ const D3D12_HEAP_DESC *pDesc,
18994 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
18995 REFIID riid,
18996 _COM_Outptr_opt_ void **ppvHeap);
18997
18998 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
18999 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
19000 ID3D12Device7 * This,
19001 _In_ const D3D12_RESOURCE_DESC *pDesc,
19002 D3D12_RESOURCE_STATES InitialState,
19003 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19004 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19005 REFIID riid,
19006 _COM_Outptr_opt_ void **ppvResource);
19007
19008 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
19009#if !defined(_WIN32)
19010 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19011 ID3D12Device7 * This,
19012 UINT visibleMask,
19013 UINT numResourceDescs,
19014 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19015 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19016
19017#else
19018 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19019 ID3D12Device7 * This,
19020 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19021 UINT visibleMask,
19022 UINT numResourceDescs,
19023 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19024 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19025
19026#endif
19027
19028 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
19029 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
19030 ID3D12Device7 * This,
19031 _In_ ID3D12LifetimeOwner *pOwner,
19032 REFIID riid,
19033 _COM_Outptr_ void **ppvTracker);
19034
19035 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
19036 void ( STDMETHODCALLTYPE *RemoveDevice )(
19037 ID3D12Device7 * This);
19038
19039 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
19040 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
19041 ID3D12Device7 * This,
19042 _Inout_ UINT *pNumMetaCommands,
19043 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
19044
19045 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
19046 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
19047 ID3D12Device7 * This,
19048 _In_ REFGUID CommandId,
19049 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
19050 _Out_opt_ UINT *pTotalStructureSizeInBytes,
19051 _Inout_ UINT *pParameterCount,
19052 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
19053
19054 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
19055 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
19056 ID3D12Device7 * This,
19057 _In_ REFGUID CommandId,
19058 _In_ UINT NodeMask,
19059 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
19060 _In_ SIZE_T CreationParametersDataSizeInBytes,
19061 REFIID riid,
19062 _COM_Outptr_ void **ppMetaCommand);
19063
19064 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
19065 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
19066 ID3D12Device7 * This,
19067 const D3D12_STATE_OBJECT_DESC *pDesc,
19068 REFIID riid,
19069 _COM_Outptr_ void **ppStateObject);
19070
19071 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
19072 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
19073 ID3D12Device7 * This,
19074 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
19075 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
19076
19077 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
19078 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
19079 ID3D12Device7 * This,
19080 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
19081 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
19082
19083 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
19084 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
19085 ID3D12Device7 * This,
19086 D3D12_BACKGROUND_PROCESSING_MODE Mode,
19087 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
19088 _In_opt_ HANDLE hEventToSignalUponCompletion,
19089 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
19090
19091 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
19092 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
19093 ID3D12Device7 * This,
19094 const D3D12_STATE_OBJECT_DESC *pAddition,
19095 ID3D12StateObject *pStateObjectToGrowFrom,
19096 REFIID riid,
19097 _COM_Outptr_ void **ppNewStateObject);
19098
19099 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
19100 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
19101 ID3D12Device7 * This,
19102 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
19103 _In_ REFIID riid,
19104 _COM_Outptr_ void **ppSession);
19105
19106 END_INTERFACE
19107 } ID3D12Device7Vtbl;
19108
19109 interface ID3D12Device7
19110 {
19111 CONST_VTBL struct ID3D12Device7Vtbl *lpVtbl;
19112 };
19113
19114
19115
19116#ifdef COBJMACROS
19117
19118
19119#define ID3D12Device7_QueryInterface(This,riid,ppvObject) \
19120 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
19121
19122#define ID3D12Device7_AddRef(This) \
19123 ( (This)->lpVtbl -> AddRef(This) )
19124
19125#define ID3D12Device7_Release(This) \
19126 ( (This)->lpVtbl -> Release(This) )
19127
19128
19129#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData) \
19130 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
19131
19132#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData) \
19133 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
19134
19135#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData) \
19136 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
19137
19138#define ID3D12Device7_SetName(This,Name) \
19139 ( (This)->lpVtbl -> SetName(This,Name) )
19140
19141
19142#define ID3D12Device7_GetNodeCount(This) \
19143 ( (This)->lpVtbl -> GetNodeCount(This) )
19144
19145#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
19146 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
19147
19148#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
19149 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
19150
19151#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
19152 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
19153
19154#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
19155 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
19156
19157#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
19158 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
19159
19160#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
19161 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
19162
19163#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
19164 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
19165
19166#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
19167 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
19168
19169#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
19170 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
19171
19172#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor) \
19173 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
19174
19175#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
19176 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
19177
19178#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
19179 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
19180
19181#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
19182 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
19183
19184#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
19185 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
19186
19187#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor) \
19188 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
19189
19190#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
19191 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
19192
19193#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
19194 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
19195#if !defined(_WIN32)
19196
19197#define ID3D12Device7_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
19198 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
19199#else
19200#define ID3D12Device7_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
19201 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
19202#endif
19203#if !defined(_WIN32)
19204
19205#define ID3D12Device7_GetCustomHeapProperties(This,nodeMask,heapType) \
19206 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
19207#else
19208#define ID3D12Device7_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
19209 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
19210#endif
19211
19212#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
19213 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
19214
19215#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap) \
19216 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
19217
19218#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
19219 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
19220
19221#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
19222 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
19223
19224#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
19225 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
19226
19227#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
19228 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
19229
19230#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
19231 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
19232
19233#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects) \
19234 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
19235
19236#define ID3D12Device7_Evict(This,NumObjects,ppObjects) \
19237 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
19238
19239#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence) \
19240 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
19241
19242#define ID3D12Device7_GetDeviceRemovedReason(This) \
19243 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
19244
19245#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
19246 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
19247
19248#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
19249 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
19250
19251#define ID3D12Device7_SetStablePowerState(This,Enable) \
19252 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
19253
19254#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
19255 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
19256
19257#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
19258 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
19259#if !defined(_WIN32)
19260
19261#define ID3D12Device7_GetAdapterLuid(This) \
19262 ( (This)->lpVtbl -> GetAdapterLuid(This) )
19263#else
19264#define ID3D12Device7_GetAdapterLuid(This,RetVal) \
19265 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
19266#endif
19267
19268
19269#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
19270 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
19271
19272#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
19273 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
19274
19275#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
19276 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
19277
19278
19279#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
19280 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
19281
19282
19283#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
19284 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
19285
19286#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
19287 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
19288
19289#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
19290 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
19291
19292
19293#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
19294 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
19295
19296#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
19297 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
19298
19299#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
19300 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
19301
19302#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
19303 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
19304
19305#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
19306 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
19307#if !defined(_WIN32)
19308
19309#define ID3D12Device7_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
19310 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
19311#else
19312#define ID3D12Device7_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
19313 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
19314#endif
19315
19316
19317#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
19318 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
19319
19320#define ID3D12Device7_RemoveDevice(This) \
19321 ( (This)->lpVtbl -> RemoveDevice(This) )
19322
19323#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
19324 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
19325
19326#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
19327 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
19328
19329#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
19330 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
19331
19332#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject) \
19333 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
19334
19335#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
19336 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
19337
19338#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
19339 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
19340
19341
19342#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
19343 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
19344
19345
19346#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
19347 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
19348
19349#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
19350 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
19351
19352#endif /* COBJMACROS */
19353
19354
19355#endif /* C style interface */
19356
19357
19358
19359
19360#endif /* __ID3D12Device7_INTERFACE_DEFINED__ */
19361
19362
19363#ifndef __ID3D12Device8_INTERFACE_DEFINED__
19364#define __ID3D12Device8_INTERFACE_DEFINED__
19365
19366/* interface ID3D12Device8 */
19367/* [unique][local][object][uuid] */
19368
19369
19370EXTERN_C const IID IID_ID3D12Device8;
19371
19372#if defined(__cplusplus) && !defined(CINTERFACE)
19373
19374 MIDL_INTERFACE("9218E6BB-F944-4F7E-A75C-B1B2C7B701F3")
19375 ID3D12Device8 : public ID3D12Device7
19376 {
19377 public:
19378#if defined(_MSC_VER) || !defined(_WIN32)
19379 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
19380 UINT visibleMask,
19381 UINT numResourceDescs,
19382 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19383 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
19384#else
19385 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo2(
19386 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19387 UINT visibleMask,
19388 UINT numResourceDescs,
19389 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19390 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
19391#endif
19392
19393 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
19394 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19395 D3D12_HEAP_FLAGS HeapFlags,
19396 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
19397 D3D12_RESOURCE_STATES InitialResourceState,
19398 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19399 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19400 REFIID riidResource,
19401 _COM_Outptr_opt_ void **ppvResource) = 0;
19402
19403 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
19404 _In_ ID3D12Heap *pHeap,
19405 UINT64 HeapOffset,
19406 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
19407 D3D12_RESOURCE_STATES InitialState,
19408 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19409 REFIID riid,
19410 _COM_Outptr_opt_ void **ppvResource) = 0;
19411
19412 virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
19413 _In_opt_ ID3D12Resource *pTargetedResource,
19414 _In_opt_ ID3D12Resource *pFeedbackResource,
19415 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
19416
19417 virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
19418 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
19419 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
19420 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
19421 UINT64 BaseOffset,
19422 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
19423 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
19424 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
19425 _Out_opt_ UINT64 *pTotalBytes) = 0;
19426
19427 };
19428
19429
19430#else /* C style interface */
19431
19432 typedef struct ID3D12Device8Vtbl
19433 {
19434 BEGIN_INTERFACE
19435
19436 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19437 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19438 ID3D12Device8 * This,
19439 REFIID riid,
19440 _COM_Outptr_ void **ppvObject);
19441
19442 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19443 ULONG ( STDMETHODCALLTYPE *AddRef )(
19444 ID3D12Device8 * This);
19445
19446 DECLSPEC_XFGVIRT(IUnknown, Release)
19447 ULONG ( STDMETHODCALLTYPE *Release )(
19448 ID3D12Device8 * This);
19449
19450 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19451 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19452 ID3D12Device8 * This,
19453 _In_ REFGUID guid,
19454 _Inout_ UINT *pDataSize,
19455 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19456
19457 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19458 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19459 ID3D12Device8 * This,
19460 _In_ REFGUID guid,
19461 _In_ UINT DataSize,
19462 _In_reads_bytes_opt_( DataSize ) const void *pData);
19463
19464 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19465 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19466 ID3D12Device8 * This,
19467 _In_ REFGUID guid,
19468 _In_opt_ const IUnknown *pData);
19469
19470 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19471 HRESULT ( STDMETHODCALLTYPE *SetName )(
19472 ID3D12Device8 * This,
19473 _In_z_ LPCWSTR Name);
19474
19475 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
19476 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
19477 ID3D12Device8 * This);
19478
19479 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
19480 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
19481 ID3D12Device8 * This,
19482 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
19483 REFIID riid,
19484 _COM_Outptr_ void **ppCommandQueue);
19485
19486 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
19487 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
19488 ID3D12Device8 * This,
19489 _In_ D3D12_COMMAND_LIST_TYPE type,
19490 REFIID riid,
19491 _COM_Outptr_ void **ppCommandAllocator);
19492
19493 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
19494 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
19495 ID3D12Device8 * This,
19496 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
19497 REFIID riid,
19498 _COM_Outptr_ void **ppPipelineState);
19499
19500 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
19501 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
19502 ID3D12Device8 * This,
19503 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
19504 REFIID riid,
19505 _COM_Outptr_ void **ppPipelineState);
19506
19507 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
19508 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
19509 ID3D12Device8 * This,
19510 _In_ UINT nodeMask,
19511 _In_ D3D12_COMMAND_LIST_TYPE type,
19512 _In_ ID3D12CommandAllocator *pCommandAllocator,
19513 _In_opt_ ID3D12PipelineState *pInitialState,
19514 REFIID riid,
19515 _COM_Outptr_ void **ppCommandList);
19516
19517 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
19518 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
19519 ID3D12Device8 * This,
19520 D3D12_FEATURE Feature,
19521 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
19522 UINT FeatureSupportDataSize);
19523
19524 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
19525 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
19526 ID3D12Device8 * This,
19527 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
19528 REFIID riid,
19529 _COM_Outptr_ void **ppvHeap);
19530
19531 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
19532 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
19533 ID3D12Device8 * This,
19534 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
19535
19536 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
19537 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
19538 ID3D12Device8 * This,
19539 _In_ UINT nodeMask,
19540 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
19541 _In_ SIZE_T blobLengthInBytes,
19542 REFIID riid,
19543 _COM_Outptr_ void **ppvRootSignature);
19544
19545 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
19546 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
19547 ID3D12Device8 * This,
19548 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
19549 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19550
19551 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
19552 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
19553 ID3D12Device8 * This,
19554 _In_opt_ ID3D12Resource *pResource,
19555 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
19556 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19557
19558 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
19559 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
19560 ID3D12Device8 * This,
19561 _In_opt_ ID3D12Resource *pResource,
19562 _In_opt_ ID3D12Resource *pCounterResource,
19563 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
19564 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19565
19566 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
19567 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
19568 ID3D12Device8 * This,
19569 _In_opt_ ID3D12Resource *pResource,
19570 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
19571 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19572
19573 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
19574 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
19575 ID3D12Device8 * This,
19576 _In_opt_ ID3D12Resource *pResource,
19577 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
19578 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19579
19580 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
19581 void ( STDMETHODCALLTYPE *CreateSampler )(
19582 ID3D12Device8 * This,
19583 _In_ const D3D12_SAMPLER_DESC *pDesc,
19584 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19585
19586 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
19587 void ( STDMETHODCALLTYPE *CopyDescriptors )(
19588 ID3D12Device8 * This,
19589 _In_ UINT NumDestDescriptorRanges,
19590 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
19591 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
19592 _In_ UINT NumSrcDescriptorRanges,
19593 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
19594 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
19595 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
19596
19597 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
19598 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
19599 ID3D12Device8 * This,
19600 _In_ UINT NumDescriptors,
19601 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
19602 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
19603 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
19604
19605 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
19606#if !defined(_WIN32)
19607 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
19608 ID3D12Device8 * This,
19609 _In_ UINT visibleMask,
19610 _In_ UINT numResourceDescs,
19611 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
19612
19613#else
19614 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
19615 ID3D12Device8 * This,
19616 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19617 _In_ UINT visibleMask,
19618 _In_ UINT numResourceDescs,
19619 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
19620
19621#endif
19622
19623 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
19624#if !defined(_WIN32)
19625 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
19626 ID3D12Device8 * This,
19627 _In_ UINT nodeMask,
19628 D3D12_HEAP_TYPE heapType);
19629
19630#else
19631 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
19632 ID3D12Device8 * This,
19633 D3D12_HEAP_PROPERTIES * RetVal,
19634 _In_ UINT nodeMask,
19635 D3D12_HEAP_TYPE heapType);
19636
19637#endif
19638
19639 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
19640 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
19641 ID3D12Device8 * This,
19642 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19643 D3D12_HEAP_FLAGS HeapFlags,
19644 _In_ const D3D12_RESOURCE_DESC *pDesc,
19645 D3D12_RESOURCE_STATES InitialResourceState,
19646 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19647 REFIID riidResource,
19648 _COM_Outptr_opt_ void **ppvResource);
19649
19650 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
19651 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
19652 ID3D12Device8 * This,
19653 _In_ const D3D12_HEAP_DESC *pDesc,
19654 REFIID riid,
19655 _COM_Outptr_opt_ void **ppvHeap);
19656
19657 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
19658 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
19659 ID3D12Device8 * This,
19660 _In_ ID3D12Heap *pHeap,
19661 UINT64 HeapOffset,
19662 _In_ const D3D12_RESOURCE_DESC *pDesc,
19663 D3D12_RESOURCE_STATES InitialState,
19664 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19665 REFIID riid,
19666 _COM_Outptr_opt_ void **ppvResource);
19667
19668 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
19669 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
19670 ID3D12Device8 * This,
19671 _In_ const D3D12_RESOURCE_DESC *pDesc,
19672 D3D12_RESOURCE_STATES InitialState,
19673 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19674 REFIID riid,
19675 _COM_Outptr_opt_ void **ppvResource);
19676
19677 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
19678 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
19679 ID3D12Device8 * This,
19680 _In_ ID3D12DeviceChild *pObject,
19681 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
19682 DWORD Access,
19683 _In_opt_ LPCWSTR Name,
19684 _Out_ HANDLE *pHandle);
19685
19686 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
19687 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
19688 ID3D12Device8 * This,
19689 _In_ HANDLE NTHandle,
19690 REFIID riid,
19691 _COM_Outptr_opt_ void **ppvObj);
19692
19693 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
19694 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
19695 ID3D12Device8 * This,
19696 _In_ LPCWSTR Name,
19697 DWORD Access,
19698 /* [annotation][out] */
19699 _Out_ HANDLE *pNTHandle);
19700
19701 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
19702 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
19703 ID3D12Device8 * This,
19704 UINT NumObjects,
19705 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
19706
19707 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
19708 HRESULT ( STDMETHODCALLTYPE *Evict )(
19709 ID3D12Device8 * This,
19710 UINT NumObjects,
19711 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
19712
19713 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
19714 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
19715 ID3D12Device8 * This,
19716 UINT64 InitialValue,
19717 D3D12_FENCE_FLAGS Flags,
19718 REFIID riid,
19719 _COM_Outptr_ void **ppFence);
19720
19721 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
19722 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
19723 ID3D12Device8 * This);
19724
19725 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
19726 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
19727 ID3D12Device8 * This,
19728 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
19729 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
19730 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
19731 UINT64 BaseOffset,
19732 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
19733 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
19734 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
19735 _Out_opt_ UINT64 *pTotalBytes);
19736
19737 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
19738 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
19739 ID3D12Device8 * This,
19740 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
19741 REFIID riid,
19742 _COM_Outptr_opt_ void **ppvHeap);
19743
19744 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
19745 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
19746 ID3D12Device8 * This,
19747 BOOL Enable);
19748
19749 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
19750 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
19751 ID3D12Device8 * This,
19752 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
19753 _In_opt_ ID3D12RootSignature *pRootSignature,
19754 REFIID riid,
19755 _COM_Outptr_opt_ void **ppvCommandSignature);
19756
19757 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
19758 void ( STDMETHODCALLTYPE *GetResourceTiling )(
19759 ID3D12Device8 * This,
19760 _In_ ID3D12Resource *pTiledResource,
19761 _Out_opt_ UINT *pNumTilesForEntireResource,
19762 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
19763 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
19764 _Inout_opt_ UINT *pNumSubresourceTilings,
19765 _In_ UINT FirstSubresourceTilingToGet,
19766 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
19767
19768 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
19769#if !defined(_WIN32)
19770 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
19771 ID3D12Device8 * This);
19772
19773#else
19774 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
19775 ID3D12Device8 * This,
19776 LUID * RetVal);
19777
19778#endif
19779
19780 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
19781 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
19782 ID3D12Device8 * This,
19783 _In_reads_(BlobLength) const void *pLibraryBlob,
19784 SIZE_T BlobLength,
19785 REFIID riid,
19786 _COM_Outptr_ void **ppPipelineLibrary);
19787
19788 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
19789 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
19790 ID3D12Device8 * This,
19791 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
19792 _In_reads_(NumFences) const UINT64 *pFenceValues,
19793 UINT NumFences,
19794 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
19795 HANDLE hEvent);
19796
19797 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
19798 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
19799 ID3D12Device8 * This,
19800 UINT NumObjects,
19801 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
19802 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
19803
19804 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
19805 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
19806 ID3D12Device8 * This,
19807 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
19808 REFIID riid,
19809 _COM_Outptr_ void **ppPipelineState);
19810
19811 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
19812 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
19813 ID3D12Device8 * This,
19814 _In_ const void *pAddress,
19815 REFIID riid,
19816 _COM_Outptr_ void **ppvHeap);
19817
19818 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
19819 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
19820 ID3D12Device8 * This,
19821 _In_ HANDLE hFileMapping,
19822 REFIID riid,
19823 _COM_Outptr_ void **ppvHeap);
19824
19825 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
19826 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
19827 ID3D12Device8 * This,
19828 D3D12_RESIDENCY_FLAGS Flags,
19829 UINT NumObjects,
19830 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
19831 _In_ ID3D12Fence *pFenceToSignal,
19832 UINT64 FenceValueToSignal);
19833
19834 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
19835 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
19836 ID3D12Device8 * This,
19837 _In_ UINT nodeMask,
19838 _In_ D3D12_COMMAND_LIST_TYPE type,
19839 _In_ D3D12_COMMAND_LIST_FLAGS flags,
19840 REFIID riid,
19841 _COM_Outptr_ void **ppCommandList);
19842
19843 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
19844 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
19845 ID3D12Device8 * This,
19846 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
19847 _In_ REFIID riid,
19848 _COM_Outptr_ void **ppSession);
19849
19850 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
19851 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
19852 ID3D12Device8 * This,
19853 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19854 D3D12_HEAP_FLAGS HeapFlags,
19855 _In_ const D3D12_RESOURCE_DESC *pDesc,
19856 D3D12_RESOURCE_STATES InitialResourceState,
19857 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19858 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19859 REFIID riidResource,
19860 _COM_Outptr_opt_ void **ppvResource);
19861
19862 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
19863 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
19864 ID3D12Device8 * This,
19865 _In_ const D3D12_HEAP_DESC *pDesc,
19866 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19867 REFIID riid,
19868 _COM_Outptr_opt_ void **ppvHeap);
19869
19870 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
19871 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
19872 ID3D12Device8 * This,
19873 _In_ const D3D12_RESOURCE_DESC *pDesc,
19874 D3D12_RESOURCE_STATES InitialState,
19875 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19876 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19877 REFIID riid,
19878 _COM_Outptr_opt_ void **ppvResource);
19879
19880 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
19881#if !defined(_WIN32)
19882 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19883 ID3D12Device8 * This,
19884 UINT visibleMask,
19885 UINT numResourceDescs,
19886 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19887 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19888
19889#else
19890 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19891 ID3D12Device8 * This,
19892 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19893 UINT visibleMask,
19894 UINT numResourceDescs,
19895 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19896 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19897
19898#endif
19899
19900 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
19901 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
19902 ID3D12Device8 * This,
19903 _In_ ID3D12LifetimeOwner *pOwner,
19904 REFIID riid,
19905 _COM_Outptr_ void **ppvTracker);
19906
19907 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
19908 void ( STDMETHODCALLTYPE *RemoveDevice )(
19909 ID3D12Device8 * This);
19910
19911 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
19912 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
19913 ID3D12Device8 * This,
19914 _Inout_ UINT *pNumMetaCommands,
19915 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
19916
19917 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
19918 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
19919 ID3D12Device8 * This,
19920 _In_ REFGUID CommandId,
19921 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
19922 _Out_opt_ UINT *pTotalStructureSizeInBytes,
19923 _Inout_ UINT *pParameterCount,
19924 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
19925
19926 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
19927 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
19928 ID3D12Device8 * This,
19929 _In_ REFGUID CommandId,
19930 _In_ UINT NodeMask,
19931 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
19932 _In_ SIZE_T CreationParametersDataSizeInBytes,
19933 REFIID riid,
19934 _COM_Outptr_ void **ppMetaCommand);
19935
19936 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
19937 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
19938 ID3D12Device8 * This,
19939 const D3D12_STATE_OBJECT_DESC *pDesc,
19940 REFIID riid,
19941 _COM_Outptr_ void **ppStateObject);
19942
19943 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
19944 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
19945 ID3D12Device8 * This,
19946 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
19947 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
19948
19949 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
19950 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
19951 ID3D12Device8 * This,
19952 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
19953 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
19954
19955 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
19956 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
19957 ID3D12Device8 * This,
19958 D3D12_BACKGROUND_PROCESSING_MODE Mode,
19959 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
19960 _In_opt_ HANDLE hEventToSignalUponCompletion,
19961 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
19962
19963 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
19964 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
19965 ID3D12Device8 * This,
19966 const D3D12_STATE_OBJECT_DESC *pAddition,
19967 ID3D12StateObject *pStateObjectToGrowFrom,
19968 REFIID riid,
19969 _COM_Outptr_ void **ppNewStateObject);
19970
19971 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
19972 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
19973 ID3D12Device8 * This,
19974 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
19975 _In_ REFIID riid,
19976 _COM_Outptr_ void **ppSession);
19977
19978 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
19979#if !defined(_WIN32)
19980 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
19981 ID3D12Device8 * This,
19982 UINT visibleMask,
19983 UINT numResourceDescs,
19984 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19985 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19986
19987#else
19988 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
19989 ID3D12Device8 * This,
19990 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19991 UINT visibleMask,
19992 UINT numResourceDescs,
19993 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19994 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19995
19996#endif
19997
19998 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
19999 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
20000 ID3D12Device8 * This,
20001 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
20002 D3D12_HEAP_FLAGS HeapFlags,
20003 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20004 D3D12_RESOURCE_STATES InitialResourceState,
20005 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20006 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20007 REFIID riidResource,
20008 _COM_Outptr_opt_ void **ppvResource);
20009
20010 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
20011 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
20012 ID3D12Device8 * This,
20013 _In_ ID3D12Heap *pHeap,
20014 UINT64 HeapOffset,
20015 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20016 D3D12_RESOURCE_STATES InitialState,
20017 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20018 REFIID riid,
20019 _COM_Outptr_opt_ void **ppvResource);
20020
20021 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
20022 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
20023 ID3D12Device8 * This,
20024 _In_opt_ ID3D12Resource *pTargetedResource,
20025 _In_opt_ ID3D12Resource *pFeedbackResource,
20026 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20027
20028 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
20029 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
20030 ID3D12Device8 * This,
20031 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
20032 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20033 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20034 UINT64 BaseOffset,
20035 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20036 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20037 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20038 _Out_opt_ UINT64 *pTotalBytes);
20039
20040 END_INTERFACE
20041 } ID3D12Device8Vtbl;
20042
20043 interface ID3D12Device8
20044 {
20045 CONST_VTBL struct ID3D12Device8Vtbl *lpVtbl;
20046 };
20047
20048
20049
20050#ifdef COBJMACROS
20051
20052
20053#define ID3D12Device8_QueryInterface(This,riid,ppvObject) \
20054 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20055
20056#define ID3D12Device8_AddRef(This) \
20057 ( (This)->lpVtbl -> AddRef(This) )
20058
20059#define ID3D12Device8_Release(This) \
20060 ( (This)->lpVtbl -> Release(This) )
20061
20062
20063#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData) \
20064 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20065
20066#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData) \
20067 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20068
20069#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData) \
20070 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20071
20072#define ID3D12Device8_SetName(This,Name) \
20073 ( (This)->lpVtbl -> SetName(This,Name) )
20074
20075
20076#define ID3D12Device8_GetNodeCount(This) \
20077 ( (This)->lpVtbl -> GetNodeCount(This) )
20078
20079#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
20080 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
20081
20082#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
20083 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
20084
20085#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
20086 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
20087
20088#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
20089 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
20090
20091#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
20092 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
20093
20094#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
20095 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
20096
20097#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
20098 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
20099
20100#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
20101 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
20102
20103#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
20104 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
20105
20106#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor) \
20107 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
20108
20109#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
20110 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
20111
20112#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
20113 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
20114
20115#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
20116 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
20117
20118#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
20119 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
20120
20121#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor) \
20122 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
20123
20124#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
20125 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
20126
20127#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
20128 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
20129#if !defined(_WIN32)
20130
20131#define ID3D12Device8_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
20132 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
20133#else
20134#define ID3D12Device8_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
20135 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
20136#endif
20137#if !defined(_WIN32)
20138
20139#define ID3D12Device8_GetCustomHeapProperties(This,nodeMask,heapType) \
20140 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
20141#else
20142#define ID3D12Device8_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
20143 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
20144#endif
20145
20146#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
20147 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
20148
20149#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap) \
20150 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
20151
20152#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20153 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20154
20155#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20156 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20157
20158#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
20159 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
20160
20161#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
20162 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
20163
20164#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
20165 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
20166
20167#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects) \
20168 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
20169
20170#define ID3D12Device8_Evict(This,NumObjects,ppObjects) \
20171 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
20172
20173#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence) \
20174 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
20175
20176#define ID3D12Device8_GetDeviceRemovedReason(This) \
20177 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
20178
20179#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20180 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20181
20182#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
20183 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
20184
20185#define ID3D12Device8_SetStablePowerState(This,Enable) \
20186 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
20187
20188#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
20189 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
20190
20191#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
20192 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
20193#if !defined(_WIN32)
20194
20195#define ID3D12Device8_GetAdapterLuid(This) \
20196 ( (This)->lpVtbl -> GetAdapterLuid(This) )
20197#else
20198#define ID3D12Device8_GetAdapterLuid(This,RetVal) \
20199 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
20200#endif
20201
20202
20203#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
20204 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
20205
20206#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
20207 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
20208
20209#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
20210 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
20211
20212
20213#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
20214 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
20215
20216
20217#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
20218 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
20219
20220#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
20221 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
20222
20223#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
20224 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
20225
20226
20227#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
20228 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
20229
20230#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
20231 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
20232
20233#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20234 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20235
20236#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
20237 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
20238
20239#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
20240 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
20241#if !defined(_WIN32)
20242
20243#define ID3D12Device8_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20244 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20245#else
20246#define ID3D12Device8_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20247 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20248#endif
20249
20250
20251#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
20252 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
20253
20254#define ID3D12Device8_RemoveDevice(This) \
20255 ( (This)->lpVtbl -> RemoveDevice(This) )
20256
20257#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
20258 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
20259
20260#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
20261 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
20262
20263#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
20264 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
20265
20266#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject) \
20267 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
20268
20269#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
20270 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
20271
20272#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
20273 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
20274
20275
20276#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
20277 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
20278
20279
20280#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
20281 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
20282
20283#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
20284 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
20285
20286#if !defined(_WIN32)
20287
20288#define ID3D12Device8_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20289 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20290#else
20291#define ID3D12Device8_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20292 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20293#endif
20294
20295#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20296 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20297
20298#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20299 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20300
20301#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
20302 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
20303
20304#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20305 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20306
20307#endif /* COBJMACROS */
20308
20309
20310#endif /* C style interface */
20311
20312
20313
20314
20315#endif /* __ID3D12Device8_INTERFACE_DEFINED__ */
20316
20317
20318#ifndef __ID3D12Resource1_INTERFACE_DEFINED__
20319#define __ID3D12Resource1_INTERFACE_DEFINED__
20320
20321/* interface ID3D12Resource1 */
20322/* [unique][local][object][uuid] */
20323
20324
20325EXTERN_C const IID IID_ID3D12Resource1;
20326
20327#if defined(__cplusplus) && !defined(CINTERFACE)
20328
20329 MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19")
20330 ID3D12Resource1 : public ID3D12Resource
20331 {
20332 public:
20333 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
20334 REFIID riid,
20335 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
20336
20337 };
20338
20339
20340#else /* C style interface */
20341
20342 typedef struct ID3D12Resource1Vtbl
20343 {
20344 BEGIN_INTERFACE
20345
20346 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20347 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20348 ID3D12Resource1 * This,
20349 REFIID riid,
20350 _COM_Outptr_ void **ppvObject);
20351
20352 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20353 ULONG ( STDMETHODCALLTYPE *AddRef )(
20354 ID3D12Resource1 * This);
20355
20356 DECLSPEC_XFGVIRT(IUnknown, Release)
20357 ULONG ( STDMETHODCALLTYPE *Release )(
20358 ID3D12Resource1 * This);
20359
20360 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20361 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20362 ID3D12Resource1 * This,
20363 _In_ REFGUID guid,
20364 _Inout_ UINT *pDataSize,
20365 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20366
20367 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20368 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20369 ID3D12Resource1 * This,
20370 _In_ REFGUID guid,
20371 _In_ UINT DataSize,
20372 _In_reads_bytes_opt_( DataSize ) const void *pData);
20373
20374 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20375 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20376 ID3D12Resource1 * This,
20377 _In_ REFGUID guid,
20378 _In_opt_ const IUnknown *pData);
20379
20380 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20381 HRESULT ( STDMETHODCALLTYPE *SetName )(
20382 ID3D12Resource1 * This,
20383 _In_z_ LPCWSTR Name);
20384
20385 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20386 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20387 ID3D12Resource1 * This,
20388 REFIID riid,
20389 _COM_Outptr_opt_ void **ppvDevice);
20390
20391 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
20392 HRESULT ( STDMETHODCALLTYPE *Map )(
20393 ID3D12Resource1 * This,
20394 UINT Subresource,
20395 _In_opt_ const D3D12_RANGE *pReadRange,
20396 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
20397
20398 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
20399 void ( STDMETHODCALLTYPE *Unmap )(
20400 ID3D12Resource1 * This,
20401 UINT Subresource,
20402 _In_opt_ const D3D12_RANGE *pWrittenRange);
20403
20404 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
20405#if !defined(_WIN32)
20406 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
20407 ID3D12Resource1 * This);
20408
20409#else
20410 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
20411 ID3D12Resource1 * This,
20412 D3D12_RESOURCE_DESC * RetVal);
20413
20414#endif
20415
20416 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
20417 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
20418 ID3D12Resource1 * This);
20419
20420 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
20421 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
20422 ID3D12Resource1 * This,
20423 UINT DstSubresource,
20424 _In_opt_ const D3D12_BOX *pDstBox,
20425 _In_ const void *pSrcData,
20426 UINT SrcRowPitch,
20427 UINT SrcDepthPitch);
20428
20429 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
20430 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
20431 ID3D12Resource1 * This,
20432 _Out_ void *pDstData,
20433 UINT DstRowPitch,
20434 UINT DstDepthPitch,
20435 UINT SrcSubresource,
20436 _In_opt_ const D3D12_BOX *pSrcBox);
20437
20438 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
20439 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
20440 ID3D12Resource1 * This,
20441 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
20442 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
20443
20444 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
20445 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20446 ID3D12Resource1 * This,
20447 REFIID riid,
20448 _COM_Outptr_opt_ void **ppProtectedSession);
20449
20450 END_INTERFACE
20451 } ID3D12Resource1Vtbl;
20452
20453 interface ID3D12Resource1
20454 {
20455 CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl;
20456 };
20457
20458
20459
20460#ifdef COBJMACROS
20461
20462
20463#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \
20464 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20465
20466#define ID3D12Resource1_AddRef(This) \
20467 ( (This)->lpVtbl -> AddRef(This) )
20468
20469#define ID3D12Resource1_Release(This) \
20470 ( (This)->lpVtbl -> Release(This) )
20471
20472
20473#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \
20474 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20475
20476#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \
20477 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20478
20479#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \
20480 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20481
20482#define ID3D12Resource1_SetName(This,Name) \
20483 ( (This)->lpVtbl -> SetName(This,Name) )
20484
20485
20486#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \
20487 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20488
20489
20490
20491#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \
20492 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
20493
20494#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \
20495 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
20496#if !defined(_WIN32)
20497
20498#define ID3D12Resource1_GetDesc(This) \
20499 ( (This)->lpVtbl -> GetDesc(This) )
20500#else
20501#define ID3D12Resource1_GetDesc(This,RetVal) \
20502 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20503#endif
20504
20505#define ID3D12Resource1_GetGPUVirtualAddress(This) \
20506 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
20507
20508#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
20509 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
20510
20511#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
20512 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
20513
20514#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
20515 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
20516
20517
20518#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20519 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20520
20521#endif /* COBJMACROS */
20522
20523
20524#endif /* C style interface */
20525
20526
20527
20528
20529#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */
20530
20531
20532#ifndef __ID3D12Resource2_INTERFACE_DEFINED__
20533#define __ID3D12Resource2_INTERFACE_DEFINED__
20534
20535/* interface ID3D12Resource2 */
20536/* [unique][local][object][uuid] */
20537
20538
20539EXTERN_C const IID IID_ID3D12Resource2;
20540
20541#if defined(__cplusplus) && !defined(CINTERFACE)
20542
20543 MIDL_INTERFACE("BE36EC3B-EA85-4AEB-A45A-E9D76404A495")
20544 ID3D12Resource2 : public ID3D12Resource1
20545 {
20546 public:
20547#if defined(_MSC_VER) || !defined(_WIN32)
20548 virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
20549#else
20550 virtual D3D12_RESOURCE_DESC1 *STDMETHODCALLTYPE GetDesc1(
20551 D3D12_RESOURCE_DESC1 * RetVal) = 0;
20552#endif
20553
20554 };
20555
20556
20557#else /* C style interface */
20558
20559 typedef struct ID3D12Resource2Vtbl
20560 {
20561 BEGIN_INTERFACE
20562
20563 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20564 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20565 ID3D12Resource2 * This,
20566 REFIID riid,
20567 _COM_Outptr_ void **ppvObject);
20568
20569 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20570 ULONG ( STDMETHODCALLTYPE *AddRef )(
20571 ID3D12Resource2 * This);
20572
20573 DECLSPEC_XFGVIRT(IUnknown, Release)
20574 ULONG ( STDMETHODCALLTYPE *Release )(
20575 ID3D12Resource2 * This);
20576
20577 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20578 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20579 ID3D12Resource2 * This,
20580 _In_ REFGUID guid,
20581 _Inout_ UINT *pDataSize,
20582 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20583
20584 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20585 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20586 ID3D12Resource2 * This,
20587 _In_ REFGUID guid,
20588 _In_ UINT DataSize,
20589 _In_reads_bytes_opt_( DataSize ) const void *pData);
20590
20591 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20592 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20593 ID3D12Resource2 * This,
20594 _In_ REFGUID guid,
20595 _In_opt_ const IUnknown *pData);
20596
20597 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20598 HRESULT ( STDMETHODCALLTYPE *SetName )(
20599 ID3D12Resource2 * This,
20600 _In_z_ LPCWSTR Name);
20601
20602 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20603 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20604 ID3D12Resource2 * This,
20605 REFIID riid,
20606 _COM_Outptr_opt_ void **ppvDevice);
20607
20608 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
20609 HRESULT ( STDMETHODCALLTYPE *Map )(
20610 ID3D12Resource2 * This,
20611 UINT Subresource,
20612 _In_opt_ const D3D12_RANGE *pReadRange,
20613 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
20614
20615 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
20616 void ( STDMETHODCALLTYPE *Unmap )(
20617 ID3D12Resource2 * This,
20618 UINT Subresource,
20619 _In_opt_ const D3D12_RANGE *pWrittenRange);
20620
20621 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
20622#if !defined(_WIN32)
20623 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
20624 ID3D12Resource2 * This);
20625
20626#else
20627 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
20628 ID3D12Resource2 * This,
20629 D3D12_RESOURCE_DESC * RetVal);
20630
20631#endif
20632
20633 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
20634 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
20635 ID3D12Resource2 * This);
20636
20637 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
20638 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
20639 ID3D12Resource2 * This,
20640 UINT DstSubresource,
20641 _In_opt_ const D3D12_BOX *pDstBox,
20642 _In_ const void *pSrcData,
20643 UINT SrcRowPitch,
20644 UINT SrcDepthPitch);
20645
20646 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
20647 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
20648 ID3D12Resource2 * This,
20649 _Out_ void *pDstData,
20650 UINT DstRowPitch,
20651 UINT DstDepthPitch,
20652 UINT SrcSubresource,
20653 _In_opt_ const D3D12_BOX *pSrcBox);
20654
20655 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
20656 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
20657 ID3D12Resource2 * This,
20658 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
20659 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
20660
20661 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
20662 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20663 ID3D12Resource2 * This,
20664 REFIID riid,
20665 _COM_Outptr_opt_ void **ppProtectedSession);
20666
20667 DECLSPEC_XFGVIRT(ID3D12Resource2, GetDesc1)
20668#if !defined(_WIN32)
20669 D3D12_RESOURCE_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
20670 ID3D12Resource2 * This);
20671
20672#else
20673 D3D12_RESOURCE_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
20674 ID3D12Resource2 * This,
20675 D3D12_RESOURCE_DESC1 * RetVal);
20676
20677#endif
20678
20679 END_INTERFACE
20680 } ID3D12Resource2Vtbl;
20681
20682 interface ID3D12Resource2
20683 {
20684 CONST_VTBL struct ID3D12Resource2Vtbl *lpVtbl;
20685 };
20686
20687
20688
20689#ifdef COBJMACROS
20690
20691
20692#define ID3D12Resource2_QueryInterface(This,riid,ppvObject) \
20693 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20694
20695#define ID3D12Resource2_AddRef(This) \
20696 ( (This)->lpVtbl -> AddRef(This) )
20697
20698#define ID3D12Resource2_Release(This) \
20699 ( (This)->lpVtbl -> Release(This) )
20700
20701
20702#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData) \
20703 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20704
20705#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData) \
20706 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20707
20708#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData) \
20709 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20710
20711#define ID3D12Resource2_SetName(This,Name) \
20712 ( (This)->lpVtbl -> SetName(This,Name) )
20713
20714
20715#define ID3D12Resource2_GetDevice(This,riid,ppvDevice) \
20716 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20717
20718
20719
20720#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData) \
20721 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
20722
20723#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange) \
20724 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
20725#if !defined(_WIN32)
20726
20727#define ID3D12Resource2_GetDesc(This) \
20728 ( (This)->lpVtbl -> GetDesc(This) )
20729#else
20730#define ID3D12Resource2_GetDesc(This,RetVal) \
20731 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20732#endif
20733
20734#define ID3D12Resource2_GetGPUVirtualAddress(This) \
20735 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
20736
20737#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
20738 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
20739
20740#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
20741 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
20742
20743#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
20744 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
20745
20746
20747#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20748 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20749
20750#if !defined(_WIN32)
20751
20752#define ID3D12Resource2_GetDesc1(This) \
20753 ( (This)->lpVtbl -> GetDesc1(This) )
20754#else
20755#define ID3D12Resource2_GetDesc1(This,RetVal) \
20756 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
20757#endif
20758
20759#endif /* COBJMACROS */
20760
20761
20762#endif /* C style interface */
20763
20764
20765
20766
20767#endif /* __ID3D12Resource2_INTERFACE_DEFINED__ */
20768
20769
20770#ifndef __ID3D12Heap1_INTERFACE_DEFINED__
20771#define __ID3D12Heap1_INTERFACE_DEFINED__
20772
20773/* interface ID3D12Heap1 */
20774/* [unique][local][object][uuid] */
20775
20776
20777EXTERN_C const IID IID_ID3D12Heap1;
20778
20779#if defined(__cplusplus) && !defined(CINTERFACE)
20780
20781 MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D")
20782 ID3D12Heap1 : public ID3D12Heap
20783 {
20784 public:
20785 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
20786 REFIID riid,
20787 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
20788
20789 };
20790
20791
20792#else /* C style interface */
20793
20794 typedef struct ID3D12Heap1Vtbl
20795 {
20796 BEGIN_INTERFACE
20797
20798 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20799 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20800 ID3D12Heap1 * This,
20801 REFIID riid,
20802 _COM_Outptr_ void **ppvObject);
20803
20804 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20805 ULONG ( STDMETHODCALLTYPE *AddRef )(
20806 ID3D12Heap1 * This);
20807
20808 DECLSPEC_XFGVIRT(IUnknown, Release)
20809 ULONG ( STDMETHODCALLTYPE *Release )(
20810 ID3D12Heap1 * This);
20811
20812 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20813 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20814 ID3D12Heap1 * This,
20815 _In_ REFGUID guid,
20816 _Inout_ UINT *pDataSize,
20817 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20818
20819 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20820 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20821 ID3D12Heap1 * This,
20822 _In_ REFGUID guid,
20823 _In_ UINT DataSize,
20824 _In_reads_bytes_opt_( DataSize ) const void *pData);
20825
20826 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20827 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20828 ID3D12Heap1 * This,
20829 _In_ REFGUID guid,
20830 _In_opt_ const IUnknown *pData);
20831
20832 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20833 HRESULT ( STDMETHODCALLTYPE *SetName )(
20834 ID3D12Heap1 * This,
20835 _In_z_ LPCWSTR Name);
20836
20837 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20838 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20839 ID3D12Heap1 * This,
20840 REFIID riid,
20841 _COM_Outptr_opt_ void **ppvDevice);
20842
20843 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
20844#if !defined(_WIN32)
20845 D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
20846 ID3D12Heap1 * This);
20847
20848#else
20849 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
20850 ID3D12Heap1 * This,
20851 D3D12_HEAP_DESC * RetVal);
20852
20853#endif
20854
20855 DECLSPEC_XFGVIRT(ID3D12Heap1, GetProtectedResourceSession)
20856 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20857 ID3D12Heap1 * This,
20858 REFIID riid,
20859 _COM_Outptr_opt_ void **ppProtectedSession);
20860
20861 END_INTERFACE
20862 } ID3D12Heap1Vtbl;
20863
20864 interface ID3D12Heap1
20865 {
20866 CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl;
20867 };
20868
20869
20870
20871#ifdef COBJMACROS
20872
20873
20874#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \
20875 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20876
20877#define ID3D12Heap1_AddRef(This) \
20878 ( (This)->lpVtbl -> AddRef(This) )
20879
20880#define ID3D12Heap1_Release(This) \
20881 ( (This)->lpVtbl -> Release(This) )
20882
20883
20884#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \
20885 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20886
20887#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \
20888 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20889
20890#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \
20891 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20892
20893#define ID3D12Heap1_SetName(This,Name) \
20894 ( (This)->lpVtbl -> SetName(This,Name) )
20895
20896
20897#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \
20898 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20899
20900
20901#if !defined(_WIN32)
20902
20903#define ID3D12Heap1_GetDesc(This) \
20904 ( (This)->lpVtbl -> GetDesc(This) )
20905#else
20906#define ID3D12Heap1_GetDesc(This,RetVal) \
20907 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20908#endif
20909
20910
20911#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20912 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20913
20914#endif /* COBJMACROS */
20915
20916
20917#endif /* C style interface */
20918
20919
20920
20921
20922#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */
20923
20924
20925#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
20926#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
20927
20928/* interface ID3D12GraphicsCommandList3 */
20929/* [unique][local][object][uuid] */
20930
20931
20932EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
20933
20934#if defined(__cplusplus) && !defined(CINTERFACE)
20935
20936 MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")
20937 ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
20938 {
20939 public:
20940 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
20941 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
20942
20943 };
20944
20945
20946#else /* C style interface */
20947
20948 typedef struct ID3D12GraphicsCommandList3Vtbl
20949 {
20950 BEGIN_INTERFACE
20951
20952 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20953 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20954 ID3D12GraphicsCommandList3 * This,
20955 REFIID riid,
20956 _COM_Outptr_ void **ppvObject);
20957
20958 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20959 ULONG ( STDMETHODCALLTYPE *AddRef )(
20960 ID3D12GraphicsCommandList3 * This);
20961
20962 DECLSPEC_XFGVIRT(IUnknown, Release)
20963 ULONG ( STDMETHODCALLTYPE *Release )(
20964 ID3D12GraphicsCommandList3 * This);
20965
20966 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20967 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20968 ID3D12GraphicsCommandList3 * This,
20969 _In_ REFGUID guid,
20970 _Inout_ UINT *pDataSize,
20971 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20972
20973 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20974 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20975 ID3D12GraphicsCommandList3 * This,
20976 _In_ REFGUID guid,
20977 _In_ UINT DataSize,
20978 _In_reads_bytes_opt_( DataSize ) const void *pData);
20979
20980 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20981 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20982 ID3D12GraphicsCommandList3 * This,
20983 _In_ REFGUID guid,
20984 _In_opt_ const IUnknown *pData);
20985
20986 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20987 HRESULT ( STDMETHODCALLTYPE *SetName )(
20988 ID3D12GraphicsCommandList3 * This,
20989 _In_z_ LPCWSTR Name);
20990
20991 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20992 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20993 ID3D12GraphicsCommandList3 * This,
20994 REFIID riid,
20995 _COM_Outptr_opt_ void **ppvDevice);
20996
20997 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
20998 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
20999 ID3D12GraphicsCommandList3 * This);
21000
21001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
21002 HRESULT ( STDMETHODCALLTYPE *Close )(
21003 ID3D12GraphicsCommandList3 * This);
21004
21005 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
21006 HRESULT ( STDMETHODCALLTYPE *Reset )(
21007 ID3D12GraphicsCommandList3 * This,
21008 _In_ ID3D12CommandAllocator *pAllocator,
21009 _In_opt_ ID3D12PipelineState *pInitialState);
21010
21011 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
21012 void ( STDMETHODCALLTYPE *ClearState )(
21013 ID3D12GraphicsCommandList3 * This,
21014 _In_opt_ ID3D12PipelineState *pPipelineState);
21015
21016 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
21017 void ( STDMETHODCALLTYPE *DrawInstanced )(
21018 ID3D12GraphicsCommandList3 * This,
21019 _In_ UINT VertexCountPerInstance,
21020 _In_ UINT InstanceCount,
21021 _In_ UINT StartVertexLocation,
21022 _In_ UINT StartInstanceLocation);
21023
21024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
21025 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
21026 ID3D12GraphicsCommandList3 * This,
21027 _In_ UINT IndexCountPerInstance,
21028 _In_ UINT InstanceCount,
21029 _In_ UINT StartIndexLocation,
21030 _In_ INT BaseVertexLocation,
21031 _In_ UINT StartInstanceLocation);
21032
21033 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
21034 void ( STDMETHODCALLTYPE *Dispatch )(
21035 ID3D12GraphicsCommandList3 * This,
21036 _In_ UINT ThreadGroupCountX,
21037 _In_ UINT ThreadGroupCountY,
21038 _In_ UINT ThreadGroupCountZ);
21039
21040 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
21041 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
21042 ID3D12GraphicsCommandList3 * This,
21043 _In_ ID3D12Resource *pDstBuffer,
21044 UINT64 DstOffset,
21045 _In_ ID3D12Resource *pSrcBuffer,
21046 UINT64 SrcOffset,
21047 UINT64 NumBytes);
21048
21049 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
21050 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
21051 ID3D12GraphicsCommandList3 * This,
21052 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
21053 UINT DstX,
21054 UINT DstY,
21055 UINT DstZ,
21056 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
21057 _In_opt_ const D3D12_BOX *pSrcBox);
21058
21059 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
21060 void ( STDMETHODCALLTYPE *CopyResource )(
21061 ID3D12GraphicsCommandList3 * This,
21062 _In_ ID3D12Resource *pDstResource,
21063 _In_ ID3D12Resource *pSrcResource);
21064
21065 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
21066 void ( STDMETHODCALLTYPE *CopyTiles )(
21067 ID3D12GraphicsCommandList3 * This,
21068 _In_ ID3D12Resource *pTiledResource,
21069 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
21070 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
21071 _In_ ID3D12Resource *pBuffer,
21072 UINT64 BufferStartOffsetInBytes,
21073 D3D12_TILE_COPY_FLAGS Flags);
21074
21075 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
21076 void ( STDMETHODCALLTYPE *ResolveSubresource )(
21077 ID3D12GraphicsCommandList3 * This,
21078 _In_ ID3D12Resource *pDstResource,
21079 _In_ UINT DstSubresource,
21080 _In_ ID3D12Resource *pSrcResource,
21081 _In_ UINT SrcSubresource,
21082 _In_ DXGI_FORMAT Format);
21083
21084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
21085 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
21086 ID3D12GraphicsCommandList3 * This,
21087 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
21088
21089 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
21090 void ( STDMETHODCALLTYPE *RSSetViewports )(
21091 ID3D12GraphicsCommandList3 * This,
21092 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
21093 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
21094
21095 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
21096 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
21097 ID3D12GraphicsCommandList3 * This,
21098 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
21099 _In_reads_( NumRects) const D3D12_RECT *pRects);
21100
21101 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
21102 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
21103 ID3D12GraphicsCommandList3 * This,
21104 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
21105
21106 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
21107 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
21108 ID3D12GraphicsCommandList3 * This,
21109 _In_ UINT StencilRef);
21110
21111 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
21112 void ( STDMETHODCALLTYPE *SetPipelineState )(
21113 ID3D12GraphicsCommandList3 * This,
21114 _In_ ID3D12PipelineState *pPipelineState);
21115
21116 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
21117 void ( STDMETHODCALLTYPE *ResourceBarrier )(
21118 ID3D12GraphicsCommandList3 * This,
21119 _In_ UINT NumBarriers,
21120 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
21121
21122 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
21123 void ( STDMETHODCALLTYPE *ExecuteBundle )(
21124 ID3D12GraphicsCommandList3 * This,
21125 _In_ ID3D12GraphicsCommandList *pCommandList);
21126
21127 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
21128 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
21129 ID3D12GraphicsCommandList3 * This,
21130 _In_ UINT NumDescriptorHeaps,
21131 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
21132
21133 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
21134 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
21135 ID3D12GraphicsCommandList3 * This,
21136 _In_opt_ ID3D12RootSignature *pRootSignature);
21137
21138 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
21139 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
21140 ID3D12GraphicsCommandList3 * This,
21141 _In_opt_ ID3D12RootSignature *pRootSignature);
21142
21143 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
21144 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
21145 ID3D12GraphicsCommandList3 * This,
21146 _In_ UINT RootParameterIndex,
21147 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21148
21149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
21150 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
21151 ID3D12GraphicsCommandList3 * This,
21152 _In_ UINT RootParameterIndex,
21153 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21154
21155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
21156 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
21157 ID3D12GraphicsCommandList3 * This,
21158 _In_ UINT RootParameterIndex,
21159 _In_ UINT SrcData,
21160 _In_ UINT DestOffsetIn32BitValues);
21161
21162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
21163 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
21164 ID3D12GraphicsCommandList3 * This,
21165 _In_ UINT RootParameterIndex,
21166 _In_ UINT SrcData,
21167 _In_ UINT DestOffsetIn32BitValues);
21168
21169 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
21170 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
21171 ID3D12GraphicsCommandList3 * This,
21172 _In_ UINT RootParameterIndex,
21173 _In_ UINT Num32BitValuesToSet,
21174 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21175 _In_ UINT DestOffsetIn32BitValues);
21176
21177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
21178 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
21179 ID3D12GraphicsCommandList3 * This,
21180 _In_ UINT RootParameterIndex,
21181 _In_ UINT Num32BitValuesToSet,
21182 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21183 _In_ UINT DestOffsetIn32BitValues);
21184
21185 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
21186 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
21187 ID3D12GraphicsCommandList3 * This,
21188 _In_ UINT RootParameterIndex,
21189 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21190
21191 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
21192 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
21193 ID3D12GraphicsCommandList3 * This,
21194 _In_ UINT RootParameterIndex,
21195 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21196
21197 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
21198 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
21199 ID3D12GraphicsCommandList3 * This,
21200 _In_ UINT RootParameterIndex,
21201 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21202
21203 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
21204 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
21205 ID3D12GraphicsCommandList3 * This,
21206 _In_ UINT RootParameterIndex,
21207 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21208
21209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
21210 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
21211 ID3D12GraphicsCommandList3 * This,
21212 _In_ UINT RootParameterIndex,
21213 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21214
21215 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
21216 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
21217 ID3D12GraphicsCommandList3 * This,
21218 _In_ UINT RootParameterIndex,
21219 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21220
21221 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
21222 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
21223 ID3D12GraphicsCommandList3 * This,
21224 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
21225
21226 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
21227 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
21228 ID3D12GraphicsCommandList3 * This,
21229 _In_ UINT StartSlot,
21230 _In_ UINT NumViews,
21231 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
21232
21233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
21234 void ( STDMETHODCALLTYPE *SOSetTargets )(
21235 ID3D12GraphicsCommandList3 * This,
21236 _In_ UINT StartSlot,
21237 _In_ UINT NumViews,
21238 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
21239
21240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
21241 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
21242 ID3D12GraphicsCommandList3 * This,
21243 _In_ UINT NumRenderTargetDescriptors,
21244 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
21245 _In_ BOOL RTsSingleHandleToDescriptorRange,
21246 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
21247
21248 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
21249 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
21250 ID3D12GraphicsCommandList3 * This,
21251 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
21252 _In_ D3D12_CLEAR_FLAGS ClearFlags,
21253 _In_ FLOAT Depth,
21254 _In_ UINT8 Stencil,
21255 _In_ UINT NumRects,
21256 _In_reads_(NumRects) const D3D12_RECT *pRects);
21257
21258 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
21259 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
21260 ID3D12GraphicsCommandList3 * This,
21261 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
21262 _In_ const FLOAT ColorRGBA[ 4 ],
21263 _In_ UINT NumRects,
21264 _In_reads_(NumRects) const D3D12_RECT *pRects);
21265
21266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
21267 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
21268 ID3D12GraphicsCommandList3 * This,
21269 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21270 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21271 _In_ ID3D12Resource *pResource,
21272 _In_ const UINT Values[ 4 ],
21273 _In_ UINT NumRects,
21274 _In_reads_(NumRects) const D3D12_RECT *pRects);
21275
21276 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
21277 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
21278 ID3D12GraphicsCommandList3 * This,
21279 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21280 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21281 _In_ ID3D12Resource *pResource,
21282 _In_ const FLOAT Values[ 4 ],
21283 _In_ UINT NumRects,
21284 _In_reads_(NumRects) const D3D12_RECT *pRects);
21285
21286 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
21287 void ( STDMETHODCALLTYPE *DiscardResource )(
21288 ID3D12GraphicsCommandList3 * This,
21289 _In_ ID3D12Resource *pResource,
21290 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
21291
21292 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
21293 void ( STDMETHODCALLTYPE *BeginQuery )(
21294 ID3D12GraphicsCommandList3 * This,
21295 _In_ ID3D12QueryHeap *pQueryHeap,
21296 _In_ D3D12_QUERY_TYPE Type,
21297 _In_ UINT Index);
21298
21299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
21300 void ( STDMETHODCALLTYPE *EndQuery )(
21301 ID3D12GraphicsCommandList3 * This,
21302 _In_ ID3D12QueryHeap *pQueryHeap,
21303 _In_ D3D12_QUERY_TYPE Type,
21304 _In_ UINT Index);
21305
21306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
21307 void ( STDMETHODCALLTYPE *ResolveQueryData )(
21308 ID3D12GraphicsCommandList3 * This,
21309 _In_ ID3D12QueryHeap *pQueryHeap,
21310 _In_ D3D12_QUERY_TYPE Type,
21311 _In_ UINT StartIndex,
21312 _In_ UINT NumQueries,
21313 _In_ ID3D12Resource *pDestinationBuffer,
21314 _In_ UINT64 AlignedDestinationBufferOffset);
21315
21316 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
21317 void ( STDMETHODCALLTYPE *SetPredication )(
21318 ID3D12GraphicsCommandList3 * This,
21319 _In_opt_ ID3D12Resource *pBuffer,
21320 _In_ UINT64 AlignedBufferOffset,
21321 _In_ D3D12_PREDICATION_OP Operation);
21322
21323 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
21324 void ( STDMETHODCALLTYPE *SetMarker )(
21325 ID3D12GraphicsCommandList3 * This,
21326 UINT Metadata,
21327 _In_reads_bytes_opt_(Size) const void *pData,
21328 UINT Size);
21329
21330 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
21331 void ( STDMETHODCALLTYPE *BeginEvent )(
21332 ID3D12GraphicsCommandList3 * This,
21333 UINT Metadata,
21334 _In_reads_bytes_opt_(Size) const void *pData,
21335 UINT Size);
21336
21337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
21338 void ( STDMETHODCALLTYPE *EndEvent )(
21339 ID3D12GraphicsCommandList3 * This);
21340
21341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
21342 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
21343 ID3D12GraphicsCommandList3 * This,
21344 _In_ ID3D12CommandSignature *pCommandSignature,
21345 _In_ UINT MaxCommandCount,
21346 _In_ ID3D12Resource *pArgumentBuffer,
21347 _In_ UINT64 ArgumentBufferOffset,
21348 _In_opt_ ID3D12Resource *pCountBuffer,
21349 _In_ UINT64 CountBufferOffset);
21350
21351 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
21352 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
21353 ID3D12GraphicsCommandList3 * This,
21354 _In_ ID3D12Resource *pDstBuffer,
21355 UINT64 DstOffset,
21356 _In_ ID3D12Resource *pSrcBuffer,
21357 UINT64 SrcOffset,
21358 UINT Dependencies,
21359 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21360 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21361
21362 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
21363 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
21364 ID3D12GraphicsCommandList3 * This,
21365 _In_ ID3D12Resource *pDstBuffer,
21366 UINT64 DstOffset,
21367 _In_ ID3D12Resource *pSrcBuffer,
21368 UINT64 SrcOffset,
21369 UINT Dependencies,
21370 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21371 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21372
21373 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
21374 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
21375 ID3D12GraphicsCommandList3 * This,
21376 _In_ FLOAT Min,
21377 _In_ FLOAT Max);
21378
21379 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
21380 void ( STDMETHODCALLTYPE *SetSamplePositions )(
21381 ID3D12GraphicsCommandList3 * This,
21382 _In_ UINT NumSamplesPerPixel,
21383 _In_ UINT NumPixels,
21384 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
21385
21386 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
21387 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
21388 ID3D12GraphicsCommandList3 * This,
21389 _In_ ID3D12Resource *pDstResource,
21390 _In_ UINT DstSubresource,
21391 _In_ UINT DstX,
21392 _In_ UINT DstY,
21393 _In_ ID3D12Resource *pSrcResource,
21394 _In_ UINT SrcSubresource,
21395 _In_opt_ D3D12_RECT *pSrcRect,
21396 _In_ DXGI_FORMAT Format,
21397 _In_ D3D12_RESOLVE_MODE ResolveMode);
21398
21399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
21400 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
21401 ID3D12GraphicsCommandList3 * This,
21402 _In_ UINT Mask);
21403
21404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
21405 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
21406 ID3D12GraphicsCommandList3 * This,
21407 UINT Count,
21408 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
21409 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
21410
21411 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
21412 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
21413 ID3D12GraphicsCommandList3 * This,
21414 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
21415
21416 END_INTERFACE
21417 } ID3D12GraphicsCommandList3Vtbl;
21418
21419 interface ID3D12GraphicsCommandList3
21420 {
21421 CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl;
21422 };
21423
21424
21425
21426#ifdef COBJMACROS
21427
21428
21429#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \
21430 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21431
21432#define ID3D12GraphicsCommandList3_AddRef(This) \
21433 ( (This)->lpVtbl -> AddRef(This) )
21434
21435#define ID3D12GraphicsCommandList3_Release(This) \
21436 ( (This)->lpVtbl -> Release(This) )
21437
21438
21439#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
21440 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21441
21442#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \
21443 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21444
21445#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \
21446 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21447
21448#define ID3D12GraphicsCommandList3_SetName(This,Name) \
21449 ( (This)->lpVtbl -> SetName(This,Name) )
21450
21451
21452#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \
21453 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21454
21455
21456#define ID3D12GraphicsCommandList3_GetType(This) \
21457 ( (This)->lpVtbl -> GetType(This) )
21458
21459
21460#define ID3D12GraphicsCommandList3_Close(This) \
21461 ( (This)->lpVtbl -> Close(This) )
21462
21463#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \
21464 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
21465
21466#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \
21467 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
21468
21469#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
21470 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
21471
21472#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
21473 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
21474
21475#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
21476 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
21477
21478#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
21479 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
21480
21481#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
21482 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
21483
21484#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \
21485 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
21486
21487#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
21488 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
21489
21490#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
21491 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
21492
21493#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \
21494 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
21495
21496#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \
21497 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
21498
21499#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \
21500 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
21501
21502#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \
21503 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
21504
21505#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \
21506 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
21507
21508#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \
21509 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
21510
21511#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
21512 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
21513
21514#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \
21515 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
21516
21517#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
21518 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
21519
21520#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \
21521 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
21522
21523#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \
21524 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
21525
21526#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
21527 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
21528
21529#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
21530 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
21531
21532#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
21533 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
21534
21535#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
21536 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
21537
21538#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
21539 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
21540
21541#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
21542 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
21543
21544#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
21545 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
21546
21547#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
21548 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
21549
21550#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
21551 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
21552
21553#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
21554 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
21555
21556#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
21557 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
21558
21559#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
21560 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
21561
21562#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \
21563 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
21564
21565#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
21566 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
21567
21568#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \
21569 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
21570
21571#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
21572 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
21573
21574#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
21575 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
21576
21577#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
21578 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
21579
21580#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
21581 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
21582
21583#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
21584 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
21585
21586#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \
21587 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
21588
21589#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
21590 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
21591
21592#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
21593 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
21594
21595#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
21596 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
21597
21598#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
21599 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
21600
21601#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \
21602 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
21603
21604#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \
21605 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
21606
21607#define ID3D12GraphicsCommandList3_EndEvent(This) \
21608 ( (This)->lpVtbl -> EndEvent(This) )
21609
21610#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
21611 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
21612
21613
21614#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
21615 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
21616
21617#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
21618 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
21619
21620#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \
21621 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
21622
21623#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
21624 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
21625
21626#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
21627 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
21628
21629#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \
21630 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
21631
21632
21633#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
21634 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
21635
21636
21637#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
21638 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
21639
21640#endif /* COBJMACROS */
21641
21642
21643#endif /* C style interface */
21644
21645
21646
21647
21648#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
21649
21650
21651/* interface __MIDL_itf_d3d12_0000_0054 */
21652/* [local] */
21653
21654typedef
21655enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
21656 {
21657 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0,
21658 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
21659 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
21660 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 ) ,
21661 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
21662 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
21663 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
21664 } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
21665
21666typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
21667 {
21668 D3D12_CLEAR_VALUE ClearValue;
21669 } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
21670
21671typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
21672 {
21673 UINT AdditionalWidth;
21674 UINT AdditionalHeight;
21675 } D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
21676
21677typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
21678 {
21679 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
21680 union
21681 {
21682 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
21683 D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
21684 } ;
21685 } D3D12_RENDER_PASS_BEGINNING_ACCESS;
21686
21687typedef
21688enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
21689 {
21690 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0,
21691 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
21692 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
21693 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 ) ,
21694 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
21695 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
21696 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
21697 } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
21698
21699typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
21700 {
21701 UINT SrcSubresource;
21702 UINT DstSubresource;
21703 UINT DstX;
21704 UINT DstY;
21705 D3D12_RECT SrcRect;
21706 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
21707
21708typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
21709 {
21710 ID3D12Resource *pSrcResource;
21711 ID3D12Resource *pDstResource;
21712 UINT SubresourceCount;
21713 _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
21714 DXGI_FORMAT Format;
21715 D3D12_RESOLVE_MODE ResolveMode;
21716 BOOL PreserveResolveSource;
21717 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
21718
21719typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
21720 {
21721 UINT AdditionalWidth;
21722 UINT AdditionalHeight;
21723 } D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
21724
21725typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
21726 {
21727 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
21728 union
21729 {
21730 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
21731 D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
21732 } ;
21733 } D3D12_RENDER_PASS_ENDING_ACCESS;
21734
21735typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
21736 {
21737 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
21738 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
21739 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
21740 } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
21741
21742typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
21743 {
21744 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
21745 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
21746 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
21747 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
21748 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
21749 } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
21750
21751typedef
21752enum D3D12_RENDER_PASS_FLAGS
21753 {
21754 D3D12_RENDER_PASS_FLAG_NONE = 0,
21755 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
21756 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
21757 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
21758 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
21759 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
21760 } D3D12_RENDER_PASS_FLAGS;
21761
21762DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )
21763
21764
21765extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
21766extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
21767
21768#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
21769#define __ID3D12MetaCommand_INTERFACE_DEFINED__
21770
21771/* interface ID3D12MetaCommand */
21772/* [unique][local][object][uuid] */
21773
21774
21775EXTERN_C const IID IID_ID3D12MetaCommand;
21776
21777#if defined(__cplusplus) && !defined(CINTERFACE)
21778
21779 MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570")
21780 ID3D12MetaCommand : public ID3D12Pageable
21781 {
21782 public:
21783 virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
21784 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
21785 _In_ UINT ParameterIndex) = 0;
21786
21787 };
21788
21789
21790#else /* C style interface */
21791
21792 typedef struct ID3D12MetaCommandVtbl
21793 {
21794 BEGIN_INTERFACE
21795
21796 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21797 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21798 ID3D12MetaCommand * This,
21799 REFIID riid,
21800 _COM_Outptr_ void **ppvObject);
21801
21802 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21803 ULONG ( STDMETHODCALLTYPE *AddRef )(
21804 ID3D12MetaCommand * This);
21805
21806 DECLSPEC_XFGVIRT(IUnknown, Release)
21807 ULONG ( STDMETHODCALLTYPE *Release )(
21808 ID3D12MetaCommand * This);
21809
21810 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
21811 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
21812 ID3D12MetaCommand * This,
21813 _In_ REFGUID guid,
21814 _Inout_ UINT *pDataSize,
21815 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
21816
21817 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
21818 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
21819 ID3D12MetaCommand * This,
21820 _In_ REFGUID guid,
21821 _In_ UINT DataSize,
21822 _In_reads_bytes_opt_( DataSize ) const void *pData);
21823
21824 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
21825 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
21826 ID3D12MetaCommand * This,
21827 _In_ REFGUID guid,
21828 _In_opt_ const IUnknown *pData);
21829
21830 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
21831 HRESULT ( STDMETHODCALLTYPE *SetName )(
21832 ID3D12MetaCommand * This,
21833 _In_z_ LPCWSTR Name);
21834
21835 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
21836 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
21837 ID3D12MetaCommand * This,
21838 REFIID riid,
21839 _COM_Outptr_opt_ void **ppvDevice);
21840
21841 DECLSPEC_XFGVIRT(ID3D12MetaCommand, GetRequiredParameterResourceSize)
21842 UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )(
21843 ID3D12MetaCommand * This,
21844 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
21845 _In_ UINT ParameterIndex);
21846
21847 END_INTERFACE
21848 } ID3D12MetaCommandVtbl;
21849
21850 interface ID3D12MetaCommand
21851 {
21852 CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl;
21853 };
21854
21855
21856
21857#ifdef COBJMACROS
21858
21859
21860#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \
21861 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21862
21863#define ID3D12MetaCommand_AddRef(This) \
21864 ( (This)->lpVtbl -> AddRef(This) )
21865
21866#define ID3D12MetaCommand_Release(This) \
21867 ( (This)->lpVtbl -> Release(This) )
21868
21869
21870#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \
21871 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21872
21873#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \
21874 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21875
21876#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \
21877 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21878
21879#define ID3D12MetaCommand_SetName(This,Name) \
21880 ( (This)->lpVtbl -> SetName(This,Name) )
21881
21882
21883#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \
21884 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21885
21886
21887
21888#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \
21889 ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) )
21890
21891#endif /* COBJMACROS */
21892
21893
21894#endif /* C style interface */
21895
21896
21897
21898
21899#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
21900
21901
21902/* interface __MIDL_itf_d3d12_0000_0055 */
21903/* [local] */
21904
21905typedef struct D3D12_DISPATCH_RAYS_DESC
21906 {
21907 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
21908 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
21909 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
21910 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
21911 UINT Width;
21912 UINT Height;
21913 UINT Depth;
21914 } D3D12_DISPATCH_RAYS_DESC;
21915
21916typedef
21917enum D3D12_SET_WORK_GRAPH_FLAGS
21918 {
21919 D3D12_SET_WORK_GRAPH_FLAG_NONE = 0,
21920 D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1
21921 } D3D12_SET_WORK_GRAPH_FLAGS;
21922
21923DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )
21924typedef struct D3D12_SET_WORK_GRAPH_DESC
21925 {
21926 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21927 D3D12_SET_WORK_GRAPH_FLAGS Flags;
21928 D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
21929 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
21930 } D3D12_SET_WORK_GRAPH_DESC;
21931
21932typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
21933 {
21934 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21935 } D3D12_SET_RAYTRACING_PIPELINE_DESC;
21936
21937typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
21938 {
21939 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21940 } D3D12_SET_GENERIC_PIPELINE_DESC;
21941
21942typedef
21943enum D3D12_PROGRAM_TYPE
21944 {
21945 D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
21946 D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
21947 D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
21948 } D3D12_PROGRAM_TYPE;
21949
21950typedef struct D3D12_SET_PROGRAM_DESC
21951 {
21952 D3D12_PROGRAM_TYPE Type;
21953 union
21954 {
21955 D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
21956 D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
21957 D3D12_SET_WORK_GRAPH_DESC WorkGraph;
21958 } ;
21959 } D3D12_SET_PROGRAM_DESC;
21960
21961typedef
21962enum D3D12_DISPATCH_MODE
21963 {
21964 D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0,
21965 D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1,
21966 D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2,
21967 D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3
21968 } D3D12_DISPATCH_MODE;
21969
21970typedef struct D3D12_NODE_CPU_INPUT
21971 {
21972 UINT EntrypointIndex;
21973 UINT NumRecords;
21974 const void *pRecords;
21975 UINT64 RecordStrideInBytes;
21976 } D3D12_NODE_CPU_INPUT;
21977
21978typedef struct D3D12_NODE_GPU_INPUT
21979 {
21980 UINT EntrypointIndex;
21981 UINT NumRecords;
21982 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
21983 } D3D12_NODE_GPU_INPUT;
21984
21985typedef struct D3D12_MULTI_NODE_CPU_INPUT
21986 {
21987 UINT NumNodeInputs;
21988 const D3D12_NODE_CPU_INPUT *pNodeInputs;
21989 UINT64 NodeInputStrideInBytes;
21990 } D3D12_MULTI_NODE_CPU_INPUT;
21991
21992typedef struct D3D12_MULTI_NODE_GPU_INPUT
21993 {
21994 UINT NumNodeInputs;
21995 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs;
21996 } D3D12_MULTI_NODE_GPU_INPUT;
21997
21998typedef struct D3D12_DISPATCH_GRAPH_DESC
21999 {
22000 D3D12_DISPATCH_MODE Mode;
22001 union
22002 {
22003 D3D12_NODE_CPU_INPUT NodeCPUInput;
22004 D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
22005 D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
22006 D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
22007 } ;
22008 } D3D12_DISPATCH_GRAPH_DESC;
22009
22010
22011
22012extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
22013extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
22014
22015#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
22016#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
22017
22018/* interface ID3D12GraphicsCommandList4 */
22019/* [unique][local][object][uuid] */
22020
22021
22022EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
22023
22024#if defined(__cplusplus) && !defined(CINTERFACE)
22025
22026 MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
22027 ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
22028 {
22029 public:
22030 virtual void STDMETHODCALLTYPE BeginRenderPass(
22031 _In_ UINT NumRenderTargets,
22032 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22033 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22034 D3D12_RENDER_PASS_FLAGS Flags) = 0;
22035
22036 virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0;
22037
22038 virtual void STDMETHODCALLTYPE InitializeMetaCommand(
22039 _In_ ID3D12MetaCommand *pMetaCommand,
22040 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22041 _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0;
22042
22043 virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
22044 _In_ ID3D12MetaCommand *pMetaCommand,
22045 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22046 _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0;
22047
22048 virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
22049 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22050 _In_ UINT NumPostbuildInfoDescs,
22051 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0;
22052
22053 virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
22054 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22055 _In_ UINT NumSourceAccelerationStructures,
22056 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0;
22057
22058 virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
22059 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22060 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22061 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0;
22062
22063 virtual void STDMETHODCALLTYPE SetPipelineState1(
22064 _In_ ID3D12StateObject *pStateObject) = 0;
22065
22066 virtual void STDMETHODCALLTYPE DispatchRays(
22067 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0;
22068
22069 };
22070
22071
22072#else /* C style interface */
22073
22074 typedef struct ID3D12GraphicsCommandList4Vtbl
22075 {
22076 BEGIN_INTERFACE
22077
22078 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
22079 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
22080 ID3D12GraphicsCommandList4 * This,
22081 REFIID riid,
22082 _COM_Outptr_ void **ppvObject);
22083
22084 DECLSPEC_XFGVIRT(IUnknown, AddRef)
22085 ULONG ( STDMETHODCALLTYPE *AddRef )(
22086 ID3D12GraphicsCommandList4 * This);
22087
22088 DECLSPEC_XFGVIRT(IUnknown, Release)
22089 ULONG ( STDMETHODCALLTYPE *Release )(
22090 ID3D12GraphicsCommandList4 * This);
22091
22092 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
22093 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
22094 ID3D12GraphicsCommandList4 * This,
22095 _In_ REFGUID guid,
22096 _Inout_ UINT *pDataSize,
22097 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
22098
22099 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
22100 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
22101 ID3D12GraphicsCommandList4 * This,
22102 _In_ REFGUID guid,
22103 _In_ UINT DataSize,
22104 _In_reads_bytes_opt_( DataSize ) const void *pData);
22105
22106 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
22107 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
22108 ID3D12GraphicsCommandList4 * This,
22109 _In_ REFGUID guid,
22110 _In_opt_ const IUnknown *pData);
22111
22112 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
22113 HRESULT ( STDMETHODCALLTYPE *SetName )(
22114 ID3D12GraphicsCommandList4 * This,
22115 _In_z_ LPCWSTR Name);
22116
22117 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
22118 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
22119 ID3D12GraphicsCommandList4 * This,
22120 REFIID riid,
22121 _COM_Outptr_opt_ void **ppvDevice);
22122
22123 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
22124 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
22125 ID3D12GraphicsCommandList4 * This);
22126
22127 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
22128 HRESULT ( STDMETHODCALLTYPE *Close )(
22129 ID3D12GraphicsCommandList4 * This);
22130
22131 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
22132 HRESULT ( STDMETHODCALLTYPE *Reset )(
22133 ID3D12GraphicsCommandList4 * This,
22134 _In_ ID3D12CommandAllocator *pAllocator,
22135 _In_opt_ ID3D12PipelineState *pInitialState);
22136
22137 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
22138 void ( STDMETHODCALLTYPE *ClearState )(
22139 ID3D12GraphicsCommandList4 * This,
22140 _In_opt_ ID3D12PipelineState *pPipelineState);
22141
22142 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
22143 void ( STDMETHODCALLTYPE *DrawInstanced )(
22144 ID3D12GraphicsCommandList4 * This,
22145 _In_ UINT VertexCountPerInstance,
22146 _In_ UINT InstanceCount,
22147 _In_ UINT StartVertexLocation,
22148 _In_ UINT StartInstanceLocation);
22149
22150 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
22151 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
22152 ID3D12GraphicsCommandList4 * This,
22153 _In_ UINT IndexCountPerInstance,
22154 _In_ UINT InstanceCount,
22155 _In_ UINT StartIndexLocation,
22156 _In_ INT BaseVertexLocation,
22157 _In_ UINT StartInstanceLocation);
22158
22159 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
22160 void ( STDMETHODCALLTYPE *Dispatch )(
22161 ID3D12GraphicsCommandList4 * This,
22162 _In_ UINT ThreadGroupCountX,
22163 _In_ UINT ThreadGroupCountY,
22164 _In_ UINT ThreadGroupCountZ);
22165
22166 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
22167 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
22168 ID3D12GraphicsCommandList4 * This,
22169 _In_ ID3D12Resource *pDstBuffer,
22170 UINT64 DstOffset,
22171 _In_ ID3D12Resource *pSrcBuffer,
22172 UINT64 SrcOffset,
22173 UINT64 NumBytes);
22174
22175 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
22176 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
22177 ID3D12GraphicsCommandList4 * This,
22178 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
22179 UINT DstX,
22180 UINT DstY,
22181 UINT DstZ,
22182 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
22183 _In_opt_ const D3D12_BOX *pSrcBox);
22184
22185 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
22186 void ( STDMETHODCALLTYPE *CopyResource )(
22187 ID3D12GraphicsCommandList4 * This,
22188 _In_ ID3D12Resource *pDstResource,
22189 _In_ ID3D12Resource *pSrcResource);
22190
22191 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
22192 void ( STDMETHODCALLTYPE *CopyTiles )(
22193 ID3D12GraphicsCommandList4 * This,
22194 _In_ ID3D12Resource *pTiledResource,
22195 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
22196 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
22197 _In_ ID3D12Resource *pBuffer,
22198 UINT64 BufferStartOffsetInBytes,
22199 D3D12_TILE_COPY_FLAGS Flags);
22200
22201 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
22202 void ( STDMETHODCALLTYPE *ResolveSubresource )(
22203 ID3D12GraphicsCommandList4 * This,
22204 _In_ ID3D12Resource *pDstResource,
22205 _In_ UINT DstSubresource,
22206 _In_ ID3D12Resource *pSrcResource,
22207 _In_ UINT SrcSubresource,
22208 _In_ DXGI_FORMAT Format);
22209
22210 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
22211 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
22212 ID3D12GraphicsCommandList4 * This,
22213 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
22214
22215 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
22216 void ( STDMETHODCALLTYPE *RSSetViewports )(
22217 ID3D12GraphicsCommandList4 * This,
22218 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
22219 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
22220
22221 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
22222 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
22223 ID3D12GraphicsCommandList4 * This,
22224 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
22225 _In_reads_( NumRects) const D3D12_RECT *pRects);
22226
22227 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
22228 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
22229 ID3D12GraphicsCommandList4 * This,
22230 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
22231
22232 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
22233 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
22234 ID3D12GraphicsCommandList4 * This,
22235 _In_ UINT StencilRef);
22236
22237 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
22238 void ( STDMETHODCALLTYPE *SetPipelineState )(
22239 ID3D12GraphicsCommandList4 * This,
22240 _In_ ID3D12PipelineState *pPipelineState);
22241
22242 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
22243 void ( STDMETHODCALLTYPE *ResourceBarrier )(
22244 ID3D12GraphicsCommandList4 * This,
22245 _In_ UINT NumBarriers,
22246 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
22247
22248 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
22249 void ( STDMETHODCALLTYPE *ExecuteBundle )(
22250 ID3D12GraphicsCommandList4 * This,
22251 _In_ ID3D12GraphicsCommandList *pCommandList);
22252
22253 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
22254 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
22255 ID3D12GraphicsCommandList4 * This,
22256 _In_ UINT NumDescriptorHeaps,
22257 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
22258
22259 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
22260 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
22261 ID3D12GraphicsCommandList4 * This,
22262 _In_opt_ ID3D12RootSignature *pRootSignature);
22263
22264 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
22265 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
22266 ID3D12GraphicsCommandList4 * This,
22267 _In_opt_ ID3D12RootSignature *pRootSignature);
22268
22269 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
22270 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
22271 ID3D12GraphicsCommandList4 * This,
22272 _In_ UINT RootParameterIndex,
22273 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22274
22275 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
22276 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
22277 ID3D12GraphicsCommandList4 * This,
22278 _In_ UINT RootParameterIndex,
22279 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22280
22281 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
22282 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
22283 ID3D12GraphicsCommandList4 * This,
22284 _In_ UINT RootParameterIndex,
22285 _In_ UINT SrcData,
22286 _In_ UINT DestOffsetIn32BitValues);
22287
22288 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
22289 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
22290 ID3D12GraphicsCommandList4 * This,
22291 _In_ UINT RootParameterIndex,
22292 _In_ UINT SrcData,
22293 _In_ UINT DestOffsetIn32BitValues);
22294
22295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
22296 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
22297 ID3D12GraphicsCommandList4 * This,
22298 _In_ UINT RootParameterIndex,
22299 _In_ UINT Num32BitValuesToSet,
22300 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22301 _In_ UINT DestOffsetIn32BitValues);
22302
22303 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
22304 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
22305 ID3D12GraphicsCommandList4 * This,
22306 _In_ UINT RootParameterIndex,
22307 _In_ UINT Num32BitValuesToSet,
22308 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22309 _In_ UINT DestOffsetIn32BitValues);
22310
22311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
22312 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
22313 ID3D12GraphicsCommandList4 * This,
22314 _In_ UINT RootParameterIndex,
22315 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22316
22317 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
22318 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
22319 ID3D12GraphicsCommandList4 * This,
22320 _In_ UINT RootParameterIndex,
22321 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22322
22323 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
22324 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
22325 ID3D12GraphicsCommandList4 * This,
22326 _In_ UINT RootParameterIndex,
22327 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22328
22329 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
22330 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
22331 ID3D12GraphicsCommandList4 * This,
22332 _In_ UINT RootParameterIndex,
22333 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22334
22335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
22336 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
22337 ID3D12GraphicsCommandList4 * This,
22338 _In_ UINT RootParameterIndex,
22339 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22340
22341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
22342 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
22343 ID3D12GraphicsCommandList4 * This,
22344 _In_ UINT RootParameterIndex,
22345 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22346
22347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
22348 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
22349 ID3D12GraphicsCommandList4 * This,
22350 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
22351
22352 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
22353 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
22354 ID3D12GraphicsCommandList4 * This,
22355 _In_ UINT StartSlot,
22356 _In_ UINT NumViews,
22357 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
22358
22359 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
22360 void ( STDMETHODCALLTYPE *SOSetTargets )(
22361 ID3D12GraphicsCommandList4 * This,
22362 _In_ UINT StartSlot,
22363 _In_ UINT NumViews,
22364 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
22365
22366 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
22367 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
22368 ID3D12GraphicsCommandList4 * This,
22369 _In_ UINT NumRenderTargetDescriptors,
22370 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
22371 _In_ BOOL RTsSingleHandleToDescriptorRange,
22372 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
22373
22374 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
22375 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
22376 ID3D12GraphicsCommandList4 * This,
22377 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
22378 _In_ D3D12_CLEAR_FLAGS ClearFlags,
22379 _In_ FLOAT Depth,
22380 _In_ UINT8 Stencil,
22381 _In_ UINT NumRects,
22382 _In_reads_(NumRects) const D3D12_RECT *pRects);
22383
22384 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
22385 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
22386 ID3D12GraphicsCommandList4 * This,
22387 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
22388 _In_ const FLOAT ColorRGBA[ 4 ],
22389 _In_ UINT NumRects,
22390 _In_reads_(NumRects) const D3D12_RECT *pRects);
22391
22392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
22393 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
22394 ID3D12GraphicsCommandList4 * This,
22395 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22396 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22397 _In_ ID3D12Resource *pResource,
22398 _In_ const UINT Values[ 4 ],
22399 _In_ UINT NumRects,
22400 _In_reads_(NumRects) const D3D12_RECT *pRects);
22401
22402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
22403 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
22404 ID3D12GraphicsCommandList4 * This,
22405 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22406 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22407 _In_ ID3D12Resource *pResource,
22408 _In_ const FLOAT Values[ 4 ],
22409 _In_ UINT NumRects,
22410 _In_reads_(NumRects) const D3D12_RECT *pRects);
22411
22412 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
22413 void ( STDMETHODCALLTYPE *DiscardResource )(
22414 ID3D12GraphicsCommandList4 * This,
22415 _In_ ID3D12Resource *pResource,
22416 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
22417
22418 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
22419 void ( STDMETHODCALLTYPE *BeginQuery )(
22420 ID3D12GraphicsCommandList4 * This,
22421 _In_ ID3D12QueryHeap *pQueryHeap,
22422 _In_ D3D12_QUERY_TYPE Type,
22423 _In_ UINT Index);
22424
22425 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
22426 void ( STDMETHODCALLTYPE *EndQuery )(
22427 ID3D12GraphicsCommandList4 * This,
22428 _In_ ID3D12QueryHeap *pQueryHeap,
22429 _In_ D3D12_QUERY_TYPE Type,
22430 _In_ UINT Index);
22431
22432 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
22433 void ( STDMETHODCALLTYPE *ResolveQueryData )(
22434 ID3D12GraphicsCommandList4 * This,
22435 _In_ ID3D12QueryHeap *pQueryHeap,
22436 _In_ D3D12_QUERY_TYPE Type,
22437 _In_ UINT StartIndex,
22438 _In_ UINT NumQueries,
22439 _In_ ID3D12Resource *pDestinationBuffer,
22440 _In_ UINT64 AlignedDestinationBufferOffset);
22441
22442 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
22443 void ( STDMETHODCALLTYPE *SetPredication )(
22444 ID3D12GraphicsCommandList4 * This,
22445 _In_opt_ ID3D12Resource *pBuffer,
22446 _In_ UINT64 AlignedBufferOffset,
22447 _In_ D3D12_PREDICATION_OP Operation);
22448
22449 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
22450 void ( STDMETHODCALLTYPE *SetMarker )(
22451 ID3D12GraphicsCommandList4 * This,
22452 UINT Metadata,
22453 _In_reads_bytes_opt_(Size) const void *pData,
22454 UINT Size);
22455
22456 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
22457 void ( STDMETHODCALLTYPE *BeginEvent )(
22458 ID3D12GraphicsCommandList4 * This,
22459 UINT Metadata,
22460 _In_reads_bytes_opt_(Size) const void *pData,
22461 UINT Size);
22462
22463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
22464 void ( STDMETHODCALLTYPE *EndEvent )(
22465 ID3D12GraphicsCommandList4 * This);
22466
22467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
22468 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
22469 ID3D12GraphicsCommandList4 * This,
22470 _In_ ID3D12CommandSignature *pCommandSignature,
22471 _In_ UINT MaxCommandCount,
22472 _In_ ID3D12Resource *pArgumentBuffer,
22473 _In_ UINT64 ArgumentBufferOffset,
22474 _In_opt_ ID3D12Resource *pCountBuffer,
22475 _In_ UINT64 CountBufferOffset);
22476
22477 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
22478 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
22479 ID3D12GraphicsCommandList4 * This,
22480 _In_ ID3D12Resource *pDstBuffer,
22481 UINT64 DstOffset,
22482 _In_ ID3D12Resource *pSrcBuffer,
22483 UINT64 SrcOffset,
22484 UINT Dependencies,
22485 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22486 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22487
22488 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
22489 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
22490 ID3D12GraphicsCommandList4 * This,
22491 _In_ ID3D12Resource *pDstBuffer,
22492 UINT64 DstOffset,
22493 _In_ ID3D12Resource *pSrcBuffer,
22494 UINT64 SrcOffset,
22495 UINT Dependencies,
22496 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22497 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22498
22499 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
22500 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
22501 ID3D12GraphicsCommandList4 * This,
22502 _In_ FLOAT Min,
22503 _In_ FLOAT Max);
22504
22505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
22506 void ( STDMETHODCALLTYPE *SetSamplePositions )(
22507 ID3D12GraphicsCommandList4 * This,
22508 _In_ UINT NumSamplesPerPixel,
22509 _In_ UINT NumPixels,
22510 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
22511
22512 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
22513 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
22514 ID3D12GraphicsCommandList4 * This,
22515 _In_ ID3D12Resource *pDstResource,
22516 _In_ UINT DstSubresource,
22517 _In_ UINT DstX,
22518 _In_ UINT DstY,
22519 _In_ ID3D12Resource *pSrcResource,
22520 _In_ UINT SrcSubresource,
22521 _In_opt_ D3D12_RECT *pSrcRect,
22522 _In_ DXGI_FORMAT Format,
22523 _In_ D3D12_RESOLVE_MODE ResolveMode);
22524
22525 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
22526 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
22527 ID3D12GraphicsCommandList4 * This,
22528 _In_ UINT Mask);
22529
22530 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
22531 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
22532 ID3D12GraphicsCommandList4 * This,
22533 UINT Count,
22534 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
22535 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
22536
22537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
22538 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
22539 ID3D12GraphicsCommandList4 * This,
22540 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
22541
22542 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
22543 void ( STDMETHODCALLTYPE *BeginRenderPass )(
22544 ID3D12GraphicsCommandList4 * This,
22545 _In_ UINT NumRenderTargets,
22546 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22547 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22548 D3D12_RENDER_PASS_FLAGS Flags);
22549
22550 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
22551 void ( STDMETHODCALLTYPE *EndRenderPass )(
22552 ID3D12GraphicsCommandList4 * This);
22553
22554 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
22555 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
22556 ID3D12GraphicsCommandList4 * This,
22557 _In_ ID3D12MetaCommand *pMetaCommand,
22558 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22559 _In_ SIZE_T InitializationParametersDataSizeInBytes);
22560
22561 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
22562 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
22563 ID3D12GraphicsCommandList4 * This,
22564 _In_ ID3D12MetaCommand *pMetaCommand,
22565 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22566 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
22567
22568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
22569 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
22570 ID3D12GraphicsCommandList4 * This,
22571 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22572 _In_ UINT NumPostbuildInfoDescs,
22573 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
22574
22575 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
22576 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
22577 ID3D12GraphicsCommandList4 * This,
22578 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22579 _In_ UINT NumSourceAccelerationStructures,
22580 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
22581
22582 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
22583 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
22584 ID3D12GraphicsCommandList4 * This,
22585 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22586 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22587 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
22588
22589 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
22590 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
22591 ID3D12GraphicsCommandList4 * This,
22592 _In_ ID3D12StateObject *pStateObject);
22593
22594 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
22595 void ( STDMETHODCALLTYPE *DispatchRays )(
22596 ID3D12GraphicsCommandList4 * This,
22597 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
22598
22599 END_INTERFACE
22600 } ID3D12GraphicsCommandList4Vtbl;
22601
22602 interface ID3D12GraphicsCommandList4
22603 {
22604 CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl;
22605 };
22606
22607
22608
22609#ifdef COBJMACROS
22610
22611
22612#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \
22613 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
22614
22615#define ID3D12GraphicsCommandList4_AddRef(This) \
22616 ( (This)->lpVtbl -> AddRef(This) )
22617
22618#define ID3D12GraphicsCommandList4_Release(This) \
22619 ( (This)->lpVtbl -> Release(This) )
22620
22621
22622#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
22623 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
22624
22625#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \
22626 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
22627
22628#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \
22629 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
22630
22631#define ID3D12GraphicsCommandList4_SetName(This,Name) \
22632 ( (This)->lpVtbl -> SetName(This,Name) )
22633
22634
22635#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \
22636 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
22637
22638
22639#define ID3D12GraphicsCommandList4_GetType(This) \
22640 ( (This)->lpVtbl -> GetType(This) )
22641
22642
22643#define ID3D12GraphicsCommandList4_Close(This) \
22644 ( (This)->lpVtbl -> Close(This) )
22645
22646#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \
22647 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
22648
22649#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \
22650 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
22651
22652#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
22653 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
22654
22655#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
22656 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
22657
22658#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
22659 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
22660
22661#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
22662 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22663
22664#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22665 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22666
22667#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \
22668 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22669
22670#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22671 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22672
22673#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22674 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22675
22676#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \
22677 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22678
22679#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \
22680 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22681
22682#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \
22683 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22684
22685#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \
22686 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22687
22688#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \
22689 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22690
22691#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \
22692 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22693
22694#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
22695 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22696
22697#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \
22698 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22699
22700#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22701 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22702
22703#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \
22704 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22705
22706#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \
22707 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22708
22709#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22710 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22711
22712#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22713 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22714
22715#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22716 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22717
22718#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22719 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22720
22721#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22722 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22723
22724#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22725 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22726
22727#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22728 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22729
22730#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22731 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22732
22733#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22734 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22735
22736#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22737 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22738
22739#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22740 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22741
22742#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22743 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22744
22745#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \
22746 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22747
22748#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22749 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22750
22751#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \
22752 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22753
22754#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22755 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22756
22757#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22758 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22759
22760#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22761 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22762
22763#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22764 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22765
22766#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22767 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22768
22769#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \
22770 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22771
22772#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
22773 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22774
22775#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
22776 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22777
22778#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22779 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22780
22781#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22782 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22783
22784#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \
22785 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22786
22787#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \
22788 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22789
22790#define ID3D12GraphicsCommandList4_EndEvent(This) \
22791 ( (This)->lpVtbl -> EndEvent(This) )
22792
22793#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22794 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22795
22796
22797#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22798 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22799
22800#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22801 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22802
22803#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \
22804 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22805
22806#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22807 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22808
22809#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
22810 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
22811
22812#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \
22813 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
22814
22815
22816#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
22817 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
22818
22819
22820#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
22821 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
22822
22823
22824#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
22825 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
22826
22827#define ID3D12GraphicsCommandList4_EndRenderPass(This) \
22828 ( (This)->lpVtbl -> EndRenderPass(This) )
22829
22830#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
22831 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
22832
22833#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
22834 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
22835
22836#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
22837 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
22838
22839#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
22840 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
22841
22842#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
22843 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
22844
22845#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \
22846 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
22847
22848#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \
22849 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
22850
22851#endif /* COBJMACROS */
22852
22853
22854#endif /* C style interface */
22855
22856
22857
22858
22859#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
22860
22861
22862/* interface __MIDL_itf_d3d12_0000_0056 */
22863/* [local] */
22864
22865typedef
22866enum D3D12_SHADER_CACHE_MODE
22867 {
22868 D3D12_SHADER_CACHE_MODE_MEMORY = 0,
22869 D3D12_SHADER_CACHE_MODE_DISK = ( D3D12_SHADER_CACHE_MODE_MEMORY + 1 )
22870 } D3D12_SHADER_CACHE_MODE;
22871
22872typedef
22873enum D3D12_SHADER_CACHE_FLAGS
22874 {
22875 D3D12_SHADER_CACHE_FLAG_NONE = 0,
22876 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
22877 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
22878 } D3D12_SHADER_CACHE_FLAGS;
22879
22880DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )
22881typedef struct D3D12_SHADER_CACHE_SESSION_DESC
22882 {
22883 GUID Identifier;
22884 D3D12_SHADER_CACHE_MODE Mode;
22885 D3D12_SHADER_CACHE_FLAGS Flags;
22886 UINT MaximumInMemoryCacheSizeBytes;
22887 UINT MaximumInMemoryCacheEntries;
22888 UINT MaximumValueFileSizeBytes;
22889 UINT64 Version;
22890 } D3D12_SHADER_CACHE_SESSION_DESC;
22891
22892typedef
22893enum D3D12_BARRIER_LAYOUT
22894 {
22895 D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
22896 D3D12_BARRIER_LAYOUT_COMMON = 0,
22897 D3D12_BARRIER_LAYOUT_PRESENT = 0,
22898 D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
22899 D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
22900 D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
22901 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
22902 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
22903 D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
22904 D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
22905 D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
22906 D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
22907 D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
22908 D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
22909 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
22910 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
22911 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
22912 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
22913 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
22914 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
22915 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
22916 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
22917 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
22918 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
22919 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
22920 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
22921 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
22922 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
22923 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
22924 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
22925 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
22926 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
22927 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31
22928 } D3D12_BARRIER_LAYOUT;
22929
22930typedef
22931enum D3D12_BARRIER_SYNC
22932 {
22933 D3D12_BARRIER_SYNC_NONE = 0,
22934 D3D12_BARRIER_SYNC_ALL = 0x1,
22935 D3D12_BARRIER_SYNC_DRAW = 0x2,
22936 D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
22937 D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
22938 D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
22939 D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
22940 D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
22941 D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
22942 D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
22943 D3D12_BARRIER_SYNC_COPY = 0x200,
22944 D3D12_BARRIER_SYNC_RESOLVE = 0x400,
22945 D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
22946 D3D12_BARRIER_SYNC_PREDICATION = 0x800,
22947 D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
22948 D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
22949 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
22950 D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
22951 D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
22952 D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
22953 D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
22954 D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
22955 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
22956 D3D12_BARRIER_SYNC_SPLIT = 0x80000000
22957 } D3D12_BARRIER_SYNC;
22958
22959DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )
22960typedef
22961enum D3D12_BARRIER_ACCESS
22962 {
22963 D3D12_BARRIER_ACCESS_COMMON = 0,
22964 D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
22965 D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
22966 D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
22967 D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
22968 D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
22969 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
22970 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
22971 D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
22972 D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
22973 D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
22974 D3D12_BARRIER_ACCESS_PREDICATION = 0x200,
22975 D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
22976 D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
22977 D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
22978 D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
22979 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
22980 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
22981 D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
22982 D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
22983 D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
22984 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
22985 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
22986 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
22987 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
22988 D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000
22989 } D3D12_BARRIER_ACCESS;
22990
22991DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )
22992typedef
22993enum D3D12_BARRIER_TYPE
22994 {
22995 D3D12_BARRIER_TYPE_GLOBAL = 0,
22996 D3D12_BARRIER_TYPE_TEXTURE = ( D3D12_BARRIER_TYPE_GLOBAL + 1 ) ,
22997 D3D12_BARRIER_TYPE_BUFFER = ( D3D12_BARRIER_TYPE_TEXTURE + 1 )
22998 } D3D12_BARRIER_TYPE;
22999
23000typedef
23001enum D3D12_TEXTURE_BARRIER_FLAGS
23002 {
23003 D3D12_TEXTURE_BARRIER_FLAG_NONE = 0,
23004 D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1
23005 } D3D12_TEXTURE_BARRIER_FLAGS;
23006
23007DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )
23008typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
23009 {
23010 UINT IndexOrFirstMipLevel;
23011 UINT NumMipLevels;
23012 UINT FirstArraySlice;
23013 UINT NumArraySlices;
23014 UINT FirstPlane;
23015 UINT NumPlanes;
23016 } D3D12_BARRIER_SUBRESOURCE_RANGE;
23017
23018typedef struct D3D12_GLOBAL_BARRIER
23019 {
23020 D3D12_BARRIER_SYNC SyncBefore;
23021 D3D12_BARRIER_SYNC SyncAfter;
23022 D3D12_BARRIER_ACCESS AccessBefore;
23023 D3D12_BARRIER_ACCESS AccessAfter;
23024 } D3D12_GLOBAL_BARRIER;
23025
23026typedef struct D3D12_TEXTURE_BARRIER
23027 {
23028 D3D12_BARRIER_SYNC SyncBefore;
23029 D3D12_BARRIER_SYNC SyncAfter;
23030 D3D12_BARRIER_ACCESS AccessBefore;
23031 D3D12_BARRIER_ACCESS AccessAfter;
23032 D3D12_BARRIER_LAYOUT LayoutBefore;
23033 D3D12_BARRIER_LAYOUT LayoutAfter;
23034 _In_ ID3D12Resource *pResource;
23035 D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
23036 D3D12_TEXTURE_BARRIER_FLAGS Flags;
23037 } D3D12_TEXTURE_BARRIER;
23038
23039typedef struct D3D12_BUFFER_BARRIER
23040 {
23041 D3D12_BARRIER_SYNC SyncBefore;
23042 D3D12_BARRIER_SYNC SyncAfter;
23043 D3D12_BARRIER_ACCESS AccessBefore;
23044 D3D12_BARRIER_ACCESS AccessAfter;
23045 _In_ ID3D12Resource *pResource;
23046 UINT64 Offset;
23047 UINT64 Size;
23048 } D3D12_BUFFER_BARRIER;
23049
23050typedef struct D3D12_BARRIER_GROUP
23051 {
23052 D3D12_BARRIER_TYPE Type;
23053 UINT32 NumBarriers;
23054 union
23055 {
23056 _In_reads_(NumBarriers) const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
23057 _In_reads_(NumBarriers) const D3D12_TEXTURE_BARRIER *pTextureBarriers;
23058 _In_reads_(NumBarriers) const D3D12_BUFFER_BARRIER *pBufferBarriers;
23059 } ;
23060 } D3D12_BARRIER_GROUP;
23061
23062
23063
23064extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
23065extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
23066
23067#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
23068#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
23069
23070/* interface ID3D12ShaderCacheSession */
23071/* [unique][local][object][uuid] */
23072
23073
23074EXTERN_C const IID IID_ID3D12ShaderCacheSession;
23075
23076#if defined(__cplusplus) && !defined(CINTERFACE)
23077
23078 MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
23079 ID3D12ShaderCacheSession : public ID3D12DeviceChild
23080 {
23081 public:
23082 virtual HRESULT STDMETHODCALLTYPE FindValue(
23083 /* [annotation][in] */
23084 _In_reads_bytes_(KeySize) const void *pKey,
23085 UINT KeySize,
23086 /* [annotation][out] */
23087 _Out_writes_bytes_(*pValueSize) void *pValue,
23088 _Inout_ UINT *pValueSize) = 0;
23089
23090 virtual HRESULT STDMETHODCALLTYPE StoreValue(
23091 /* [annotation][in] */
23092 _In_reads_bytes_(KeySize) const void *pKey,
23093 UINT KeySize,
23094 /* [annotation][in] */
23095 _In_reads_bytes_(ValueSize) const void *pValue,
23096 UINT ValueSize) = 0;
23097
23098 virtual void STDMETHODCALLTYPE SetDeleteOnDestroy( void) = 0;
23099
23100#if defined(_MSC_VER) || !defined(_WIN32)
23101 virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
23102#else
23103 virtual D3D12_SHADER_CACHE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
23104 D3D12_SHADER_CACHE_SESSION_DESC * RetVal) = 0;
23105#endif
23106
23107 };
23108
23109
23110#else /* C style interface */
23111
23112 typedef struct ID3D12ShaderCacheSessionVtbl
23113 {
23114 BEGIN_INTERFACE
23115
23116 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
23117 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
23118 ID3D12ShaderCacheSession * This,
23119 REFIID riid,
23120 _COM_Outptr_ void **ppvObject);
23121
23122 DECLSPEC_XFGVIRT(IUnknown, AddRef)
23123 ULONG ( STDMETHODCALLTYPE *AddRef )(
23124 ID3D12ShaderCacheSession * This);
23125
23126 DECLSPEC_XFGVIRT(IUnknown, Release)
23127 ULONG ( STDMETHODCALLTYPE *Release )(
23128 ID3D12ShaderCacheSession * This);
23129
23130 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
23131 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
23132 ID3D12ShaderCacheSession * This,
23133 _In_ REFGUID guid,
23134 _Inout_ UINT *pDataSize,
23135 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
23136
23137 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
23138 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
23139 ID3D12ShaderCacheSession * This,
23140 _In_ REFGUID guid,
23141 _In_ UINT DataSize,
23142 _In_reads_bytes_opt_( DataSize ) const void *pData);
23143
23144 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
23145 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
23146 ID3D12ShaderCacheSession * This,
23147 _In_ REFGUID guid,
23148 _In_opt_ const IUnknown *pData);
23149
23150 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
23151 HRESULT ( STDMETHODCALLTYPE *SetName )(
23152 ID3D12ShaderCacheSession * This,
23153 _In_z_ LPCWSTR Name);
23154
23155 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
23156 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
23157 ID3D12ShaderCacheSession * This,
23158 REFIID riid,
23159 _COM_Outptr_opt_ void **ppvDevice);
23160
23161 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, FindValue)
23162 HRESULT ( STDMETHODCALLTYPE *FindValue )(
23163 ID3D12ShaderCacheSession * This,
23164 /* [annotation][in] */
23165 _In_reads_bytes_(KeySize) const void *pKey,
23166 UINT KeySize,
23167 /* [annotation][out] */
23168 _Out_writes_bytes_(*pValueSize) void *pValue,
23169 _Inout_ UINT *pValueSize);
23170
23171 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, StoreValue)
23172 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
23173 ID3D12ShaderCacheSession * This,
23174 /* [annotation][in] */
23175 _In_reads_bytes_(KeySize) const void *pKey,
23176 UINT KeySize,
23177 /* [annotation][in] */
23178 _In_reads_bytes_(ValueSize) const void *pValue,
23179 UINT ValueSize);
23180
23181 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, SetDeleteOnDestroy)
23182 void ( STDMETHODCALLTYPE *SetDeleteOnDestroy )(
23183 ID3D12ShaderCacheSession * This);
23184
23185 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, GetDesc)
23186#if !defined(_WIN32)
23187 D3D12_SHADER_CACHE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
23188 ID3D12ShaderCacheSession * This);
23189
23190#else
23191 D3D12_SHADER_CACHE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
23192 ID3D12ShaderCacheSession * This,
23193 D3D12_SHADER_CACHE_SESSION_DESC * RetVal);
23194
23195#endif
23196
23197 END_INTERFACE
23198 } ID3D12ShaderCacheSessionVtbl;
23199
23200 interface ID3D12ShaderCacheSession
23201 {
23202 CONST_VTBL struct ID3D12ShaderCacheSessionVtbl *lpVtbl;
23203 };
23204
23205
23206
23207#ifdef COBJMACROS
23208
23209
23210#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) \
23211 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
23212
23213#define ID3D12ShaderCacheSession_AddRef(This) \
23214 ( (This)->lpVtbl -> AddRef(This) )
23215
23216#define ID3D12ShaderCacheSession_Release(This) \
23217 ( (This)->lpVtbl -> Release(This) )
23218
23219
23220#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData) \
23221 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
23222
23223#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData) \
23224 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
23225
23226#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData) \
23227 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
23228
23229#define ID3D12ShaderCacheSession_SetName(This,Name) \
23230 ( (This)->lpVtbl -> SetName(This,Name) )
23231
23232
23233#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice) \
23234 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
23235
23236
23237#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize) \
23238 ( (This)->lpVtbl -> FindValue(This,pKey,KeySize,pValue,pValueSize) )
23239
23240#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize) \
23241 ( (This)->lpVtbl -> StoreValue(This,pKey,KeySize,pValue,ValueSize) )
23242
23243#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) \
23244 ( (This)->lpVtbl -> SetDeleteOnDestroy(This) )
23245#if !defined(_WIN32)
23246
23247#define ID3D12ShaderCacheSession_GetDesc(This) \
23248 ( (This)->lpVtbl -> GetDesc(This) )
23249#else
23250#define ID3D12ShaderCacheSession_GetDesc(This,RetVal) \
23251 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
23252#endif
23253
23254#endif /* COBJMACROS */
23255
23256
23257#endif /* C style interface */
23258
23259
23260
23261
23262#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
23263
23264
23265/* interface __MIDL_itf_d3d12_0000_0057 */
23266/* [local] */
23267
23268typedef
23269enum D3D12_SHADER_CACHE_KIND_FLAGS
23270 {
23271 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
23272 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
23273 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
23274 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
23275 } D3D12_SHADER_CACHE_KIND_FLAGS;
23276
23277DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )
23278typedef
23279enum D3D12_SHADER_CACHE_CONTROL_FLAGS
23280 {
23281 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
23282 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
23283 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
23284 } D3D12_SHADER_CACHE_CONTROL_FLAGS;
23285
23286DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )
23287
23288
23289extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_c_ifspec;
23290extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_s_ifspec;
23291
23292#ifndef __ID3D12Device9_INTERFACE_DEFINED__
23293#define __ID3D12Device9_INTERFACE_DEFINED__
23294
23295/* interface ID3D12Device9 */
23296/* [unique][local][object][uuid] */
23297
23298
23299EXTERN_C const IID IID_ID3D12Device9;
23300
23301#if defined(__cplusplus) && !defined(CINTERFACE)
23302
23303 MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
23304 ID3D12Device9 : public ID3D12Device8
23305 {
23306 public:
23307 virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
23308 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
23309 REFIID riid,
23310 _COM_Outptr_opt_ void **ppvSession) = 0;
23311
23312 virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
23313 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
23314 D3D12_SHADER_CACHE_CONTROL_FLAGS Control) = 0;
23315
23316 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
23317 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23318 REFIID CreatorID,
23319 REFIID riid,
23320 _COM_Outptr_ void **ppCommandQueue) = 0;
23321
23322 };
23323
23324
23325#else /* C style interface */
23326
23327 typedef struct ID3D12Device9Vtbl
23328 {
23329 BEGIN_INTERFACE
23330
23331 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
23332 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
23333 ID3D12Device9 * This,
23334 REFIID riid,
23335 _COM_Outptr_ void **ppvObject);
23336
23337 DECLSPEC_XFGVIRT(IUnknown, AddRef)
23338 ULONG ( STDMETHODCALLTYPE *AddRef )(
23339 ID3D12Device9 * This);
23340
23341 DECLSPEC_XFGVIRT(IUnknown, Release)
23342 ULONG ( STDMETHODCALLTYPE *Release )(
23343 ID3D12Device9 * This);
23344
23345 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
23346 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
23347 ID3D12Device9 * This,
23348 _In_ REFGUID guid,
23349 _Inout_ UINT *pDataSize,
23350 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
23351
23352 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
23353 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
23354 ID3D12Device9 * This,
23355 _In_ REFGUID guid,
23356 _In_ UINT DataSize,
23357 _In_reads_bytes_opt_( DataSize ) const void *pData);
23358
23359 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
23360 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
23361 ID3D12Device9 * This,
23362 _In_ REFGUID guid,
23363 _In_opt_ const IUnknown *pData);
23364
23365 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
23366 HRESULT ( STDMETHODCALLTYPE *SetName )(
23367 ID3D12Device9 * This,
23368 _In_z_ LPCWSTR Name);
23369
23370 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
23371 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
23372 ID3D12Device9 * This);
23373
23374 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
23375 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
23376 ID3D12Device9 * This,
23377 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23378 REFIID riid,
23379 _COM_Outptr_ void **ppCommandQueue);
23380
23381 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
23382 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
23383 ID3D12Device9 * This,
23384 _In_ D3D12_COMMAND_LIST_TYPE type,
23385 REFIID riid,
23386 _COM_Outptr_ void **ppCommandAllocator);
23387
23388 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
23389 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
23390 ID3D12Device9 * This,
23391 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
23392 REFIID riid,
23393 _COM_Outptr_ void **ppPipelineState);
23394
23395 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
23396 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
23397 ID3D12Device9 * This,
23398 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
23399 REFIID riid,
23400 _COM_Outptr_ void **ppPipelineState);
23401
23402 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
23403 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
23404 ID3D12Device9 * This,
23405 _In_ UINT nodeMask,
23406 _In_ D3D12_COMMAND_LIST_TYPE type,
23407 _In_ ID3D12CommandAllocator *pCommandAllocator,
23408 _In_opt_ ID3D12PipelineState *pInitialState,
23409 REFIID riid,
23410 _COM_Outptr_ void **ppCommandList);
23411
23412 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
23413 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
23414 ID3D12Device9 * This,
23415 D3D12_FEATURE Feature,
23416 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
23417 UINT FeatureSupportDataSize);
23418
23419 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
23420 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
23421 ID3D12Device9 * This,
23422 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
23423 REFIID riid,
23424 _COM_Outptr_ void **ppvHeap);
23425
23426 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
23427 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
23428 ID3D12Device9 * This,
23429 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
23430
23431 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
23432 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
23433 ID3D12Device9 * This,
23434 _In_ UINT nodeMask,
23435 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
23436 _In_ SIZE_T blobLengthInBytes,
23437 REFIID riid,
23438 _COM_Outptr_ void **ppvRootSignature);
23439
23440 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
23441 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
23442 ID3D12Device9 * This,
23443 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
23444 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23445
23446 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
23447 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
23448 ID3D12Device9 * This,
23449 _In_opt_ ID3D12Resource *pResource,
23450 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
23451 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23452
23453 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
23454 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
23455 ID3D12Device9 * This,
23456 _In_opt_ ID3D12Resource *pResource,
23457 _In_opt_ ID3D12Resource *pCounterResource,
23458 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
23459 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23460
23461 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
23462 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
23463 ID3D12Device9 * This,
23464 _In_opt_ ID3D12Resource *pResource,
23465 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
23466 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23467
23468 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
23469 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
23470 ID3D12Device9 * This,
23471 _In_opt_ ID3D12Resource *pResource,
23472 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
23473 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23474
23475 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
23476 void ( STDMETHODCALLTYPE *CreateSampler )(
23477 ID3D12Device9 * This,
23478 _In_ const D3D12_SAMPLER_DESC *pDesc,
23479 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23480
23481 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
23482 void ( STDMETHODCALLTYPE *CopyDescriptors )(
23483 ID3D12Device9 * This,
23484 _In_ UINT NumDestDescriptorRanges,
23485 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
23486 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
23487 _In_ UINT NumSrcDescriptorRanges,
23488 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
23489 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
23490 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
23491
23492 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
23493 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
23494 ID3D12Device9 * This,
23495 _In_ UINT NumDescriptors,
23496 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
23497 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
23498 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
23499
23500 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
23501#if !defined(_WIN32)
23502 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
23503 ID3D12Device9 * This,
23504 _In_ UINT visibleMask,
23505 _In_ UINT numResourceDescs,
23506 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
23507
23508#else
23509 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
23510 ID3D12Device9 * This,
23511 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23512 _In_ UINT visibleMask,
23513 _In_ UINT numResourceDescs,
23514 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
23515
23516#endif
23517
23518 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
23519#if !defined(_WIN32)
23520 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
23521 ID3D12Device9 * This,
23522 _In_ UINT nodeMask,
23523 D3D12_HEAP_TYPE heapType);
23524
23525#else
23526 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
23527 ID3D12Device9 * This,
23528 D3D12_HEAP_PROPERTIES * RetVal,
23529 _In_ UINT nodeMask,
23530 D3D12_HEAP_TYPE heapType);
23531
23532#endif
23533
23534 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
23535 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
23536 ID3D12Device9 * This,
23537 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23538 D3D12_HEAP_FLAGS HeapFlags,
23539 _In_ const D3D12_RESOURCE_DESC *pDesc,
23540 D3D12_RESOURCE_STATES InitialResourceState,
23541 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23542 REFIID riidResource,
23543 _COM_Outptr_opt_ void **ppvResource);
23544
23545 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
23546 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
23547 ID3D12Device9 * This,
23548 _In_ const D3D12_HEAP_DESC *pDesc,
23549 REFIID riid,
23550 _COM_Outptr_opt_ void **ppvHeap);
23551
23552 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
23553 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
23554 ID3D12Device9 * This,
23555 _In_ ID3D12Heap *pHeap,
23556 UINT64 HeapOffset,
23557 _In_ const D3D12_RESOURCE_DESC *pDesc,
23558 D3D12_RESOURCE_STATES InitialState,
23559 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23560 REFIID riid,
23561 _COM_Outptr_opt_ void **ppvResource);
23562
23563 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
23564 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
23565 ID3D12Device9 * This,
23566 _In_ const D3D12_RESOURCE_DESC *pDesc,
23567 D3D12_RESOURCE_STATES InitialState,
23568 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23569 REFIID riid,
23570 _COM_Outptr_opt_ void **ppvResource);
23571
23572 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
23573 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
23574 ID3D12Device9 * This,
23575 _In_ ID3D12DeviceChild *pObject,
23576 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
23577 DWORD Access,
23578 _In_opt_ LPCWSTR Name,
23579 _Out_ HANDLE *pHandle);
23580
23581 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
23582 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
23583 ID3D12Device9 * This,
23584 _In_ HANDLE NTHandle,
23585 REFIID riid,
23586 _COM_Outptr_opt_ void **ppvObj);
23587
23588 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
23589 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
23590 ID3D12Device9 * This,
23591 _In_ LPCWSTR Name,
23592 DWORD Access,
23593 /* [annotation][out] */
23594 _Out_ HANDLE *pNTHandle);
23595
23596 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
23597 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
23598 ID3D12Device9 * This,
23599 UINT NumObjects,
23600 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
23601
23602 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
23603 HRESULT ( STDMETHODCALLTYPE *Evict )(
23604 ID3D12Device9 * This,
23605 UINT NumObjects,
23606 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
23607
23608 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
23609 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
23610 ID3D12Device9 * This,
23611 UINT64 InitialValue,
23612 D3D12_FENCE_FLAGS Flags,
23613 REFIID riid,
23614 _COM_Outptr_ void **ppFence);
23615
23616 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
23617 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
23618 ID3D12Device9 * This);
23619
23620 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
23621 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
23622 ID3D12Device9 * This,
23623 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
23624 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
23625 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
23626 UINT64 BaseOffset,
23627 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
23628 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
23629 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
23630 _Out_opt_ UINT64 *pTotalBytes);
23631
23632 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
23633 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
23634 ID3D12Device9 * This,
23635 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
23636 REFIID riid,
23637 _COM_Outptr_opt_ void **ppvHeap);
23638
23639 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
23640 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
23641 ID3D12Device9 * This,
23642 BOOL Enable);
23643
23644 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
23645 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
23646 ID3D12Device9 * This,
23647 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
23648 _In_opt_ ID3D12RootSignature *pRootSignature,
23649 REFIID riid,
23650 _COM_Outptr_opt_ void **ppvCommandSignature);
23651
23652 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
23653 void ( STDMETHODCALLTYPE *GetResourceTiling )(
23654 ID3D12Device9 * This,
23655 _In_ ID3D12Resource *pTiledResource,
23656 _Out_opt_ UINT *pNumTilesForEntireResource,
23657 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
23658 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
23659 _Inout_opt_ UINT *pNumSubresourceTilings,
23660 _In_ UINT FirstSubresourceTilingToGet,
23661 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
23662
23663 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
23664#if !defined(_WIN32)
23665 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
23666 ID3D12Device9 * This);
23667
23668#else
23669 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
23670 ID3D12Device9 * This,
23671 LUID * RetVal);
23672
23673#endif
23674
23675 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
23676 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
23677 ID3D12Device9 * This,
23678 _In_reads_(BlobLength) const void *pLibraryBlob,
23679 SIZE_T BlobLength,
23680 REFIID riid,
23681 _COM_Outptr_ void **ppPipelineLibrary);
23682
23683 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
23684 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
23685 ID3D12Device9 * This,
23686 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
23687 _In_reads_(NumFences) const UINT64 *pFenceValues,
23688 UINT NumFences,
23689 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
23690 HANDLE hEvent);
23691
23692 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
23693 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
23694 ID3D12Device9 * This,
23695 UINT NumObjects,
23696 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
23697 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
23698
23699 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
23700 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
23701 ID3D12Device9 * This,
23702 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
23703 REFIID riid,
23704 _COM_Outptr_ void **ppPipelineState);
23705
23706 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
23707 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
23708 ID3D12Device9 * This,
23709 _In_ const void *pAddress,
23710 REFIID riid,
23711 _COM_Outptr_ void **ppvHeap);
23712
23713 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
23714 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
23715 ID3D12Device9 * This,
23716 _In_ HANDLE hFileMapping,
23717 REFIID riid,
23718 _COM_Outptr_ void **ppvHeap);
23719
23720 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
23721 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
23722 ID3D12Device9 * This,
23723 D3D12_RESIDENCY_FLAGS Flags,
23724 UINT NumObjects,
23725 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
23726 _In_ ID3D12Fence *pFenceToSignal,
23727 UINT64 FenceValueToSignal);
23728
23729 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
23730 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
23731 ID3D12Device9 * This,
23732 _In_ UINT nodeMask,
23733 _In_ D3D12_COMMAND_LIST_TYPE type,
23734 _In_ D3D12_COMMAND_LIST_FLAGS flags,
23735 REFIID riid,
23736 _COM_Outptr_ void **ppCommandList);
23737
23738 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
23739 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
23740 ID3D12Device9 * This,
23741 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
23742 _In_ REFIID riid,
23743 _COM_Outptr_ void **ppSession);
23744
23745 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
23746 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
23747 ID3D12Device9 * This,
23748 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23749 D3D12_HEAP_FLAGS HeapFlags,
23750 _In_ const D3D12_RESOURCE_DESC *pDesc,
23751 D3D12_RESOURCE_STATES InitialResourceState,
23752 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23753 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23754 REFIID riidResource,
23755 _COM_Outptr_opt_ void **ppvResource);
23756
23757 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
23758 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
23759 ID3D12Device9 * This,
23760 _In_ const D3D12_HEAP_DESC *pDesc,
23761 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23762 REFIID riid,
23763 _COM_Outptr_opt_ void **ppvHeap);
23764
23765 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
23766 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
23767 ID3D12Device9 * This,
23768 _In_ const D3D12_RESOURCE_DESC *pDesc,
23769 D3D12_RESOURCE_STATES InitialState,
23770 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23771 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23772 REFIID riid,
23773 _COM_Outptr_opt_ void **ppvResource);
23774
23775 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
23776#if !defined(_WIN32)
23777 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
23778 ID3D12Device9 * This,
23779 UINT visibleMask,
23780 UINT numResourceDescs,
23781 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
23782 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23783
23784#else
23785 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
23786 ID3D12Device9 * This,
23787 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23788 UINT visibleMask,
23789 UINT numResourceDescs,
23790 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
23791 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23792
23793#endif
23794
23795 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
23796 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
23797 ID3D12Device9 * This,
23798 _In_ ID3D12LifetimeOwner *pOwner,
23799 REFIID riid,
23800 _COM_Outptr_ void **ppvTracker);
23801
23802 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
23803 void ( STDMETHODCALLTYPE *RemoveDevice )(
23804 ID3D12Device9 * This);
23805
23806 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
23807 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
23808 ID3D12Device9 * This,
23809 _Inout_ UINT *pNumMetaCommands,
23810 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
23811
23812 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
23813 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
23814 ID3D12Device9 * This,
23815 _In_ REFGUID CommandId,
23816 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
23817 _Out_opt_ UINT *pTotalStructureSizeInBytes,
23818 _Inout_ UINT *pParameterCount,
23819 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
23820
23821 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
23822 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
23823 ID3D12Device9 * This,
23824 _In_ REFGUID CommandId,
23825 _In_ UINT NodeMask,
23826 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
23827 _In_ SIZE_T CreationParametersDataSizeInBytes,
23828 REFIID riid,
23829 _COM_Outptr_ void **ppMetaCommand);
23830
23831 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
23832 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
23833 ID3D12Device9 * This,
23834 const D3D12_STATE_OBJECT_DESC *pDesc,
23835 REFIID riid,
23836 _COM_Outptr_ void **ppStateObject);
23837
23838 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
23839 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
23840 ID3D12Device9 * This,
23841 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
23842 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
23843
23844 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
23845 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
23846 ID3D12Device9 * This,
23847 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
23848 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
23849
23850 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
23851 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
23852 ID3D12Device9 * This,
23853 D3D12_BACKGROUND_PROCESSING_MODE Mode,
23854 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
23855 _In_opt_ HANDLE hEventToSignalUponCompletion,
23856 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
23857
23858 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
23859 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
23860 ID3D12Device9 * This,
23861 const D3D12_STATE_OBJECT_DESC *pAddition,
23862 ID3D12StateObject *pStateObjectToGrowFrom,
23863 REFIID riid,
23864 _COM_Outptr_ void **ppNewStateObject);
23865
23866 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
23867 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
23868 ID3D12Device9 * This,
23869 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
23870 _In_ REFIID riid,
23871 _COM_Outptr_ void **ppSession);
23872
23873 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
23874#if !defined(_WIN32)
23875 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
23876 ID3D12Device9 * This,
23877 UINT visibleMask,
23878 UINT numResourceDescs,
23879 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
23880 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23881
23882#else
23883 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
23884 ID3D12Device9 * This,
23885 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23886 UINT visibleMask,
23887 UINT numResourceDescs,
23888 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
23889 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23890
23891#endif
23892
23893 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
23894 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
23895 ID3D12Device9 * This,
23896 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23897 D3D12_HEAP_FLAGS HeapFlags,
23898 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
23899 D3D12_RESOURCE_STATES InitialResourceState,
23900 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23901 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23902 REFIID riidResource,
23903 _COM_Outptr_opt_ void **ppvResource);
23904
23905 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
23906 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
23907 ID3D12Device9 * This,
23908 _In_ ID3D12Heap *pHeap,
23909 UINT64 HeapOffset,
23910 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
23911 D3D12_RESOURCE_STATES InitialState,
23912 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23913 REFIID riid,
23914 _COM_Outptr_opt_ void **ppvResource);
23915
23916 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
23917 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
23918 ID3D12Device9 * This,
23919 _In_opt_ ID3D12Resource *pTargetedResource,
23920 _In_opt_ ID3D12Resource *pFeedbackResource,
23921 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23922
23923 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
23924 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
23925 ID3D12Device9 * This,
23926 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
23927 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
23928 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
23929 UINT64 BaseOffset,
23930 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
23931 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
23932 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
23933 _Out_opt_ UINT64 *pTotalBytes);
23934
23935 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
23936 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
23937 ID3D12Device9 * This,
23938 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
23939 REFIID riid,
23940 _COM_Outptr_opt_ void **ppvSession);
23941
23942 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
23943 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
23944 ID3D12Device9 * This,
23945 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
23946 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
23947
23948 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
23949 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
23950 ID3D12Device9 * This,
23951 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23952 REFIID CreatorID,
23953 REFIID riid,
23954 _COM_Outptr_ void **ppCommandQueue);
23955
23956 END_INTERFACE
23957 } ID3D12Device9Vtbl;
23958
23959 interface ID3D12Device9
23960 {
23961 CONST_VTBL struct ID3D12Device9Vtbl *lpVtbl;
23962 };
23963
23964
23965
23966#ifdef COBJMACROS
23967
23968
23969#define ID3D12Device9_QueryInterface(This,riid,ppvObject) \
23970 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
23971
23972#define ID3D12Device9_AddRef(This) \
23973 ( (This)->lpVtbl -> AddRef(This) )
23974
23975#define ID3D12Device9_Release(This) \
23976 ( (This)->lpVtbl -> Release(This) )
23977
23978
23979#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData) \
23980 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
23981
23982#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData) \
23983 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
23984
23985#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData) \
23986 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
23987
23988#define ID3D12Device9_SetName(This,Name) \
23989 ( (This)->lpVtbl -> SetName(This,Name) )
23990
23991
23992#define ID3D12Device9_GetNodeCount(This) \
23993 ( (This)->lpVtbl -> GetNodeCount(This) )
23994
23995#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
23996 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
23997
23998#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
23999 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
24000
24001#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
24002 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
24003
24004#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
24005 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
24006
24007#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
24008 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
24009
24010#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
24011 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
24012
24013#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
24014 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
24015
24016#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
24017 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
24018
24019#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
24020 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
24021
24022#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor) \
24023 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
24024
24025#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
24026 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
24027
24028#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
24029 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
24030
24031#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
24032 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
24033
24034#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
24035 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
24036
24037#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor) \
24038 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
24039
24040#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
24041 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
24042
24043#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
24044 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
24045#if !defined(_WIN32)
24046
24047#define ID3D12Device9_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
24048 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
24049#else
24050#define ID3D12Device9_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
24051 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
24052#endif
24053#if !defined(_WIN32)
24054
24055#define ID3D12Device9_GetCustomHeapProperties(This,nodeMask,heapType) \
24056 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
24057#else
24058#define ID3D12Device9_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
24059 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
24060#endif
24061
24062#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
24063 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
24064
24065#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap) \
24066 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
24067
24068#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24069 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24070
24071#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24072 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24073
24074#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
24075 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
24076
24077#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
24078 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
24079
24080#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
24081 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
24082
24083#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects) \
24084 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
24085
24086#define ID3D12Device9_Evict(This,NumObjects,ppObjects) \
24087 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
24088
24089#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence) \
24090 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
24091
24092#define ID3D12Device9_GetDeviceRemovedReason(This) \
24093 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
24094
24095#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
24096 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
24097
24098#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
24099 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
24100
24101#define ID3D12Device9_SetStablePowerState(This,Enable) \
24102 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
24103
24104#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
24105 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
24106
24107#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
24108 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
24109#if !defined(_WIN32)
24110
24111#define ID3D12Device9_GetAdapterLuid(This) \
24112 ( (This)->lpVtbl -> GetAdapterLuid(This) )
24113#else
24114#define ID3D12Device9_GetAdapterLuid(This,RetVal) \
24115 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
24116#endif
24117
24118
24119#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
24120 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
24121
24122#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
24123 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
24124
24125#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
24126 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
24127
24128
24129#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
24130 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
24131
24132
24133#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
24134 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
24135
24136#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
24137 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
24138
24139#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
24140 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
24141
24142
24143#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
24144 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
24145
24146#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
24147 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
24148
24149#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
24150 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
24151
24152#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
24153 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
24154
24155#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
24156 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
24157#if !defined(_WIN32)
24158
24159#define ID3D12Device9_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24160 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24161#else
24162#define ID3D12Device9_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24163 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24164#endif
24165
24166
24167#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
24168 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
24169
24170#define ID3D12Device9_RemoveDevice(This) \
24171 ( (This)->lpVtbl -> RemoveDevice(This) )
24172
24173#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
24174 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
24175
24176#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
24177 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
24178
24179#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
24180 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
24181
24182#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject) \
24183 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
24184
24185#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
24186 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
24187
24188#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
24189 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
24190
24191
24192#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
24193 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
24194
24195
24196#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
24197 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
24198
24199#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
24200 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
24201
24202#if !defined(_WIN32)
24203
24204#define ID3D12Device9_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24205 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24206#else
24207#define ID3D12Device9_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24208 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24209#endif
24210
24211#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
24212 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
24213
24214#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24215 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24216
24217#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
24218 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
24219
24220#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
24221 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
24222
24223
24224#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
24225 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
24226
24227#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control) \
24228 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
24229
24230#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
24231 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
24232
24233#endif /* COBJMACROS */
24234
24235
24236#endif /* C style interface */
24237
24238
24239
24240
24241#endif /* __ID3D12Device9_INTERFACE_DEFINED__ */
24242
24243
24244#ifndef __ID3D12Device10_INTERFACE_DEFINED__
24245#define __ID3D12Device10_INTERFACE_DEFINED__
24246
24247/* interface ID3D12Device10 */
24248/* [unique][local][object][uuid] */
24249
24250
24251EXTERN_C const IID IID_ID3D12Device10;
24252
24253#if defined(__cplusplus) && !defined(CINTERFACE)
24254
24255 MIDL_INTERFACE("517f8718-aa66-49f9-b02b-a7ab89c06031")
24256 ID3D12Device10 : public ID3D12Device9
24257 {
24258 public:
24259 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource3(
24260 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24261 D3D12_HEAP_FLAGS HeapFlags,
24262 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24263 D3D12_BARRIER_LAYOUT InitialLayout,
24264 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24265 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24266 UINT32 NumCastableFormats,
24267 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24268 REFIID riidResource,
24269 _COM_Outptr_opt_ void **ppvResource) = 0;
24270
24271 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource2(
24272 _In_ ID3D12Heap *pHeap,
24273 UINT64 HeapOffset,
24274 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24275 D3D12_BARRIER_LAYOUT InitialLayout,
24276 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24277 UINT32 NumCastableFormats,
24278 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24279 REFIID riid,
24280 _COM_Outptr_opt_ void **ppvResource) = 0;
24281
24282 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource2(
24283 _In_ const D3D12_RESOURCE_DESC *pDesc,
24284 D3D12_BARRIER_LAYOUT InitialLayout,
24285 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24286 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24287 UINT32 NumCastableFormats,
24288 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24289 REFIID riid,
24290 _COM_Outptr_opt_ void **ppvResource) = 0;
24291
24292 };
24293
24294
24295#else /* C style interface */
24296
24297 typedef struct ID3D12Device10Vtbl
24298 {
24299 BEGIN_INTERFACE
24300
24301 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
24302 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
24303 ID3D12Device10 * This,
24304 REFIID riid,
24305 _COM_Outptr_ void **ppvObject);
24306
24307 DECLSPEC_XFGVIRT(IUnknown, AddRef)
24308 ULONG ( STDMETHODCALLTYPE *AddRef )(
24309 ID3D12Device10 * This);
24310
24311 DECLSPEC_XFGVIRT(IUnknown, Release)
24312 ULONG ( STDMETHODCALLTYPE *Release )(
24313 ID3D12Device10 * This);
24314
24315 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
24316 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
24317 ID3D12Device10 * This,
24318 _In_ REFGUID guid,
24319 _Inout_ UINT *pDataSize,
24320 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
24321
24322 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
24323 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
24324 ID3D12Device10 * This,
24325 _In_ REFGUID guid,
24326 _In_ UINT DataSize,
24327 _In_reads_bytes_opt_( DataSize ) const void *pData);
24328
24329 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
24330 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
24331 ID3D12Device10 * This,
24332 _In_ REFGUID guid,
24333 _In_opt_ const IUnknown *pData);
24334
24335 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
24336 HRESULT ( STDMETHODCALLTYPE *SetName )(
24337 ID3D12Device10 * This,
24338 _In_z_ LPCWSTR Name);
24339
24340 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
24341 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
24342 ID3D12Device10 * This);
24343
24344 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
24345 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
24346 ID3D12Device10 * This,
24347 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
24348 REFIID riid,
24349 _COM_Outptr_ void **ppCommandQueue);
24350
24351 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
24352 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
24353 ID3D12Device10 * This,
24354 _In_ D3D12_COMMAND_LIST_TYPE type,
24355 REFIID riid,
24356 _COM_Outptr_ void **ppCommandAllocator);
24357
24358 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
24359 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
24360 ID3D12Device10 * This,
24361 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
24362 REFIID riid,
24363 _COM_Outptr_ void **ppPipelineState);
24364
24365 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
24366 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
24367 ID3D12Device10 * This,
24368 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
24369 REFIID riid,
24370 _COM_Outptr_ void **ppPipelineState);
24371
24372 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
24373 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
24374 ID3D12Device10 * This,
24375 _In_ UINT nodeMask,
24376 _In_ D3D12_COMMAND_LIST_TYPE type,
24377 _In_ ID3D12CommandAllocator *pCommandAllocator,
24378 _In_opt_ ID3D12PipelineState *pInitialState,
24379 REFIID riid,
24380 _COM_Outptr_ void **ppCommandList);
24381
24382 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
24383 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
24384 ID3D12Device10 * This,
24385 D3D12_FEATURE Feature,
24386 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
24387 UINT FeatureSupportDataSize);
24388
24389 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
24390 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
24391 ID3D12Device10 * This,
24392 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
24393 REFIID riid,
24394 _COM_Outptr_ void **ppvHeap);
24395
24396 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
24397 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
24398 ID3D12Device10 * This,
24399 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
24400
24401 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
24402 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
24403 ID3D12Device10 * This,
24404 _In_ UINT nodeMask,
24405 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
24406 _In_ SIZE_T blobLengthInBytes,
24407 REFIID riid,
24408 _COM_Outptr_ void **ppvRootSignature);
24409
24410 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
24411 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
24412 ID3D12Device10 * This,
24413 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
24414 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24415
24416 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
24417 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
24418 ID3D12Device10 * This,
24419 _In_opt_ ID3D12Resource *pResource,
24420 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
24421 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24422
24423 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
24424 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
24425 ID3D12Device10 * This,
24426 _In_opt_ ID3D12Resource *pResource,
24427 _In_opt_ ID3D12Resource *pCounterResource,
24428 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
24429 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24430
24431 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
24432 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
24433 ID3D12Device10 * This,
24434 _In_opt_ ID3D12Resource *pResource,
24435 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
24436 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24437
24438 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
24439 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
24440 ID3D12Device10 * This,
24441 _In_opt_ ID3D12Resource *pResource,
24442 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
24443 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24444
24445 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
24446 void ( STDMETHODCALLTYPE *CreateSampler )(
24447 ID3D12Device10 * This,
24448 _In_ const D3D12_SAMPLER_DESC *pDesc,
24449 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24450
24451 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
24452 void ( STDMETHODCALLTYPE *CopyDescriptors )(
24453 ID3D12Device10 * This,
24454 _In_ UINT NumDestDescriptorRanges,
24455 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
24456 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
24457 _In_ UINT NumSrcDescriptorRanges,
24458 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
24459 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
24460 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
24461
24462 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
24463 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
24464 ID3D12Device10 * This,
24465 _In_ UINT NumDescriptors,
24466 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
24467 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
24468 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
24469
24470 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
24471#if !defined(_WIN32)
24472 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
24473 ID3D12Device10 * This,
24474 _In_ UINT visibleMask,
24475 _In_ UINT numResourceDescs,
24476 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
24477
24478#else
24479 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
24480 ID3D12Device10 * This,
24481 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24482 _In_ UINT visibleMask,
24483 _In_ UINT numResourceDescs,
24484 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
24485
24486#endif
24487
24488 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
24489#if !defined(_WIN32)
24490 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
24491 ID3D12Device10 * This,
24492 _In_ UINT nodeMask,
24493 D3D12_HEAP_TYPE heapType);
24494
24495#else
24496 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
24497 ID3D12Device10 * This,
24498 D3D12_HEAP_PROPERTIES * RetVal,
24499 _In_ UINT nodeMask,
24500 D3D12_HEAP_TYPE heapType);
24501
24502#endif
24503
24504 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
24505 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
24506 ID3D12Device10 * This,
24507 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24508 D3D12_HEAP_FLAGS HeapFlags,
24509 _In_ const D3D12_RESOURCE_DESC *pDesc,
24510 D3D12_RESOURCE_STATES InitialResourceState,
24511 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24512 REFIID riidResource,
24513 _COM_Outptr_opt_ void **ppvResource);
24514
24515 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
24516 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
24517 ID3D12Device10 * This,
24518 _In_ const D3D12_HEAP_DESC *pDesc,
24519 REFIID riid,
24520 _COM_Outptr_opt_ void **ppvHeap);
24521
24522 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
24523 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
24524 ID3D12Device10 * This,
24525 _In_ ID3D12Heap *pHeap,
24526 UINT64 HeapOffset,
24527 _In_ const D3D12_RESOURCE_DESC *pDesc,
24528 D3D12_RESOURCE_STATES InitialState,
24529 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24530 REFIID riid,
24531 _COM_Outptr_opt_ void **ppvResource);
24532
24533 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
24534 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
24535 ID3D12Device10 * This,
24536 _In_ const D3D12_RESOURCE_DESC *pDesc,
24537 D3D12_RESOURCE_STATES InitialState,
24538 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24539 REFIID riid,
24540 _COM_Outptr_opt_ void **ppvResource);
24541
24542 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
24543 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
24544 ID3D12Device10 * This,
24545 _In_ ID3D12DeviceChild *pObject,
24546 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
24547 DWORD Access,
24548 _In_opt_ LPCWSTR Name,
24549 _Out_ HANDLE *pHandle);
24550
24551 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
24552 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
24553 ID3D12Device10 * This,
24554 _In_ HANDLE NTHandle,
24555 REFIID riid,
24556 _COM_Outptr_opt_ void **ppvObj);
24557
24558 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
24559 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
24560 ID3D12Device10 * This,
24561 _In_ LPCWSTR Name,
24562 DWORD Access,
24563 /* [annotation][out] */
24564 _Out_ HANDLE *pNTHandle);
24565
24566 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
24567 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
24568 ID3D12Device10 * This,
24569 UINT NumObjects,
24570 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
24571
24572 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
24573 HRESULT ( STDMETHODCALLTYPE *Evict )(
24574 ID3D12Device10 * This,
24575 UINT NumObjects,
24576 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
24577
24578 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
24579 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
24580 ID3D12Device10 * This,
24581 UINT64 InitialValue,
24582 D3D12_FENCE_FLAGS Flags,
24583 REFIID riid,
24584 _COM_Outptr_ void **ppFence);
24585
24586 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
24587 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
24588 ID3D12Device10 * This);
24589
24590 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
24591 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
24592 ID3D12Device10 * This,
24593 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
24594 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
24595 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
24596 UINT64 BaseOffset,
24597 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
24598 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
24599 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
24600 _Out_opt_ UINT64 *pTotalBytes);
24601
24602 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
24603 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
24604 ID3D12Device10 * This,
24605 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
24606 REFIID riid,
24607 _COM_Outptr_opt_ void **ppvHeap);
24608
24609 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
24610 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
24611 ID3D12Device10 * This,
24612 BOOL Enable);
24613
24614 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
24615 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
24616 ID3D12Device10 * This,
24617 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
24618 _In_opt_ ID3D12RootSignature *pRootSignature,
24619 REFIID riid,
24620 _COM_Outptr_opt_ void **ppvCommandSignature);
24621
24622 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
24623 void ( STDMETHODCALLTYPE *GetResourceTiling )(
24624 ID3D12Device10 * This,
24625 _In_ ID3D12Resource *pTiledResource,
24626 _Out_opt_ UINT *pNumTilesForEntireResource,
24627 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
24628 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
24629 _Inout_opt_ UINT *pNumSubresourceTilings,
24630 _In_ UINT FirstSubresourceTilingToGet,
24631 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
24632
24633 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
24634#if !defined(_WIN32)
24635 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
24636 ID3D12Device10 * This);
24637
24638#else
24639 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
24640 ID3D12Device10 * This,
24641 LUID * RetVal);
24642
24643#endif
24644
24645 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
24646 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
24647 ID3D12Device10 * This,
24648 _In_reads_(BlobLength) const void *pLibraryBlob,
24649 SIZE_T BlobLength,
24650 REFIID riid,
24651 _COM_Outptr_ void **ppPipelineLibrary);
24652
24653 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
24654 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
24655 ID3D12Device10 * This,
24656 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
24657 _In_reads_(NumFences) const UINT64 *pFenceValues,
24658 UINT NumFences,
24659 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
24660 HANDLE hEvent);
24661
24662 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
24663 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
24664 ID3D12Device10 * This,
24665 UINT NumObjects,
24666 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
24667 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
24668
24669 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
24670 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
24671 ID3D12Device10 * This,
24672 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
24673 REFIID riid,
24674 _COM_Outptr_ void **ppPipelineState);
24675
24676 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
24677 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
24678 ID3D12Device10 * This,
24679 _In_ const void *pAddress,
24680 REFIID riid,
24681 _COM_Outptr_ void **ppvHeap);
24682
24683 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
24684 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
24685 ID3D12Device10 * This,
24686 _In_ HANDLE hFileMapping,
24687 REFIID riid,
24688 _COM_Outptr_ void **ppvHeap);
24689
24690 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
24691 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
24692 ID3D12Device10 * This,
24693 D3D12_RESIDENCY_FLAGS Flags,
24694 UINT NumObjects,
24695 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
24696 _In_ ID3D12Fence *pFenceToSignal,
24697 UINT64 FenceValueToSignal);
24698
24699 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
24700 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
24701 ID3D12Device10 * This,
24702 _In_ UINT nodeMask,
24703 _In_ D3D12_COMMAND_LIST_TYPE type,
24704 _In_ D3D12_COMMAND_LIST_FLAGS flags,
24705 REFIID riid,
24706 _COM_Outptr_ void **ppCommandList);
24707
24708 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
24709 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
24710 ID3D12Device10 * This,
24711 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
24712 _In_ REFIID riid,
24713 _COM_Outptr_ void **ppSession);
24714
24715 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
24716 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
24717 ID3D12Device10 * This,
24718 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24719 D3D12_HEAP_FLAGS HeapFlags,
24720 _In_ const D3D12_RESOURCE_DESC *pDesc,
24721 D3D12_RESOURCE_STATES InitialResourceState,
24722 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24723 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24724 REFIID riidResource,
24725 _COM_Outptr_opt_ void **ppvResource);
24726
24727 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
24728 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
24729 ID3D12Device10 * This,
24730 _In_ const D3D12_HEAP_DESC *pDesc,
24731 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24732 REFIID riid,
24733 _COM_Outptr_opt_ void **ppvHeap);
24734
24735 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
24736 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
24737 ID3D12Device10 * This,
24738 _In_ const D3D12_RESOURCE_DESC *pDesc,
24739 D3D12_RESOURCE_STATES InitialState,
24740 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24741 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24742 REFIID riid,
24743 _COM_Outptr_opt_ void **ppvResource);
24744
24745 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
24746#if !defined(_WIN32)
24747 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
24748 ID3D12Device10 * This,
24749 UINT visibleMask,
24750 UINT numResourceDescs,
24751 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
24752 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24753
24754#else
24755 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
24756 ID3D12Device10 * This,
24757 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24758 UINT visibleMask,
24759 UINT numResourceDescs,
24760 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
24761 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24762
24763#endif
24764
24765 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
24766 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
24767 ID3D12Device10 * This,
24768 _In_ ID3D12LifetimeOwner *pOwner,
24769 REFIID riid,
24770 _COM_Outptr_ void **ppvTracker);
24771
24772 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
24773 void ( STDMETHODCALLTYPE *RemoveDevice )(
24774 ID3D12Device10 * This);
24775
24776 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
24777 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
24778 ID3D12Device10 * This,
24779 _Inout_ UINT *pNumMetaCommands,
24780 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
24781
24782 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
24783 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
24784 ID3D12Device10 * This,
24785 _In_ REFGUID CommandId,
24786 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
24787 _Out_opt_ UINT *pTotalStructureSizeInBytes,
24788 _Inout_ UINT *pParameterCount,
24789 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
24790
24791 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
24792 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
24793 ID3D12Device10 * This,
24794 _In_ REFGUID CommandId,
24795 _In_ UINT NodeMask,
24796 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
24797 _In_ SIZE_T CreationParametersDataSizeInBytes,
24798 REFIID riid,
24799 _COM_Outptr_ void **ppMetaCommand);
24800
24801 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
24802 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
24803 ID3D12Device10 * This,
24804 const D3D12_STATE_OBJECT_DESC *pDesc,
24805 REFIID riid,
24806 _COM_Outptr_ void **ppStateObject);
24807
24808 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
24809 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
24810 ID3D12Device10 * This,
24811 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
24812 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
24813
24814 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
24815 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
24816 ID3D12Device10 * This,
24817 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
24818 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
24819
24820 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
24821 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
24822 ID3D12Device10 * This,
24823 D3D12_BACKGROUND_PROCESSING_MODE Mode,
24824 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
24825 _In_opt_ HANDLE hEventToSignalUponCompletion,
24826 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
24827
24828 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
24829 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
24830 ID3D12Device10 * This,
24831 const D3D12_STATE_OBJECT_DESC *pAddition,
24832 ID3D12StateObject *pStateObjectToGrowFrom,
24833 REFIID riid,
24834 _COM_Outptr_ void **ppNewStateObject);
24835
24836 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
24837 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
24838 ID3D12Device10 * This,
24839 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
24840 _In_ REFIID riid,
24841 _COM_Outptr_ void **ppSession);
24842
24843 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
24844#if !defined(_WIN32)
24845 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
24846 ID3D12Device10 * This,
24847 UINT visibleMask,
24848 UINT numResourceDescs,
24849 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
24850 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24851
24852#else
24853 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
24854 ID3D12Device10 * This,
24855 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24856 UINT visibleMask,
24857 UINT numResourceDescs,
24858 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
24859 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24860
24861#endif
24862
24863 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
24864 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
24865 ID3D12Device10 * This,
24866 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24867 D3D12_HEAP_FLAGS HeapFlags,
24868 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24869 D3D12_RESOURCE_STATES InitialResourceState,
24870 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24871 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24872 REFIID riidResource,
24873 _COM_Outptr_opt_ void **ppvResource);
24874
24875 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
24876 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
24877 ID3D12Device10 * This,
24878 _In_ ID3D12Heap *pHeap,
24879 UINT64 HeapOffset,
24880 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24881 D3D12_RESOURCE_STATES InitialState,
24882 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24883 REFIID riid,
24884 _COM_Outptr_opt_ void **ppvResource);
24885
24886 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
24887 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
24888 ID3D12Device10 * This,
24889 _In_opt_ ID3D12Resource *pTargetedResource,
24890 _In_opt_ ID3D12Resource *pFeedbackResource,
24891 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24892
24893 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
24894 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
24895 ID3D12Device10 * This,
24896 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
24897 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
24898 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
24899 UINT64 BaseOffset,
24900 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
24901 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
24902 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
24903 _Out_opt_ UINT64 *pTotalBytes);
24904
24905 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
24906 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
24907 ID3D12Device10 * This,
24908 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
24909 REFIID riid,
24910 _COM_Outptr_opt_ void **ppvSession);
24911
24912 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
24913 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
24914 ID3D12Device10 * This,
24915 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
24916 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
24917
24918 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
24919 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
24920 ID3D12Device10 * This,
24921 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
24922 REFIID CreatorID,
24923 REFIID riid,
24924 _COM_Outptr_ void **ppCommandQueue);
24925
24926 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
24927 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
24928 ID3D12Device10 * This,
24929 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24930 D3D12_HEAP_FLAGS HeapFlags,
24931 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24932 D3D12_BARRIER_LAYOUT InitialLayout,
24933 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24934 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24935 UINT32 NumCastableFormats,
24936 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24937 REFIID riidResource,
24938 _COM_Outptr_opt_ void **ppvResource);
24939
24940 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
24941 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
24942 ID3D12Device10 * This,
24943 _In_ ID3D12Heap *pHeap,
24944 UINT64 HeapOffset,
24945 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24946 D3D12_BARRIER_LAYOUT InitialLayout,
24947 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24948 UINT32 NumCastableFormats,
24949 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24950 REFIID riid,
24951 _COM_Outptr_opt_ void **ppvResource);
24952
24953 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
24954 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
24955 ID3D12Device10 * This,
24956 _In_ const D3D12_RESOURCE_DESC *pDesc,
24957 D3D12_BARRIER_LAYOUT InitialLayout,
24958 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24959 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24960 UINT32 NumCastableFormats,
24961 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24962 REFIID riid,
24963 _COM_Outptr_opt_ void **ppvResource);
24964
24965 END_INTERFACE
24966 } ID3D12Device10Vtbl;
24967
24968 interface ID3D12Device10
24969 {
24970 CONST_VTBL struct ID3D12Device10Vtbl *lpVtbl;
24971 };
24972
24973
24974
24975#ifdef COBJMACROS
24976
24977
24978#define ID3D12Device10_QueryInterface(This,riid,ppvObject) \
24979 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
24980
24981#define ID3D12Device10_AddRef(This) \
24982 ( (This)->lpVtbl -> AddRef(This) )
24983
24984#define ID3D12Device10_Release(This) \
24985 ( (This)->lpVtbl -> Release(This) )
24986
24987
24988#define ID3D12Device10_GetPrivateData(This,guid,pDataSize,pData) \
24989 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
24990
24991#define ID3D12Device10_SetPrivateData(This,guid,DataSize,pData) \
24992 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
24993
24994#define ID3D12Device10_SetPrivateDataInterface(This,guid,pData) \
24995 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
24996
24997#define ID3D12Device10_SetName(This,Name) \
24998 ( (This)->lpVtbl -> SetName(This,Name) )
24999
25000
25001#define ID3D12Device10_GetNodeCount(This) \
25002 ( (This)->lpVtbl -> GetNodeCount(This) )
25003
25004#define ID3D12Device10_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
25005 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
25006
25007#define ID3D12Device10_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
25008 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
25009
25010#define ID3D12Device10_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
25011 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
25012
25013#define ID3D12Device10_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
25014 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
25015
25016#define ID3D12Device10_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
25017 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
25018
25019#define ID3D12Device10_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
25020 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
25021
25022#define ID3D12Device10_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
25023 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
25024
25025#define ID3D12Device10_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
25026 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
25027
25028#define ID3D12Device10_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
25029 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
25030
25031#define ID3D12Device10_CreateConstantBufferView(This,pDesc,DestDescriptor) \
25032 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
25033
25034#define ID3D12Device10_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
25035 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
25036
25037#define ID3D12Device10_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
25038 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
25039
25040#define ID3D12Device10_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
25041 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
25042
25043#define ID3D12Device10_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
25044 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
25045
25046#define ID3D12Device10_CreateSampler(This,pDesc,DestDescriptor) \
25047 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
25048
25049#define ID3D12Device10_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
25050 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
25051
25052#define ID3D12Device10_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
25053 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
25054#if !defined(_WIN32)
25055
25056#define ID3D12Device10_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
25057 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
25058#else
25059#define ID3D12Device10_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
25060 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
25061#endif
25062#if !defined(_WIN32)
25063
25064#define ID3D12Device10_GetCustomHeapProperties(This,nodeMask,heapType) \
25065 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
25066#else
25067#define ID3D12Device10_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
25068 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
25069#endif
25070
25071#define ID3D12Device10_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
25072 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
25073
25074#define ID3D12Device10_CreateHeap(This,pDesc,riid,ppvHeap) \
25075 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
25076
25077#define ID3D12Device10_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25078 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25079
25080#define ID3D12Device10_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25081 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25082
25083#define ID3D12Device10_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
25084 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
25085
25086#define ID3D12Device10_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
25087 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
25088
25089#define ID3D12Device10_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
25090 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
25091
25092#define ID3D12Device10_MakeResident(This,NumObjects,ppObjects) \
25093 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
25094
25095#define ID3D12Device10_Evict(This,NumObjects,ppObjects) \
25096 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
25097
25098#define ID3D12Device10_CreateFence(This,InitialValue,Flags,riid,ppFence) \
25099 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
25100
25101#define ID3D12Device10_GetDeviceRemovedReason(This) \
25102 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
25103
25104#define ID3D12Device10_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
25105 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
25106
25107#define ID3D12Device10_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
25108 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
25109
25110#define ID3D12Device10_SetStablePowerState(This,Enable) \
25111 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
25112
25113#define ID3D12Device10_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
25114 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
25115
25116#define ID3D12Device10_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
25117 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
25118#if !defined(_WIN32)
25119
25120#define ID3D12Device10_GetAdapterLuid(This) \
25121 ( (This)->lpVtbl -> GetAdapterLuid(This) )
25122#else
25123#define ID3D12Device10_GetAdapterLuid(This,RetVal) \
25124 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
25125#endif
25126
25127
25128#define ID3D12Device10_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
25129 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
25130
25131#define ID3D12Device10_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
25132 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
25133
25134#define ID3D12Device10_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
25135 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
25136
25137
25138#define ID3D12Device10_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
25139 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
25140
25141
25142#define ID3D12Device10_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
25143 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
25144
25145#define ID3D12Device10_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
25146 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
25147
25148#define ID3D12Device10_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
25149 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
25150
25151
25152#define ID3D12Device10_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
25153 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
25154
25155#define ID3D12Device10_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
25156 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
25157
25158#define ID3D12Device10_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
25159 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
25160
25161#define ID3D12Device10_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
25162 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
25163
25164#define ID3D12Device10_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
25165 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
25166#if !defined(_WIN32)
25167
25168#define ID3D12Device10_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25169 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25170#else
25171#define ID3D12Device10_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25172 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25173#endif
25174
25175
25176#define ID3D12Device10_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
25177 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
25178
25179#define ID3D12Device10_RemoveDevice(This) \
25180 ( (This)->lpVtbl -> RemoveDevice(This) )
25181
25182#define ID3D12Device10_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
25183 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
25184
25185#define ID3D12Device10_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
25186 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
25187
25188#define ID3D12Device10_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
25189 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
25190
25191#define ID3D12Device10_CreateStateObject(This,pDesc,riid,ppStateObject) \
25192 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
25193
25194#define ID3D12Device10_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
25195 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
25196
25197#define ID3D12Device10_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
25198 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
25199
25200
25201#define ID3D12Device10_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
25202 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
25203
25204
25205#define ID3D12Device10_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
25206 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
25207
25208#define ID3D12Device10_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
25209 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
25210
25211#if !defined(_WIN32)
25212
25213#define ID3D12Device10_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25214 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25215#else
25216#define ID3D12Device10_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25217 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25218#endif
25219
25220#define ID3D12Device10_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
25221 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
25222
25223#define ID3D12Device10_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25224 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25225
25226#define ID3D12Device10_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
25227 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
25228
25229#define ID3D12Device10_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
25230 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
25231
25232
25233#define ID3D12Device10_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
25234 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
25235
25236#define ID3D12Device10_ShaderCacheControl(This,Kinds,Control) \
25237 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
25238
25239#define ID3D12Device10_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
25240 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
25241
25242
25243#define ID3D12Device10_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
25244 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
25245
25246#define ID3D12Device10_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
25247 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
25248
25249#define ID3D12Device10_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
25250 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
25251
25252#endif /* COBJMACROS */
25253
25254
25255#endif /* C style interface */
25256
25257
25258
25259
25260#endif /* __ID3D12Device10_INTERFACE_DEFINED__ */
25261
25262
25263#ifndef __ID3D12Device11_INTERFACE_DEFINED__
25264#define __ID3D12Device11_INTERFACE_DEFINED__
25265
25266/* interface ID3D12Device11 */
25267/* [unique][local][object][uuid] */
25268
25269
25270EXTERN_C const IID IID_ID3D12Device11;
25271
25272#if defined(__cplusplus) && !defined(CINTERFACE)
25273
25274 MIDL_INTERFACE("5405c344-d457-444e-b4dd-2366e45aee39")
25275 ID3D12Device11 : public ID3D12Device10
25276 {
25277 public:
25278 virtual void STDMETHODCALLTYPE CreateSampler2(
25279 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
25280 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
25281
25282 };
25283
25284
25285#else /* C style interface */
25286
25287 typedef struct ID3D12Device11Vtbl
25288 {
25289 BEGIN_INTERFACE
25290
25291 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
25292 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
25293 ID3D12Device11 * This,
25294 REFIID riid,
25295 _COM_Outptr_ void **ppvObject);
25296
25297 DECLSPEC_XFGVIRT(IUnknown, AddRef)
25298 ULONG ( STDMETHODCALLTYPE *AddRef )(
25299 ID3D12Device11 * This);
25300
25301 DECLSPEC_XFGVIRT(IUnknown, Release)
25302 ULONG ( STDMETHODCALLTYPE *Release )(
25303 ID3D12Device11 * This);
25304
25305 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
25306 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
25307 ID3D12Device11 * This,
25308 _In_ REFGUID guid,
25309 _Inout_ UINT *pDataSize,
25310 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
25311
25312 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
25313 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
25314 ID3D12Device11 * This,
25315 _In_ REFGUID guid,
25316 _In_ UINT DataSize,
25317 _In_reads_bytes_opt_( DataSize ) const void *pData);
25318
25319 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
25320 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
25321 ID3D12Device11 * This,
25322 _In_ REFGUID guid,
25323 _In_opt_ const IUnknown *pData);
25324
25325 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
25326 HRESULT ( STDMETHODCALLTYPE *SetName )(
25327 ID3D12Device11 * This,
25328 _In_z_ LPCWSTR Name);
25329
25330 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
25331 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
25332 ID3D12Device11 * This);
25333
25334 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
25335 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
25336 ID3D12Device11 * This,
25337 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
25338 REFIID riid,
25339 _COM_Outptr_ void **ppCommandQueue);
25340
25341 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
25342 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
25343 ID3D12Device11 * This,
25344 _In_ D3D12_COMMAND_LIST_TYPE type,
25345 REFIID riid,
25346 _COM_Outptr_ void **ppCommandAllocator);
25347
25348 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
25349 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
25350 ID3D12Device11 * This,
25351 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
25352 REFIID riid,
25353 _COM_Outptr_ void **ppPipelineState);
25354
25355 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
25356 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
25357 ID3D12Device11 * This,
25358 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
25359 REFIID riid,
25360 _COM_Outptr_ void **ppPipelineState);
25361
25362 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
25363 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
25364 ID3D12Device11 * This,
25365 _In_ UINT nodeMask,
25366 _In_ D3D12_COMMAND_LIST_TYPE type,
25367 _In_ ID3D12CommandAllocator *pCommandAllocator,
25368 _In_opt_ ID3D12PipelineState *pInitialState,
25369 REFIID riid,
25370 _COM_Outptr_ void **ppCommandList);
25371
25372 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
25373 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
25374 ID3D12Device11 * This,
25375 D3D12_FEATURE Feature,
25376 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
25377 UINT FeatureSupportDataSize);
25378
25379 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
25380 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
25381 ID3D12Device11 * This,
25382 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
25383 REFIID riid,
25384 _COM_Outptr_ void **ppvHeap);
25385
25386 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
25387 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
25388 ID3D12Device11 * This,
25389 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
25390
25391 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
25392 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
25393 ID3D12Device11 * This,
25394 _In_ UINT nodeMask,
25395 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
25396 _In_ SIZE_T blobLengthInBytes,
25397 REFIID riid,
25398 _COM_Outptr_ void **ppvRootSignature);
25399
25400 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
25401 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
25402 ID3D12Device11 * This,
25403 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
25404 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25405
25406 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
25407 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
25408 ID3D12Device11 * This,
25409 _In_opt_ ID3D12Resource *pResource,
25410 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
25411 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25412
25413 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
25414 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
25415 ID3D12Device11 * This,
25416 _In_opt_ ID3D12Resource *pResource,
25417 _In_opt_ ID3D12Resource *pCounterResource,
25418 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
25419 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25420
25421 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
25422 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
25423 ID3D12Device11 * This,
25424 _In_opt_ ID3D12Resource *pResource,
25425 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
25426 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25427
25428 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
25429 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
25430 ID3D12Device11 * This,
25431 _In_opt_ ID3D12Resource *pResource,
25432 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
25433 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25434
25435 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
25436 void ( STDMETHODCALLTYPE *CreateSampler )(
25437 ID3D12Device11 * This,
25438 _In_ const D3D12_SAMPLER_DESC *pDesc,
25439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25440
25441 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
25442 void ( STDMETHODCALLTYPE *CopyDescriptors )(
25443 ID3D12Device11 * This,
25444 _In_ UINT NumDestDescriptorRanges,
25445 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
25446 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
25447 _In_ UINT NumSrcDescriptorRanges,
25448 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
25449 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
25450 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
25451
25452 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
25453 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
25454 ID3D12Device11 * This,
25455 _In_ UINT NumDescriptors,
25456 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
25457 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
25458 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
25459
25460 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
25461#if !defined(_WIN32)
25462 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
25463 ID3D12Device11 * This,
25464 _In_ UINT visibleMask,
25465 _In_ UINT numResourceDescs,
25466 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
25467
25468#else
25469 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
25470 ID3D12Device11 * This,
25471 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25472 _In_ UINT visibleMask,
25473 _In_ UINT numResourceDescs,
25474 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
25475
25476#endif
25477
25478 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
25479#if !defined(_WIN32)
25480 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
25481 ID3D12Device11 * This,
25482 _In_ UINT nodeMask,
25483 D3D12_HEAP_TYPE heapType);
25484
25485#else
25486 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
25487 ID3D12Device11 * This,
25488 D3D12_HEAP_PROPERTIES * RetVal,
25489 _In_ UINT nodeMask,
25490 D3D12_HEAP_TYPE heapType);
25491
25492#endif
25493
25494 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
25495 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
25496 ID3D12Device11 * This,
25497 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25498 D3D12_HEAP_FLAGS HeapFlags,
25499 _In_ const D3D12_RESOURCE_DESC *pDesc,
25500 D3D12_RESOURCE_STATES InitialResourceState,
25501 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25502 REFIID riidResource,
25503 _COM_Outptr_opt_ void **ppvResource);
25504
25505 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
25506 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
25507 ID3D12Device11 * This,
25508 _In_ const D3D12_HEAP_DESC *pDesc,
25509 REFIID riid,
25510 _COM_Outptr_opt_ void **ppvHeap);
25511
25512 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
25513 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
25514 ID3D12Device11 * This,
25515 _In_ ID3D12Heap *pHeap,
25516 UINT64 HeapOffset,
25517 _In_ const D3D12_RESOURCE_DESC *pDesc,
25518 D3D12_RESOURCE_STATES InitialState,
25519 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25520 REFIID riid,
25521 _COM_Outptr_opt_ void **ppvResource);
25522
25523 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
25524 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
25525 ID3D12Device11 * This,
25526 _In_ const D3D12_RESOURCE_DESC *pDesc,
25527 D3D12_RESOURCE_STATES InitialState,
25528 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25529 REFIID riid,
25530 _COM_Outptr_opt_ void **ppvResource);
25531
25532 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
25533 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
25534 ID3D12Device11 * This,
25535 _In_ ID3D12DeviceChild *pObject,
25536 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
25537 DWORD Access,
25538 _In_opt_ LPCWSTR Name,
25539 _Out_ HANDLE *pHandle);
25540
25541 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
25542 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
25543 ID3D12Device11 * This,
25544 _In_ HANDLE NTHandle,
25545 REFIID riid,
25546 _COM_Outptr_opt_ void **ppvObj);
25547
25548 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
25549 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
25550 ID3D12Device11 * This,
25551 _In_ LPCWSTR Name,
25552 DWORD Access,
25553 /* [annotation][out] */
25554 _Out_ HANDLE *pNTHandle);
25555
25556 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
25557 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
25558 ID3D12Device11 * This,
25559 UINT NumObjects,
25560 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
25561
25562 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
25563 HRESULT ( STDMETHODCALLTYPE *Evict )(
25564 ID3D12Device11 * This,
25565 UINT NumObjects,
25566 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
25567
25568 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
25569 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
25570 ID3D12Device11 * This,
25571 UINT64 InitialValue,
25572 D3D12_FENCE_FLAGS Flags,
25573 REFIID riid,
25574 _COM_Outptr_ void **ppFence);
25575
25576 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
25577 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
25578 ID3D12Device11 * This);
25579
25580 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
25581 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
25582 ID3D12Device11 * This,
25583 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
25584 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
25585 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
25586 UINT64 BaseOffset,
25587 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
25588 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
25589 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
25590 _Out_opt_ UINT64 *pTotalBytes);
25591
25592 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
25593 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
25594 ID3D12Device11 * This,
25595 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
25596 REFIID riid,
25597 _COM_Outptr_opt_ void **ppvHeap);
25598
25599 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
25600 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
25601 ID3D12Device11 * This,
25602 BOOL Enable);
25603
25604 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
25605 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
25606 ID3D12Device11 * This,
25607 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
25608 _In_opt_ ID3D12RootSignature *pRootSignature,
25609 REFIID riid,
25610 _COM_Outptr_opt_ void **ppvCommandSignature);
25611
25612 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
25613 void ( STDMETHODCALLTYPE *GetResourceTiling )(
25614 ID3D12Device11 * This,
25615 _In_ ID3D12Resource *pTiledResource,
25616 _Out_opt_ UINT *pNumTilesForEntireResource,
25617 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
25618 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
25619 _Inout_opt_ UINT *pNumSubresourceTilings,
25620 _In_ UINT FirstSubresourceTilingToGet,
25621 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
25622
25623 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
25624#if !defined(_WIN32)
25625 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
25626 ID3D12Device11 * This);
25627
25628#else
25629 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
25630 ID3D12Device11 * This,
25631 LUID * RetVal);
25632
25633#endif
25634
25635 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
25636 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
25637 ID3D12Device11 * This,
25638 _In_reads_(BlobLength) const void *pLibraryBlob,
25639 SIZE_T BlobLength,
25640 REFIID riid,
25641 _COM_Outptr_ void **ppPipelineLibrary);
25642
25643 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
25644 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
25645 ID3D12Device11 * This,
25646 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
25647 _In_reads_(NumFences) const UINT64 *pFenceValues,
25648 UINT NumFences,
25649 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
25650 HANDLE hEvent);
25651
25652 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
25653 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
25654 ID3D12Device11 * This,
25655 UINT NumObjects,
25656 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
25657 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
25658
25659 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
25660 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
25661 ID3D12Device11 * This,
25662 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
25663 REFIID riid,
25664 _COM_Outptr_ void **ppPipelineState);
25665
25666 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
25667 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
25668 ID3D12Device11 * This,
25669 _In_ const void *pAddress,
25670 REFIID riid,
25671 _COM_Outptr_ void **ppvHeap);
25672
25673 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
25674 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
25675 ID3D12Device11 * This,
25676 _In_ HANDLE hFileMapping,
25677 REFIID riid,
25678 _COM_Outptr_ void **ppvHeap);
25679
25680 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
25681 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
25682 ID3D12Device11 * This,
25683 D3D12_RESIDENCY_FLAGS Flags,
25684 UINT NumObjects,
25685 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
25686 _In_ ID3D12Fence *pFenceToSignal,
25687 UINT64 FenceValueToSignal);
25688
25689 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
25690 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
25691 ID3D12Device11 * This,
25692 _In_ UINT nodeMask,
25693 _In_ D3D12_COMMAND_LIST_TYPE type,
25694 _In_ D3D12_COMMAND_LIST_FLAGS flags,
25695 REFIID riid,
25696 _COM_Outptr_ void **ppCommandList);
25697
25698 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
25699 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
25700 ID3D12Device11 * This,
25701 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
25702 _In_ REFIID riid,
25703 _COM_Outptr_ void **ppSession);
25704
25705 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
25706 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
25707 ID3D12Device11 * This,
25708 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25709 D3D12_HEAP_FLAGS HeapFlags,
25710 _In_ const D3D12_RESOURCE_DESC *pDesc,
25711 D3D12_RESOURCE_STATES InitialResourceState,
25712 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25713 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25714 REFIID riidResource,
25715 _COM_Outptr_opt_ void **ppvResource);
25716
25717 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
25718 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
25719 ID3D12Device11 * This,
25720 _In_ const D3D12_HEAP_DESC *pDesc,
25721 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25722 REFIID riid,
25723 _COM_Outptr_opt_ void **ppvHeap);
25724
25725 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
25726 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
25727 ID3D12Device11 * This,
25728 _In_ const D3D12_RESOURCE_DESC *pDesc,
25729 D3D12_RESOURCE_STATES InitialState,
25730 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25731 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25732 REFIID riid,
25733 _COM_Outptr_opt_ void **ppvResource);
25734
25735 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
25736#if !defined(_WIN32)
25737 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
25738 ID3D12Device11 * This,
25739 UINT visibleMask,
25740 UINT numResourceDescs,
25741 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
25742 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25743
25744#else
25745 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
25746 ID3D12Device11 * This,
25747 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25748 UINT visibleMask,
25749 UINT numResourceDescs,
25750 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
25751 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25752
25753#endif
25754
25755 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
25756 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
25757 ID3D12Device11 * This,
25758 _In_ ID3D12LifetimeOwner *pOwner,
25759 REFIID riid,
25760 _COM_Outptr_ void **ppvTracker);
25761
25762 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
25763 void ( STDMETHODCALLTYPE *RemoveDevice )(
25764 ID3D12Device11 * This);
25765
25766 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
25767 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
25768 ID3D12Device11 * This,
25769 _Inout_ UINT *pNumMetaCommands,
25770 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
25771
25772 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
25773 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
25774 ID3D12Device11 * This,
25775 _In_ REFGUID CommandId,
25776 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
25777 _Out_opt_ UINT *pTotalStructureSizeInBytes,
25778 _Inout_ UINT *pParameterCount,
25779 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
25780
25781 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
25782 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
25783 ID3D12Device11 * This,
25784 _In_ REFGUID CommandId,
25785 _In_ UINT NodeMask,
25786 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
25787 _In_ SIZE_T CreationParametersDataSizeInBytes,
25788 REFIID riid,
25789 _COM_Outptr_ void **ppMetaCommand);
25790
25791 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
25792 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
25793 ID3D12Device11 * This,
25794 const D3D12_STATE_OBJECT_DESC *pDesc,
25795 REFIID riid,
25796 _COM_Outptr_ void **ppStateObject);
25797
25798 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
25799 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
25800 ID3D12Device11 * This,
25801 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
25802 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
25803
25804 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
25805 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
25806 ID3D12Device11 * This,
25807 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
25808 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
25809
25810 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
25811 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
25812 ID3D12Device11 * This,
25813 D3D12_BACKGROUND_PROCESSING_MODE Mode,
25814 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
25815 _In_opt_ HANDLE hEventToSignalUponCompletion,
25816 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
25817
25818 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
25819 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
25820 ID3D12Device11 * This,
25821 const D3D12_STATE_OBJECT_DESC *pAddition,
25822 ID3D12StateObject *pStateObjectToGrowFrom,
25823 REFIID riid,
25824 _COM_Outptr_ void **ppNewStateObject);
25825
25826 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
25827 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
25828 ID3D12Device11 * This,
25829 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
25830 _In_ REFIID riid,
25831 _COM_Outptr_ void **ppSession);
25832
25833 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
25834#if !defined(_WIN32)
25835 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
25836 ID3D12Device11 * This,
25837 UINT visibleMask,
25838 UINT numResourceDescs,
25839 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
25840 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25841
25842#else
25843 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
25844 ID3D12Device11 * This,
25845 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25846 UINT visibleMask,
25847 UINT numResourceDescs,
25848 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
25849 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25850
25851#endif
25852
25853 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
25854 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
25855 ID3D12Device11 * This,
25856 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25857 D3D12_HEAP_FLAGS HeapFlags,
25858 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25859 D3D12_RESOURCE_STATES InitialResourceState,
25860 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25861 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25862 REFIID riidResource,
25863 _COM_Outptr_opt_ void **ppvResource);
25864
25865 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
25866 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
25867 ID3D12Device11 * This,
25868 _In_ ID3D12Heap *pHeap,
25869 UINT64 HeapOffset,
25870 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25871 D3D12_RESOURCE_STATES InitialState,
25872 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25873 REFIID riid,
25874 _COM_Outptr_opt_ void **ppvResource);
25875
25876 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
25877 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
25878 ID3D12Device11 * This,
25879 _In_opt_ ID3D12Resource *pTargetedResource,
25880 _In_opt_ ID3D12Resource *pFeedbackResource,
25881 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25882
25883 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
25884 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
25885 ID3D12Device11 * This,
25886 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
25887 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
25888 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
25889 UINT64 BaseOffset,
25890 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
25891 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
25892 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
25893 _Out_opt_ UINT64 *pTotalBytes);
25894
25895 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
25896 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
25897 ID3D12Device11 * This,
25898 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
25899 REFIID riid,
25900 _COM_Outptr_opt_ void **ppvSession);
25901
25902 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
25903 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
25904 ID3D12Device11 * This,
25905 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
25906 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
25907
25908 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
25909 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
25910 ID3D12Device11 * This,
25911 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
25912 REFIID CreatorID,
25913 REFIID riid,
25914 _COM_Outptr_ void **ppCommandQueue);
25915
25916 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
25917 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
25918 ID3D12Device11 * This,
25919 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25920 D3D12_HEAP_FLAGS HeapFlags,
25921 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25922 D3D12_BARRIER_LAYOUT InitialLayout,
25923 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25924 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25925 UINT32 NumCastableFormats,
25926 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25927 REFIID riidResource,
25928 _COM_Outptr_opt_ void **ppvResource);
25929
25930 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
25931 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
25932 ID3D12Device11 * This,
25933 _In_ ID3D12Heap *pHeap,
25934 UINT64 HeapOffset,
25935 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25936 D3D12_BARRIER_LAYOUT InitialLayout,
25937 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25938 UINT32 NumCastableFormats,
25939 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25940 REFIID riid,
25941 _COM_Outptr_opt_ void **ppvResource);
25942
25943 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
25944 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
25945 ID3D12Device11 * This,
25946 _In_ const D3D12_RESOURCE_DESC *pDesc,
25947 D3D12_BARRIER_LAYOUT InitialLayout,
25948 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25949 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25950 UINT32 NumCastableFormats,
25951 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25952 REFIID riid,
25953 _COM_Outptr_opt_ void **ppvResource);
25954
25955 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
25956 void ( STDMETHODCALLTYPE *CreateSampler2 )(
25957 ID3D12Device11 * This,
25958 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
25959 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25960
25961 END_INTERFACE
25962 } ID3D12Device11Vtbl;
25963
25964 interface ID3D12Device11
25965 {
25966 CONST_VTBL struct ID3D12Device11Vtbl *lpVtbl;
25967 };
25968
25969
25970
25971#ifdef COBJMACROS
25972
25973
25974#define ID3D12Device11_QueryInterface(This,riid,ppvObject) \
25975 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
25976
25977#define ID3D12Device11_AddRef(This) \
25978 ( (This)->lpVtbl -> AddRef(This) )
25979
25980#define ID3D12Device11_Release(This) \
25981 ( (This)->lpVtbl -> Release(This) )
25982
25983
25984#define ID3D12Device11_GetPrivateData(This,guid,pDataSize,pData) \
25985 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
25986
25987#define ID3D12Device11_SetPrivateData(This,guid,DataSize,pData) \
25988 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
25989
25990#define ID3D12Device11_SetPrivateDataInterface(This,guid,pData) \
25991 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
25992
25993#define ID3D12Device11_SetName(This,Name) \
25994 ( (This)->lpVtbl -> SetName(This,Name) )
25995
25996
25997#define ID3D12Device11_GetNodeCount(This) \
25998 ( (This)->lpVtbl -> GetNodeCount(This) )
25999
26000#define ID3D12Device11_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
26001 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
26002
26003#define ID3D12Device11_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
26004 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
26005
26006#define ID3D12Device11_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
26007 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
26008
26009#define ID3D12Device11_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
26010 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
26011
26012#define ID3D12Device11_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
26013 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
26014
26015#define ID3D12Device11_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
26016 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
26017
26018#define ID3D12Device11_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
26019 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
26020
26021#define ID3D12Device11_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
26022 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
26023
26024#define ID3D12Device11_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
26025 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
26026
26027#define ID3D12Device11_CreateConstantBufferView(This,pDesc,DestDescriptor) \
26028 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
26029
26030#define ID3D12Device11_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
26031 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
26032
26033#define ID3D12Device11_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
26034 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
26035
26036#define ID3D12Device11_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
26037 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
26038
26039#define ID3D12Device11_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
26040 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
26041
26042#define ID3D12Device11_CreateSampler(This,pDesc,DestDescriptor) \
26043 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
26044
26045#define ID3D12Device11_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
26046 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
26047
26048#define ID3D12Device11_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
26049 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
26050#if !defined(_WIN32)
26051
26052#define ID3D12Device11_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
26053 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
26054#else
26055#define ID3D12Device11_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
26056 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
26057#endif
26058#if !defined(_WIN32)
26059
26060#define ID3D12Device11_GetCustomHeapProperties(This,nodeMask,heapType) \
26061 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
26062#else
26063#define ID3D12Device11_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
26064 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
26065#endif
26066
26067#define ID3D12Device11_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
26068 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
26069
26070#define ID3D12Device11_CreateHeap(This,pDesc,riid,ppvHeap) \
26071 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
26072
26073#define ID3D12Device11_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26074 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26075
26076#define ID3D12Device11_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26077 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26078
26079#define ID3D12Device11_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
26080 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
26081
26082#define ID3D12Device11_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
26083 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
26084
26085#define ID3D12Device11_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
26086 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
26087
26088#define ID3D12Device11_MakeResident(This,NumObjects,ppObjects) \
26089 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
26090
26091#define ID3D12Device11_Evict(This,NumObjects,ppObjects) \
26092 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
26093
26094#define ID3D12Device11_CreateFence(This,InitialValue,Flags,riid,ppFence) \
26095 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
26096
26097#define ID3D12Device11_GetDeviceRemovedReason(This) \
26098 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
26099
26100#define ID3D12Device11_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
26101 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
26102
26103#define ID3D12Device11_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
26104 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
26105
26106#define ID3D12Device11_SetStablePowerState(This,Enable) \
26107 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
26108
26109#define ID3D12Device11_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
26110 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
26111
26112#define ID3D12Device11_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
26113 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
26114#if !defined(_WIN32)
26115
26116#define ID3D12Device11_GetAdapterLuid(This) \
26117 ( (This)->lpVtbl -> GetAdapterLuid(This) )
26118#else
26119#define ID3D12Device11_GetAdapterLuid(This,RetVal) \
26120 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
26121#endif
26122
26123
26124#define ID3D12Device11_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
26125 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
26126
26127#define ID3D12Device11_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
26128 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
26129
26130#define ID3D12Device11_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
26131 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
26132
26133
26134#define ID3D12Device11_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
26135 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
26136
26137
26138#define ID3D12Device11_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
26139 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
26140
26141#define ID3D12Device11_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
26142 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
26143
26144#define ID3D12Device11_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
26145 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
26146
26147
26148#define ID3D12Device11_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
26149 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
26150
26151#define ID3D12Device11_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
26152 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
26153
26154#define ID3D12Device11_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
26155 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
26156
26157#define ID3D12Device11_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
26158 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
26159
26160#define ID3D12Device11_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
26161 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
26162#if !defined(_WIN32)
26163
26164#define ID3D12Device11_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26165 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26166#else
26167#define ID3D12Device11_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26168 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26169#endif
26170
26171
26172#define ID3D12Device11_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
26173 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
26174
26175#define ID3D12Device11_RemoveDevice(This) \
26176 ( (This)->lpVtbl -> RemoveDevice(This) )
26177
26178#define ID3D12Device11_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
26179 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
26180
26181#define ID3D12Device11_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
26182 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
26183
26184#define ID3D12Device11_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
26185 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
26186
26187#define ID3D12Device11_CreateStateObject(This,pDesc,riid,ppStateObject) \
26188 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
26189
26190#define ID3D12Device11_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
26191 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
26192
26193#define ID3D12Device11_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
26194 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
26195
26196
26197#define ID3D12Device11_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
26198 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
26199
26200
26201#define ID3D12Device11_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
26202 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
26203
26204#define ID3D12Device11_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
26205 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
26206
26207#if !defined(_WIN32)
26208
26209#define ID3D12Device11_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26210 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26211#else
26212#define ID3D12Device11_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26213 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26214#endif
26215
26216#define ID3D12Device11_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
26217 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
26218
26219#define ID3D12Device11_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26220 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26221
26222#define ID3D12Device11_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
26223 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
26224
26225#define ID3D12Device11_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
26226 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
26227
26228
26229#define ID3D12Device11_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
26230 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
26231
26232#define ID3D12Device11_ShaderCacheControl(This,Kinds,Control) \
26233 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
26234
26235#define ID3D12Device11_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
26236 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
26237
26238
26239#define ID3D12Device11_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
26240 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
26241
26242#define ID3D12Device11_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
26243 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
26244
26245#define ID3D12Device11_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
26246 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
26247
26248
26249#define ID3D12Device11_CreateSampler2(This,pDesc,DestDescriptor) \
26250 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
26251
26252#endif /* COBJMACROS */
26253
26254
26255#endif /* C style interface */
26256
26257
26258
26259
26260#endif /* __ID3D12Device11_INTERFACE_DEFINED__ */
26261
26262
26263#ifndef __ID3D12Device12_INTERFACE_DEFINED__
26264#define __ID3D12Device12_INTERFACE_DEFINED__
26265
26266/* interface ID3D12Device12 */
26267/* [unique][local][object][uuid] */
26268
26269
26270EXTERN_C const IID IID_ID3D12Device12;
26271
26272#if defined(__cplusplus) && !defined(CINTERFACE)
26273
26274 MIDL_INTERFACE("5af5c532-4c91-4cd0-b541-15a405395fc5")
26275 ID3D12Device12 : public ID3D12Device11
26276 {
26277 public:
26278#if defined(_MSC_VER) || !defined(_WIN32)
26279 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo3(
26280 UINT visibleMask,
26281 UINT numResourceDescs,
26282 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26283 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26284 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26285 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
26286#else
26287 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo3(
26288 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26289 UINT visibleMask,
26290 UINT numResourceDescs,
26291 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26292 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26293 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26294 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
26295#endif
26296
26297 };
26298
26299
26300#else /* C style interface */
26301
26302 typedef struct ID3D12Device12Vtbl
26303 {
26304 BEGIN_INTERFACE
26305
26306 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
26307 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
26308 ID3D12Device12 * This,
26309 REFIID riid,
26310 _COM_Outptr_ void **ppvObject);
26311
26312 DECLSPEC_XFGVIRT(IUnknown, AddRef)
26313 ULONG ( STDMETHODCALLTYPE *AddRef )(
26314 ID3D12Device12 * This);
26315
26316 DECLSPEC_XFGVIRT(IUnknown, Release)
26317 ULONG ( STDMETHODCALLTYPE *Release )(
26318 ID3D12Device12 * This);
26319
26320 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
26321 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
26322 ID3D12Device12 * This,
26323 _In_ REFGUID guid,
26324 _Inout_ UINT *pDataSize,
26325 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
26326
26327 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
26328 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
26329 ID3D12Device12 * This,
26330 _In_ REFGUID guid,
26331 _In_ UINT DataSize,
26332 _In_reads_bytes_opt_( DataSize ) const void *pData);
26333
26334 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
26335 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
26336 ID3D12Device12 * This,
26337 _In_ REFGUID guid,
26338 _In_opt_ const IUnknown *pData);
26339
26340 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
26341 HRESULT ( STDMETHODCALLTYPE *SetName )(
26342 ID3D12Device12 * This,
26343 _In_z_ LPCWSTR Name);
26344
26345 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
26346 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
26347 ID3D12Device12 * This);
26348
26349 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
26350 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
26351 ID3D12Device12 * This,
26352 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
26353 REFIID riid,
26354 _COM_Outptr_ void **ppCommandQueue);
26355
26356 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
26357 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
26358 ID3D12Device12 * This,
26359 _In_ D3D12_COMMAND_LIST_TYPE type,
26360 REFIID riid,
26361 _COM_Outptr_ void **ppCommandAllocator);
26362
26363 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
26364 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
26365 ID3D12Device12 * This,
26366 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
26367 REFIID riid,
26368 _COM_Outptr_ void **ppPipelineState);
26369
26370 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
26371 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
26372 ID3D12Device12 * This,
26373 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
26374 REFIID riid,
26375 _COM_Outptr_ void **ppPipelineState);
26376
26377 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
26378 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
26379 ID3D12Device12 * This,
26380 _In_ UINT nodeMask,
26381 _In_ D3D12_COMMAND_LIST_TYPE type,
26382 _In_ ID3D12CommandAllocator *pCommandAllocator,
26383 _In_opt_ ID3D12PipelineState *pInitialState,
26384 REFIID riid,
26385 _COM_Outptr_ void **ppCommandList);
26386
26387 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
26388 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
26389 ID3D12Device12 * This,
26390 D3D12_FEATURE Feature,
26391 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
26392 UINT FeatureSupportDataSize);
26393
26394 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
26395 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
26396 ID3D12Device12 * This,
26397 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
26398 REFIID riid,
26399 _COM_Outptr_ void **ppvHeap);
26400
26401 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
26402 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
26403 ID3D12Device12 * This,
26404 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
26405
26406 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
26407 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
26408 ID3D12Device12 * This,
26409 _In_ UINT nodeMask,
26410 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
26411 _In_ SIZE_T blobLengthInBytes,
26412 REFIID riid,
26413 _COM_Outptr_ void **ppvRootSignature);
26414
26415 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
26416 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
26417 ID3D12Device12 * This,
26418 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
26419 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26420
26421 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
26422 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
26423 ID3D12Device12 * This,
26424 _In_opt_ ID3D12Resource *pResource,
26425 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
26426 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26427
26428 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
26429 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
26430 ID3D12Device12 * This,
26431 _In_opt_ ID3D12Resource *pResource,
26432 _In_opt_ ID3D12Resource *pCounterResource,
26433 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
26434 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26435
26436 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
26437 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
26438 ID3D12Device12 * This,
26439 _In_opt_ ID3D12Resource *pResource,
26440 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
26441 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26442
26443 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
26444 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
26445 ID3D12Device12 * This,
26446 _In_opt_ ID3D12Resource *pResource,
26447 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
26448 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26449
26450 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
26451 void ( STDMETHODCALLTYPE *CreateSampler )(
26452 ID3D12Device12 * This,
26453 _In_ const D3D12_SAMPLER_DESC *pDesc,
26454 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26455
26456 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
26457 void ( STDMETHODCALLTYPE *CopyDescriptors )(
26458 ID3D12Device12 * This,
26459 _In_ UINT NumDestDescriptorRanges,
26460 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
26461 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
26462 _In_ UINT NumSrcDescriptorRanges,
26463 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
26464 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
26465 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
26466
26467 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
26468 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
26469 ID3D12Device12 * This,
26470 _In_ UINT NumDescriptors,
26471 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
26472 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
26473 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
26474
26475 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
26476#if !defined(_WIN32)
26477 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
26478 ID3D12Device12 * This,
26479 _In_ UINT visibleMask,
26480 _In_ UINT numResourceDescs,
26481 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
26482
26483#else
26484 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
26485 ID3D12Device12 * This,
26486 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26487 _In_ UINT visibleMask,
26488 _In_ UINT numResourceDescs,
26489 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
26490
26491#endif
26492
26493 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
26494#if !defined(_WIN32)
26495 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
26496 ID3D12Device12 * This,
26497 _In_ UINT nodeMask,
26498 D3D12_HEAP_TYPE heapType);
26499
26500#else
26501 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
26502 ID3D12Device12 * This,
26503 D3D12_HEAP_PROPERTIES * RetVal,
26504 _In_ UINT nodeMask,
26505 D3D12_HEAP_TYPE heapType);
26506
26507#endif
26508
26509 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
26510 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
26511 ID3D12Device12 * This,
26512 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26513 D3D12_HEAP_FLAGS HeapFlags,
26514 _In_ const D3D12_RESOURCE_DESC *pDesc,
26515 D3D12_RESOURCE_STATES InitialResourceState,
26516 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26517 REFIID riidResource,
26518 _COM_Outptr_opt_ void **ppvResource);
26519
26520 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
26521 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
26522 ID3D12Device12 * This,
26523 _In_ const D3D12_HEAP_DESC *pDesc,
26524 REFIID riid,
26525 _COM_Outptr_opt_ void **ppvHeap);
26526
26527 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
26528 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
26529 ID3D12Device12 * This,
26530 _In_ ID3D12Heap *pHeap,
26531 UINT64 HeapOffset,
26532 _In_ const D3D12_RESOURCE_DESC *pDesc,
26533 D3D12_RESOURCE_STATES InitialState,
26534 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26535 REFIID riid,
26536 _COM_Outptr_opt_ void **ppvResource);
26537
26538 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
26539 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
26540 ID3D12Device12 * This,
26541 _In_ const D3D12_RESOURCE_DESC *pDesc,
26542 D3D12_RESOURCE_STATES InitialState,
26543 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26544 REFIID riid,
26545 _COM_Outptr_opt_ void **ppvResource);
26546
26547 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
26548 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
26549 ID3D12Device12 * This,
26550 _In_ ID3D12DeviceChild *pObject,
26551 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
26552 DWORD Access,
26553 _In_opt_ LPCWSTR Name,
26554 _Out_ HANDLE *pHandle);
26555
26556 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
26557 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
26558 ID3D12Device12 * This,
26559 _In_ HANDLE NTHandle,
26560 REFIID riid,
26561 _COM_Outptr_opt_ void **ppvObj);
26562
26563 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
26564 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
26565 ID3D12Device12 * This,
26566 _In_ LPCWSTR Name,
26567 DWORD Access,
26568 /* [annotation][out] */
26569 _Out_ HANDLE *pNTHandle);
26570
26571 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
26572 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
26573 ID3D12Device12 * This,
26574 UINT NumObjects,
26575 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
26576
26577 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
26578 HRESULT ( STDMETHODCALLTYPE *Evict )(
26579 ID3D12Device12 * This,
26580 UINT NumObjects,
26581 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
26582
26583 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
26584 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
26585 ID3D12Device12 * This,
26586 UINT64 InitialValue,
26587 D3D12_FENCE_FLAGS Flags,
26588 REFIID riid,
26589 _COM_Outptr_ void **ppFence);
26590
26591 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
26592 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
26593 ID3D12Device12 * This);
26594
26595 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
26596 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
26597 ID3D12Device12 * This,
26598 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
26599 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
26600 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
26601 UINT64 BaseOffset,
26602 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
26603 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
26604 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
26605 _Out_opt_ UINT64 *pTotalBytes);
26606
26607 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
26608 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
26609 ID3D12Device12 * This,
26610 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
26611 REFIID riid,
26612 _COM_Outptr_opt_ void **ppvHeap);
26613
26614 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
26615 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
26616 ID3D12Device12 * This,
26617 BOOL Enable);
26618
26619 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
26620 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
26621 ID3D12Device12 * This,
26622 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
26623 _In_opt_ ID3D12RootSignature *pRootSignature,
26624 REFIID riid,
26625 _COM_Outptr_opt_ void **ppvCommandSignature);
26626
26627 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
26628 void ( STDMETHODCALLTYPE *GetResourceTiling )(
26629 ID3D12Device12 * This,
26630 _In_ ID3D12Resource *pTiledResource,
26631 _Out_opt_ UINT *pNumTilesForEntireResource,
26632 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
26633 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
26634 _Inout_opt_ UINT *pNumSubresourceTilings,
26635 _In_ UINT FirstSubresourceTilingToGet,
26636 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
26637
26638 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
26639#if !defined(_WIN32)
26640 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
26641 ID3D12Device12 * This);
26642
26643#else
26644 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
26645 ID3D12Device12 * This,
26646 LUID * RetVal);
26647
26648#endif
26649
26650 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
26651 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
26652 ID3D12Device12 * This,
26653 _In_reads_(BlobLength) const void *pLibraryBlob,
26654 SIZE_T BlobLength,
26655 REFIID riid,
26656 _COM_Outptr_ void **ppPipelineLibrary);
26657
26658 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
26659 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
26660 ID3D12Device12 * This,
26661 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
26662 _In_reads_(NumFences) const UINT64 *pFenceValues,
26663 UINT NumFences,
26664 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
26665 HANDLE hEvent);
26666
26667 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
26668 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
26669 ID3D12Device12 * This,
26670 UINT NumObjects,
26671 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
26672 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
26673
26674 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
26675 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
26676 ID3D12Device12 * This,
26677 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
26678 REFIID riid,
26679 _COM_Outptr_ void **ppPipelineState);
26680
26681 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
26682 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
26683 ID3D12Device12 * This,
26684 _In_ const void *pAddress,
26685 REFIID riid,
26686 _COM_Outptr_ void **ppvHeap);
26687
26688 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
26689 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
26690 ID3D12Device12 * This,
26691 _In_ HANDLE hFileMapping,
26692 REFIID riid,
26693 _COM_Outptr_ void **ppvHeap);
26694
26695 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
26696 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
26697 ID3D12Device12 * This,
26698 D3D12_RESIDENCY_FLAGS Flags,
26699 UINT NumObjects,
26700 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
26701 _In_ ID3D12Fence *pFenceToSignal,
26702 UINT64 FenceValueToSignal);
26703
26704 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
26705 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
26706 ID3D12Device12 * This,
26707 _In_ UINT nodeMask,
26708 _In_ D3D12_COMMAND_LIST_TYPE type,
26709 _In_ D3D12_COMMAND_LIST_FLAGS flags,
26710 REFIID riid,
26711 _COM_Outptr_ void **ppCommandList);
26712
26713 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
26714 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
26715 ID3D12Device12 * This,
26716 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
26717 _In_ REFIID riid,
26718 _COM_Outptr_ void **ppSession);
26719
26720 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
26721 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
26722 ID3D12Device12 * This,
26723 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26724 D3D12_HEAP_FLAGS HeapFlags,
26725 _In_ const D3D12_RESOURCE_DESC *pDesc,
26726 D3D12_RESOURCE_STATES InitialResourceState,
26727 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26728 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26729 REFIID riidResource,
26730 _COM_Outptr_opt_ void **ppvResource);
26731
26732 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
26733 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
26734 ID3D12Device12 * This,
26735 _In_ const D3D12_HEAP_DESC *pDesc,
26736 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26737 REFIID riid,
26738 _COM_Outptr_opt_ void **ppvHeap);
26739
26740 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
26741 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
26742 ID3D12Device12 * This,
26743 _In_ const D3D12_RESOURCE_DESC *pDesc,
26744 D3D12_RESOURCE_STATES InitialState,
26745 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26746 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26747 REFIID riid,
26748 _COM_Outptr_opt_ void **ppvResource);
26749
26750 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
26751#if !defined(_WIN32)
26752 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
26753 ID3D12Device12 * This,
26754 UINT visibleMask,
26755 UINT numResourceDescs,
26756 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
26757 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26758
26759#else
26760 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
26761 ID3D12Device12 * This,
26762 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26763 UINT visibleMask,
26764 UINT numResourceDescs,
26765 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
26766 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26767
26768#endif
26769
26770 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
26771 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
26772 ID3D12Device12 * This,
26773 _In_ ID3D12LifetimeOwner *pOwner,
26774 REFIID riid,
26775 _COM_Outptr_ void **ppvTracker);
26776
26777 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
26778 void ( STDMETHODCALLTYPE *RemoveDevice )(
26779 ID3D12Device12 * This);
26780
26781 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
26782 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
26783 ID3D12Device12 * This,
26784 _Inout_ UINT *pNumMetaCommands,
26785 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
26786
26787 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
26788 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
26789 ID3D12Device12 * This,
26790 _In_ REFGUID CommandId,
26791 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
26792 _Out_opt_ UINT *pTotalStructureSizeInBytes,
26793 _Inout_ UINT *pParameterCount,
26794 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
26795
26796 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
26797 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
26798 ID3D12Device12 * This,
26799 _In_ REFGUID CommandId,
26800 _In_ UINT NodeMask,
26801 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
26802 _In_ SIZE_T CreationParametersDataSizeInBytes,
26803 REFIID riid,
26804 _COM_Outptr_ void **ppMetaCommand);
26805
26806 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
26807 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
26808 ID3D12Device12 * This,
26809 const D3D12_STATE_OBJECT_DESC *pDesc,
26810 REFIID riid,
26811 _COM_Outptr_ void **ppStateObject);
26812
26813 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
26814 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
26815 ID3D12Device12 * This,
26816 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
26817 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
26818
26819 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
26820 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
26821 ID3D12Device12 * This,
26822 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
26823 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
26824
26825 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
26826 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
26827 ID3D12Device12 * This,
26828 D3D12_BACKGROUND_PROCESSING_MODE Mode,
26829 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
26830 _In_opt_ HANDLE hEventToSignalUponCompletion,
26831 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
26832
26833 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
26834 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
26835 ID3D12Device12 * This,
26836 const D3D12_STATE_OBJECT_DESC *pAddition,
26837 ID3D12StateObject *pStateObjectToGrowFrom,
26838 REFIID riid,
26839 _COM_Outptr_ void **ppNewStateObject);
26840
26841 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
26842 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
26843 ID3D12Device12 * This,
26844 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
26845 _In_ REFIID riid,
26846 _COM_Outptr_ void **ppSession);
26847
26848 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
26849#if !defined(_WIN32)
26850 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
26851 ID3D12Device12 * This,
26852 UINT visibleMask,
26853 UINT numResourceDescs,
26854 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26855 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26856
26857#else
26858 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
26859 ID3D12Device12 * This,
26860 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26861 UINT visibleMask,
26862 UINT numResourceDescs,
26863 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26864 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26865
26866#endif
26867
26868 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
26869 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
26870 ID3D12Device12 * This,
26871 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26872 D3D12_HEAP_FLAGS HeapFlags,
26873 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26874 D3D12_RESOURCE_STATES InitialResourceState,
26875 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26876 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26877 REFIID riidResource,
26878 _COM_Outptr_opt_ void **ppvResource);
26879
26880 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
26881 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
26882 ID3D12Device12 * This,
26883 _In_ ID3D12Heap *pHeap,
26884 UINT64 HeapOffset,
26885 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26886 D3D12_RESOURCE_STATES InitialState,
26887 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26888 REFIID riid,
26889 _COM_Outptr_opt_ void **ppvResource);
26890
26891 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
26892 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
26893 ID3D12Device12 * This,
26894 _In_opt_ ID3D12Resource *pTargetedResource,
26895 _In_opt_ ID3D12Resource *pFeedbackResource,
26896 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26897
26898 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
26899 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
26900 ID3D12Device12 * This,
26901 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
26902 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
26903 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
26904 UINT64 BaseOffset,
26905 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
26906 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
26907 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
26908 _Out_opt_ UINT64 *pTotalBytes);
26909
26910 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
26911 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
26912 ID3D12Device12 * This,
26913 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
26914 REFIID riid,
26915 _COM_Outptr_opt_ void **ppvSession);
26916
26917 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
26918 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
26919 ID3D12Device12 * This,
26920 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
26921 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
26922
26923 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
26924 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
26925 ID3D12Device12 * This,
26926 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
26927 REFIID CreatorID,
26928 REFIID riid,
26929 _COM_Outptr_ void **ppCommandQueue);
26930
26931 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
26932 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
26933 ID3D12Device12 * This,
26934 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26935 D3D12_HEAP_FLAGS HeapFlags,
26936 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26937 D3D12_BARRIER_LAYOUT InitialLayout,
26938 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26939 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26940 UINT32 NumCastableFormats,
26941 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26942 REFIID riidResource,
26943 _COM_Outptr_opt_ void **ppvResource);
26944
26945 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
26946 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
26947 ID3D12Device12 * This,
26948 _In_ ID3D12Heap *pHeap,
26949 UINT64 HeapOffset,
26950 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26951 D3D12_BARRIER_LAYOUT InitialLayout,
26952 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26953 UINT32 NumCastableFormats,
26954 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26955 REFIID riid,
26956 _COM_Outptr_opt_ void **ppvResource);
26957
26958 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
26959 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
26960 ID3D12Device12 * This,
26961 _In_ const D3D12_RESOURCE_DESC *pDesc,
26962 D3D12_BARRIER_LAYOUT InitialLayout,
26963 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26964 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26965 UINT32 NumCastableFormats,
26966 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26967 REFIID riid,
26968 _COM_Outptr_opt_ void **ppvResource);
26969
26970 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
26971 void ( STDMETHODCALLTYPE *CreateSampler2 )(
26972 ID3D12Device12 * This,
26973 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
26974 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26975
26976 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
26977#if !defined(_WIN32)
26978 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
26979 ID3D12Device12 * This,
26980 UINT visibleMask,
26981 UINT numResourceDescs,
26982 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26983 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26984 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26985 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26986
26987#else
26988 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
26989 ID3D12Device12 * This,
26990 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26991 UINT visibleMask,
26992 UINT numResourceDescs,
26993 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26994 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26995 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26996 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26997
26998#endif
26999
27000 END_INTERFACE
27001 } ID3D12Device12Vtbl;
27002
27003 interface ID3D12Device12
27004 {
27005 CONST_VTBL struct ID3D12Device12Vtbl *lpVtbl;
27006 };
27007
27008
27009
27010#ifdef COBJMACROS
27011
27012
27013#define ID3D12Device12_QueryInterface(This,riid,ppvObject) \
27014 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
27015
27016#define ID3D12Device12_AddRef(This) \
27017 ( (This)->lpVtbl -> AddRef(This) )
27018
27019#define ID3D12Device12_Release(This) \
27020 ( (This)->lpVtbl -> Release(This) )
27021
27022
27023#define ID3D12Device12_GetPrivateData(This,guid,pDataSize,pData) \
27024 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
27025
27026#define ID3D12Device12_SetPrivateData(This,guid,DataSize,pData) \
27027 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
27028
27029#define ID3D12Device12_SetPrivateDataInterface(This,guid,pData) \
27030 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
27031
27032#define ID3D12Device12_SetName(This,Name) \
27033 ( (This)->lpVtbl -> SetName(This,Name) )
27034
27035
27036#define ID3D12Device12_GetNodeCount(This) \
27037 ( (This)->lpVtbl -> GetNodeCount(This) )
27038
27039#define ID3D12Device12_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
27040 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
27041
27042#define ID3D12Device12_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
27043 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
27044
27045#define ID3D12Device12_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
27046 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
27047
27048#define ID3D12Device12_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
27049 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
27050
27051#define ID3D12Device12_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
27052 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
27053
27054#define ID3D12Device12_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
27055 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
27056
27057#define ID3D12Device12_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
27058 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
27059
27060#define ID3D12Device12_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
27061 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
27062
27063#define ID3D12Device12_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
27064 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
27065
27066#define ID3D12Device12_CreateConstantBufferView(This,pDesc,DestDescriptor) \
27067 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
27068
27069#define ID3D12Device12_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
27070 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
27071
27072#define ID3D12Device12_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
27073 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
27074
27075#define ID3D12Device12_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
27076 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
27077
27078#define ID3D12Device12_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
27079 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
27080
27081#define ID3D12Device12_CreateSampler(This,pDesc,DestDescriptor) \
27082 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
27083
27084#define ID3D12Device12_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
27085 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
27086
27087#define ID3D12Device12_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
27088 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
27089#if !defined(_WIN32)
27090
27091#define ID3D12Device12_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
27092 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
27093#else
27094#define ID3D12Device12_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
27095 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
27096#endif
27097#if !defined(_WIN32)
27098
27099#define ID3D12Device12_GetCustomHeapProperties(This,nodeMask,heapType) \
27100 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
27101#else
27102#define ID3D12Device12_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
27103 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
27104#endif
27105
27106#define ID3D12Device12_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
27107 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
27108
27109#define ID3D12Device12_CreateHeap(This,pDesc,riid,ppvHeap) \
27110 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
27111
27112#define ID3D12Device12_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27113 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27114
27115#define ID3D12Device12_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27116 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27117
27118#define ID3D12Device12_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
27119 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
27120
27121#define ID3D12Device12_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
27122 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
27123
27124#define ID3D12Device12_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
27125 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
27126
27127#define ID3D12Device12_MakeResident(This,NumObjects,ppObjects) \
27128 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
27129
27130#define ID3D12Device12_Evict(This,NumObjects,ppObjects) \
27131 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
27132
27133#define ID3D12Device12_CreateFence(This,InitialValue,Flags,riid,ppFence) \
27134 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
27135
27136#define ID3D12Device12_GetDeviceRemovedReason(This) \
27137 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
27138
27139#define ID3D12Device12_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
27140 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
27141
27142#define ID3D12Device12_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
27143 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
27144
27145#define ID3D12Device12_SetStablePowerState(This,Enable) \
27146 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
27147
27148#define ID3D12Device12_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
27149 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
27150
27151#define ID3D12Device12_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
27152 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
27153#if !defined(_WIN32)
27154
27155#define ID3D12Device12_GetAdapterLuid(This) \
27156 ( (This)->lpVtbl -> GetAdapterLuid(This) )
27157#else
27158#define ID3D12Device12_GetAdapterLuid(This,RetVal) \
27159 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
27160#endif
27161
27162
27163#define ID3D12Device12_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
27164 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
27165
27166#define ID3D12Device12_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
27167 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
27168
27169#define ID3D12Device12_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
27170 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
27171
27172
27173#define ID3D12Device12_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
27174 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
27175
27176
27177#define ID3D12Device12_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
27178 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
27179
27180#define ID3D12Device12_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
27181 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
27182
27183#define ID3D12Device12_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
27184 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
27185
27186
27187#define ID3D12Device12_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
27188 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
27189
27190#define ID3D12Device12_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
27191 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
27192
27193#define ID3D12Device12_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
27194 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
27195
27196#define ID3D12Device12_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
27197 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
27198
27199#define ID3D12Device12_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
27200 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
27201#if !defined(_WIN32)
27202
27203#define ID3D12Device12_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27204 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27205#else
27206#define ID3D12Device12_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27207 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27208#endif
27209
27210
27211#define ID3D12Device12_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
27212 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
27213
27214#define ID3D12Device12_RemoveDevice(This) \
27215 ( (This)->lpVtbl -> RemoveDevice(This) )
27216
27217#define ID3D12Device12_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
27218 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
27219
27220#define ID3D12Device12_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
27221 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
27222
27223#define ID3D12Device12_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
27224 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
27225
27226#define ID3D12Device12_CreateStateObject(This,pDesc,riid,ppStateObject) \
27227 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
27228
27229#define ID3D12Device12_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
27230 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
27231
27232#define ID3D12Device12_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
27233 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
27234
27235
27236#define ID3D12Device12_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
27237 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
27238
27239
27240#define ID3D12Device12_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
27241 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
27242
27243#define ID3D12Device12_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
27244 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
27245
27246#if !defined(_WIN32)
27247
27248#define ID3D12Device12_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27249 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27250#else
27251#define ID3D12Device12_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27252 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27253#endif
27254
27255#define ID3D12Device12_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
27256 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
27257
27258#define ID3D12Device12_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27259 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27260
27261#define ID3D12Device12_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
27262 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
27263
27264#define ID3D12Device12_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
27265 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
27266
27267
27268#define ID3D12Device12_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
27269 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
27270
27271#define ID3D12Device12_ShaderCacheControl(This,Kinds,Control) \
27272 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
27273
27274#define ID3D12Device12_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
27275 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
27276
27277
27278#define ID3D12Device12_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
27279 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
27280
27281#define ID3D12Device12_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
27282 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
27283
27284#define ID3D12Device12_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
27285 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
27286
27287
27288#define ID3D12Device12_CreateSampler2(This,pDesc,DestDescriptor) \
27289 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
27290
27291#if !defined(_WIN32)
27292
27293#define ID3D12Device12_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
27294 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
27295#else
27296#define ID3D12Device12_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
27297 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
27298#endif
27299
27300#endif /* COBJMACROS */
27301
27302
27303#endif /* C style interface */
27304
27305
27306
27307
27308#endif /* __ID3D12Device12_INTERFACE_DEFINED__ */
27309
27310
27311#ifndef __ID3D12Device13_INTERFACE_DEFINED__
27312#define __ID3D12Device13_INTERFACE_DEFINED__
27313
27314/* interface ID3D12Device13 */
27315/* [unique][local][object][uuid] */
27316
27317
27318EXTERN_C const IID IID_ID3D12Device13;
27319
27320#if defined(__cplusplus) && !defined(CINTERFACE)
27321
27322 MIDL_INTERFACE("14eecffc-4df8-40f7-a118-5c816f45695e")
27323 ID3D12Device13 : public ID3D12Device12
27324 {
27325 public:
27326 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress1(
27327 _In_ const void *pAddress,
27328 SIZE_T size,
27329 REFIID riid,
27330 _COM_Outptr_ void **ppvHeap) = 0;
27331
27332 };
27333
27334
27335#else /* C style interface */
27336
27337 typedef struct ID3D12Device13Vtbl
27338 {
27339 BEGIN_INTERFACE
27340
27341 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
27342 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
27343 ID3D12Device13 * This,
27344 REFIID riid,
27345 _COM_Outptr_ void **ppvObject);
27346
27347 DECLSPEC_XFGVIRT(IUnknown, AddRef)
27348 ULONG ( STDMETHODCALLTYPE *AddRef )(
27349 ID3D12Device13 * This);
27350
27351 DECLSPEC_XFGVIRT(IUnknown, Release)
27352 ULONG ( STDMETHODCALLTYPE *Release )(
27353 ID3D12Device13 * This);
27354
27355 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
27356 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
27357 ID3D12Device13 * This,
27358 _In_ REFGUID guid,
27359 _Inout_ UINT *pDataSize,
27360 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
27361
27362 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
27363 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
27364 ID3D12Device13 * This,
27365 _In_ REFGUID guid,
27366 _In_ UINT DataSize,
27367 _In_reads_bytes_opt_( DataSize ) const void *pData);
27368
27369 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
27370 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
27371 ID3D12Device13 * This,
27372 _In_ REFGUID guid,
27373 _In_opt_ const IUnknown *pData);
27374
27375 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
27376 HRESULT ( STDMETHODCALLTYPE *SetName )(
27377 ID3D12Device13 * This,
27378 _In_z_ LPCWSTR Name);
27379
27380 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
27381 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
27382 ID3D12Device13 * This);
27383
27384 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
27385 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
27386 ID3D12Device13 * This,
27387 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
27388 REFIID riid,
27389 _COM_Outptr_ void **ppCommandQueue);
27390
27391 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
27392 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
27393 ID3D12Device13 * This,
27394 _In_ D3D12_COMMAND_LIST_TYPE type,
27395 REFIID riid,
27396 _COM_Outptr_ void **ppCommandAllocator);
27397
27398 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
27399 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
27400 ID3D12Device13 * This,
27401 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
27402 REFIID riid,
27403 _COM_Outptr_ void **ppPipelineState);
27404
27405 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
27406 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
27407 ID3D12Device13 * This,
27408 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
27409 REFIID riid,
27410 _COM_Outptr_ void **ppPipelineState);
27411
27412 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
27413 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
27414 ID3D12Device13 * This,
27415 _In_ UINT nodeMask,
27416 _In_ D3D12_COMMAND_LIST_TYPE type,
27417 _In_ ID3D12CommandAllocator *pCommandAllocator,
27418 _In_opt_ ID3D12PipelineState *pInitialState,
27419 REFIID riid,
27420 _COM_Outptr_ void **ppCommandList);
27421
27422 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
27423 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
27424 ID3D12Device13 * This,
27425 D3D12_FEATURE Feature,
27426 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
27427 UINT FeatureSupportDataSize);
27428
27429 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
27430 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
27431 ID3D12Device13 * This,
27432 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
27433 REFIID riid,
27434 _COM_Outptr_ void **ppvHeap);
27435
27436 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
27437 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
27438 ID3D12Device13 * This,
27439 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
27440
27441 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
27442 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
27443 ID3D12Device13 * This,
27444 _In_ UINT nodeMask,
27445 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
27446 _In_ SIZE_T blobLengthInBytes,
27447 REFIID riid,
27448 _COM_Outptr_ void **ppvRootSignature);
27449
27450 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
27451 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
27452 ID3D12Device13 * This,
27453 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
27454 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27455
27456 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
27457 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
27458 ID3D12Device13 * This,
27459 _In_opt_ ID3D12Resource *pResource,
27460 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
27461 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27462
27463 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
27464 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
27465 ID3D12Device13 * This,
27466 _In_opt_ ID3D12Resource *pResource,
27467 _In_opt_ ID3D12Resource *pCounterResource,
27468 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
27469 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27470
27471 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
27472 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
27473 ID3D12Device13 * This,
27474 _In_opt_ ID3D12Resource *pResource,
27475 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
27476 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27477
27478 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
27479 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
27480 ID3D12Device13 * This,
27481 _In_opt_ ID3D12Resource *pResource,
27482 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
27483 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27484
27485 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
27486 void ( STDMETHODCALLTYPE *CreateSampler )(
27487 ID3D12Device13 * This,
27488 _In_ const D3D12_SAMPLER_DESC *pDesc,
27489 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27490
27491 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
27492 void ( STDMETHODCALLTYPE *CopyDescriptors )(
27493 ID3D12Device13 * This,
27494 _In_ UINT NumDestDescriptorRanges,
27495 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
27496 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
27497 _In_ UINT NumSrcDescriptorRanges,
27498 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
27499 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
27500 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
27501
27502 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
27503 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
27504 ID3D12Device13 * This,
27505 _In_ UINT NumDescriptors,
27506 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
27507 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
27508 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
27509
27510 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
27511#if !defined(_WIN32)
27512 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
27513 ID3D12Device13 * This,
27514 _In_ UINT visibleMask,
27515 _In_ UINT numResourceDescs,
27516 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
27517
27518#else
27519 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
27520 ID3D12Device13 * This,
27521 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27522 _In_ UINT visibleMask,
27523 _In_ UINT numResourceDescs,
27524 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
27525
27526#endif
27527
27528 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
27529#if !defined(_WIN32)
27530 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
27531 ID3D12Device13 * This,
27532 _In_ UINT nodeMask,
27533 D3D12_HEAP_TYPE heapType);
27534
27535#else
27536 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
27537 ID3D12Device13 * This,
27538 D3D12_HEAP_PROPERTIES * RetVal,
27539 _In_ UINT nodeMask,
27540 D3D12_HEAP_TYPE heapType);
27541
27542#endif
27543
27544 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
27545 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
27546 ID3D12Device13 * This,
27547 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27548 D3D12_HEAP_FLAGS HeapFlags,
27549 _In_ const D3D12_RESOURCE_DESC *pDesc,
27550 D3D12_RESOURCE_STATES InitialResourceState,
27551 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27552 REFIID riidResource,
27553 _COM_Outptr_opt_ void **ppvResource);
27554
27555 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
27556 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
27557 ID3D12Device13 * This,
27558 _In_ const D3D12_HEAP_DESC *pDesc,
27559 REFIID riid,
27560 _COM_Outptr_opt_ void **ppvHeap);
27561
27562 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
27563 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
27564 ID3D12Device13 * This,
27565 _In_ ID3D12Heap *pHeap,
27566 UINT64 HeapOffset,
27567 _In_ const D3D12_RESOURCE_DESC *pDesc,
27568 D3D12_RESOURCE_STATES InitialState,
27569 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27570 REFIID riid,
27571 _COM_Outptr_opt_ void **ppvResource);
27572
27573 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
27574 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
27575 ID3D12Device13 * This,
27576 _In_ const D3D12_RESOURCE_DESC *pDesc,
27577 D3D12_RESOURCE_STATES InitialState,
27578 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27579 REFIID riid,
27580 _COM_Outptr_opt_ void **ppvResource);
27581
27582 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
27583 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
27584 ID3D12Device13 * This,
27585 _In_ ID3D12DeviceChild *pObject,
27586 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
27587 DWORD Access,
27588 _In_opt_ LPCWSTR Name,
27589 _Out_ HANDLE *pHandle);
27590
27591 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
27592 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
27593 ID3D12Device13 * This,
27594 _In_ HANDLE NTHandle,
27595 REFIID riid,
27596 _COM_Outptr_opt_ void **ppvObj);
27597
27598 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
27599 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
27600 ID3D12Device13 * This,
27601 _In_ LPCWSTR Name,
27602 DWORD Access,
27603 /* [annotation][out] */
27604 _Out_ HANDLE *pNTHandle);
27605
27606 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
27607 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
27608 ID3D12Device13 * This,
27609 UINT NumObjects,
27610 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
27611
27612 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
27613 HRESULT ( STDMETHODCALLTYPE *Evict )(
27614 ID3D12Device13 * This,
27615 UINT NumObjects,
27616 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
27617
27618 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
27619 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
27620 ID3D12Device13 * This,
27621 UINT64 InitialValue,
27622 D3D12_FENCE_FLAGS Flags,
27623 REFIID riid,
27624 _COM_Outptr_ void **ppFence);
27625
27626 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
27627 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
27628 ID3D12Device13 * This);
27629
27630 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
27631 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
27632 ID3D12Device13 * This,
27633 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
27634 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
27635 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
27636 UINT64 BaseOffset,
27637 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
27638 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
27639 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
27640 _Out_opt_ UINT64 *pTotalBytes);
27641
27642 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
27643 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
27644 ID3D12Device13 * This,
27645 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
27646 REFIID riid,
27647 _COM_Outptr_opt_ void **ppvHeap);
27648
27649 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
27650 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
27651 ID3D12Device13 * This,
27652 BOOL Enable);
27653
27654 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
27655 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
27656 ID3D12Device13 * This,
27657 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
27658 _In_opt_ ID3D12RootSignature *pRootSignature,
27659 REFIID riid,
27660 _COM_Outptr_opt_ void **ppvCommandSignature);
27661
27662 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
27663 void ( STDMETHODCALLTYPE *GetResourceTiling )(
27664 ID3D12Device13 * This,
27665 _In_ ID3D12Resource *pTiledResource,
27666 _Out_opt_ UINT *pNumTilesForEntireResource,
27667 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
27668 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
27669 _Inout_opt_ UINT *pNumSubresourceTilings,
27670 _In_ UINT FirstSubresourceTilingToGet,
27671 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
27672
27673 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
27674#if !defined(_WIN32)
27675 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
27676 ID3D12Device13 * This);
27677
27678#else
27679 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
27680 ID3D12Device13 * This,
27681 LUID * RetVal);
27682
27683#endif
27684
27685 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
27686 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
27687 ID3D12Device13 * This,
27688 _In_reads_(BlobLength) const void *pLibraryBlob,
27689 SIZE_T BlobLength,
27690 REFIID riid,
27691 _COM_Outptr_ void **ppPipelineLibrary);
27692
27693 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
27694 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
27695 ID3D12Device13 * This,
27696 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
27697 _In_reads_(NumFences) const UINT64 *pFenceValues,
27698 UINT NumFences,
27699 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
27700 HANDLE hEvent);
27701
27702 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
27703 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
27704 ID3D12Device13 * This,
27705 UINT NumObjects,
27706 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
27707 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
27708
27709 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
27710 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
27711 ID3D12Device13 * This,
27712 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
27713 REFIID riid,
27714 _COM_Outptr_ void **ppPipelineState);
27715
27716 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
27717 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
27718 ID3D12Device13 * This,
27719 _In_ const void *pAddress,
27720 REFIID riid,
27721 _COM_Outptr_ void **ppvHeap);
27722
27723 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
27724 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
27725 ID3D12Device13 * This,
27726 _In_ HANDLE hFileMapping,
27727 REFIID riid,
27728 _COM_Outptr_ void **ppvHeap);
27729
27730 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
27731 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
27732 ID3D12Device13 * This,
27733 D3D12_RESIDENCY_FLAGS Flags,
27734 UINT NumObjects,
27735 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
27736 _In_ ID3D12Fence *pFenceToSignal,
27737 UINT64 FenceValueToSignal);
27738
27739 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
27740 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
27741 ID3D12Device13 * This,
27742 _In_ UINT nodeMask,
27743 _In_ D3D12_COMMAND_LIST_TYPE type,
27744 _In_ D3D12_COMMAND_LIST_FLAGS flags,
27745 REFIID riid,
27746 _COM_Outptr_ void **ppCommandList);
27747
27748 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
27749 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
27750 ID3D12Device13 * This,
27751 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
27752 _In_ REFIID riid,
27753 _COM_Outptr_ void **ppSession);
27754
27755 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
27756 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
27757 ID3D12Device13 * This,
27758 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27759 D3D12_HEAP_FLAGS HeapFlags,
27760 _In_ const D3D12_RESOURCE_DESC *pDesc,
27761 D3D12_RESOURCE_STATES InitialResourceState,
27762 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27763 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27764 REFIID riidResource,
27765 _COM_Outptr_opt_ void **ppvResource);
27766
27767 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
27768 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
27769 ID3D12Device13 * This,
27770 _In_ const D3D12_HEAP_DESC *pDesc,
27771 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27772 REFIID riid,
27773 _COM_Outptr_opt_ void **ppvHeap);
27774
27775 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
27776 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
27777 ID3D12Device13 * This,
27778 _In_ const D3D12_RESOURCE_DESC *pDesc,
27779 D3D12_RESOURCE_STATES InitialState,
27780 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27781 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27782 REFIID riid,
27783 _COM_Outptr_opt_ void **ppvResource);
27784
27785 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
27786#if !defined(_WIN32)
27787 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
27788 ID3D12Device13 * This,
27789 UINT visibleMask,
27790 UINT numResourceDescs,
27791 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
27792 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27793
27794#else
27795 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
27796 ID3D12Device13 * This,
27797 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27798 UINT visibleMask,
27799 UINT numResourceDescs,
27800 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
27801 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27802
27803#endif
27804
27805 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
27806 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
27807 ID3D12Device13 * This,
27808 _In_ ID3D12LifetimeOwner *pOwner,
27809 REFIID riid,
27810 _COM_Outptr_ void **ppvTracker);
27811
27812 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
27813 void ( STDMETHODCALLTYPE *RemoveDevice )(
27814 ID3D12Device13 * This);
27815
27816 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
27817 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
27818 ID3D12Device13 * This,
27819 _Inout_ UINT *pNumMetaCommands,
27820 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
27821
27822 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
27823 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
27824 ID3D12Device13 * This,
27825 _In_ REFGUID CommandId,
27826 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
27827 _Out_opt_ UINT *pTotalStructureSizeInBytes,
27828 _Inout_ UINT *pParameterCount,
27829 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
27830
27831 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
27832 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
27833 ID3D12Device13 * This,
27834 _In_ REFGUID CommandId,
27835 _In_ UINT NodeMask,
27836 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
27837 _In_ SIZE_T CreationParametersDataSizeInBytes,
27838 REFIID riid,
27839 _COM_Outptr_ void **ppMetaCommand);
27840
27841 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
27842 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
27843 ID3D12Device13 * This,
27844 const D3D12_STATE_OBJECT_DESC *pDesc,
27845 REFIID riid,
27846 _COM_Outptr_ void **ppStateObject);
27847
27848 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
27849 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
27850 ID3D12Device13 * This,
27851 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
27852 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
27853
27854 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
27855 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
27856 ID3D12Device13 * This,
27857 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
27858 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
27859
27860 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
27861 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
27862 ID3D12Device13 * This,
27863 D3D12_BACKGROUND_PROCESSING_MODE Mode,
27864 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
27865 _In_opt_ HANDLE hEventToSignalUponCompletion,
27866 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
27867
27868 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
27869 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
27870 ID3D12Device13 * This,
27871 const D3D12_STATE_OBJECT_DESC *pAddition,
27872 ID3D12StateObject *pStateObjectToGrowFrom,
27873 REFIID riid,
27874 _COM_Outptr_ void **ppNewStateObject);
27875
27876 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
27877 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
27878 ID3D12Device13 * This,
27879 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
27880 _In_ REFIID riid,
27881 _COM_Outptr_ void **ppSession);
27882
27883 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
27884#if !defined(_WIN32)
27885 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
27886 ID3D12Device13 * This,
27887 UINT visibleMask,
27888 UINT numResourceDescs,
27889 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
27890 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27891
27892#else
27893 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
27894 ID3D12Device13 * This,
27895 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27896 UINT visibleMask,
27897 UINT numResourceDescs,
27898 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
27899 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27900
27901#endif
27902
27903 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
27904 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
27905 ID3D12Device13 * This,
27906 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27907 D3D12_HEAP_FLAGS HeapFlags,
27908 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27909 D3D12_RESOURCE_STATES InitialResourceState,
27910 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27911 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27912 REFIID riidResource,
27913 _COM_Outptr_opt_ void **ppvResource);
27914
27915 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
27916 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
27917 ID3D12Device13 * This,
27918 _In_ ID3D12Heap *pHeap,
27919 UINT64 HeapOffset,
27920 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27921 D3D12_RESOURCE_STATES InitialState,
27922 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27923 REFIID riid,
27924 _COM_Outptr_opt_ void **ppvResource);
27925
27926 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
27927 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
27928 ID3D12Device13 * This,
27929 _In_opt_ ID3D12Resource *pTargetedResource,
27930 _In_opt_ ID3D12Resource *pFeedbackResource,
27931 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27932
27933 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
27934 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
27935 ID3D12Device13 * This,
27936 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
27937 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
27938 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
27939 UINT64 BaseOffset,
27940 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
27941 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
27942 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
27943 _Out_opt_ UINT64 *pTotalBytes);
27944
27945 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
27946 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
27947 ID3D12Device13 * This,
27948 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
27949 REFIID riid,
27950 _COM_Outptr_opt_ void **ppvSession);
27951
27952 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
27953 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
27954 ID3D12Device13 * This,
27955 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
27956 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
27957
27958 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
27959 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
27960 ID3D12Device13 * This,
27961 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
27962 REFIID CreatorID,
27963 REFIID riid,
27964 _COM_Outptr_ void **ppCommandQueue);
27965
27966 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
27967 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
27968 ID3D12Device13 * This,
27969 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27970 D3D12_HEAP_FLAGS HeapFlags,
27971 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27972 D3D12_BARRIER_LAYOUT InitialLayout,
27973 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27974 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27975 UINT32 NumCastableFormats,
27976 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27977 REFIID riidResource,
27978 _COM_Outptr_opt_ void **ppvResource);
27979
27980 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
27981 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
27982 ID3D12Device13 * This,
27983 _In_ ID3D12Heap *pHeap,
27984 UINT64 HeapOffset,
27985 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27986 D3D12_BARRIER_LAYOUT InitialLayout,
27987 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27988 UINT32 NumCastableFormats,
27989 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27990 REFIID riid,
27991 _COM_Outptr_opt_ void **ppvResource);
27992
27993 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
27994 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
27995 ID3D12Device13 * This,
27996 _In_ const D3D12_RESOURCE_DESC *pDesc,
27997 D3D12_BARRIER_LAYOUT InitialLayout,
27998 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27999 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28000 UINT32 NumCastableFormats,
28001 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
28002 REFIID riid,
28003 _COM_Outptr_opt_ void **ppvResource);
28004
28005 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
28006 void ( STDMETHODCALLTYPE *CreateSampler2 )(
28007 ID3D12Device13 * This,
28008 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
28009 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28010
28011 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
28012#if !defined(_WIN32)
28013 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
28014 ID3D12Device13 * This,
28015 UINT visibleMask,
28016 UINT numResourceDescs,
28017 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28018 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
28019 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
28020 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28021
28022#else
28023 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
28024 ID3D12Device13 * This,
28025 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28026 UINT visibleMask,
28027 UINT numResourceDescs,
28028 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28029 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
28030 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
28031 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28032
28033#endif
28034
28035 DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
28036 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
28037 ID3D12Device13 * This,
28038 _In_ const void *pAddress,
28039 SIZE_T size,
28040 REFIID riid,
28041 _COM_Outptr_ void **ppvHeap);
28042
28043 END_INTERFACE
28044 } ID3D12Device13Vtbl;
28045
28046 interface ID3D12Device13
28047 {
28048 CONST_VTBL struct ID3D12Device13Vtbl *lpVtbl;
28049 };
28050
28051
28052
28053#ifdef COBJMACROS
28054
28055
28056#define ID3D12Device13_QueryInterface(This,riid,ppvObject) \
28057 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
28058
28059#define ID3D12Device13_AddRef(This) \
28060 ( (This)->lpVtbl -> AddRef(This) )
28061
28062#define ID3D12Device13_Release(This) \
28063 ( (This)->lpVtbl -> Release(This) )
28064
28065
28066#define ID3D12Device13_GetPrivateData(This,guid,pDataSize,pData) \
28067 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
28068
28069#define ID3D12Device13_SetPrivateData(This,guid,DataSize,pData) \
28070 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
28071
28072#define ID3D12Device13_SetPrivateDataInterface(This,guid,pData) \
28073 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
28074
28075#define ID3D12Device13_SetName(This,Name) \
28076 ( (This)->lpVtbl -> SetName(This,Name) )
28077
28078
28079#define ID3D12Device13_GetNodeCount(This) \
28080 ( (This)->lpVtbl -> GetNodeCount(This) )
28081
28082#define ID3D12Device13_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
28083 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
28084
28085#define ID3D12Device13_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
28086 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
28087
28088#define ID3D12Device13_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
28089 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
28090
28091#define ID3D12Device13_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
28092 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
28093
28094#define ID3D12Device13_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
28095 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
28096
28097#define ID3D12Device13_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
28098 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
28099
28100#define ID3D12Device13_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
28101 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
28102
28103#define ID3D12Device13_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
28104 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
28105
28106#define ID3D12Device13_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
28107 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
28108
28109#define ID3D12Device13_CreateConstantBufferView(This,pDesc,DestDescriptor) \
28110 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
28111
28112#define ID3D12Device13_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
28113 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
28114
28115#define ID3D12Device13_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
28116 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
28117
28118#define ID3D12Device13_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
28119 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
28120
28121#define ID3D12Device13_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
28122 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
28123
28124#define ID3D12Device13_CreateSampler(This,pDesc,DestDescriptor) \
28125 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
28126
28127#define ID3D12Device13_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
28128 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
28129
28130#define ID3D12Device13_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
28131 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
28132#if !defined(_WIN32)
28133
28134#define ID3D12Device13_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
28135 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
28136#else
28137#define ID3D12Device13_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
28138 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
28139#endif
28140#if !defined(_WIN32)
28141
28142#define ID3D12Device13_GetCustomHeapProperties(This,nodeMask,heapType) \
28143 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
28144#else
28145#define ID3D12Device13_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
28146 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
28147#endif
28148
28149#define ID3D12Device13_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
28150 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
28151
28152#define ID3D12Device13_CreateHeap(This,pDesc,riid,ppvHeap) \
28153 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
28154
28155#define ID3D12Device13_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28156 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28157
28158#define ID3D12Device13_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28159 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28160
28161#define ID3D12Device13_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
28162 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
28163
28164#define ID3D12Device13_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
28165 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
28166
28167#define ID3D12Device13_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
28168 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
28169
28170#define ID3D12Device13_MakeResident(This,NumObjects,ppObjects) \
28171 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
28172
28173#define ID3D12Device13_Evict(This,NumObjects,ppObjects) \
28174 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
28175
28176#define ID3D12Device13_CreateFence(This,InitialValue,Flags,riid,ppFence) \
28177 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
28178
28179#define ID3D12Device13_GetDeviceRemovedReason(This) \
28180 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
28181
28182#define ID3D12Device13_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
28183 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
28184
28185#define ID3D12Device13_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
28186 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
28187
28188#define ID3D12Device13_SetStablePowerState(This,Enable) \
28189 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
28190
28191#define ID3D12Device13_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
28192 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
28193
28194#define ID3D12Device13_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
28195 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
28196#if !defined(_WIN32)
28197
28198#define ID3D12Device13_GetAdapterLuid(This) \
28199 ( (This)->lpVtbl -> GetAdapterLuid(This) )
28200#else
28201#define ID3D12Device13_GetAdapterLuid(This,RetVal) \
28202 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
28203#endif
28204
28205
28206#define ID3D12Device13_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
28207 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
28208
28209#define ID3D12Device13_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
28210 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
28211
28212#define ID3D12Device13_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
28213 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
28214
28215
28216#define ID3D12Device13_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
28217 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
28218
28219
28220#define ID3D12Device13_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
28221 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
28222
28223#define ID3D12Device13_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
28224 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
28225
28226#define ID3D12Device13_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
28227 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
28228
28229
28230#define ID3D12Device13_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
28231 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
28232
28233#define ID3D12Device13_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
28234 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
28235
28236#define ID3D12Device13_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
28237 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
28238
28239#define ID3D12Device13_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
28240 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
28241
28242#define ID3D12Device13_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
28243 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
28244#if !defined(_WIN32)
28245
28246#define ID3D12Device13_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28247 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28248#else
28249#define ID3D12Device13_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28250 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28251#endif
28252
28253
28254#define ID3D12Device13_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
28255 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
28256
28257#define ID3D12Device13_RemoveDevice(This) \
28258 ( (This)->lpVtbl -> RemoveDevice(This) )
28259
28260#define ID3D12Device13_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
28261 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
28262
28263#define ID3D12Device13_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
28264 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
28265
28266#define ID3D12Device13_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
28267 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
28268
28269#define ID3D12Device13_CreateStateObject(This,pDesc,riid,ppStateObject) \
28270 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
28271
28272#define ID3D12Device13_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
28273 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
28274
28275#define ID3D12Device13_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
28276 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
28277
28278
28279#define ID3D12Device13_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
28280 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
28281
28282
28283#define ID3D12Device13_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
28284 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
28285
28286#define ID3D12Device13_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
28287 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
28288
28289#if !defined(_WIN32)
28290
28291#define ID3D12Device13_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28292 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28293#else
28294#define ID3D12Device13_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28295 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28296#endif
28297
28298#define ID3D12Device13_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
28299 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
28300
28301#define ID3D12Device13_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28302 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28303
28304#define ID3D12Device13_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
28305 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
28306
28307#define ID3D12Device13_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
28308 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
28309
28310
28311#define ID3D12Device13_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
28312 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
28313
28314#define ID3D12Device13_ShaderCacheControl(This,Kinds,Control) \
28315 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
28316
28317#define ID3D12Device13_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
28318 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
28319
28320
28321#define ID3D12Device13_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
28322 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
28323
28324#define ID3D12Device13_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
28325 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
28326
28327#define ID3D12Device13_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
28328 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
28329
28330
28331#define ID3D12Device13_CreateSampler2(This,pDesc,DestDescriptor) \
28332 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
28333
28334#if !defined(_WIN32)
28335
28336#define ID3D12Device13_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
28337 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
28338#else
28339#define ID3D12Device13_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
28340 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
28341#endif
28342
28343
28344#define ID3D12Device13_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
28345 ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
28346
28347#endif /* COBJMACROS */
28348
28349
28350#endif /* C style interface */
28351
28352
28353
28354
28355#endif /* __ID3D12Device13_INTERFACE_DEFINED__ */
28356
28357
28358#ifndef __ID3D12Device14_INTERFACE_DEFINED__
28359#define __ID3D12Device14_INTERFACE_DEFINED__
28360
28361/* interface ID3D12Device14 */
28362/* [unique][local][object][uuid] */
28363
28364
28365EXTERN_C const IID IID_ID3D12Device14;
28366
28367#if defined(__cplusplus) && !defined(CINTERFACE)
28368
28369 MIDL_INTERFACE("5f6e592d-d895-44c2-8e4a-88ad4926d323")
28370 ID3D12Device14 : public ID3D12Device13
28371 {
28372 public:
28373 virtual HRESULT STDMETHODCALLTYPE CreateRootSignatureFromSubobjectInLibrary(
28374 _In_ UINT nodeMask,
28375 _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
28376 _In_ SIZE_T blobLengthInBytes,
28377 _In_opt_ LPCWSTR subobjectName,
28378 REFIID riid,
28379 _COM_Outptr_ void **ppvRootSignature) = 0;
28380
28381 };
28382
28383
28384#else /* C style interface */
28385
28386 typedef struct ID3D12Device14Vtbl
28387 {
28388 BEGIN_INTERFACE
28389
28390 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
28391 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
28392 ID3D12Device14 * This,
28393 REFIID riid,
28394 _COM_Outptr_ void **ppvObject);
28395
28396 DECLSPEC_XFGVIRT(IUnknown, AddRef)
28397 ULONG ( STDMETHODCALLTYPE *AddRef )(
28398 ID3D12Device14 * This);
28399
28400 DECLSPEC_XFGVIRT(IUnknown, Release)
28401 ULONG ( STDMETHODCALLTYPE *Release )(
28402 ID3D12Device14 * This);
28403
28404 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
28405 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
28406 ID3D12Device14 * This,
28407 _In_ REFGUID guid,
28408 _Inout_ UINT *pDataSize,
28409 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
28410
28411 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
28412 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
28413 ID3D12Device14 * This,
28414 _In_ REFGUID guid,
28415 _In_ UINT DataSize,
28416 _In_reads_bytes_opt_( DataSize ) const void *pData);
28417
28418 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
28419 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
28420 ID3D12Device14 * This,
28421 _In_ REFGUID guid,
28422 _In_opt_ const IUnknown *pData);
28423
28424 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
28425 HRESULT ( STDMETHODCALLTYPE *SetName )(
28426 ID3D12Device14 * This,
28427 _In_z_ LPCWSTR Name);
28428
28429 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
28430 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
28431 ID3D12Device14 * This);
28432
28433 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
28434 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
28435 ID3D12Device14 * This,
28436 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
28437 REFIID riid,
28438 _COM_Outptr_ void **ppCommandQueue);
28439
28440 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
28441 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
28442 ID3D12Device14 * This,
28443 _In_ D3D12_COMMAND_LIST_TYPE type,
28444 REFIID riid,
28445 _COM_Outptr_ void **ppCommandAllocator);
28446
28447 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
28448 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
28449 ID3D12Device14 * This,
28450 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
28451 REFIID riid,
28452 _COM_Outptr_ void **ppPipelineState);
28453
28454 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
28455 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
28456 ID3D12Device14 * This,
28457 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
28458 REFIID riid,
28459 _COM_Outptr_ void **ppPipelineState);
28460
28461 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
28462 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
28463 ID3D12Device14 * This,
28464 _In_ UINT nodeMask,
28465 _In_ D3D12_COMMAND_LIST_TYPE type,
28466 _In_ ID3D12CommandAllocator *pCommandAllocator,
28467 _In_opt_ ID3D12PipelineState *pInitialState,
28468 REFIID riid,
28469 _COM_Outptr_ void **ppCommandList);
28470
28471 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
28472 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
28473 ID3D12Device14 * This,
28474 D3D12_FEATURE Feature,
28475 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
28476 UINT FeatureSupportDataSize);
28477
28478 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
28479 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
28480 ID3D12Device14 * This,
28481 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
28482 REFIID riid,
28483 _COM_Outptr_ void **ppvHeap);
28484
28485 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
28486 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
28487 ID3D12Device14 * This,
28488 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
28489
28490 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
28491 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
28492 ID3D12Device14 * This,
28493 _In_ UINT nodeMask,
28494 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
28495 _In_ SIZE_T blobLengthInBytes,
28496 REFIID riid,
28497 _COM_Outptr_ void **ppvRootSignature);
28498
28499 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
28500 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
28501 ID3D12Device14 * This,
28502 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
28503 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28504
28505 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
28506 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
28507 ID3D12Device14 * This,
28508 _In_opt_ ID3D12Resource *pResource,
28509 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
28510 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28511
28512 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
28513 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
28514 ID3D12Device14 * This,
28515 _In_opt_ ID3D12Resource *pResource,
28516 _In_opt_ ID3D12Resource *pCounterResource,
28517 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
28518 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28519
28520 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
28521 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
28522 ID3D12Device14 * This,
28523 _In_opt_ ID3D12Resource *pResource,
28524 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
28525 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28526
28527 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
28528 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
28529 ID3D12Device14 * This,
28530 _In_opt_ ID3D12Resource *pResource,
28531 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
28532 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28533
28534 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
28535 void ( STDMETHODCALLTYPE *CreateSampler )(
28536 ID3D12Device14 * This,
28537 _In_ const D3D12_SAMPLER_DESC *pDesc,
28538 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28539
28540 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
28541 void ( STDMETHODCALLTYPE *CopyDescriptors )(
28542 ID3D12Device14 * This,
28543 _In_ UINT NumDestDescriptorRanges,
28544 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
28545 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
28546 _In_ UINT NumSrcDescriptorRanges,
28547 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
28548 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
28549 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
28550
28551 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
28552 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
28553 ID3D12Device14 * This,
28554 _In_ UINT NumDescriptors,
28555 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
28556 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
28557 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
28558
28559 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
28560#if !defined(_WIN32)
28561 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
28562 ID3D12Device14 * This,
28563 _In_ UINT visibleMask,
28564 _In_ UINT numResourceDescs,
28565 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
28566
28567#else
28568 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
28569 ID3D12Device14 * This,
28570 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28571 _In_ UINT visibleMask,
28572 _In_ UINT numResourceDescs,
28573 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
28574
28575#endif
28576
28577 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
28578#if !defined(_WIN32)
28579 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
28580 ID3D12Device14 * This,
28581 _In_ UINT nodeMask,
28582 D3D12_HEAP_TYPE heapType);
28583
28584#else
28585 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
28586 ID3D12Device14 * This,
28587 D3D12_HEAP_PROPERTIES * RetVal,
28588 _In_ UINT nodeMask,
28589 D3D12_HEAP_TYPE heapType);
28590
28591#endif
28592
28593 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
28594 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
28595 ID3D12Device14 * This,
28596 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28597 D3D12_HEAP_FLAGS HeapFlags,
28598 _In_ const D3D12_RESOURCE_DESC *pDesc,
28599 D3D12_RESOURCE_STATES InitialResourceState,
28600 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28601 REFIID riidResource,
28602 _COM_Outptr_opt_ void **ppvResource);
28603
28604 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
28605 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
28606 ID3D12Device14 * This,
28607 _In_ const D3D12_HEAP_DESC *pDesc,
28608 REFIID riid,
28609 _COM_Outptr_opt_ void **ppvHeap);
28610
28611 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
28612 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
28613 ID3D12Device14 * This,
28614 _In_ ID3D12Heap *pHeap,
28615 UINT64 HeapOffset,
28616 _In_ const D3D12_RESOURCE_DESC *pDesc,
28617 D3D12_RESOURCE_STATES InitialState,
28618 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28619 REFIID riid,
28620 _COM_Outptr_opt_ void **ppvResource);
28621
28622 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
28623 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
28624 ID3D12Device14 * This,
28625 _In_ const D3D12_RESOURCE_DESC *pDesc,
28626 D3D12_RESOURCE_STATES InitialState,
28627 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28628 REFIID riid,
28629 _COM_Outptr_opt_ void **ppvResource);
28630
28631 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
28632 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
28633 ID3D12Device14 * This,
28634 _In_ ID3D12DeviceChild *pObject,
28635 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
28636 DWORD Access,
28637 _In_opt_ LPCWSTR Name,
28638 _Out_ HANDLE *pHandle);
28639
28640 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
28641 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
28642 ID3D12Device14 * This,
28643 _In_ HANDLE NTHandle,
28644 REFIID riid,
28645 _COM_Outptr_opt_ void **ppvObj);
28646
28647 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
28648 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
28649 ID3D12Device14 * This,
28650 _In_ LPCWSTR Name,
28651 DWORD Access,
28652 /* [annotation][out] */
28653 _Out_ HANDLE *pNTHandle);
28654
28655 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
28656 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
28657 ID3D12Device14 * This,
28658 UINT NumObjects,
28659 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
28660
28661 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
28662 HRESULT ( STDMETHODCALLTYPE *Evict )(
28663 ID3D12Device14 * This,
28664 UINT NumObjects,
28665 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
28666
28667 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
28668 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
28669 ID3D12Device14 * This,
28670 UINT64 InitialValue,
28671 D3D12_FENCE_FLAGS Flags,
28672 REFIID riid,
28673 _COM_Outptr_ void **ppFence);
28674
28675 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
28676 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
28677 ID3D12Device14 * This);
28678
28679 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
28680 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
28681 ID3D12Device14 * This,
28682 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
28683 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
28684 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
28685 UINT64 BaseOffset,
28686 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
28687 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
28688 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
28689 _Out_opt_ UINT64 *pTotalBytes);
28690
28691 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
28692 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
28693 ID3D12Device14 * This,
28694 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
28695 REFIID riid,
28696 _COM_Outptr_opt_ void **ppvHeap);
28697
28698 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
28699 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
28700 ID3D12Device14 * This,
28701 BOOL Enable);
28702
28703 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
28704 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
28705 ID3D12Device14 * This,
28706 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
28707 _In_opt_ ID3D12RootSignature *pRootSignature,
28708 REFIID riid,
28709 _COM_Outptr_opt_ void **ppvCommandSignature);
28710
28711 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
28712 void ( STDMETHODCALLTYPE *GetResourceTiling )(
28713 ID3D12Device14 * This,
28714 _In_ ID3D12Resource *pTiledResource,
28715 _Out_opt_ UINT *pNumTilesForEntireResource,
28716 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
28717 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
28718 _Inout_opt_ UINT *pNumSubresourceTilings,
28719 _In_ UINT FirstSubresourceTilingToGet,
28720 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
28721
28722 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
28723#if !defined(_WIN32)
28724 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
28725 ID3D12Device14 * This);
28726
28727#else
28728 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
28729 ID3D12Device14 * This,
28730 LUID * RetVal);
28731
28732#endif
28733
28734 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
28735 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
28736 ID3D12Device14 * This,
28737 _In_reads_(BlobLength) const void *pLibraryBlob,
28738 SIZE_T BlobLength,
28739 REFIID riid,
28740 _COM_Outptr_ void **ppPipelineLibrary);
28741
28742 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
28743 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
28744 ID3D12Device14 * This,
28745 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
28746 _In_reads_(NumFences) const UINT64 *pFenceValues,
28747 UINT NumFences,
28748 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
28749 HANDLE hEvent);
28750
28751 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
28752 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
28753 ID3D12Device14 * This,
28754 UINT NumObjects,
28755 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
28756 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
28757
28758 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
28759 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
28760 ID3D12Device14 * This,
28761 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
28762 REFIID riid,
28763 _COM_Outptr_ void **ppPipelineState);
28764
28765 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
28766 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
28767 ID3D12Device14 * This,
28768 _In_ const void *pAddress,
28769 REFIID riid,
28770 _COM_Outptr_ void **ppvHeap);
28771
28772 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
28773 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
28774 ID3D12Device14 * This,
28775 _In_ HANDLE hFileMapping,
28776 REFIID riid,
28777 _COM_Outptr_ void **ppvHeap);
28778
28779 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
28780 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
28781 ID3D12Device14 * This,
28782 D3D12_RESIDENCY_FLAGS Flags,
28783 UINT NumObjects,
28784 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
28785 _In_ ID3D12Fence *pFenceToSignal,
28786 UINT64 FenceValueToSignal);
28787
28788 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
28789 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
28790 ID3D12Device14 * This,
28791 _In_ UINT nodeMask,
28792 _In_ D3D12_COMMAND_LIST_TYPE type,
28793 _In_ D3D12_COMMAND_LIST_FLAGS flags,
28794 REFIID riid,
28795 _COM_Outptr_ void **ppCommandList);
28796
28797 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
28798 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
28799 ID3D12Device14 * This,
28800 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
28801 _In_ REFIID riid,
28802 _COM_Outptr_ void **ppSession);
28803
28804 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
28805 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
28806 ID3D12Device14 * This,
28807 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28808 D3D12_HEAP_FLAGS HeapFlags,
28809 _In_ const D3D12_RESOURCE_DESC *pDesc,
28810 D3D12_RESOURCE_STATES InitialResourceState,
28811 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28812 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28813 REFIID riidResource,
28814 _COM_Outptr_opt_ void **ppvResource);
28815
28816 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
28817 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
28818 ID3D12Device14 * This,
28819 _In_ const D3D12_HEAP_DESC *pDesc,
28820 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28821 REFIID riid,
28822 _COM_Outptr_opt_ void **ppvHeap);
28823
28824 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
28825 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
28826 ID3D12Device14 * This,
28827 _In_ const D3D12_RESOURCE_DESC *pDesc,
28828 D3D12_RESOURCE_STATES InitialState,
28829 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28830 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28831 REFIID riid,
28832 _COM_Outptr_opt_ void **ppvResource);
28833
28834 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
28835#if !defined(_WIN32)
28836 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
28837 ID3D12Device14 * This,
28838 UINT visibleMask,
28839 UINT numResourceDescs,
28840 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
28841 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28842
28843#else
28844 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
28845 ID3D12Device14 * This,
28846 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28847 UINT visibleMask,
28848 UINT numResourceDescs,
28849 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
28850 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28851
28852#endif
28853
28854 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
28855 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
28856 ID3D12Device14 * This,
28857 _In_ ID3D12LifetimeOwner *pOwner,
28858 REFIID riid,
28859 _COM_Outptr_ void **ppvTracker);
28860
28861 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
28862 void ( STDMETHODCALLTYPE *RemoveDevice )(
28863 ID3D12Device14 * This);
28864
28865 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
28866 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
28867 ID3D12Device14 * This,
28868 _Inout_ UINT *pNumMetaCommands,
28869 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
28870
28871 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
28872 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
28873 ID3D12Device14 * This,
28874 _In_ REFGUID CommandId,
28875 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
28876 _Out_opt_ UINT *pTotalStructureSizeInBytes,
28877 _Inout_ UINT *pParameterCount,
28878 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
28879
28880 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
28881 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
28882 ID3D12Device14 * This,
28883 _In_ REFGUID CommandId,
28884 _In_ UINT NodeMask,
28885 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
28886 _In_ SIZE_T CreationParametersDataSizeInBytes,
28887 REFIID riid,
28888 _COM_Outptr_ void **ppMetaCommand);
28889
28890 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
28891 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
28892 ID3D12Device14 * This,
28893 const D3D12_STATE_OBJECT_DESC *pDesc,
28894 REFIID riid,
28895 _COM_Outptr_ void **ppStateObject);
28896
28897 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
28898 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
28899 ID3D12Device14 * This,
28900 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
28901 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
28902
28903 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
28904 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
28905 ID3D12Device14 * This,
28906 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
28907 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
28908
28909 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
28910 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
28911 ID3D12Device14 * This,
28912 D3D12_BACKGROUND_PROCESSING_MODE Mode,
28913 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
28914 _In_opt_ HANDLE hEventToSignalUponCompletion,
28915 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
28916
28917 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
28918 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
28919 ID3D12Device14 * This,
28920 const D3D12_STATE_OBJECT_DESC *pAddition,
28921 ID3D12StateObject *pStateObjectToGrowFrom,
28922 REFIID riid,
28923 _COM_Outptr_ void **ppNewStateObject);
28924
28925 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
28926 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
28927 ID3D12Device14 * This,
28928 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
28929 _In_ REFIID riid,
28930 _COM_Outptr_ void **ppSession);
28931
28932 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
28933#if !defined(_WIN32)
28934 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
28935 ID3D12Device14 * This,
28936 UINT visibleMask,
28937 UINT numResourceDescs,
28938 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28939 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28940
28941#else
28942 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
28943 ID3D12Device14 * This,
28944 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28945 UINT visibleMask,
28946 UINT numResourceDescs,
28947 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28948 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28949
28950#endif
28951
28952 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
28953 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
28954 ID3D12Device14 * This,
28955 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28956 D3D12_HEAP_FLAGS HeapFlags,
28957 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
28958 D3D12_RESOURCE_STATES InitialResourceState,
28959 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28960 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28961 REFIID riidResource,
28962 _COM_Outptr_opt_ void **ppvResource);
28963
28964 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
28965 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
28966 ID3D12Device14 * This,
28967 _In_ ID3D12Heap *pHeap,
28968 UINT64 HeapOffset,
28969 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
28970 D3D12_RESOURCE_STATES InitialState,
28971 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28972 REFIID riid,
28973 _COM_Outptr_opt_ void **ppvResource);
28974
28975 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
28976 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
28977 ID3D12Device14 * This,
28978 _In_opt_ ID3D12Resource *pTargetedResource,
28979 _In_opt_ ID3D12Resource *pFeedbackResource,
28980 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28981
28982 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
28983 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
28984 ID3D12Device14 * This,
28985 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
28986 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
28987 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
28988 UINT64 BaseOffset,
28989 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
28990 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
28991 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
28992 _Out_opt_ UINT64 *pTotalBytes);
28993
28994 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
28995 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
28996 ID3D12Device14 * This,
28997 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
28998 REFIID riid,
28999 _COM_Outptr_opt_ void **ppvSession);
29000
29001 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
29002 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
29003 ID3D12Device14 * This,
29004 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
29005 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
29006
29007 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
29008 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
29009 ID3D12Device14 * This,
29010 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
29011 REFIID CreatorID,
29012 REFIID riid,
29013 _COM_Outptr_ void **ppCommandQueue);
29014
29015 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
29016 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
29017 ID3D12Device14 * This,
29018 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
29019 D3D12_HEAP_FLAGS HeapFlags,
29020 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
29021 D3D12_BARRIER_LAYOUT InitialLayout,
29022 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29023 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
29024 UINT32 NumCastableFormats,
29025 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29026 REFIID riidResource,
29027 _COM_Outptr_opt_ void **ppvResource);
29028
29029 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
29030 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
29031 ID3D12Device14 * This,
29032 _In_ ID3D12Heap *pHeap,
29033 UINT64 HeapOffset,
29034 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
29035 D3D12_BARRIER_LAYOUT InitialLayout,
29036 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29037 UINT32 NumCastableFormats,
29038 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29039 REFIID riid,
29040 _COM_Outptr_opt_ void **ppvResource);
29041
29042 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
29043 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
29044 ID3D12Device14 * This,
29045 _In_ const D3D12_RESOURCE_DESC *pDesc,
29046 D3D12_BARRIER_LAYOUT InitialLayout,
29047 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29048 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
29049 UINT32 NumCastableFormats,
29050 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29051 REFIID riid,
29052 _COM_Outptr_opt_ void **ppvResource);
29053
29054 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
29055 void ( STDMETHODCALLTYPE *CreateSampler2 )(
29056 ID3D12Device14 * This,
29057 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
29058 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
29059
29060 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
29061#if !defined(_WIN32)
29062 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
29063 ID3D12Device14 * This,
29064 UINT visibleMask,
29065 UINT numResourceDescs,
29066 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
29067 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
29068 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
29069 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
29070
29071#else
29072 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
29073 ID3D12Device14 * This,
29074 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
29075 UINT visibleMask,
29076 UINT numResourceDescs,
29077 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
29078 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
29079 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
29080 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
29081
29082#endif
29083
29084 DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
29085 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
29086 ID3D12Device14 * This,
29087 _In_ const void *pAddress,
29088 SIZE_T size,
29089 REFIID riid,
29090 _COM_Outptr_ void **ppvHeap);
29091
29092 DECLSPEC_XFGVIRT(ID3D12Device14, CreateRootSignatureFromSubobjectInLibrary)
29093 HRESULT ( STDMETHODCALLTYPE *CreateRootSignatureFromSubobjectInLibrary )(
29094 ID3D12Device14 * This,
29095 _In_ UINT nodeMask,
29096 _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
29097 _In_ SIZE_T blobLengthInBytes,
29098 _In_opt_ LPCWSTR subobjectName,
29099 REFIID riid,
29100 _COM_Outptr_ void **ppvRootSignature);
29101
29102 END_INTERFACE
29103 } ID3D12Device14Vtbl;
29104
29105 interface ID3D12Device14
29106 {
29107 CONST_VTBL struct ID3D12Device14Vtbl *lpVtbl;
29108 };
29109
29110
29111
29112#ifdef COBJMACROS
29113
29114
29115#define ID3D12Device14_QueryInterface(This,riid,ppvObject) \
29116 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29117
29118#define ID3D12Device14_AddRef(This) \
29119 ( (This)->lpVtbl -> AddRef(This) )
29120
29121#define ID3D12Device14_Release(This) \
29122 ( (This)->lpVtbl -> Release(This) )
29123
29124
29125#define ID3D12Device14_GetPrivateData(This,guid,pDataSize,pData) \
29126 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
29127
29128#define ID3D12Device14_SetPrivateData(This,guid,DataSize,pData) \
29129 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
29130
29131#define ID3D12Device14_SetPrivateDataInterface(This,guid,pData) \
29132 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
29133
29134#define ID3D12Device14_SetName(This,Name) \
29135 ( (This)->lpVtbl -> SetName(This,Name) )
29136
29137
29138#define ID3D12Device14_GetNodeCount(This) \
29139 ( (This)->lpVtbl -> GetNodeCount(This) )
29140
29141#define ID3D12Device14_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
29142 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
29143
29144#define ID3D12Device14_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
29145 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
29146
29147#define ID3D12Device14_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
29148 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
29149
29150#define ID3D12Device14_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
29151 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
29152
29153#define ID3D12Device14_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
29154 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
29155
29156#define ID3D12Device14_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
29157 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
29158
29159#define ID3D12Device14_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
29160 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
29161
29162#define ID3D12Device14_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
29163 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
29164
29165#define ID3D12Device14_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
29166 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
29167
29168#define ID3D12Device14_CreateConstantBufferView(This,pDesc,DestDescriptor) \
29169 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
29170
29171#define ID3D12Device14_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
29172 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
29173
29174#define ID3D12Device14_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
29175 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
29176
29177#define ID3D12Device14_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
29178 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
29179
29180#define ID3D12Device14_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
29181 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
29182
29183#define ID3D12Device14_CreateSampler(This,pDesc,DestDescriptor) \
29184 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
29185
29186#define ID3D12Device14_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
29187 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
29188
29189#define ID3D12Device14_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
29190 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
29191#if !defined(_WIN32)
29192
29193#define ID3D12Device14_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
29194 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
29195#else
29196#define ID3D12Device14_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
29197 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
29198#endif
29199#if !defined(_WIN32)
29200
29201#define ID3D12Device14_GetCustomHeapProperties(This,nodeMask,heapType) \
29202 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
29203#else
29204#define ID3D12Device14_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
29205 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
29206#endif
29207
29208#define ID3D12Device14_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
29209 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
29210
29211#define ID3D12Device14_CreateHeap(This,pDesc,riid,ppvHeap) \
29212 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
29213
29214#define ID3D12Device14_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29215 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29216
29217#define ID3D12Device14_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29218 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29219
29220#define ID3D12Device14_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
29221 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
29222
29223#define ID3D12Device14_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
29224 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
29225
29226#define ID3D12Device14_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
29227 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
29228
29229#define ID3D12Device14_MakeResident(This,NumObjects,ppObjects) \
29230 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
29231
29232#define ID3D12Device14_Evict(This,NumObjects,ppObjects) \
29233 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
29234
29235#define ID3D12Device14_CreateFence(This,InitialValue,Flags,riid,ppFence) \
29236 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
29237
29238#define ID3D12Device14_GetDeviceRemovedReason(This) \
29239 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
29240
29241#define ID3D12Device14_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
29242 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
29243
29244#define ID3D12Device14_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
29245 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
29246
29247#define ID3D12Device14_SetStablePowerState(This,Enable) \
29248 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
29249
29250#define ID3D12Device14_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
29251 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
29252
29253#define ID3D12Device14_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
29254 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
29255#if !defined(_WIN32)
29256
29257#define ID3D12Device14_GetAdapterLuid(This) \
29258 ( (This)->lpVtbl -> GetAdapterLuid(This) )
29259#else
29260#define ID3D12Device14_GetAdapterLuid(This,RetVal) \
29261 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
29262#endif
29263
29264
29265#define ID3D12Device14_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
29266 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
29267
29268#define ID3D12Device14_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
29269 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
29270
29271#define ID3D12Device14_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
29272 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
29273
29274
29275#define ID3D12Device14_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
29276 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
29277
29278
29279#define ID3D12Device14_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
29280 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
29281
29282#define ID3D12Device14_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
29283 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
29284
29285#define ID3D12Device14_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
29286 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
29287
29288
29289#define ID3D12Device14_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
29290 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
29291
29292#define ID3D12Device14_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
29293 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
29294
29295#define ID3D12Device14_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
29296 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
29297
29298#define ID3D12Device14_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
29299 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
29300
29301#define ID3D12Device14_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
29302 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
29303#if !defined(_WIN32)
29304
29305#define ID3D12Device14_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29306 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29307#else
29308#define ID3D12Device14_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29309 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29310#endif
29311
29312
29313#define ID3D12Device14_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
29314 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
29315
29316#define ID3D12Device14_RemoveDevice(This) \
29317 ( (This)->lpVtbl -> RemoveDevice(This) )
29318
29319#define ID3D12Device14_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
29320 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
29321
29322#define ID3D12Device14_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
29323 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
29324
29325#define ID3D12Device14_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
29326 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
29327
29328#define ID3D12Device14_CreateStateObject(This,pDesc,riid,ppStateObject) \
29329 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
29330
29331#define ID3D12Device14_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
29332 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
29333
29334#define ID3D12Device14_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
29335 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
29336
29337
29338#define ID3D12Device14_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
29339 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
29340
29341
29342#define ID3D12Device14_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
29343 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
29344
29345#define ID3D12Device14_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
29346 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
29347
29348#if !defined(_WIN32)
29349
29350#define ID3D12Device14_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29351 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29352#else
29353#define ID3D12Device14_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29354 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29355#endif
29356
29357#define ID3D12Device14_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
29358 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
29359
29360#define ID3D12Device14_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29361 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29362
29363#define ID3D12Device14_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
29364 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
29365
29366#define ID3D12Device14_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
29367 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
29368
29369
29370#define ID3D12Device14_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
29371 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
29372
29373#define ID3D12Device14_ShaderCacheControl(This,Kinds,Control) \
29374 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
29375
29376#define ID3D12Device14_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
29377 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
29378
29379
29380#define ID3D12Device14_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
29381 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
29382
29383#define ID3D12Device14_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
29384 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
29385
29386#define ID3D12Device14_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
29387 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
29388
29389
29390#define ID3D12Device14_CreateSampler2(This,pDesc,DestDescriptor) \
29391 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
29392
29393#if !defined(_WIN32)
29394
29395#define ID3D12Device14_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
29396 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
29397#else
29398#define ID3D12Device14_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
29399 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
29400#endif
29401
29402
29403#define ID3D12Device14_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
29404 ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
29405
29406
29407#define ID3D12Device14_CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) \
29408 ( (This)->lpVtbl -> CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) )
29409
29410#endif /* COBJMACROS */
29411
29412
29413#endif /* C style interface */
29414
29415
29416
29417
29418#endif /* __ID3D12Device14_INTERFACE_DEFINED__ */
29419
29420
29421/* interface __MIDL_itf_d3d12_0000_0063 */
29422/* [local] */
29423
29424typedef union D3D12_VERSION_NUMBER
29425 {
29426 UINT64 Version;
29427 UINT16 VersionParts[ 4 ];
29428 } D3D12_VERSION_NUMBER;
29429
29430typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
29431 {
29432 WCHAR szAdapterFamily[ 128 ];
29433 UINT64 MinimumABISupportVersion;
29434 UINT64 MaximumABISupportVersion;
29435 D3D12_VERSION_NUMBER CompilerVersion;
29436 D3D12_VERSION_NUMBER ApplicationProfileVersion;
29437 } D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
29438
29439typedef void ( __stdcall *D3D12PipelineStateFunc )(
29440 _In_reads_bytes_(KeySize) const void *pKey,
29441 UINT KeySize,
29442 UINT Version,
29443 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
29444 _Inout_opt_ void *pContext);
29445
29446typedef void ( __stdcall *D3D12StateObjectFunc )(
29447 _In_reads_bytes_(KeySize) const void *pKey,
29448 UINT KeySize,
29449 UINT Version,
29450 const D3D12_STATE_OBJECT_DESC *pDesc,
29451 _In_reads_bytes_(ParentKeySize) const void *pParentKey,
29452 UINT ParentKeySize,
29453 _Inout_opt_ void *pContext);
29454
29455typedef struct D3D12_APPLICATION_DESC
29456 {
29457 LPCWSTR pExeFilename;
29458 LPCWSTR pName;
29459 D3D12_VERSION_NUMBER Version;
29460 LPCWSTR pEngineName;
29461 D3D12_VERSION_NUMBER EngineVersion;
29462 } D3D12_APPLICATION_DESC;
29463
29464typedef void ( __stdcall *D3D12ApplicationDescFunc )(
29465 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
29466 _Inout_opt_ void *pContext);
29467
29468typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
29469 {
29470 _Field_size_bytes_full_(KeySize) const void *pKey;
29471 UINT KeySize;
29472 UINT NumExports;
29473 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
29474 } D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
29475
29476
29477
29478extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_c_ifspec;
29479extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_s_ifspec;
29480
29481#ifndef __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
29482#define __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
29483
29484/* interface ID3D12StateObjectDatabase */
29485/* [unique][local][object][uuid] */
29486
29487
29488EXTERN_C const IID IID_ID3D12StateObjectDatabase;
29489
29490#if defined(__cplusplus) && !defined(CINTERFACE)
29491
29492 MIDL_INTERFACE("c56060b7-b5fc-4135-98e0-a1e9997eace0")
29493 ID3D12StateObjectDatabase : public IUnknown
29494 {
29495 public:
29496 virtual HRESULT STDMETHODCALLTYPE SetApplicationDesc(
29497 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc) = 0;
29498
29499 virtual HRESULT STDMETHODCALLTYPE GetApplicationDesc(
29500 _In_ D3D12ApplicationDescFunc CallbackFunc,
29501 _Inout_opt_ void *pContext) = 0;
29502
29503 virtual HRESULT STDMETHODCALLTYPE StorePipelineStateDesc(
29504 _In_reads_(KeySize) const void *pKey,
29505 UINT KeySize,
29506 UINT Version,
29507 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
29508
29509 virtual HRESULT STDMETHODCALLTYPE FindPipelineStateDesc(
29510 _In_reads_(KeySize) const void *pKey,
29511 UINT KeySize,
29512 _In_ D3D12PipelineStateFunc CallbackFunc,
29513 _Inout_opt_ void *pContext) = 0;
29514
29515 virtual HRESULT STDMETHODCALLTYPE StoreStateObjectDesc(
29516 _In_reads_(KeySize) const void *pKey,
29517 UINT KeySize,
29518 UINT Version,
29519 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
29520 _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
29521 UINT StateObjectToGrowFromKeySize) = 0;
29522
29523 virtual HRESULT STDMETHODCALLTYPE FindStateObjectDesc(
29524 _In_reads_(keySize) const void *pKey,
29525 UINT KeySize,
29526 D3D12StateObjectFunc CallbackFunc,
29527 _Inout_opt_ void *pContext) = 0;
29528
29529 virtual HRESULT STDMETHODCALLTYPE FindObjectVersion(
29530 _In_reads_(keySize) const void *pKey,
29531 UINT KeySize,
29532 _Out_ UINT *pVersion) = 0;
29533
29534 };
29535
29536
29537#else /* C style interface */
29538
29539 typedef struct ID3D12StateObjectDatabaseVtbl
29540 {
29541 BEGIN_INTERFACE
29542
29543 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29544 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29545 ID3D12StateObjectDatabase * This,
29546 REFIID riid,
29547 _COM_Outptr_ void **ppvObject);
29548
29549 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29550 ULONG ( STDMETHODCALLTYPE *AddRef )(
29551 ID3D12StateObjectDatabase * This);
29552
29553 DECLSPEC_XFGVIRT(IUnknown, Release)
29554 ULONG ( STDMETHODCALLTYPE *Release )(
29555 ID3D12StateObjectDatabase * This);
29556
29557 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, SetApplicationDesc)
29558 HRESULT ( STDMETHODCALLTYPE *SetApplicationDesc )(
29559 ID3D12StateObjectDatabase * This,
29560 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc);
29561
29562 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, GetApplicationDesc)
29563 HRESULT ( STDMETHODCALLTYPE *GetApplicationDesc )(
29564 ID3D12StateObjectDatabase * This,
29565 _In_ D3D12ApplicationDescFunc CallbackFunc,
29566 _Inout_opt_ void *pContext);
29567
29568 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StorePipelineStateDesc)
29569 HRESULT ( STDMETHODCALLTYPE *StorePipelineStateDesc )(
29570 ID3D12StateObjectDatabase * This,
29571 _In_reads_(KeySize) const void *pKey,
29572 UINT KeySize,
29573 UINT Version,
29574 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
29575
29576 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindPipelineStateDesc)
29577 HRESULT ( STDMETHODCALLTYPE *FindPipelineStateDesc )(
29578 ID3D12StateObjectDatabase * This,
29579 _In_reads_(KeySize) const void *pKey,
29580 UINT KeySize,
29581 _In_ D3D12PipelineStateFunc CallbackFunc,
29582 _Inout_opt_ void *pContext);
29583
29584 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StoreStateObjectDesc)
29585 HRESULT ( STDMETHODCALLTYPE *StoreStateObjectDesc )(
29586 ID3D12StateObjectDatabase * This,
29587 _In_reads_(KeySize) const void *pKey,
29588 UINT KeySize,
29589 UINT Version,
29590 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
29591 _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
29592 UINT StateObjectToGrowFromKeySize);
29593
29594 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindStateObjectDesc)
29595 HRESULT ( STDMETHODCALLTYPE *FindStateObjectDesc )(
29596 ID3D12StateObjectDatabase * This,
29597 _In_reads_(keySize) const void *pKey,
29598 UINT KeySize,
29599 D3D12StateObjectFunc CallbackFunc,
29600 _Inout_opt_ void *pContext);
29601
29602 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindObjectVersion)
29603 HRESULT ( STDMETHODCALLTYPE *FindObjectVersion )(
29604 ID3D12StateObjectDatabase * This,
29605 _In_reads_(keySize) const void *pKey,
29606 UINT KeySize,
29607 _Out_ UINT *pVersion);
29608
29609 END_INTERFACE
29610 } ID3D12StateObjectDatabaseVtbl;
29611
29612 interface ID3D12StateObjectDatabase
29613 {
29614 CONST_VTBL struct ID3D12StateObjectDatabaseVtbl *lpVtbl;
29615 };
29616
29617
29618
29619#ifdef COBJMACROS
29620
29621
29622#define ID3D12StateObjectDatabase_QueryInterface(This,riid,ppvObject) \
29623 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29624
29625#define ID3D12StateObjectDatabase_AddRef(This) \
29626 ( (This)->lpVtbl -> AddRef(This) )
29627
29628#define ID3D12StateObjectDatabase_Release(This) \
29629 ( (This)->lpVtbl -> Release(This) )
29630
29631
29632#define ID3D12StateObjectDatabase_SetApplicationDesc(This,pApplicationDesc) \
29633 ( (This)->lpVtbl -> SetApplicationDesc(This,pApplicationDesc) )
29634
29635#define ID3D12StateObjectDatabase_GetApplicationDesc(This,CallbackFunc,pContext) \
29636 ( (This)->lpVtbl -> GetApplicationDesc(This,CallbackFunc,pContext) )
29637
29638#define ID3D12StateObjectDatabase_StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) \
29639 ( (This)->lpVtbl -> StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) )
29640
29641#define ID3D12StateObjectDatabase_FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) \
29642 ( (This)->lpVtbl -> FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) )
29643
29644#define ID3D12StateObjectDatabase_StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) \
29645 ( (This)->lpVtbl -> StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) )
29646
29647#define ID3D12StateObjectDatabase_FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) \
29648 ( (This)->lpVtbl -> FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) )
29649
29650#define ID3D12StateObjectDatabase_FindObjectVersion(This,pKey,KeySize,pVersion) \
29651 ( (This)->lpVtbl -> FindObjectVersion(This,pKey,KeySize,pVersion) )
29652
29653#endif /* COBJMACROS */
29654
29655
29656#endif /* C style interface */
29657
29658
29659
29660
29661#endif /* __ID3D12StateObjectDatabase_INTERFACE_DEFINED__ */
29662
29663
29664#ifndef __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
29665#define __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
29666
29667/* interface ID3D12VirtualizationGuestDevice */
29668/* [unique][local][object][uuid] */
29669
29670
29671EXTERN_C const IID IID_ID3D12VirtualizationGuestDevice;
29672
29673#if defined(__cplusplus) && !defined(CINTERFACE)
29674
29675 MIDL_INTERFACE("bc66d368-7373-4943-8757-fc87dc79e476")
29676 ID3D12VirtualizationGuestDevice : public IUnknown
29677 {
29678 public:
29679 virtual HRESULT STDMETHODCALLTYPE ShareWithHost(
29680 _In_ ID3D12DeviceChild *pObject,
29681 _Out_ HANDLE *pHandle) = 0;
29682
29683 virtual HRESULT STDMETHODCALLTYPE CreateFenceFd(
29684 _In_ ID3D12Fence *pFence,
29685 UINT64 FenceValue,
29686 _Out_ int *pFenceFd) = 0;
29687
29688 };
29689
29690
29691#else /* C style interface */
29692
29693 typedef struct ID3D12VirtualizationGuestDeviceVtbl
29694 {
29695 BEGIN_INTERFACE
29696
29697 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29698 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29699 ID3D12VirtualizationGuestDevice * This,
29700 REFIID riid,
29701 _COM_Outptr_ void **ppvObject);
29702
29703 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29704 ULONG ( STDMETHODCALLTYPE *AddRef )(
29705 ID3D12VirtualizationGuestDevice * This);
29706
29707 DECLSPEC_XFGVIRT(IUnknown, Release)
29708 ULONG ( STDMETHODCALLTYPE *Release )(
29709 ID3D12VirtualizationGuestDevice * This);
29710
29711 DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, ShareWithHost)
29712 HRESULT ( STDMETHODCALLTYPE *ShareWithHost )(
29713 ID3D12VirtualizationGuestDevice * This,
29714 _In_ ID3D12DeviceChild *pObject,
29715 _Out_ HANDLE *pHandle);
29716
29717 DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, CreateFenceFd)
29718 HRESULT ( STDMETHODCALLTYPE *CreateFenceFd )(
29719 ID3D12VirtualizationGuestDevice * This,
29720 _In_ ID3D12Fence *pFence,
29721 UINT64 FenceValue,
29722 _Out_ int *pFenceFd);
29723
29724 END_INTERFACE
29725 } ID3D12VirtualizationGuestDeviceVtbl;
29726
29727 interface ID3D12VirtualizationGuestDevice
29728 {
29729 CONST_VTBL struct ID3D12VirtualizationGuestDeviceVtbl *lpVtbl;
29730 };
29731
29732
29733
29734#ifdef COBJMACROS
29735
29736
29737#define ID3D12VirtualizationGuestDevice_QueryInterface(This,riid,ppvObject) \
29738 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29739
29740#define ID3D12VirtualizationGuestDevice_AddRef(This) \
29741 ( (This)->lpVtbl -> AddRef(This) )
29742
29743#define ID3D12VirtualizationGuestDevice_Release(This) \
29744 ( (This)->lpVtbl -> Release(This) )
29745
29746
29747#define ID3D12VirtualizationGuestDevice_ShareWithHost(This,pObject,pHandle) \
29748 ( (This)->lpVtbl -> ShareWithHost(This,pObject,pHandle) )
29749
29750#define ID3D12VirtualizationGuestDevice_CreateFenceFd(This,pFence,FenceValue,pFenceFd) \
29751 ( (This)->lpVtbl -> CreateFenceFd(This,pFence,FenceValue,pFenceFd) )
29752
29753#endif /* COBJMACROS */
29754
29755
29756#endif /* C style interface */
29757
29758
29759
29760
29761#endif /* __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__ */
29762
29763
29764#ifndef __ID3D12Tools_INTERFACE_DEFINED__
29765#define __ID3D12Tools_INTERFACE_DEFINED__
29766
29767/* interface ID3D12Tools */
29768/* [unique][local][object][uuid] */
29769
29770
29771EXTERN_C const IID IID_ID3D12Tools;
29772
29773#if defined(__cplusplus) && !defined(CINTERFACE)
29774
29775 MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
29776 ID3D12Tools : public IUnknown
29777 {
29778 public:
29779 virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
29780 BOOL bEnable) = 0;
29781
29782 virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
29783
29784 };
29785
29786
29787#else /* C style interface */
29788
29789 typedef struct ID3D12ToolsVtbl
29790 {
29791 BEGIN_INTERFACE
29792
29793 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29794 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29795 ID3D12Tools * This,
29796 REFIID riid,
29797 _COM_Outptr_ void **ppvObject);
29798
29799 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29800 ULONG ( STDMETHODCALLTYPE *AddRef )(
29801 ID3D12Tools * This);
29802
29803 DECLSPEC_XFGVIRT(IUnknown, Release)
29804 ULONG ( STDMETHODCALLTYPE *Release )(
29805 ID3D12Tools * This);
29806
29807 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
29808 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
29809 ID3D12Tools * This,
29810 BOOL bEnable);
29811
29812 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
29813 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
29814 ID3D12Tools * This);
29815
29816 END_INTERFACE
29817 } ID3D12ToolsVtbl;
29818
29819 interface ID3D12Tools
29820 {
29821 CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
29822 };
29823
29824
29825
29826#ifdef COBJMACROS
29827
29828
29829#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
29830 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29831
29832#define ID3D12Tools_AddRef(This) \
29833 ( (This)->lpVtbl -> AddRef(This) )
29834
29835#define ID3D12Tools_Release(This) \
29836 ( (This)->lpVtbl -> Release(This) )
29837
29838
29839#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
29840 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
29841
29842#define ID3D12Tools_ShaderInstrumentationEnabled(This) \
29843 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
29844
29845#endif /* COBJMACROS */
29846
29847
29848#endif /* C style interface */
29849
29850
29851
29852
29853#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
29854
29855
29856#ifndef __ID3D12Tools1_INTERFACE_DEFINED__
29857#define __ID3D12Tools1_INTERFACE_DEFINED__
29858
29859/* interface ID3D12Tools1 */
29860/* [unique][local][object][uuid] */
29861
29862
29863EXTERN_C const IID IID_ID3D12Tools1;
29864
29865#if defined(__cplusplus) && !defined(CINTERFACE)
29866
29867 MIDL_INTERFACE("e4fbc019-dd3c-43e1-8f32-7f649575f0a0")
29868 ID3D12Tools1 : public ID3D12Tools
29869 {
29870 public:
29871 virtual HRESULT STDMETHODCALLTYPE ReserveGPUVARangesAtCreate(
29872 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
29873 _In_ UINT uiNumRanges) = 0;
29874
29875 virtual void STDMETHODCALLTYPE ClearReservedGPUVARangesList( void) = 0;
29876
29877 };
29878
29879
29880#else /* C style interface */
29881
29882 typedef struct ID3D12Tools1Vtbl
29883 {
29884 BEGIN_INTERFACE
29885
29886 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29887 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29888 ID3D12Tools1 * This,
29889 REFIID riid,
29890 _COM_Outptr_ void **ppvObject);
29891
29892 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29893 ULONG ( STDMETHODCALLTYPE *AddRef )(
29894 ID3D12Tools1 * This);
29895
29896 DECLSPEC_XFGVIRT(IUnknown, Release)
29897 ULONG ( STDMETHODCALLTYPE *Release )(
29898 ID3D12Tools1 * This);
29899
29900 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
29901 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
29902 ID3D12Tools1 * This,
29903 BOOL bEnable);
29904
29905 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
29906 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
29907 ID3D12Tools1 * This);
29908
29909 DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
29910 HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
29911 ID3D12Tools1 * This,
29912 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
29913 _In_ UINT uiNumRanges);
29914
29915 DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
29916 void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
29917 ID3D12Tools1 * This);
29918
29919 END_INTERFACE
29920 } ID3D12Tools1Vtbl;
29921
29922 interface ID3D12Tools1
29923 {
29924 CONST_VTBL struct ID3D12Tools1Vtbl *lpVtbl;
29925 };
29926
29927
29928
29929#ifdef COBJMACROS
29930
29931
29932#define ID3D12Tools1_QueryInterface(This,riid,ppvObject) \
29933 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29934
29935#define ID3D12Tools1_AddRef(This) \
29936 ( (This)->lpVtbl -> AddRef(This) )
29937
29938#define ID3D12Tools1_Release(This) \
29939 ( (This)->lpVtbl -> Release(This) )
29940
29941
29942#define ID3D12Tools1_EnableShaderInstrumentation(This,bEnable) \
29943 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
29944
29945#define ID3D12Tools1_ShaderInstrumentationEnabled(This) \
29946 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
29947
29948
29949#define ID3D12Tools1_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
29950 ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
29951
29952#define ID3D12Tools1_ClearReservedGPUVARangesList(This) \
29953 ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
29954
29955#endif /* COBJMACROS */
29956
29957
29958#endif /* C style interface */
29959
29960
29961
29962
29963#endif /* __ID3D12Tools1_INTERFACE_DEFINED__ */
29964
29965
29966#ifndef __ID3D12Tools2_INTERFACE_DEFINED__
29967#define __ID3D12Tools2_INTERFACE_DEFINED__
29968
29969/* interface ID3D12Tools2 */
29970/* [unique][local][object][uuid] */
29971
29972
29973EXTERN_C const IID IID_ID3D12Tools2;
29974
29975#if defined(__cplusplus) && !defined(CINTERFACE)
29976
29977 MIDL_INTERFACE("01d393c5-c9b0-42a1-958c-c26b02d4d097")
29978 ID3D12Tools2 : public ID3D12Tools1
29979 {
29980 public:
29981 virtual HRESULT STDMETHODCALLTYPE SetApplicationSpecificDriverState(
29982 _In_ IUnknown *pAdapter,
29983 _In_opt_ ID3DBlob *pBlob) = 0;
29984
29985 };
29986
29987
29988#else /* C style interface */
29989
29990 typedef struct ID3D12Tools2Vtbl
29991 {
29992 BEGIN_INTERFACE
29993
29994 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29995 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29996 ID3D12Tools2 * This,
29997 REFIID riid,
29998 _COM_Outptr_ void **ppvObject);
29999
30000 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30001 ULONG ( STDMETHODCALLTYPE *AddRef )(
30002 ID3D12Tools2 * This);
30003
30004 DECLSPEC_XFGVIRT(IUnknown, Release)
30005 ULONG ( STDMETHODCALLTYPE *Release )(
30006 ID3D12Tools2 * This);
30007
30008 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
30009 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
30010 ID3D12Tools2 * This,
30011 BOOL bEnable);
30012
30013 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
30014 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
30015 ID3D12Tools2 * This);
30016
30017 DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
30018 HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
30019 ID3D12Tools2 * This,
30020 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
30021 _In_ UINT uiNumRanges);
30022
30023 DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
30024 void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
30025 ID3D12Tools2 * This);
30026
30027 DECLSPEC_XFGVIRT(ID3D12Tools2, SetApplicationSpecificDriverState)
30028 HRESULT ( STDMETHODCALLTYPE *SetApplicationSpecificDriverState )(
30029 ID3D12Tools2 * This,
30030 _In_ IUnknown *pAdapter,
30031 _In_opt_ ID3DBlob *pBlob);
30032
30033 END_INTERFACE
30034 } ID3D12Tools2Vtbl;
30035
30036 interface ID3D12Tools2
30037 {
30038 CONST_VTBL struct ID3D12Tools2Vtbl *lpVtbl;
30039 };
30040
30041
30042
30043#ifdef COBJMACROS
30044
30045
30046#define ID3D12Tools2_QueryInterface(This,riid,ppvObject) \
30047 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30048
30049#define ID3D12Tools2_AddRef(This) \
30050 ( (This)->lpVtbl -> AddRef(This) )
30051
30052#define ID3D12Tools2_Release(This) \
30053 ( (This)->lpVtbl -> Release(This) )
30054
30055
30056#define ID3D12Tools2_EnableShaderInstrumentation(This,bEnable) \
30057 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
30058
30059#define ID3D12Tools2_ShaderInstrumentationEnabled(This) \
30060 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
30061
30062
30063#define ID3D12Tools2_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
30064 ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
30065
30066#define ID3D12Tools2_ClearReservedGPUVARangesList(This) \
30067 ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
30068
30069
30070#define ID3D12Tools2_SetApplicationSpecificDriverState(This,pAdapter,pBlob) \
30071 ( (This)->lpVtbl -> SetApplicationSpecificDriverState(This,pAdapter,pBlob) )
30072
30073#endif /* COBJMACROS */
30074
30075
30076#endif /* C style interface */
30077
30078
30079
30080
30081#endif /* __ID3D12Tools2_INTERFACE_DEFINED__ */
30082
30083
30084#ifndef __ID3D12PageableTools_INTERFACE_DEFINED__
30085#define __ID3D12PageableTools_INTERFACE_DEFINED__
30086
30087/* interface ID3D12PageableTools */
30088/* [unique][local][object][uuid] */
30089
30090
30091EXTERN_C const IID IID_ID3D12PageableTools;
30092
30093#if defined(__cplusplus) && !defined(CINTERFACE)
30094
30095 MIDL_INTERFACE("8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d")
30096 ID3D12PageableTools : public IUnknown
30097 {
30098 public:
30099 virtual HRESULT STDMETHODCALLTYPE GetAllocation(
30100 _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation) = 0;
30101
30102 };
30103
30104
30105#else /* C style interface */
30106
30107 typedef struct ID3D12PageableToolsVtbl
30108 {
30109 BEGIN_INTERFACE
30110
30111 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30112 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30113 ID3D12PageableTools * This,
30114 REFIID riid,
30115 _COM_Outptr_ void **ppvObject);
30116
30117 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30118 ULONG ( STDMETHODCALLTYPE *AddRef )(
30119 ID3D12PageableTools * This);
30120
30121 DECLSPEC_XFGVIRT(IUnknown, Release)
30122 ULONG ( STDMETHODCALLTYPE *Release )(
30123 ID3D12PageableTools * This);
30124
30125 DECLSPEC_XFGVIRT(ID3D12PageableTools, GetAllocation)
30126 HRESULT ( STDMETHODCALLTYPE *GetAllocation )(
30127 ID3D12PageableTools * This,
30128 _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation);
30129
30130 END_INTERFACE
30131 } ID3D12PageableToolsVtbl;
30132
30133 interface ID3D12PageableTools
30134 {
30135 CONST_VTBL struct ID3D12PageableToolsVtbl *lpVtbl;
30136 };
30137
30138
30139
30140#ifdef COBJMACROS
30141
30142
30143#define ID3D12PageableTools_QueryInterface(This,riid,ppvObject) \
30144 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30145
30146#define ID3D12PageableTools_AddRef(This) \
30147 ( (This)->lpVtbl -> AddRef(This) )
30148
30149#define ID3D12PageableTools_Release(This) \
30150 ( (This)->lpVtbl -> Release(This) )
30151
30152
30153#define ID3D12PageableTools_GetAllocation(This,pAllocation) \
30154 ( (This)->lpVtbl -> GetAllocation(This,pAllocation) )
30155
30156#endif /* COBJMACROS */
30157
30158
30159#endif /* C style interface */
30160
30161
30162
30163
30164#endif /* __ID3D12PageableTools_INTERFACE_DEFINED__ */
30165
30166
30167#ifndef __ID3D12DeviceTools_INTERFACE_DEFINED__
30168#define __ID3D12DeviceTools_INTERFACE_DEFINED__
30169
30170/* interface ID3D12DeviceTools */
30171/* [unique][local][object][uuid] */
30172
30173
30174EXTERN_C const IID IID_ID3D12DeviceTools;
30175
30176#if defined(__cplusplus) && !defined(CINTERFACE)
30177
30178 MIDL_INTERFACE("2ea68e9c-19c3-4e47-a109-6cdadff0aca9")
30179 ID3D12DeviceTools : public IUnknown
30180 {
30181 public:
30182 virtual void STDMETHODCALLTYPE SetNextAllocationAddress(
30183 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress) = 0;
30184
30185 };
30186
30187
30188#else /* C style interface */
30189
30190 typedef struct ID3D12DeviceToolsVtbl
30191 {
30192 BEGIN_INTERFACE
30193
30194 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30195 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30196 ID3D12DeviceTools * This,
30197 REFIID riid,
30198 _COM_Outptr_ void **ppvObject);
30199
30200 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30201 ULONG ( STDMETHODCALLTYPE *AddRef )(
30202 ID3D12DeviceTools * This);
30203
30204 DECLSPEC_XFGVIRT(IUnknown, Release)
30205 ULONG ( STDMETHODCALLTYPE *Release )(
30206 ID3D12DeviceTools * This);
30207
30208 DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
30209 void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
30210 ID3D12DeviceTools * This,
30211 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
30212
30213 END_INTERFACE
30214 } ID3D12DeviceToolsVtbl;
30215
30216 interface ID3D12DeviceTools
30217 {
30218 CONST_VTBL struct ID3D12DeviceToolsVtbl *lpVtbl;
30219 };
30220
30221
30222
30223#ifdef COBJMACROS
30224
30225
30226#define ID3D12DeviceTools_QueryInterface(This,riid,ppvObject) \
30227 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30228
30229#define ID3D12DeviceTools_AddRef(This) \
30230 ( (This)->lpVtbl -> AddRef(This) )
30231
30232#define ID3D12DeviceTools_Release(This) \
30233 ( (This)->lpVtbl -> Release(This) )
30234
30235
30236#define ID3D12DeviceTools_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
30237 ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
30238
30239#endif /* COBJMACROS */
30240
30241
30242#endif /* C style interface */
30243
30244
30245
30246
30247#endif /* __ID3D12DeviceTools_INTERFACE_DEFINED__ */
30248
30249
30250/* interface __MIDL_itf_d3d12_0000_0070 */
30251/* [local] */
30252
30253typedef
30254enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
30255 {
30256 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
30257 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
30258 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
30259 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4
30260 } D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
30261
30262
30263
30264extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_c_ifspec;
30265extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_s_ifspec;
30266
30267#ifndef __ID3D12DeviceTools1_INTERFACE_DEFINED__
30268#define __ID3D12DeviceTools1_INTERFACE_DEFINED__
30269
30270/* interface ID3D12DeviceTools1 */
30271/* [unique][local][object][uuid] */
30272
30273
30274EXTERN_C const IID IID_ID3D12DeviceTools1;
30275
30276#if defined(__cplusplus) && !defined(CINTERFACE)
30277
30278 MIDL_INTERFACE("e30e9fc7-e641-4d6e-8a81-9dd9206ec47a")
30279 ID3D12DeviceTools1 : public ID3D12DeviceTools
30280 {
30281 public:
30282 virtual HRESULT STDMETHODCALLTYPE GetApplicationSpecificDriverState(
30283 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
30284
30285 virtual D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS STDMETHODCALLTYPE GetApplicationSpecificDriverBlobStatus( void) = 0;
30286
30287 };
30288
30289
30290#else /* C style interface */
30291
30292 typedef struct ID3D12DeviceTools1Vtbl
30293 {
30294 BEGIN_INTERFACE
30295
30296 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30297 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30298 ID3D12DeviceTools1 * This,
30299 REFIID riid,
30300 _COM_Outptr_ void **ppvObject);
30301
30302 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30303 ULONG ( STDMETHODCALLTYPE *AddRef )(
30304 ID3D12DeviceTools1 * This);
30305
30306 DECLSPEC_XFGVIRT(IUnknown, Release)
30307 ULONG ( STDMETHODCALLTYPE *Release )(
30308 ID3D12DeviceTools1 * This);
30309
30310 DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
30311 void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
30312 ID3D12DeviceTools1 * This,
30313 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
30314
30315 DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverState)
30316 HRESULT ( STDMETHODCALLTYPE *GetApplicationSpecificDriverState )(
30317 ID3D12DeviceTools1 * This,
30318 _COM_Outptr_ ID3DBlob **ppBlob);
30319
30320 DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverBlobStatus)
30321 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS ( STDMETHODCALLTYPE *GetApplicationSpecificDriverBlobStatus )(
30322 ID3D12DeviceTools1 * This);
30323
30324 END_INTERFACE
30325 } ID3D12DeviceTools1Vtbl;
30326
30327 interface ID3D12DeviceTools1
30328 {
30329 CONST_VTBL struct ID3D12DeviceTools1Vtbl *lpVtbl;
30330 };
30331
30332
30333
30334#ifdef COBJMACROS
30335
30336
30337#define ID3D12DeviceTools1_QueryInterface(This,riid,ppvObject) \
30338 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30339
30340#define ID3D12DeviceTools1_AddRef(This) \
30341 ( (This)->lpVtbl -> AddRef(This) )
30342
30343#define ID3D12DeviceTools1_Release(This) \
30344 ( (This)->lpVtbl -> Release(This) )
30345
30346
30347#define ID3D12DeviceTools1_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
30348 ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
30349
30350
30351#define ID3D12DeviceTools1_GetApplicationSpecificDriverState(This,ppBlob) \
30352 ( (This)->lpVtbl -> GetApplicationSpecificDriverState(This,ppBlob) )
30353
30354#define ID3D12DeviceTools1_GetApplicationSpecificDriverBlobStatus(This) \
30355 ( (This)->lpVtbl -> GetApplicationSpecificDriverBlobStatus(This) )
30356
30357#endif /* COBJMACROS */
30358
30359
30360#endif /* C style interface */
30361
30362
30363
30364
30365#endif /* __ID3D12DeviceTools1_INTERFACE_DEFINED__ */
30366
30367
30368/* interface __MIDL_itf_d3d12_0000_0071 */
30369/* [local] */
30370
30371typedef struct D3D12_SUBRESOURCE_DATA
30372 {
30373 const void *pData;
30374 LONG_PTR RowPitch;
30375 LONG_PTR SlicePitch;
30376 } D3D12_SUBRESOURCE_DATA;
30377
30378typedef struct D3D12_MEMCPY_DEST
30379 {
30380 void *pData;
30381 SIZE_T RowPitch;
30382 SIZE_T SlicePitch;
30383 } D3D12_MEMCPY_DEST;
30384
30385#if !defined( D3D12_IGNORE_SDK_LAYERS )
30386#include "d3d12sdklayers.h"
30387#endif
30388
30389///////////////////////////////////////////////////////////////////////////
30390// D3D12CreateDevice
30391// ------------------
30392//
30393// pAdapter
30394// If NULL, D3D12CreateDevice will choose the primary adapter.
30395// If non-NULL, D3D12CreateDevice will use the provided adapter.
30396// MinimumFeatureLevel
30397// The minimum feature level required for successful device creation.
30398// riid
30399// The interface IID of the device to be returned. Expected: ID3D12Device.
30400// ppDevice
30401// Pointer to returned interface. May be NULL.
30402//
30403// Return Values
30404// Any of those documented for
30405// CreateDXGIFactory1
30406// IDXGIFactory::EnumAdapters
30407// D3D12CreateDevice
30408//
30409///////////////////////////////////////////////////////////////////////////
30410typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
30411 D3D_FEATURE_LEVEL,
30412 _In_ REFIID, _COM_Outptr_opt_ void** );
30413
30414HRESULT WINAPI D3D12CreateDevice(
30415 _In_opt_ IUnknown* pAdapter,
30416 D3D_FEATURE_LEVEL MinimumFeatureLevel,
30417 _In_ REFIID riid, // Expected: ID3D12Device
30418 _COM_Outptr_opt_ void** ppDevice );
30419
30420
30421typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
30422
30423HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
30424
30425// --------------------------------------------------------------------------------------------------------------------------------
30426// D3D12EnableExperimentalFeatures
30427//
30428// Pass in a list of feature GUIDs to be enabled together.
30429//
30430// If a particular feature requires some configuration information on enablement, it will have
30431// a configuration struct that can be passed alongside the GUID.
30432//
30433// Some features might use an interface IID as the GUID. For these, once the feature is enabled via
30434// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
30435// for manipulating the feature. This allows for control that might not cleanly be expressed by just
30436// the configuration struct that D3D12EnableExperimentalFeatures provides.
30437//
30438// If this method is called and a change to existing feature enablement is made,
30439// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
30440// singleton device for a process. Removing the devices when configuration changes prevents
30441// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
30442//
30443// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
30444// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
30445// in are known to be incompatible with each other, or other errors.
30446// Returns S_OK otherwise.
30447//
30448// --------------------------------------------------------------------------------------------------------------------------------
30449HRESULT WINAPI D3D12EnableExperimentalFeatures(
30450 UINT NumFeatures,
30451 _In_count_(NumFeatures) const IID* pIIDs,
30452 _In_opt_count_(NumFeatures) void* pConfigurationStructs,
30453 _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);
30454
30455// --------------------------------------------------------------------------------------------------------------------------------
30456// Experimental Feature: D3D12ExperimentalShaderModels
30457//
30458// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
30459// meaning shader models that haven't been finalized for use in retail.
30460//
30461// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
30462//
30463// --------------------------------------------------------------------------------------------------------------------------------
30464static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
30465 0x76f5573e,
30466 0xf13a,
30467 0x40f5,
30468 { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
30469};
30470// --------------------------------------------------------------------------------------------------------------------------------
30471// Experimental Feature: D3D12TiledResourceTier4
30472//
30473// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,
30474// meaning texture tile data-inheritance is allowed.
30475//
30476// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.
30477//
30478// --------------------------------------------------------------------------------------------------------------------------------
30479static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */
30480 0xc9c4725f,
30481 0xa81a,
30482 0x4f56,
30483 { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
30484};
30485// --------------------------------------------------------------------------------------------------------------------------------
30486// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS
30487//
30488// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS,
30489// driver support is still required for this feature.
30490//
30491// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.
30492//
30493// --------------------------------------------------------------------------------------------------------------------------------
30494static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */
30495 0x45dc51f3,
30496 0x767f,
30497 0x4588,
30498 { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }
30499};
30500// --------------------------------------------------------------------------------------------------------------------------------
30501// D3D12GetInterface
30502//
30503// Retrieve Global D3D12 Interface.
30504//
30505
30506DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
30507DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
30508DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
30509DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
30510DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);
30511DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);
30512DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);
30513
30514typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
30515
30516HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
30517
30518
30519
30520extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_c_ifspec;
30521extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_s_ifspec;
30522
30523#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
30524#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
30525
30526/* interface ID3D12SDKConfiguration */
30527/* [unique][local][object][uuid] */
30528
30529
30530EXTERN_C const IID IID_ID3D12SDKConfiguration;
30531
30532#if defined(__cplusplus) && !defined(CINTERFACE)
30533
30534 MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
30535 ID3D12SDKConfiguration : public IUnknown
30536 {
30537 public:
30538 virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
30539 UINT SDKVersion,
30540 _In_z_ LPCSTR SDKPath) = 0;
30541
30542 };
30543
30544
30545#else /* C style interface */
30546
30547 typedef struct ID3D12SDKConfigurationVtbl
30548 {
30549 BEGIN_INTERFACE
30550
30551 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30552 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30553 ID3D12SDKConfiguration * This,
30554 REFIID riid,
30555 _COM_Outptr_ void **ppvObject);
30556
30557 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30558 ULONG ( STDMETHODCALLTYPE *AddRef )(
30559 ID3D12SDKConfiguration * This);
30560
30561 DECLSPEC_XFGVIRT(IUnknown, Release)
30562 ULONG ( STDMETHODCALLTYPE *Release )(
30563 ID3D12SDKConfiguration * This);
30564
30565 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
30566 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
30567 ID3D12SDKConfiguration * This,
30568 UINT SDKVersion,
30569 _In_z_ LPCSTR SDKPath);
30570
30571 END_INTERFACE
30572 } ID3D12SDKConfigurationVtbl;
30573
30574 interface ID3D12SDKConfiguration
30575 {
30576 CONST_VTBL struct ID3D12SDKConfigurationVtbl *lpVtbl;
30577 };
30578
30579
30580
30581#ifdef COBJMACROS
30582
30583
30584#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) \
30585 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30586
30587#define ID3D12SDKConfiguration_AddRef(This) \
30588 ( (This)->lpVtbl -> AddRef(This) )
30589
30590#define ID3D12SDKConfiguration_Release(This) \
30591 ( (This)->lpVtbl -> Release(This) )
30592
30593
30594#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath) \
30595 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
30596
30597#endif /* COBJMACROS */
30598
30599
30600#endif /* C style interface */
30601
30602
30603
30604
30605#endif /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
30606
30607
30608#ifndef __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
30609#define __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
30610
30611/* interface ID3D12SDKConfiguration1 */
30612/* [unique][local][object][uuid] */
30613
30614
30615EXTERN_C const IID IID_ID3D12SDKConfiguration1;
30616
30617#if defined(__cplusplus) && !defined(CINTERFACE)
30618
30619 MIDL_INTERFACE("8aaf9303-ad25-48b9-9a57-d9c37e009d9f")
30620 ID3D12SDKConfiguration1 : public ID3D12SDKConfiguration
30621 {
30622 public:
30623 virtual HRESULT STDMETHODCALLTYPE CreateDeviceFactory(
30624 UINT SDKVersion,
30625 _In_ LPCSTR SDKPath,
30626 REFIID riid,
30627 _COM_Outptr_ void **ppvFactory) = 0;
30628
30629 virtual void STDMETHODCALLTYPE FreeUnusedSDKs( void) = 0;
30630
30631 };
30632
30633
30634#else /* C style interface */
30635
30636 typedef struct ID3D12SDKConfiguration1Vtbl
30637 {
30638 BEGIN_INTERFACE
30639
30640 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30641 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30642 ID3D12SDKConfiguration1 * This,
30643 REFIID riid,
30644 _COM_Outptr_ void **ppvObject);
30645
30646 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30647 ULONG ( STDMETHODCALLTYPE *AddRef )(
30648 ID3D12SDKConfiguration1 * This);
30649
30650 DECLSPEC_XFGVIRT(IUnknown, Release)
30651 ULONG ( STDMETHODCALLTYPE *Release )(
30652 ID3D12SDKConfiguration1 * This);
30653
30654 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
30655 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
30656 ID3D12SDKConfiguration1 * This,
30657 UINT SDKVersion,
30658 _In_z_ LPCSTR SDKPath);
30659
30660 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, CreateDeviceFactory)
30661 HRESULT ( STDMETHODCALLTYPE *CreateDeviceFactory )(
30662 ID3D12SDKConfiguration1 * This,
30663 UINT SDKVersion,
30664 _In_ LPCSTR SDKPath,
30665 REFIID riid,
30666 _COM_Outptr_ void **ppvFactory);
30667
30668 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, FreeUnusedSDKs)
30669 void ( STDMETHODCALLTYPE *FreeUnusedSDKs )(
30670 ID3D12SDKConfiguration1 * This);
30671
30672 END_INTERFACE
30673 } ID3D12SDKConfiguration1Vtbl;
30674
30675 interface ID3D12SDKConfiguration1
30676 {
30677 CONST_VTBL struct ID3D12SDKConfiguration1Vtbl *lpVtbl;
30678 };
30679
30680
30681
30682#ifdef COBJMACROS
30683
30684
30685#define ID3D12SDKConfiguration1_QueryInterface(This,riid,ppvObject) \
30686 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30687
30688#define ID3D12SDKConfiguration1_AddRef(This) \
30689 ( (This)->lpVtbl -> AddRef(This) )
30690
30691#define ID3D12SDKConfiguration1_Release(This) \
30692 ( (This)->lpVtbl -> Release(This) )
30693
30694
30695#define ID3D12SDKConfiguration1_SetSDKVersion(This,SDKVersion,SDKPath) \
30696 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
30697
30698
30699#define ID3D12SDKConfiguration1_CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) \
30700 ( (This)->lpVtbl -> CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) )
30701
30702#define ID3D12SDKConfiguration1_FreeUnusedSDKs(This) \
30703 ( (This)->lpVtbl -> FreeUnusedSDKs(This) )
30704
30705#endif /* COBJMACROS */
30706
30707
30708#endif /* C style interface */
30709
30710
30711
30712
30713#endif /* __ID3D12SDKConfiguration1_INTERFACE_DEFINED__ */
30714
30715
30716/* interface __MIDL_itf_d3d12_0000_0073 */
30717/* [local] */
30718
30719typedef
30720enum D3D12_DEVICE_FACTORY_FLAGS
30721 {
30722 D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
30723 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
30724 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
30725 D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4
30726 } D3D12_DEVICE_FACTORY_FLAGS;
30727
30728DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )
30729
30730
30731extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_c_ifspec;
30732extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_s_ifspec;
30733
30734#ifndef __ID3D12DeviceFactory_INTERFACE_DEFINED__
30735#define __ID3D12DeviceFactory_INTERFACE_DEFINED__
30736
30737/* interface ID3D12DeviceFactory */
30738/* [unique][local][object][uuid] */
30739
30740
30741EXTERN_C const IID IID_ID3D12DeviceFactory;
30742
30743#if defined(__cplusplus) && !defined(CINTERFACE)
30744
30745 MIDL_INTERFACE("61f307d3-d34e-4e7c-8374-3ba4de23cccb")
30746 ID3D12DeviceFactory : public IUnknown
30747 {
30748 public:
30749 virtual HRESULT STDMETHODCALLTYPE InitializeFromGlobalState( void) = 0;
30750
30751 virtual HRESULT STDMETHODCALLTYPE ApplyToGlobalState( void) = 0;
30752
30753 virtual HRESULT STDMETHODCALLTYPE SetFlags(
30754 D3D12_DEVICE_FACTORY_FLAGS flags) = 0;
30755
30756 virtual D3D12_DEVICE_FACTORY_FLAGS STDMETHODCALLTYPE GetFlags( void) = 0;
30757
30758 virtual HRESULT STDMETHODCALLTYPE GetConfigurationInterface(
30759 REFCLSID clsid,
30760 REFIID iid,
30761 _COM_Outptr_ void **ppv) = 0;
30762
30763 virtual HRESULT STDMETHODCALLTYPE EnableExperimentalFeatures(
30764 UINT NumFeatures,
30765 _In_reads_(NumFeatures) const IID *pIIDs,
30766 _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
30767 _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes) = 0;
30768
30769 virtual HRESULT STDMETHODCALLTYPE CreateDevice(
30770 _In_opt_ IUnknown *adapter,
30771 D3D_FEATURE_LEVEL FeatureLevel,
30772 REFIID riid,
30773 _COM_Outptr_opt_ void **ppvDevice) = 0;
30774
30775 };
30776
30777
30778#else /* C style interface */
30779
30780 typedef struct ID3D12DeviceFactoryVtbl
30781 {
30782 BEGIN_INTERFACE
30783
30784 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30785 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30786 ID3D12DeviceFactory * This,
30787 REFIID riid,
30788 _COM_Outptr_ void **ppvObject);
30789
30790 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30791 ULONG ( STDMETHODCALLTYPE *AddRef )(
30792 ID3D12DeviceFactory * This);
30793
30794 DECLSPEC_XFGVIRT(IUnknown, Release)
30795 ULONG ( STDMETHODCALLTYPE *Release )(
30796 ID3D12DeviceFactory * This);
30797
30798 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, InitializeFromGlobalState)
30799 HRESULT ( STDMETHODCALLTYPE *InitializeFromGlobalState )(
30800 ID3D12DeviceFactory * This);
30801
30802 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, ApplyToGlobalState)
30803 HRESULT ( STDMETHODCALLTYPE *ApplyToGlobalState )(
30804 ID3D12DeviceFactory * This);
30805
30806 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, SetFlags)
30807 HRESULT ( STDMETHODCALLTYPE *SetFlags )(
30808 ID3D12DeviceFactory * This,
30809 D3D12_DEVICE_FACTORY_FLAGS flags);
30810
30811 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetFlags)
30812 D3D12_DEVICE_FACTORY_FLAGS ( STDMETHODCALLTYPE *GetFlags )(
30813 ID3D12DeviceFactory * This);
30814
30815 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetConfigurationInterface)
30816 HRESULT ( STDMETHODCALLTYPE *GetConfigurationInterface )(
30817 ID3D12DeviceFactory * This,
30818 REFCLSID clsid,
30819 REFIID iid,
30820 _COM_Outptr_ void **ppv);
30821
30822 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, EnableExperimentalFeatures)
30823 HRESULT ( STDMETHODCALLTYPE *EnableExperimentalFeatures )(
30824 ID3D12DeviceFactory * This,
30825 UINT NumFeatures,
30826 _In_reads_(NumFeatures) const IID *pIIDs,
30827 _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
30828 _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes);
30829
30830 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, CreateDevice)
30831 HRESULT ( STDMETHODCALLTYPE *CreateDevice )(
30832 ID3D12DeviceFactory * This,
30833 _In_opt_ IUnknown *adapter,
30834 D3D_FEATURE_LEVEL FeatureLevel,
30835 REFIID riid,
30836 _COM_Outptr_opt_ void **ppvDevice);
30837
30838 END_INTERFACE
30839 } ID3D12DeviceFactoryVtbl;
30840
30841 interface ID3D12DeviceFactory
30842 {
30843 CONST_VTBL struct ID3D12DeviceFactoryVtbl *lpVtbl;
30844 };
30845
30846
30847
30848#ifdef COBJMACROS
30849
30850
30851#define ID3D12DeviceFactory_QueryInterface(This,riid,ppvObject) \
30852 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30853
30854#define ID3D12DeviceFactory_AddRef(This) \
30855 ( (This)->lpVtbl -> AddRef(This) )
30856
30857#define ID3D12DeviceFactory_Release(This) \
30858 ( (This)->lpVtbl -> Release(This) )
30859
30860
30861#define ID3D12DeviceFactory_InitializeFromGlobalState(This) \
30862 ( (This)->lpVtbl -> InitializeFromGlobalState(This) )
30863
30864#define ID3D12DeviceFactory_ApplyToGlobalState(This) \
30865 ( (This)->lpVtbl -> ApplyToGlobalState(This) )
30866
30867#define ID3D12DeviceFactory_SetFlags(This,flags) \
30868 ( (This)->lpVtbl -> SetFlags(This,flags) )
30869
30870#define ID3D12DeviceFactory_GetFlags(This) \
30871 ( (This)->lpVtbl -> GetFlags(This) )
30872
30873#define ID3D12DeviceFactory_GetConfigurationInterface(This,clsid,iid,ppv) \
30874 ( (This)->lpVtbl -> GetConfigurationInterface(This,clsid,iid,ppv) )
30875
30876#define ID3D12DeviceFactory_EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) \
30877 ( (This)->lpVtbl -> EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) )
30878
30879#define ID3D12DeviceFactory_CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) \
30880 ( (This)->lpVtbl -> CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) )
30881
30882#endif /* COBJMACROS */
30883
30884
30885#endif /* C style interface */
30886
30887
30888
30889
30890#endif /* __ID3D12DeviceFactory_INTERFACE_DEFINED__ */
30891
30892
30893/* interface __MIDL_itf_d3d12_0000_0074 */
30894/* [local] */
30895
30896typedef
30897enum D3D12_DEVICE_FLAGS
30898 {
30899 D3D12_DEVICE_FLAG_NONE = 0,
30900 D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
30901 D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
30902 D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
30903 D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
30904 D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
30905 D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
30906 D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
30907 D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
30908 D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
30909 D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
30910 D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400
30911 } D3D12_DEVICE_FLAGS;
30912
30913DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )
30914typedef struct D3D12_DEVICE_CONFIGURATION_DESC
30915 {
30916 D3D12_DEVICE_FLAGS Flags;
30917 UINT GpuBasedValidationFlags;
30918 UINT SDKVersion;
30919 UINT NumEnabledExperimentalFeatures;
30920 } D3D12_DEVICE_CONFIGURATION_DESC;
30921
30922
30923
30924extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_c_ifspec;
30925extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_s_ifspec;
30926
30927#ifndef __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
30928#define __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
30929
30930/* interface ID3D12DeviceConfiguration */
30931/* [unique][local][object][uuid] */
30932
30933
30934EXTERN_C const IID IID_ID3D12DeviceConfiguration;
30935
30936#if defined(__cplusplus) && !defined(CINTERFACE)
30937
30938 MIDL_INTERFACE("78dbf87b-f766-422b-a61c-c8c446bdb9ad")
30939 ID3D12DeviceConfiguration : public IUnknown
30940 {
30941 public:
30942#if defined(_MSC_VER) || !defined(_WIN32)
30943 virtual D3D12_DEVICE_CONFIGURATION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
30944#else
30945 virtual D3D12_DEVICE_CONFIGURATION_DESC *STDMETHODCALLTYPE GetDesc(
30946 D3D12_DEVICE_CONFIGURATION_DESC * RetVal) = 0;
30947#endif
30948
30949 virtual HRESULT STDMETHODCALLTYPE GetEnabledExperimentalFeatures(
30950 _Out_writes_(NumGuids) GUID *pGuids,
30951 UINT NumGuids) = 0;
30952
30953 virtual HRESULT STDMETHODCALLTYPE SerializeVersionedRootSignature(
30954 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
30955 _COM_Outptr_ ID3DBlob **ppResult,
30956 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError) = 0;
30957
30958 virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializer(
30959 _In_reads_bytes_(Size) const void *pBlob,
30960 SIZE_T Size,
30961 REFIID riid,
30962 _COM_Outptr_ void **ppvDeserializer) = 0;
30963
30964 };
30965
30966
30967#else /* C style interface */
30968
30969 typedef struct ID3D12DeviceConfigurationVtbl
30970 {
30971 BEGIN_INTERFACE
30972
30973 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30974 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30975 ID3D12DeviceConfiguration * This,
30976 REFIID riid,
30977 _COM_Outptr_ void **ppvObject);
30978
30979 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30980 ULONG ( STDMETHODCALLTYPE *AddRef )(
30981 ID3D12DeviceConfiguration * This);
30982
30983 DECLSPEC_XFGVIRT(IUnknown, Release)
30984 ULONG ( STDMETHODCALLTYPE *Release )(
30985 ID3D12DeviceConfiguration * This);
30986
30987 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
30988#if !defined(_WIN32)
30989 D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
30990 ID3D12DeviceConfiguration * This);
30991
30992#else
30993 D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
30994 ID3D12DeviceConfiguration * This,
30995 D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
30996
30997#endif
30998
30999 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
31000 HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
31001 ID3D12DeviceConfiguration * This,
31002 _Out_writes_(NumGuids) GUID *pGuids,
31003 UINT NumGuids);
31004
31005 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
31006 HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
31007 ID3D12DeviceConfiguration * This,
31008 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
31009 _COM_Outptr_ ID3DBlob **ppResult,
31010 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
31011
31012 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
31013 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
31014 ID3D12DeviceConfiguration * This,
31015 _In_reads_bytes_(Size) const void *pBlob,
31016 SIZE_T Size,
31017 REFIID riid,
31018 _COM_Outptr_ void **ppvDeserializer);
31019
31020 END_INTERFACE
31021 } ID3D12DeviceConfigurationVtbl;
31022
31023 interface ID3D12DeviceConfiguration
31024 {
31025 CONST_VTBL struct ID3D12DeviceConfigurationVtbl *lpVtbl;
31026 };
31027
31028
31029
31030#ifdef COBJMACROS
31031
31032
31033#define ID3D12DeviceConfiguration_QueryInterface(This,riid,ppvObject) \
31034 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31035
31036#define ID3D12DeviceConfiguration_AddRef(This) \
31037 ( (This)->lpVtbl -> AddRef(This) )
31038
31039#define ID3D12DeviceConfiguration_Release(This) \
31040 ( (This)->lpVtbl -> Release(This) )
31041
31042#if !defined(_WIN32)
31043
31044#define ID3D12DeviceConfiguration_GetDesc(This) \
31045 ( (This)->lpVtbl -> GetDesc(This) )
31046#else
31047#define ID3D12DeviceConfiguration_GetDesc(This,RetVal) \
31048 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
31049#endif
31050
31051#define ID3D12DeviceConfiguration_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
31052 ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
31053
31054#define ID3D12DeviceConfiguration_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
31055 ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
31056
31057#define ID3D12DeviceConfiguration_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
31058 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
31059
31060#endif /* COBJMACROS */
31061
31062
31063#endif /* C style interface */
31064
31065
31066
31067
31068#endif /* __ID3D12DeviceConfiguration_INTERFACE_DEFINED__ */
31069
31070
31071#ifndef __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
31072#define __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
31073
31074/* interface ID3D12DeviceConfiguration1 */
31075/* [unique][local][object][uuid] */
31076
31077
31078EXTERN_C const IID IID_ID3D12DeviceConfiguration1;
31079
31080#if defined(__cplusplus) && !defined(CINTERFACE)
31081
31082 MIDL_INTERFACE("ed342442-6343-4e16-bb82-a3a577874e56")
31083 ID3D12DeviceConfiguration1 : public ID3D12DeviceConfiguration
31084 {
31085 public:
31086 virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
31087 _In_reads_bytes_(Size) const void *pLibraryBlob,
31088 SIZE_T Size,
31089 LPCWSTR RootSignatureSubobjectName,
31090 REFIID riid,
31091 _COM_Outptr_ void **ppvDeserializer) = 0;
31092
31093 };
31094
31095
31096#else /* C style interface */
31097
31098 typedef struct ID3D12DeviceConfiguration1Vtbl
31099 {
31100 BEGIN_INTERFACE
31101
31102 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31103 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31104 ID3D12DeviceConfiguration1 * This,
31105 REFIID riid,
31106 _COM_Outptr_ void **ppvObject);
31107
31108 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31109 ULONG ( STDMETHODCALLTYPE *AddRef )(
31110 ID3D12DeviceConfiguration1 * This);
31111
31112 DECLSPEC_XFGVIRT(IUnknown, Release)
31113 ULONG ( STDMETHODCALLTYPE *Release )(
31114 ID3D12DeviceConfiguration1 * This);
31115
31116 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
31117#if !defined(_WIN32)
31118 D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
31119 ID3D12DeviceConfiguration1 * This);
31120
31121#else
31122 D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
31123 ID3D12DeviceConfiguration1 * This,
31124 D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
31125
31126#endif
31127
31128 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
31129 HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
31130 ID3D12DeviceConfiguration1 * This,
31131 _Out_writes_(NumGuids) GUID *pGuids,
31132 UINT NumGuids);
31133
31134 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
31135 HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
31136 ID3D12DeviceConfiguration1 * This,
31137 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
31138 _COM_Outptr_ ID3DBlob **ppResult,
31139 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
31140
31141 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
31142 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
31143 ID3D12DeviceConfiguration1 * This,
31144 _In_reads_bytes_(Size) const void *pBlob,
31145 SIZE_T Size,
31146 REFIID riid,
31147 _COM_Outptr_ void **ppvDeserializer);
31148
31149 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration1, CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary)
31150 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary )(
31151 ID3D12DeviceConfiguration1 * This,
31152 _In_reads_bytes_(Size) const void *pLibraryBlob,
31153 SIZE_T Size,
31154 LPCWSTR RootSignatureSubobjectName,
31155 REFIID riid,
31156 _COM_Outptr_ void **ppvDeserializer);
31157
31158 END_INTERFACE
31159 } ID3D12DeviceConfiguration1Vtbl;
31160
31161 interface ID3D12DeviceConfiguration1
31162 {
31163 CONST_VTBL struct ID3D12DeviceConfiguration1Vtbl *lpVtbl;
31164 };
31165
31166
31167
31168#ifdef COBJMACROS
31169
31170
31171#define ID3D12DeviceConfiguration1_QueryInterface(This,riid,ppvObject) \
31172 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31173
31174#define ID3D12DeviceConfiguration1_AddRef(This) \
31175 ( (This)->lpVtbl -> AddRef(This) )
31176
31177#define ID3D12DeviceConfiguration1_Release(This) \
31178 ( (This)->lpVtbl -> Release(This) )
31179
31180#if !defined(_WIN32)
31181
31182#define ID3D12DeviceConfiguration1_GetDesc(This) \
31183 ( (This)->lpVtbl -> GetDesc(This) )
31184#else
31185#define ID3D12DeviceConfiguration1_GetDesc(This,RetVal) \
31186 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
31187#endif
31188
31189#define ID3D12DeviceConfiguration1_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
31190 ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
31191
31192#define ID3D12DeviceConfiguration1_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
31193 ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
31194
31195#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
31196 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
31197
31198
31199#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) \
31200 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) )
31201
31202#endif /* COBJMACROS */
31203
31204
31205#endif /* C style interface */
31206
31207
31208
31209
31210#endif /* __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__ */
31211
31212
31213/* interface __MIDL_itf_d3d12_0000_0076 */
31214/* [local] */
31215
31216typedef
31217enum D3D12_STATE_OBJECT_DATABASE_FLAGS
31218 {
31219 D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0,
31220 D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1
31221 } D3D12_STATE_OBJECT_DATABASE_FLAGS;
31222
31223DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )
31224
31225
31226extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_c_ifspec;
31227extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_s_ifspec;
31228
31229#ifndef __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
31230#define __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
31231
31232/* interface ID3D12StateObjectDatabaseFactory */
31233/* [unique][local][object][uuid] */
31234
31235
31236EXTERN_C const IID IID_ID3D12StateObjectDatabaseFactory;
31237
31238#if defined(__cplusplus) && !defined(CINTERFACE)
31239
31240 MIDL_INTERFACE("f5b066f0-648a-4611-bd41-27fd0948b9eb")
31241 ID3D12StateObjectDatabaseFactory : public IUnknown
31242 {
31243 public:
31244 virtual HRESULT STDMETHODCALLTYPE CreateStateObjectDatabaseFromFile(
31245 LPCWSTR pDatabaseFile,
31246 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
31247 REFIID riid,
31248 _COM_Outptr_ void **ppvStateObjectDatabase) = 0;
31249
31250 };
31251
31252
31253#else /* C style interface */
31254
31255 typedef struct ID3D12StateObjectDatabaseFactoryVtbl
31256 {
31257 BEGIN_INTERFACE
31258
31259 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31260 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31261 ID3D12StateObjectDatabaseFactory * This,
31262 REFIID riid,
31263 _COM_Outptr_ void **ppvObject);
31264
31265 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31266 ULONG ( STDMETHODCALLTYPE *AddRef )(
31267 ID3D12StateObjectDatabaseFactory * This);
31268
31269 DECLSPEC_XFGVIRT(IUnknown, Release)
31270 ULONG ( STDMETHODCALLTYPE *Release )(
31271 ID3D12StateObjectDatabaseFactory * This);
31272
31273 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabaseFactory, CreateStateObjectDatabaseFromFile)
31274 HRESULT ( STDMETHODCALLTYPE *CreateStateObjectDatabaseFromFile )(
31275 ID3D12StateObjectDatabaseFactory * This,
31276 LPCWSTR pDatabaseFile,
31277 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
31278 REFIID riid,
31279 _COM_Outptr_ void **ppvStateObjectDatabase);
31280
31281 END_INTERFACE
31282 } ID3D12StateObjectDatabaseFactoryVtbl;
31283
31284 interface ID3D12StateObjectDatabaseFactory
31285 {
31286 CONST_VTBL struct ID3D12StateObjectDatabaseFactoryVtbl *lpVtbl;
31287 };
31288
31289
31290
31291#ifdef COBJMACROS
31292
31293
31294#define ID3D12StateObjectDatabaseFactory_QueryInterface(This,riid,ppvObject) \
31295 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31296
31297#define ID3D12StateObjectDatabaseFactory_AddRef(This) \
31298 ( (This)->lpVtbl -> AddRef(This) )
31299
31300#define ID3D12StateObjectDatabaseFactory_Release(This) \
31301 ( (This)->lpVtbl -> Release(This) )
31302
31303
31304#define ID3D12StateObjectDatabaseFactory_CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) \
31305 ( (This)->lpVtbl -> CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) )
31306
31307#endif /* COBJMACROS */
31308
31309
31310#endif /* C style interface */
31311
31312
31313
31314
31315#endif /* __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__ */
31316
31317
31318/* interface __MIDL_itf_d3d12_0000_0077 */
31319/* [local] */
31320
31321typedef
31322enum D3D12_AXIS_SHADING_RATE
31323 {
31324 D3D12_AXIS_SHADING_RATE_1X = 0,
31325 D3D12_AXIS_SHADING_RATE_2X = 0x1,
31326 D3D12_AXIS_SHADING_RATE_4X = 0x2
31327 } D3D12_AXIS_SHADING_RATE;
31328
31329#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2
31330#define D3D12_SHADING_RATE_VALID_MASK 3
31331#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
31332#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
31333#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)
31334typedef
31335enum D3D12_SHADING_RATE
31336 {
31337 D3D12_SHADING_RATE_1X1 = 0,
31338 D3D12_SHADING_RATE_1X2 = 0x1,
31339 D3D12_SHADING_RATE_2X1 = 0x4,
31340 D3D12_SHADING_RATE_2X2 = 0x5,
31341 D3D12_SHADING_RATE_2X4 = 0x6,
31342 D3D12_SHADING_RATE_4X2 = 0x9,
31343 D3D12_SHADING_RATE_4X4 = 0xa
31344 } D3D12_SHADING_RATE;
31345
31346typedef
31347enum D3D12_SHADING_RATE_COMBINER
31348 {
31349 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
31350 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
31351 D3D12_SHADING_RATE_COMBINER_MIN = 2,
31352 D3D12_SHADING_RATE_COMBINER_MAX = 3,
31353 D3D12_SHADING_RATE_COMBINER_SUM = 4
31354 } D3D12_SHADING_RATE_COMBINER;
31355
31356
31357
31358extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_c_ifspec;
31359extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_s_ifspec;
31360
31361#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
31362#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
31363
31364/* interface ID3D12GraphicsCommandList5 */
31365/* [unique][local][object][uuid] */
31366
31367
31368EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
31369
31370#if defined(__cplusplus) && !defined(CINTERFACE)
31371
31372 MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
31373 ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
31374 {
31375 public:
31376 virtual void STDMETHODCALLTYPE RSSetShadingRate(
31377 _In_ D3D12_SHADING_RATE baseShadingRate,
31378 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
31379
31380 virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
31381 _In_opt_ ID3D12Resource *shadingRateImage) = 0;
31382
31383 };
31384
31385
31386#else /* C style interface */
31387
31388 typedef struct ID3D12GraphicsCommandList5Vtbl
31389 {
31390 BEGIN_INTERFACE
31391
31392 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31393 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31394 ID3D12GraphicsCommandList5 * This,
31395 REFIID riid,
31396 _COM_Outptr_ void **ppvObject);
31397
31398 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31399 ULONG ( STDMETHODCALLTYPE *AddRef )(
31400 ID3D12GraphicsCommandList5 * This);
31401
31402 DECLSPEC_XFGVIRT(IUnknown, Release)
31403 ULONG ( STDMETHODCALLTYPE *Release )(
31404 ID3D12GraphicsCommandList5 * This);
31405
31406 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
31407 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
31408 ID3D12GraphicsCommandList5 * This,
31409 _In_ REFGUID guid,
31410 _Inout_ UINT *pDataSize,
31411 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
31412
31413 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
31414 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
31415 ID3D12GraphicsCommandList5 * This,
31416 _In_ REFGUID guid,
31417 _In_ UINT DataSize,
31418 _In_reads_bytes_opt_( DataSize ) const void *pData);
31419
31420 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
31421 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
31422 ID3D12GraphicsCommandList5 * This,
31423 _In_ REFGUID guid,
31424 _In_opt_ const IUnknown *pData);
31425
31426 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
31427 HRESULT ( STDMETHODCALLTYPE *SetName )(
31428 ID3D12GraphicsCommandList5 * This,
31429 _In_z_ LPCWSTR Name);
31430
31431 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
31432 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
31433 ID3D12GraphicsCommandList5 * This,
31434 REFIID riid,
31435 _COM_Outptr_opt_ void **ppvDevice);
31436
31437 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
31438 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
31439 ID3D12GraphicsCommandList5 * This);
31440
31441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
31442 HRESULT ( STDMETHODCALLTYPE *Close )(
31443 ID3D12GraphicsCommandList5 * This);
31444
31445 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
31446 HRESULT ( STDMETHODCALLTYPE *Reset )(
31447 ID3D12GraphicsCommandList5 * This,
31448 _In_ ID3D12CommandAllocator *pAllocator,
31449 _In_opt_ ID3D12PipelineState *pInitialState);
31450
31451 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
31452 void ( STDMETHODCALLTYPE *ClearState )(
31453 ID3D12GraphicsCommandList5 * This,
31454 _In_opt_ ID3D12PipelineState *pPipelineState);
31455
31456 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
31457 void ( STDMETHODCALLTYPE *DrawInstanced )(
31458 ID3D12GraphicsCommandList5 * This,
31459 _In_ UINT VertexCountPerInstance,
31460 _In_ UINT InstanceCount,
31461 _In_ UINT StartVertexLocation,
31462 _In_ UINT StartInstanceLocation);
31463
31464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
31465 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
31466 ID3D12GraphicsCommandList5 * This,
31467 _In_ UINT IndexCountPerInstance,
31468 _In_ UINT InstanceCount,
31469 _In_ UINT StartIndexLocation,
31470 _In_ INT BaseVertexLocation,
31471 _In_ UINT StartInstanceLocation);
31472
31473 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
31474 void ( STDMETHODCALLTYPE *Dispatch )(
31475 ID3D12GraphicsCommandList5 * This,
31476 _In_ UINT ThreadGroupCountX,
31477 _In_ UINT ThreadGroupCountY,
31478 _In_ UINT ThreadGroupCountZ);
31479
31480 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
31481 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
31482 ID3D12GraphicsCommandList5 * This,
31483 _In_ ID3D12Resource *pDstBuffer,
31484 UINT64 DstOffset,
31485 _In_ ID3D12Resource *pSrcBuffer,
31486 UINT64 SrcOffset,
31487 UINT64 NumBytes);
31488
31489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
31490 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
31491 ID3D12GraphicsCommandList5 * This,
31492 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
31493 UINT DstX,
31494 UINT DstY,
31495 UINT DstZ,
31496 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
31497 _In_opt_ const D3D12_BOX *pSrcBox);
31498
31499 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
31500 void ( STDMETHODCALLTYPE *CopyResource )(
31501 ID3D12GraphicsCommandList5 * This,
31502 _In_ ID3D12Resource *pDstResource,
31503 _In_ ID3D12Resource *pSrcResource);
31504
31505 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
31506 void ( STDMETHODCALLTYPE *CopyTiles )(
31507 ID3D12GraphicsCommandList5 * This,
31508 _In_ ID3D12Resource *pTiledResource,
31509 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
31510 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
31511 _In_ ID3D12Resource *pBuffer,
31512 UINT64 BufferStartOffsetInBytes,
31513 D3D12_TILE_COPY_FLAGS Flags);
31514
31515 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
31516 void ( STDMETHODCALLTYPE *ResolveSubresource )(
31517 ID3D12GraphicsCommandList5 * This,
31518 _In_ ID3D12Resource *pDstResource,
31519 _In_ UINT DstSubresource,
31520 _In_ ID3D12Resource *pSrcResource,
31521 _In_ UINT SrcSubresource,
31522 _In_ DXGI_FORMAT Format);
31523
31524 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
31525 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
31526 ID3D12GraphicsCommandList5 * This,
31527 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
31528
31529 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
31530 void ( STDMETHODCALLTYPE *RSSetViewports )(
31531 ID3D12GraphicsCommandList5 * This,
31532 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
31533 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
31534
31535 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
31536 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
31537 ID3D12GraphicsCommandList5 * This,
31538 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
31539 _In_reads_( NumRects) const D3D12_RECT *pRects);
31540
31541 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
31542 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
31543 ID3D12GraphicsCommandList5 * This,
31544 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
31545
31546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
31547 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
31548 ID3D12GraphicsCommandList5 * This,
31549 _In_ UINT StencilRef);
31550
31551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
31552 void ( STDMETHODCALLTYPE *SetPipelineState )(
31553 ID3D12GraphicsCommandList5 * This,
31554 _In_ ID3D12PipelineState *pPipelineState);
31555
31556 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
31557 void ( STDMETHODCALLTYPE *ResourceBarrier )(
31558 ID3D12GraphicsCommandList5 * This,
31559 _In_ UINT NumBarriers,
31560 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
31561
31562 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
31563 void ( STDMETHODCALLTYPE *ExecuteBundle )(
31564 ID3D12GraphicsCommandList5 * This,
31565 _In_ ID3D12GraphicsCommandList *pCommandList);
31566
31567 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
31568 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
31569 ID3D12GraphicsCommandList5 * This,
31570 _In_ UINT NumDescriptorHeaps,
31571 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
31572
31573 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
31574 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
31575 ID3D12GraphicsCommandList5 * This,
31576 _In_opt_ ID3D12RootSignature *pRootSignature);
31577
31578 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
31579 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
31580 ID3D12GraphicsCommandList5 * This,
31581 _In_opt_ ID3D12RootSignature *pRootSignature);
31582
31583 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
31584 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
31585 ID3D12GraphicsCommandList5 * This,
31586 _In_ UINT RootParameterIndex,
31587 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
31588
31589 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
31590 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
31591 ID3D12GraphicsCommandList5 * This,
31592 _In_ UINT RootParameterIndex,
31593 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
31594
31595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
31596 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
31597 ID3D12GraphicsCommandList5 * This,
31598 _In_ UINT RootParameterIndex,
31599 _In_ UINT SrcData,
31600 _In_ UINT DestOffsetIn32BitValues);
31601
31602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
31603 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
31604 ID3D12GraphicsCommandList5 * This,
31605 _In_ UINT RootParameterIndex,
31606 _In_ UINT SrcData,
31607 _In_ UINT DestOffsetIn32BitValues);
31608
31609 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
31610 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
31611 ID3D12GraphicsCommandList5 * This,
31612 _In_ UINT RootParameterIndex,
31613 _In_ UINT Num32BitValuesToSet,
31614 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
31615 _In_ UINT DestOffsetIn32BitValues);
31616
31617 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
31618 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
31619 ID3D12GraphicsCommandList5 * This,
31620 _In_ UINT RootParameterIndex,
31621 _In_ UINT Num32BitValuesToSet,
31622 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
31623 _In_ UINT DestOffsetIn32BitValues);
31624
31625 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
31626 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
31627 ID3D12GraphicsCommandList5 * This,
31628 _In_ UINT RootParameterIndex,
31629 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31630
31631 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
31632 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
31633 ID3D12GraphicsCommandList5 * This,
31634 _In_ UINT RootParameterIndex,
31635 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31636
31637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
31638 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
31639 ID3D12GraphicsCommandList5 * This,
31640 _In_ UINT RootParameterIndex,
31641 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31642
31643 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
31644 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
31645 ID3D12GraphicsCommandList5 * This,
31646 _In_ UINT RootParameterIndex,
31647 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31648
31649 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
31650 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
31651 ID3D12GraphicsCommandList5 * This,
31652 _In_ UINT RootParameterIndex,
31653 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31654
31655 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
31656 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
31657 ID3D12GraphicsCommandList5 * This,
31658 _In_ UINT RootParameterIndex,
31659 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31660
31661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
31662 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
31663 ID3D12GraphicsCommandList5 * This,
31664 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
31665
31666 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
31667 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
31668 ID3D12GraphicsCommandList5 * This,
31669 _In_ UINT StartSlot,
31670 _In_ UINT NumViews,
31671 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
31672
31673 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
31674 void ( STDMETHODCALLTYPE *SOSetTargets )(
31675 ID3D12GraphicsCommandList5 * This,
31676 _In_ UINT StartSlot,
31677 _In_ UINT NumViews,
31678 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
31679
31680 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
31681 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
31682 ID3D12GraphicsCommandList5 * This,
31683 _In_ UINT NumRenderTargetDescriptors,
31684 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
31685 _In_ BOOL RTsSingleHandleToDescriptorRange,
31686 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
31687
31688 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
31689 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
31690 ID3D12GraphicsCommandList5 * This,
31691 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
31692 _In_ D3D12_CLEAR_FLAGS ClearFlags,
31693 _In_ FLOAT Depth,
31694 _In_ UINT8 Stencil,
31695 _In_ UINT NumRects,
31696 _In_reads_(NumRects) const D3D12_RECT *pRects);
31697
31698 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
31699 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
31700 ID3D12GraphicsCommandList5 * This,
31701 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
31702 _In_ const FLOAT ColorRGBA[ 4 ],
31703 _In_ UINT NumRects,
31704 _In_reads_(NumRects) const D3D12_RECT *pRects);
31705
31706 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
31707 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
31708 ID3D12GraphicsCommandList5 * This,
31709 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
31710 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
31711 _In_ ID3D12Resource *pResource,
31712 _In_ const UINT Values[ 4 ],
31713 _In_ UINT NumRects,
31714 _In_reads_(NumRects) const D3D12_RECT *pRects);
31715
31716 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
31717 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
31718 ID3D12GraphicsCommandList5 * This,
31719 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
31720 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
31721 _In_ ID3D12Resource *pResource,
31722 _In_ const FLOAT Values[ 4 ],
31723 _In_ UINT NumRects,
31724 _In_reads_(NumRects) const D3D12_RECT *pRects);
31725
31726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
31727 void ( STDMETHODCALLTYPE *DiscardResource )(
31728 ID3D12GraphicsCommandList5 * This,
31729 _In_ ID3D12Resource *pResource,
31730 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
31731
31732 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
31733 void ( STDMETHODCALLTYPE *BeginQuery )(
31734 ID3D12GraphicsCommandList5 * This,
31735 _In_ ID3D12QueryHeap *pQueryHeap,
31736 _In_ D3D12_QUERY_TYPE Type,
31737 _In_ UINT Index);
31738
31739 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
31740 void ( STDMETHODCALLTYPE *EndQuery )(
31741 ID3D12GraphicsCommandList5 * This,
31742 _In_ ID3D12QueryHeap *pQueryHeap,
31743 _In_ D3D12_QUERY_TYPE Type,
31744 _In_ UINT Index);
31745
31746 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
31747 void ( STDMETHODCALLTYPE *ResolveQueryData )(
31748 ID3D12GraphicsCommandList5 * This,
31749 _In_ ID3D12QueryHeap *pQueryHeap,
31750 _In_ D3D12_QUERY_TYPE Type,
31751 _In_ UINT StartIndex,
31752 _In_ UINT NumQueries,
31753 _In_ ID3D12Resource *pDestinationBuffer,
31754 _In_ UINT64 AlignedDestinationBufferOffset);
31755
31756 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
31757 void ( STDMETHODCALLTYPE *SetPredication )(
31758 ID3D12GraphicsCommandList5 * This,
31759 _In_opt_ ID3D12Resource *pBuffer,
31760 _In_ UINT64 AlignedBufferOffset,
31761 _In_ D3D12_PREDICATION_OP Operation);
31762
31763 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
31764 void ( STDMETHODCALLTYPE *SetMarker )(
31765 ID3D12GraphicsCommandList5 * This,
31766 UINT Metadata,
31767 _In_reads_bytes_opt_(Size) const void *pData,
31768 UINT Size);
31769
31770 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
31771 void ( STDMETHODCALLTYPE *BeginEvent )(
31772 ID3D12GraphicsCommandList5 * This,
31773 UINT Metadata,
31774 _In_reads_bytes_opt_(Size) const void *pData,
31775 UINT Size);
31776
31777 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
31778 void ( STDMETHODCALLTYPE *EndEvent )(
31779 ID3D12GraphicsCommandList5 * This);
31780
31781 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
31782 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
31783 ID3D12GraphicsCommandList5 * This,
31784 _In_ ID3D12CommandSignature *pCommandSignature,
31785 _In_ UINT MaxCommandCount,
31786 _In_ ID3D12Resource *pArgumentBuffer,
31787 _In_ UINT64 ArgumentBufferOffset,
31788 _In_opt_ ID3D12Resource *pCountBuffer,
31789 _In_ UINT64 CountBufferOffset);
31790
31791 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
31792 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
31793 ID3D12GraphicsCommandList5 * This,
31794 _In_ ID3D12Resource *pDstBuffer,
31795 UINT64 DstOffset,
31796 _In_ ID3D12Resource *pSrcBuffer,
31797 UINT64 SrcOffset,
31798 UINT Dependencies,
31799 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
31800 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
31801
31802 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
31803 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
31804 ID3D12GraphicsCommandList5 * This,
31805 _In_ ID3D12Resource *pDstBuffer,
31806 UINT64 DstOffset,
31807 _In_ ID3D12Resource *pSrcBuffer,
31808 UINT64 SrcOffset,
31809 UINT Dependencies,
31810 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
31811 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
31812
31813 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
31814 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
31815 ID3D12GraphicsCommandList5 * This,
31816 _In_ FLOAT Min,
31817 _In_ FLOAT Max);
31818
31819 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
31820 void ( STDMETHODCALLTYPE *SetSamplePositions )(
31821 ID3D12GraphicsCommandList5 * This,
31822 _In_ UINT NumSamplesPerPixel,
31823 _In_ UINT NumPixels,
31824 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
31825
31826 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
31827 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
31828 ID3D12GraphicsCommandList5 * This,
31829 _In_ ID3D12Resource *pDstResource,
31830 _In_ UINT DstSubresource,
31831 _In_ UINT DstX,
31832 _In_ UINT DstY,
31833 _In_ ID3D12Resource *pSrcResource,
31834 _In_ UINT SrcSubresource,
31835 _In_opt_ D3D12_RECT *pSrcRect,
31836 _In_ DXGI_FORMAT Format,
31837 _In_ D3D12_RESOLVE_MODE ResolveMode);
31838
31839 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
31840 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
31841 ID3D12GraphicsCommandList5 * This,
31842 _In_ UINT Mask);
31843
31844 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
31845 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
31846 ID3D12GraphicsCommandList5 * This,
31847 UINT Count,
31848 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
31849 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
31850
31851 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
31852 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
31853 ID3D12GraphicsCommandList5 * This,
31854 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
31855
31856 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
31857 void ( STDMETHODCALLTYPE *BeginRenderPass )(
31858 ID3D12GraphicsCommandList5 * This,
31859 _In_ UINT NumRenderTargets,
31860 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
31861 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
31862 D3D12_RENDER_PASS_FLAGS Flags);
31863
31864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
31865 void ( STDMETHODCALLTYPE *EndRenderPass )(
31866 ID3D12GraphicsCommandList5 * This);
31867
31868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
31869 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
31870 ID3D12GraphicsCommandList5 * This,
31871 _In_ ID3D12MetaCommand *pMetaCommand,
31872 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
31873 _In_ SIZE_T InitializationParametersDataSizeInBytes);
31874
31875 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
31876 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
31877 ID3D12GraphicsCommandList5 * This,
31878 _In_ ID3D12MetaCommand *pMetaCommand,
31879 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
31880 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
31881
31882 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
31883 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
31884 ID3D12GraphicsCommandList5 * This,
31885 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
31886 _In_ UINT NumPostbuildInfoDescs,
31887 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
31888
31889 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
31890 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
31891 ID3D12GraphicsCommandList5 * This,
31892 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
31893 _In_ UINT NumSourceAccelerationStructures,
31894 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
31895
31896 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
31897 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
31898 ID3D12GraphicsCommandList5 * This,
31899 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
31900 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
31901 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
31902
31903 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
31904 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
31905 ID3D12GraphicsCommandList5 * This,
31906 _In_ ID3D12StateObject *pStateObject);
31907
31908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
31909 void ( STDMETHODCALLTYPE *DispatchRays )(
31910 ID3D12GraphicsCommandList5 * This,
31911 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
31912
31913 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
31914 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
31915 ID3D12GraphicsCommandList5 * This,
31916 _In_ D3D12_SHADING_RATE baseShadingRate,
31917 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
31918
31919 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
31920 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
31921 ID3D12GraphicsCommandList5 * This,
31922 _In_opt_ ID3D12Resource *shadingRateImage);
31923
31924 END_INTERFACE
31925 } ID3D12GraphicsCommandList5Vtbl;
31926
31927 interface ID3D12GraphicsCommandList5
31928 {
31929 CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl;
31930 };
31931
31932
31933
31934#ifdef COBJMACROS
31935
31936
31937#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \
31938 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31939
31940#define ID3D12GraphicsCommandList5_AddRef(This) \
31941 ( (This)->lpVtbl -> AddRef(This) )
31942
31943#define ID3D12GraphicsCommandList5_Release(This) \
31944 ( (This)->lpVtbl -> Release(This) )
31945
31946
31947#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \
31948 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
31949
31950#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \
31951 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
31952
31953#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \
31954 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
31955
31956#define ID3D12GraphicsCommandList5_SetName(This,Name) \
31957 ( (This)->lpVtbl -> SetName(This,Name) )
31958
31959
31960#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \
31961 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
31962
31963
31964#define ID3D12GraphicsCommandList5_GetType(This) \
31965 ( (This)->lpVtbl -> GetType(This) )
31966
31967
31968#define ID3D12GraphicsCommandList5_Close(This) \
31969 ( (This)->lpVtbl -> Close(This) )
31970
31971#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \
31972 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
31973
31974#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \
31975 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
31976
31977#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
31978 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
31979
31980#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
31981 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
31982
31983#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
31984 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
31985
31986#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
31987 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
31988
31989#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
31990 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
31991
31992#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \
31993 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
31994
31995#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
31996 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
31997
31998#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
31999 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
32000
32001#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \
32002 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
32003
32004#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \
32005 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
32006
32007#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \
32008 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
32009
32010#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \
32011 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
32012
32013#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \
32014 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
32015
32016#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \
32017 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
32018
32019#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \
32020 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
32021
32022#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \
32023 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
32024
32025#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
32026 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
32027
32028#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \
32029 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
32030
32031#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \
32032 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
32033
32034#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32035 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32036
32037#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32038 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32039
32040#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32041 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32042
32043#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32044 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32045
32046#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32047 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32048
32049#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32050 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32051
32052#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32053 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32054
32055#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32056 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32057
32058#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32059 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32060
32061#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32062 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32063
32064#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32065 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32066
32067#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32068 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32069
32070#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \
32071 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
32072
32073#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
32074 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
32075
32076#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \
32077 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
32078
32079#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
32080 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
32081
32082#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
32083 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
32084
32085#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
32086 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
32087
32088#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32089 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32090
32091#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32092 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32093
32094#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \
32095 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
32096
32097#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \
32098 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
32099
32100#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \
32101 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
32102
32103#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
32104 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
32105
32106#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
32107 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
32108
32109#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \
32110 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
32111
32112#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \
32113 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
32114
32115#define ID3D12GraphicsCommandList5_EndEvent(This) \
32116 ( (This)->lpVtbl -> EndEvent(This) )
32117
32118#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
32119 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
32120
32121
32122#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32123 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32124
32125#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32126 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32127
32128#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \
32129 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
32130
32131#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
32132 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
32133
32134#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
32135 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
32136
32137#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \
32138 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
32139
32140
32141#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \
32142 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
32143
32144
32145#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \
32146 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
32147
32148
32149#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
32150 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
32151
32152#define ID3D12GraphicsCommandList5_EndRenderPass(This) \
32153 ( (This)->lpVtbl -> EndRenderPass(This) )
32154
32155#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
32156 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
32157
32158#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
32159 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
32160
32161#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
32162 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
32163
32164#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
32165 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
32166
32167#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
32168 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
32169
32170#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \
32171 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
32172
32173#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \
32174 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
32175
32176
32177#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \
32178 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
32179
32180#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \
32181 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
32182
32183#endif /* COBJMACROS */
32184
32185
32186#endif /* C style interface */
32187
32188
32189
32190
32191#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
32192
32193
32194/* interface __MIDL_itf_d3d12_0000_0078 */
32195/* [local] */
32196
32197typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
32198 {
32199 UINT ThreadGroupCountX;
32200 UINT ThreadGroupCountY;
32201 UINT ThreadGroupCountZ;
32202 } D3D12_DISPATCH_MESH_ARGUMENTS;
32203
32204
32205
32206extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_c_ifspec;
32207extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_s_ifspec;
32208
32209#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
32210#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
32211
32212/* interface ID3D12GraphicsCommandList6 */
32213/* [unique][local][object][uuid] */
32214
32215
32216EXTERN_C const IID IID_ID3D12GraphicsCommandList6;
32217
32218#if defined(__cplusplus) && !defined(CINTERFACE)
32219
32220 MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
32221 ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
32222 {
32223 public:
32224 virtual void STDMETHODCALLTYPE DispatchMesh(
32225 _In_ UINT ThreadGroupCountX,
32226 _In_ UINT ThreadGroupCountY,
32227 _In_ UINT ThreadGroupCountZ) = 0;
32228
32229 };
32230
32231
32232#else /* C style interface */
32233
32234 typedef struct ID3D12GraphicsCommandList6Vtbl
32235 {
32236 BEGIN_INTERFACE
32237
32238 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
32239 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
32240 ID3D12GraphicsCommandList6 * This,
32241 REFIID riid,
32242 _COM_Outptr_ void **ppvObject);
32243
32244 DECLSPEC_XFGVIRT(IUnknown, AddRef)
32245 ULONG ( STDMETHODCALLTYPE *AddRef )(
32246 ID3D12GraphicsCommandList6 * This);
32247
32248 DECLSPEC_XFGVIRT(IUnknown, Release)
32249 ULONG ( STDMETHODCALLTYPE *Release )(
32250 ID3D12GraphicsCommandList6 * This);
32251
32252 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
32253 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
32254 ID3D12GraphicsCommandList6 * This,
32255 _In_ REFGUID guid,
32256 _Inout_ UINT *pDataSize,
32257 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
32258
32259 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
32260 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
32261 ID3D12GraphicsCommandList6 * This,
32262 _In_ REFGUID guid,
32263 _In_ UINT DataSize,
32264 _In_reads_bytes_opt_( DataSize ) const void *pData);
32265
32266 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
32267 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
32268 ID3D12GraphicsCommandList6 * This,
32269 _In_ REFGUID guid,
32270 _In_opt_ const IUnknown *pData);
32271
32272 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
32273 HRESULT ( STDMETHODCALLTYPE *SetName )(
32274 ID3D12GraphicsCommandList6 * This,
32275 _In_z_ LPCWSTR Name);
32276
32277 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
32278 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
32279 ID3D12GraphicsCommandList6 * This,
32280 REFIID riid,
32281 _COM_Outptr_opt_ void **ppvDevice);
32282
32283 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
32284 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
32285 ID3D12GraphicsCommandList6 * This);
32286
32287 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
32288 HRESULT ( STDMETHODCALLTYPE *Close )(
32289 ID3D12GraphicsCommandList6 * This);
32290
32291 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
32292 HRESULT ( STDMETHODCALLTYPE *Reset )(
32293 ID3D12GraphicsCommandList6 * This,
32294 _In_ ID3D12CommandAllocator *pAllocator,
32295 _In_opt_ ID3D12PipelineState *pInitialState);
32296
32297 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
32298 void ( STDMETHODCALLTYPE *ClearState )(
32299 ID3D12GraphicsCommandList6 * This,
32300 _In_opt_ ID3D12PipelineState *pPipelineState);
32301
32302 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
32303 void ( STDMETHODCALLTYPE *DrawInstanced )(
32304 ID3D12GraphicsCommandList6 * This,
32305 _In_ UINT VertexCountPerInstance,
32306 _In_ UINT InstanceCount,
32307 _In_ UINT StartVertexLocation,
32308 _In_ UINT StartInstanceLocation);
32309
32310 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
32311 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
32312 ID3D12GraphicsCommandList6 * This,
32313 _In_ UINT IndexCountPerInstance,
32314 _In_ UINT InstanceCount,
32315 _In_ UINT StartIndexLocation,
32316 _In_ INT BaseVertexLocation,
32317 _In_ UINT StartInstanceLocation);
32318
32319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
32320 void ( STDMETHODCALLTYPE *Dispatch )(
32321 ID3D12GraphicsCommandList6 * This,
32322 _In_ UINT ThreadGroupCountX,
32323 _In_ UINT ThreadGroupCountY,
32324 _In_ UINT ThreadGroupCountZ);
32325
32326 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
32327 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
32328 ID3D12GraphicsCommandList6 * This,
32329 _In_ ID3D12Resource *pDstBuffer,
32330 UINT64 DstOffset,
32331 _In_ ID3D12Resource *pSrcBuffer,
32332 UINT64 SrcOffset,
32333 UINT64 NumBytes);
32334
32335 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
32336 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
32337 ID3D12GraphicsCommandList6 * This,
32338 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
32339 UINT DstX,
32340 UINT DstY,
32341 UINT DstZ,
32342 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
32343 _In_opt_ const D3D12_BOX *pSrcBox);
32344
32345 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
32346 void ( STDMETHODCALLTYPE *CopyResource )(
32347 ID3D12GraphicsCommandList6 * This,
32348 _In_ ID3D12Resource *pDstResource,
32349 _In_ ID3D12Resource *pSrcResource);
32350
32351 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
32352 void ( STDMETHODCALLTYPE *CopyTiles )(
32353 ID3D12GraphicsCommandList6 * This,
32354 _In_ ID3D12Resource *pTiledResource,
32355 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
32356 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
32357 _In_ ID3D12Resource *pBuffer,
32358 UINT64 BufferStartOffsetInBytes,
32359 D3D12_TILE_COPY_FLAGS Flags);
32360
32361 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
32362 void ( STDMETHODCALLTYPE *ResolveSubresource )(
32363 ID3D12GraphicsCommandList6 * This,
32364 _In_ ID3D12Resource *pDstResource,
32365 _In_ UINT DstSubresource,
32366 _In_ ID3D12Resource *pSrcResource,
32367 _In_ UINT SrcSubresource,
32368 _In_ DXGI_FORMAT Format);
32369
32370 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
32371 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
32372 ID3D12GraphicsCommandList6 * This,
32373 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
32374
32375 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
32376 void ( STDMETHODCALLTYPE *RSSetViewports )(
32377 ID3D12GraphicsCommandList6 * This,
32378 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
32379 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
32380
32381 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
32382 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
32383 ID3D12GraphicsCommandList6 * This,
32384 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
32385 _In_reads_( NumRects) const D3D12_RECT *pRects);
32386
32387 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
32388 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
32389 ID3D12GraphicsCommandList6 * This,
32390 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
32391
32392 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
32393 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
32394 ID3D12GraphicsCommandList6 * This,
32395 _In_ UINT StencilRef);
32396
32397 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
32398 void ( STDMETHODCALLTYPE *SetPipelineState )(
32399 ID3D12GraphicsCommandList6 * This,
32400 _In_ ID3D12PipelineState *pPipelineState);
32401
32402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
32403 void ( STDMETHODCALLTYPE *ResourceBarrier )(
32404 ID3D12GraphicsCommandList6 * This,
32405 _In_ UINT NumBarriers,
32406 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
32407
32408 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
32409 void ( STDMETHODCALLTYPE *ExecuteBundle )(
32410 ID3D12GraphicsCommandList6 * This,
32411 _In_ ID3D12GraphicsCommandList *pCommandList);
32412
32413 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
32414 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
32415 ID3D12GraphicsCommandList6 * This,
32416 _In_ UINT NumDescriptorHeaps,
32417 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
32418
32419 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
32420 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
32421 ID3D12GraphicsCommandList6 * This,
32422 _In_opt_ ID3D12RootSignature *pRootSignature);
32423
32424 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
32425 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
32426 ID3D12GraphicsCommandList6 * This,
32427 _In_opt_ ID3D12RootSignature *pRootSignature);
32428
32429 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
32430 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
32431 ID3D12GraphicsCommandList6 * This,
32432 _In_ UINT RootParameterIndex,
32433 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
32434
32435 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
32436 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
32437 ID3D12GraphicsCommandList6 * This,
32438 _In_ UINT RootParameterIndex,
32439 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
32440
32441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
32442 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
32443 ID3D12GraphicsCommandList6 * This,
32444 _In_ UINT RootParameterIndex,
32445 _In_ UINT SrcData,
32446 _In_ UINT DestOffsetIn32BitValues);
32447
32448 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
32449 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
32450 ID3D12GraphicsCommandList6 * This,
32451 _In_ UINT RootParameterIndex,
32452 _In_ UINT SrcData,
32453 _In_ UINT DestOffsetIn32BitValues);
32454
32455 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
32456 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
32457 ID3D12GraphicsCommandList6 * This,
32458 _In_ UINT RootParameterIndex,
32459 _In_ UINT Num32BitValuesToSet,
32460 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
32461 _In_ UINT DestOffsetIn32BitValues);
32462
32463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
32464 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
32465 ID3D12GraphicsCommandList6 * This,
32466 _In_ UINT RootParameterIndex,
32467 _In_ UINT Num32BitValuesToSet,
32468 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
32469 _In_ UINT DestOffsetIn32BitValues);
32470
32471 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
32472 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
32473 ID3D12GraphicsCommandList6 * This,
32474 _In_ UINT RootParameterIndex,
32475 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32476
32477 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
32478 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
32479 ID3D12GraphicsCommandList6 * This,
32480 _In_ UINT RootParameterIndex,
32481 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32482
32483 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
32484 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
32485 ID3D12GraphicsCommandList6 * This,
32486 _In_ UINT RootParameterIndex,
32487 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32488
32489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
32490 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
32491 ID3D12GraphicsCommandList6 * This,
32492 _In_ UINT RootParameterIndex,
32493 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32494
32495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
32496 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
32497 ID3D12GraphicsCommandList6 * This,
32498 _In_ UINT RootParameterIndex,
32499 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32500
32501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
32502 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
32503 ID3D12GraphicsCommandList6 * This,
32504 _In_ UINT RootParameterIndex,
32505 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32506
32507 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
32508 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
32509 ID3D12GraphicsCommandList6 * This,
32510 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
32511
32512 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
32513 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
32514 ID3D12GraphicsCommandList6 * This,
32515 _In_ UINT StartSlot,
32516 _In_ UINT NumViews,
32517 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
32518
32519 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
32520 void ( STDMETHODCALLTYPE *SOSetTargets )(
32521 ID3D12GraphicsCommandList6 * This,
32522 _In_ UINT StartSlot,
32523 _In_ UINT NumViews,
32524 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
32525
32526 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
32527 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
32528 ID3D12GraphicsCommandList6 * This,
32529 _In_ UINT NumRenderTargetDescriptors,
32530 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
32531 _In_ BOOL RTsSingleHandleToDescriptorRange,
32532 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
32533
32534 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
32535 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
32536 ID3D12GraphicsCommandList6 * This,
32537 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
32538 _In_ D3D12_CLEAR_FLAGS ClearFlags,
32539 _In_ FLOAT Depth,
32540 _In_ UINT8 Stencil,
32541 _In_ UINT NumRects,
32542 _In_reads_(NumRects) const D3D12_RECT *pRects);
32543
32544 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
32545 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
32546 ID3D12GraphicsCommandList6 * This,
32547 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
32548 _In_ const FLOAT ColorRGBA[ 4 ],
32549 _In_ UINT NumRects,
32550 _In_reads_(NumRects) const D3D12_RECT *pRects);
32551
32552 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
32553 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
32554 ID3D12GraphicsCommandList6 * This,
32555 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
32556 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
32557 _In_ ID3D12Resource *pResource,
32558 _In_ const UINT Values[ 4 ],
32559 _In_ UINT NumRects,
32560 _In_reads_(NumRects) const D3D12_RECT *pRects);
32561
32562 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
32563 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
32564 ID3D12GraphicsCommandList6 * This,
32565 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
32566 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
32567 _In_ ID3D12Resource *pResource,
32568 _In_ const FLOAT Values[ 4 ],
32569 _In_ UINT NumRects,
32570 _In_reads_(NumRects) const D3D12_RECT *pRects);
32571
32572 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
32573 void ( STDMETHODCALLTYPE *DiscardResource )(
32574 ID3D12GraphicsCommandList6 * This,
32575 _In_ ID3D12Resource *pResource,
32576 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
32577
32578 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
32579 void ( STDMETHODCALLTYPE *BeginQuery )(
32580 ID3D12GraphicsCommandList6 * This,
32581 _In_ ID3D12QueryHeap *pQueryHeap,
32582 _In_ D3D12_QUERY_TYPE Type,
32583 _In_ UINT Index);
32584
32585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
32586 void ( STDMETHODCALLTYPE *EndQuery )(
32587 ID3D12GraphicsCommandList6 * This,
32588 _In_ ID3D12QueryHeap *pQueryHeap,
32589 _In_ D3D12_QUERY_TYPE Type,
32590 _In_ UINT Index);
32591
32592 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
32593 void ( STDMETHODCALLTYPE *ResolveQueryData )(
32594 ID3D12GraphicsCommandList6 * This,
32595 _In_ ID3D12QueryHeap *pQueryHeap,
32596 _In_ D3D12_QUERY_TYPE Type,
32597 _In_ UINT StartIndex,
32598 _In_ UINT NumQueries,
32599 _In_ ID3D12Resource *pDestinationBuffer,
32600 _In_ UINT64 AlignedDestinationBufferOffset);
32601
32602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
32603 void ( STDMETHODCALLTYPE *SetPredication )(
32604 ID3D12GraphicsCommandList6 * This,
32605 _In_opt_ ID3D12Resource *pBuffer,
32606 _In_ UINT64 AlignedBufferOffset,
32607 _In_ D3D12_PREDICATION_OP Operation);
32608
32609 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
32610 void ( STDMETHODCALLTYPE *SetMarker )(
32611 ID3D12GraphicsCommandList6 * This,
32612 UINT Metadata,
32613 _In_reads_bytes_opt_(Size) const void *pData,
32614 UINT Size);
32615
32616 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
32617 void ( STDMETHODCALLTYPE *BeginEvent )(
32618 ID3D12GraphicsCommandList6 * This,
32619 UINT Metadata,
32620 _In_reads_bytes_opt_(Size) const void *pData,
32621 UINT Size);
32622
32623 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
32624 void ( STDMETHODCALLTYPE *EndEvent )(
32625 ID3D12GraphicsCommandList6 * This);
32626
32627 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
32628 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
32629 ID3D12GraphicsCommandList6 * This,
32630 _In_ ID3D12CommandSignature *pCommandSignature,
32631 _In_ UINT MaxCommandCount,
32632 _In_ ID3D12Resource *pArgumentBuffer,
32633 _In_ UINT64 ArgumentBufferOffset,
32634 _In_opt_ ID3D12Resource *pCountBuffer,
32635 _In_ UINT64 CountBufferOffset);
32636
32637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
32638 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
32639 ID3D12GraphicsCommandList6 * This,
32640 _In_ ID3D12Resource *pDstBuffer,
32641 UINT64 DstOffset,
32642 _In_ ID3D12Resource *pSrcBuffer,
32643 UINT64 SrcOffset,
32644 UINT Dependencies,
32645 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
32646 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
32647
32648 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
32649 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
32650 ID3D12GraphicsCommandList6 * This,
32651 _In_ ID3D12Resource *pDstBuffer,
32652 UINT64 DstOffset,
32653 _In_ ID3D12Resource *pSrcBuffer,
32654 UINT64 SrcOffset,
32655 UINT Dependencies,
32656 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
32657 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
32658
32659 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
32660 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
32661 ID3D12GraphicsCommandList6 * This,
32662 _In_ FLOAT Min,
32663 _In_ FLOAT Max);
32664
32665 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
32666 void ( STDMETHODCALLTYPE *SetSamplePositions )(
32667 ID3D12GraphicsCommandList6 * This,
32668 _In_ UINT NumSamplesPerPixel,
32669 _In_ UINT NumPixels,
32670 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
32671
32672 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
32673 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
32674 ID3D12GraphicsCommandList6 * This,
32675 _In_ ID3D12Resource *pDstResource,
32676 _In_ UINT DstSubresource,
32677 _In_ UINT DstX,
32678 _In_ UINT DstY,
32679 _In_ ID3D12Resource *pSrcResource,
32680 _In_ UINT SrcSubresource,
32681 _In_opt_ D3D12_RECT *pSrcRect,
32682 _In_ DXGI_FORMAT Format,
32683 _In_ D3D12_RESOLVE_MODE ResolveMode);
32684
32685 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
32686 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
32687 ID3D12GraphicsCommandList6 * This,
32688 _In_ UINT Mask);
32689
32690 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
32691 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
32692 ID3D12GraphicsCommandList6 * This,
32693 UINT Count,
32694 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
32695 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
32696
32697 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
32698 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
32699 ID3D12GraphicsCommandList6 * This,
32700 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
32701
32702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
32703 void ( STDMETHODCALLTYPE *BeginRenderPass )(
32704 ID3D12GraphicsCommandList6 * This,
32705 _In_ UINT NumRenderTargets,
32706 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
32707 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
32708 D3D12_RENDER_PASS_FLAGS Flags);
32709
32710 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
32711 void ( STDMETHODCALLTYPE *EndRenderPass )(
32712 ID3D12GraphicsCommandList6 * This);
32713
32714 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
32715 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
32716 ID3D12GraphicsCommandList6 * This,
32717 _In_ ID3D12MetaCommand *pMetaCommand,
32718 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
32719 _In_ SIZE_T InitializationParametersDataSizeInBytes);
32720
32721 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
32722 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
32723 ID3D12GraphicsCommandList6 * This,
32724 _In_ ID3D12MetaCommand *pMetaCommand,
32725 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
32726 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
32727
32728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
32729 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
32730 ID3D12GraphicsCommandList6 * This,
32731 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
32732 _In_ UINT NumPostbuildInfoDescs,
32733 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
32734
32735 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
32736 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
32737 ID3D12GraphicsCommandList6 * This,
32738 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
32739 _In_ UINT NumSourceAccelerationStructures,
32740 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
32741
32742 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
32743 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
32744 ID3D12GraphicsCommandList6 * This,
32745 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
32746 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
32747 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
32748
32749 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
32750 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
32751 ID3D12GraphicsCommandList6 * This,
32752 _In_ ID3D12StateObject *pStateObject);
32753
32754 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
32755 void ( STDMETHODCALLTYPE *DispatchRays )(
32756 ID3D12GraphicsCommandList6 * This,
32757 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
32758
32759 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
32760 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
32761 ID3D12GraphicsCommandList6 * This,
32762 _In_ D3D12_SHADING_RATE baseShadingRate,
32763 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
32764
32765 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
32766 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
32767 ID3D12GraphicsCommandList6 * This,
32768 _In_opt_ ID3D12Resource *shadingRateImage);
32769
32770 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
32771 void ( STDMETHODCALLTYPE *DispatchMesh )(
32772 ID3D12GraphicsCommandList6 * This,
32773 _In_ UINT ThreadGroupCountX,
32774 _In_ UINT ThreadGroupCountY,
32775 _In_ UINT ThreadGroupCountZ);
32776
32777 END_INTERFACE
32778 } ID3D12GraphicsCommandList6Vtbl;
32779
32780 interface ID3D12GraphicsCommandList6
32781 {
32782 CONST_VTBL struct ID3D12GraphicsCommandList6Vtbl *lpVtbl;
32783 };
32784
32785
32786
32787#ifdef COBJMACROS
32788
32789
32790#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) \
32791 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
32792
32793#define ID3D12GraphicsCommandList6_AddRef(This) \
32794 ( (This)->lpVtbl -> AddRef(This) )
32795
32796#define ID3D12GraphicsCommandList6_Release(This) \
32797 ( (This)->lpVtbl -> Release(This) )
32798
32799
32800#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData) \
32801 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
32802
32803#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData) \
32804 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
32805
32806#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData) \
32807 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
32808
32809#define ID3D12GraphicsCommandList6_SetName(This,Name) \
32810 ( (This)->lpVtbl -> SetName(This,Name) )
32811
32812
32813#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice) \
32814 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
32815
32816
32817#define ID3D12GraphicsCommandList6_GetType(This) \
32818 ( (This)->lpVtbl -> GetType(This) )
32819
32820
32821#define ID3D12GraphicsCommandList6_Close(This) \
32822 ( (This)->lpVtbl -> Close(This) )
32823
32824#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState) \
32825 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
32826
32827#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState) \
32828 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
32829
32830#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
32831 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
32832
32833#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
32834 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
32835
32836#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
32837 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
32838
32839#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
32840 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
32841
32842#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
32843 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
32844
32845#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource) \
32846 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
32847
32848#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
32849 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
32850
32851#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
32852 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
32853
32854#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology) \
32855 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
32856
32857#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports) \
32858 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
32859
32860#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects) \
32861 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
32862
32863#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor) \
32864 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
32865
32866#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef) \
32867 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
32868
32869#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState) \
32870 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
32871
32872#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers) \
32873 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
32874
32875#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList) \
32876 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
32877
32878#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
32879 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
32880
32881#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature) \
32882 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
32883
32884#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature) \
32885 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
32886
32887#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32888 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32889
32890#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32891 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32892
32893#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32894 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32895
32896#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32897 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32898
32899#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32900 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32901
32902#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32903 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32904
32905#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32906 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32907
32908#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32909 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32910
32911#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32912 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32913
32914#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32915 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32916
32917#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32918 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32919
32920#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32921 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32922
32923#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView) \
32924 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
32925
32926#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
32927 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
32928
32929#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews) \
32930 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
32931
32932#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
32933 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
32934
32935#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
32936 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
32937
32938#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
32939 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
32940
32941#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32942 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32943
32944#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32945 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32946
32947#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion) \
32948 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
32949
32950#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index) \
32951 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
32952
32953#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index) \
32954 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
32955
32956#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
32957 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
32958
32959#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
32960 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
32961
32962#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size) \
32963 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
32964
32965#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size) \
32966 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
32967
32968#define ID3D12GraphicsCommandList6_EndEvent(This) \
32969 ( (This)->lpVtbl -> EndEvent(This) )
32970
32971#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
32972 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
32973
32974
32975#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32976 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32977
32978#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32979 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32980
32981#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max) \
32982 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
32983
32984#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
32985 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
32986
32987#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
32988 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
32989
32990#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask) \
32991 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
32992
32993
32994#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes) \
32995 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
32996
32997
32998#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession) \
32999 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
33000
33001
33002#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
33003 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
33004
33005#define ID3D12GraphicsCommandList6_EndRenderPass(This) \
33006 ( (This)->lpVtbl -> EndRenderPass(This) )
33007
33008#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
33009 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
33010
33011#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
33012 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
33013
33014#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
33015 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
33016
33017#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
33018 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
33019
33020#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
33021 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
33022
33023#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject) \
33024 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
33025
33026#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc) \
33027 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
33028
33029
33030#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners) \
33031 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
33032
33033#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage) \
33034 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
33035
33036
33037#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33038 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33039
33040#endif /* COBJMACROS */
33041
33042
33043#endif /* C style interface */
33044
33045
33046
33047
33048#endif /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
33049
33050
33051#ifndef __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
33052#define __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
33053
33054/* interface ID3D12GraphicsCommandList7 */
33055/* [unique][local][object][uuid] */
33056
33057
33058EXTERN_C const IID IID_ID3D12GraphicsCommandList7;
33059
33060#if defined(__cplusplus) && !defined(CINTERFACE)
33061
33062 MIDL_INTERFACE("dd171223-8b61-4769-90e3-160ccde4e2c1")
33063 ID3D12GraphicsCommandList7 : public ID3D12GraphicsCommandList6
33064 {
33065 public:
33066 virtual void STDMETHODCALLTYPE Barrier(
33067 UINT32 NumBarrierGroups,
33068 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
33069
33070 };
33071
33072
33073#else /* C style interface */
33074
33075 typedef struct ID3D12GraphicsCommandList7Vtbl
33076 {
33077 BEGIN_INTERFACE
33078
33079 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
33080 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
33081 ID3D12GraphicsCommandList7 * This,
33082 REFIID riid,
33083 _COM_Outptr_ void **ppvObject);
33084
33085 DECLSPEC_XFGVIRT(IUnknown, AddRef)
33086 ULONG ( STDMETHODCALLTYPE *AddRef )(
33087 ID3D12GraphicsCommandList7 * This);
33088
33089 DECLSPEC_XFGVIRT(IUnknown, Release)
33090 ULONG ( STDMETHODCALLTYPE *Release )(
33091 ID3D12GraphicsCommandList7 * This);
33092
33093 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
33094 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
33095 ID3D12GraphicsCommandList7 * This,
33096 _In_ REFGUID guid,
33097 _Inout_ UINT *pDataSize,
33098 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
33099
33100 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
33101 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
33102 ID3D12GraphicsCommandList7 * This,
33103 _In_ REFGUID guid,
33104 _In_ UINT DataSize,
33105 _In_reads_bytes_opt_( DataSize ) const void *pData);
33106
33107 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
33108 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
33109 ID3D12GraphicsCommandList7 * This,
33110 _In_ REFGUID guid,
33111 _In_opt_ const IUnknown *pData);
33112
33113 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
33114 HRESULT ( STDMETHODCALLTYPE *SetName )(
33115 ID3D12GraphicsCommandList7 * This,
33116 _In_z_ LPCWSTR Name);
33117
33118 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
33119 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
33120 ID3D12GraphicsCommandList7 * This,
33121 REFIID riid,
33122 _COM_Outptr_opt_ void **ppvDevice);
33123
33124 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
33125 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
33126 ID3D12GraphicsCommandList7 * This);
33127
33128 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
33129 HRESULT ( STDMETHODCALLTYPE *Close )(
33130 ID3D12GraphicsCommandList7 * This);
33131
33132 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
33133 HRESULT ( STDMETHODCALLTYPE *Reset )(
33134 ID3D12GraphicsCommandList7 * This,
33135 _In_ ID3D12CommandAllocator *pAllocator,
33136 _In_opt_ ID3D12PipelineState *pInitialState);
33137
33138 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
33139 void ( STDMETHODCALLTYPE *ClearState )(
33140 ID3D12GraphicsCommandList7 * This,
33141 _In_opt_ ID3D12PipelineState *pPipelineState);
33142
33143 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
33144 void ( STDMETHODCALLTYPE *DrawInstanced )(
33145 ID3D12GraphicsCommandList7 * This,
33146 _In_ UINT VertexCountPerInstance,
33147 _In_ UINT InstanceCount,
33148 _In_ UINT StartVertexLocation,
33149 _In_ UINT StartInstanceLocation);
33150
33151 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
33152 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
33153 ID3D12GraphicsCommandList7 * This,
33154 _In_ UINT IndexCountPerInstance,
33155 _In_ UINT InstanceCount,
33156 _In_ UINT StartIndexLocation,
33157 _In_ INT BaseVertexLocation,
33158 _In_ UINT StartInstanceLocation);
33159
33160 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
33161 void ( STDMETHODCALLTYPE *Dispatch )(
33162 ID3D12GraphicsCommandList7 * This,
33163 _In_ UINT ThreadGroupCountX,
33164 _In_ UINT ThreadGroupCountY,
33165 _In_ UINT ThreadGroupCountZ);
33166
33167 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
33168 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
33169 ID3D12GraphicsCommandList7 * This,
33170 _In_ ID3D12Resource *pDstBuffer,
33171 UINT64 DstOffset,
33172 _In_ ID3D12Resource *pSrcBuffer,
33173 UINT64 SrcOffset,
33174 UINT64 NumBytes);
33175
33176 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
33177 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
33178 ID3D12GraphicsCommandList7 * This,
33179 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
33180 UINT DstX,
33181 UINT DstY,
33182 UINT DstZ,
33183 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
33184 _In_opt_ const D3D12_BOX *pSrcBox);
33185
33186 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
33187 void ( STDMETHODCALLTYPE *CopyResource )(
33188 ID3D12GraphicsCommandList7 * This,
33189 _In_ ID3D12Resource *pDstResource,
33190 _In_ ID3D12Resource *pSrcResource);
33191
33192 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
33193 void ( STDMETHODCALLTYPE *CopyTiles )(
33194 ID3D12GraphicsCommandList7 * This,
33195 _In_ ID3D12Resource *pTiledResource,
33196 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
33197 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
33198 _In_ ID3D12Resource *pBuffer,
33199 UINT64 BufferStartOffsetInBytes,
33200 D3D12_TILE_COPY_FLAGS Flags);
33201
33202 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
33203 void ( STDMETHODCALLTYPE *ResolveSubresource )(
33204 ID3D12GraphicsCommandList7 * This,
33205 _In_ ID3D12Resource *pDstResource,
33206 _In_ UINT DstSubresource,
33207 _In_ ID3D12Resource *pSrcResource,
33208 _In_ UINT SrcSubresource,
33209 _In_ DXGI_FORMAT Format);
33210
33211 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
33212 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
33213 ID3D12GraphicsCommandList7 * This,
33214 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
33215
33216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
33217 void ( STDMETHODCALLTYPE *RSSetViewports )(
33218 ID3D12GraphicsCommandList7 * This,
33219 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
33220 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
33221
33222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
33223 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
33224 ID3D12GraphicsCommandList7 * This,
33225 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
33226 _In_reads_( NumRects) const D3D12_RECT *pRects);
33227
33228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
33229 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
33230 ID3D12GraphicsCommandList7 * This,
33231 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
33232
33233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
33234 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
33235 ID3D12GraphicsCommandList7 * This,
33236 _In_ UINT StencilRef);
33237
33238 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
33239 void ( STDMETHODCALLTYPE *SetPipelineState )(
33240 ID3D12GraphicsCommandList7 * This,
33241 _In_ ID3D12PipelineState *pPipelineState);
33242
33243 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
33244 void ( STDMETHODCALLTYPE *ResourceBarrier )(
33245 ID3D12GraphicsCommandList7 * This,
33246 _In_ UINT NumBarriers,
33247 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
33248
33249 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
33250 void ( STDMETHODCALLTYPE *ExecuteBundle )(
33251 ID3D12GraphicsCommandList7 * This,
33252 _In_ ID3D12GraphicsCommandList *pCommandList);
33253
33254 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
33255 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
33256 ID3D12GraphicsCommandList7 * This,
33257 _In_ UINT NumDescriptorHeaps,
33258 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
33259
33260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
33261 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
33262 ID3D12GraphicsCommandList7 * This,
33263 _In_opt_ ID3D12RootSignature *pRootSignature);
33264
33265 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
33266 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
33267 ID3D12GraphicsCommandList7 * This,
33268 _In_opt_ ID3D12RootSignature *pRootSignature);
33269
33270 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
33271 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
33272 ID3D12GraphicsCommandList7 * This,
33273 _In_ UINT RootParameterIndex,
33274 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
33275
33276 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
33277 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
33278 ID3D12GraphicsCommandList7 * This,
33279 _In_ UINT RootParameterIndex,
33280 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
33281
33282 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
33283 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
33284 ID3D12GraphicsCommandList7 * This,
33285 _In_ UINT RootParameterIndex,
33286 _In_ UINT SrcData,
33287 _In_ UINT DestOffsetIn32BitValues);
33288
33289 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
33290 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
33291 ID3D12GraphicsCommandList7 * This,
33292 _In_ UINT RootParameterIndex,
33293 _In_ UINT SrcData,
33294 _In_ UINT DestOffsetIn32BitValues);
33295
33296 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
33297 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
33298 ID3D12GraphicsCommandList7 * This,
33299 _In_ UINT RootParameterIndex,
33300 _In_ UINT Num32BitValuesToSet,
33301 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
33302 _In_ UINT DestOffsetIn32BitValues);
33303
33304 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
33305 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
33306 ID3D12GraphicsCommandList7 * This,
33307 _In_ UINT RootParameterIndex,
33308 _In_ UINT Num32BitValuesToSet,
33309 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
33310 _In_ UINT DestOffsetIn32BitValues);
33311
33312 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
33313 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
33314 ID3D12GraphicsCommandList7 * This,
33315 _In_ UINT RootParameterIndex,
33316 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33317
33318 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
33319 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
33320 ID3D12GraphicsCommandList7 * This,
33321 _In_ UINT RootParameterIndex,
33322 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33323
33324 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
33325 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
33326 ID3D12GraphicsCommandList7 * This,
33327 _In_ UINT RootParameterIndex,
33328 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33329
33330 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
33331 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
33332 ID3D12GraphicsCommandList7 * This,
33333 _In_ UINT RootParameterIndex,
33334 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33335
33336 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
33337 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
33338 ID3D12GraphicsCommandList7 * This,
33339 _In_ UINT RootParameterIndex,
33340 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33341
33342 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
33343 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
33344 ID3D12GraphicsCommandList7 * This,
33345 _In_ UINT RootParameterIndex,
33346 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33347
33348 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
33349 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
33350 ID3D12GraphicsCommandList7 * This,
33351 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
33352
33353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
33354 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
33355 ID3D12GraphicsCommandList7 * This,
33356 _In_ UINT StartSlot,
33357 _In_ UINT NumViews,
33358 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
33359
33360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
33361 void ( STDMETHODCALLTYPE *SOSetTargets )(
33362 ID3D12GraphicsCommandList7 * This,
33363 _In_ UINT StartSlot,
33364 _In_ UINT NumViews,
33365 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
33366
33367 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
33368 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
33369 ID3D12GraphicsCommandList7 * This,
33370 _In_ UINT NumRenderTargetDescriptors,
33371 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
33372 _In_ BOOL RTsSingleHandleToDescriptorRange,
33373 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
33374
33375 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
33376 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
33377 ID3D12GraphicsCommandList7 * This,
33378 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
33379 _In_ D3D12_CLEAR_FLAGS ClearFlags,
33380 _In_ FLOAT Depth,
33381 _In_ UINT8 Stencil,
33382 _In_ UINT NumRects,
33383 _In_reads_(NumRects) const D3D12_RECT *pRects);
33384
33385 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
33386 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
33387 ID3D12GraphicsCommandList7 * This,
33388 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
33389 _In_ const FLOAT ColorRGBA[ 4 ],
33390 _In_ UINT NumRects,
33391 _In_reads_(NumRects) const D3D12_RECT *pRects);
33392
33393 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
33394 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
33395 ID3D12GraphicsCommandList7 * This,
33396 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
33397 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
33398 _In_ ID3D12Resource *pResource,
33399 _In_ const UINT Values[ 4 ],
33400 _In_ UINT NumRects,
33401 _In_reads_(NumRects) const D3D12_RECT *pRects);
33402
33403 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
33404 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
33405 ID3D12GraphicsCommandList7 * This,
33406 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
33407 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
33408 _In_ ID3D12Resource *pResource,
33409 _In_ const FLOAT Values[ 4 ],
33410 _In_ UINT NumRects,
33411 _In_reads_(NumRects) const D3D12_RECT *pRects);
33412
33413 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
33414 void ( STDMETHODCALLTYPE *DiscardResource )(
33415 ID3D12GraphicsCommandList7 * This,
33416 _In_ ID3D12Resource *pResource,
33417 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
33418
33419 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
33420 void ( STDMETHODCALLTYPE *BeginQuery )(
33421 ID3D12GraphicsCommandList7 * This,
33422 _In_ ID3D12QueryHeap *pQueryHeap,
33423 _In_ D3D12_QUERY_TYPE Type,
33424 _In_ UINT Index);
33425
33426 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
33427 void ( STDMETHODCALLTYPE *EndQuery )(
33428 ID3D12GraphicsCommandList7 * This,
33429 _In_ ID3D12QueryHeap *pQueryHeap,
33430 _In_ D3D12_QUERY_TYPE Type,
33431 _In_ UINT Index);
33432
33433 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
33434 void ( STDMETHODCALLTYPE *ResolveQueryData )(
33435 ID3D12GraphicsCommandList7 * This,
33436 _In_ ID3D12QueryHeap *pQueryHeap,
33437 _In_ D3D12_QUERY_TYPE Type,
33438 _In_ UINT StartIndex,
33439 _In_ UINT NumQueries,
33440 _In_ ID3D12Resource *pDestinationBuffer,
33441 _In_ UINT64 AlignedDestinationBufferOffset);
33442
33443 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
33444 void ( STDMETHODCALLTYPE *SetPredication )(
33445 ID3D12GraphicsCommandList7 * This,
33446 _In_opt_ ID3D12Resource *pBuffer,
33447 _In_ UINT64 AlignedBufferOffset,
33448 _In_ D3D12_PREDICATION_OP Operation);
33449
33450 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
33451 void ( STDMETHODCALLTYPE *SetMarker )(
33452 ID3D12GraphicsCommandList7 * This,
33453 UINT Metadata,
33454 _In_reads_bytes_opt_(Size) const void *pData,
33455 UINT Size);
33456
33457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
33458 void ( STDMETHODCALLTYPE *BeginEvent )(
33459 ID3D12GraphicsCommandList7 * This,
33460 UINT Metadata,
33461 _In_reads_bytes_opt_(Size) const void *pData,
33462 UINT Size);
33463
33464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
33465 void ( STDMETHODCALLTYPE *EndEvent )(
33466 ID3D12GraphicsCommandList7 * This);
33467
33468 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
33469 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
33470 ID3D12GraphicsCommandList7 * This,
33471 _In_ ID3D12CommandSignature *pCommandSignature,
33472 _In_ UINT MaxCommandCount,
33473 _In_ ID3D12Resource *pArgumentBuffer,
33474 _In_ UINT64 ArgumentBufferOffset,
33475 _In_opt_ ID3D12Resource *pCountBuffer,
33476 _In_ UINT64 CountBufferOffset);
33477
33478 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
33479 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
33480 ID3D12GraphicsCommandList7 * This,
33481 _In_ ID3D12Resource *pDstBuffer,
33482 UINT64 DstOffset,
33483 _In_ ID3D12Resource *pSrcBuffer,
33484 UINT64 SrcOffset,
33485 UINT Dependencies,
33486 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
33487 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
33488
33489 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
33490 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
33491 ID3D12GraphicsCommandList7 * This,
33492 _In_ ID3D12Resource *pDstBuffer,
33493 UINT64 DstOffset,
33494 _In_ ID3D12Resource *pSrcBuffer,
33495 UINT64 SrcOffset,
33496 UINT Dependencies,
33497 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
33498 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
33499
33500 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
33501 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
33502 ID3D12GraphicsCommandList7 * This,
33503 _In_ FLOAT Min,
33504 _In_ FLOAT Max);
33505
33506 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
33507 void ( STDMETHODCALLTYPE *SetSamplePositions )(
33508 ID3D12GraphicsCommandList7 * This,
33509 _In_ UINT NumSamplesPerPixel,
33510 _In_ UINT NumPixels,
33511 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
33512
33513 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
33514 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
33515 ID3D12GraphicsCommandList7 * This,
33516 _In_ ID3D12Resource *pDstResource,
33517 _In_ UINT DstSubresource,
33518 _In_ UINT DstX,
33519 _In_ UINT DstY,
33520 _In_ ID3D12Resource *pSrcResource,
33521 _In_ UINT SrcSubresource,
33522 _In_opt_ D3D12_RECT *pSrcRect,
33523 _In_ DXGI_FORMAT Format,
33524 _In_ D3D12_RESOLVE_MODE ResolveMode);
33525
33526 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
33527 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
33528 ID3D12GraphicsCommandList7 * This,
33529 _In_ UINT Mask);
33530
33531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
33532 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
33533 ID3D12GraphicsCommandList7 * This,
33534 UINT Count,
33535 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
33536 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
33537
33538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
33539 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
33540 ID3D12GraphicsCommandList7 * This,
33541 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
33542
33543 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
33544 void ( STDMETHODCALLTYPE *BeginRenderPass )(
33545 ID3D12GraphicsCommandList7 * This,
33546 _In_ UINT NumRenderTargets,
33547 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
33548 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
33549 D3D12_RENDER_PASS_FLAGS Flags);
33550
33551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
33552 void ( STDMETHODCALLTYPE *EndRenderPass )(
33553 ID3D12GraphicsCommandList7 * This);
33554
33555 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
33556 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
33557 ID3D12GraphicsCommandList7 * This,
33558 _In_ ID3D12MetaCommand *pMetaCommand,
33559 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
33560 _In_ SIZE_T InitializationParametersDataSizeInBytes);
33561
33562 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
33563 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
33564 ID3D12GraphicsCommandList7 * This,
33565 _In_ ID3D12MetaCommand *pMetaCommand,
33566 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
33567 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
33568
33569 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
33570 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
33571 ID3D12GraphicsCommandList7 * This,
33572 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
33573 _In_ UINT NumPostbuildInfoDescs,
33574 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
33575
33576 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
33577 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
33578 ID3D12GraphicsCommandList7 * This,
33579 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
33580 _In_ UINT NumSourceAccelerationStructures,
33581 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
33582
33583 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
33584 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
33585 ID3D12GraphicsCommandList7 * This,
33586 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
33587 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
33588 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
33589
33590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
33591 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
33592 ID3D12GraphicsCommandList7 * This,
33593 _In_ ID3D12StateObject *pStateObject);
33594
33595 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
33596 void ( STDMETHODCALLTYPE *DispatchRays )(
33597 ID3D12GraphicsCommandList7 * This,
33598 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
33599
33600 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
33601 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
33602 ID3D12GraphicsCommandList7 * This,
33603 _In_ D3D12_SHADING_RATE baseShadingRate,
33604 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
33605
33606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
33607 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
33608 ID3D12GraphicsCommandList7 * This,
33609 _In_opt_ ID3D12Resource *shadingRateImage);
33610
33611 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
33612 void ( STDMETHODCALLTYPE *DispatchMesh )(
33613 ID3D12GraphicsCommandList7 * This,
33614 _In_ UINT ThreadGroupCountX,
33615 _In_ UINT ThreadGroupCountY,
33616 _In_ UINT ThreadGroupCountZ);
33617
33618 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
33619 void ( STDMETHODCALLTYPE *Barrier )(
33620 ID3D12GraphicsCommandList7 * This,
33621 UINT32 NumBarrierGroups,
33622 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
33623
33624 END_INTERFACE
33625 } ID3D12GraphicsCommandList7Vtbl;
33626
33627 interface ID3D12GraphicsCommandList7
33628 {
33629 CONST_VTBL struct ID3D12GraphicsCommandList7Vtbl *lpVtbl;
33630 };
33631
33632
33633
33634#ifdef COBJMACROS
33635
33636
33637#define ID3D12GraphicsCommandList7_QueryInterface(This,riid,ppvObject) \
33638 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
33639
33640#define ID3D12GraphicsCommandList7_AddRef(This) \
33641 ( (This)->lpVtbl -> AddRef(This) )
33642
33643#define ID3D12GraphicsCommandList7_Release(This) \
33644 ( (This)->lpVtbl -> Release(This) )
33645
33646
33647#define ID3D12GraphicsCommandList7_GetPrivateData(This,guid,pDataSize,pData) \
33648 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
33649
33650#define ID3D12GraphicsCommandList7_SetPrivateData(This,guid,DataSize,pData) \
33651 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
33652
33653#define ID3D12GraphicsCommandList7_SetPrivateDataInterface(This,guid,pData) \
33654 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
33655
33656#define ID3D12GraphicsCommandList7_SetName(This,Name) \
33657 ( (This)->lpVtbl -> SetName(This,Name) )
33658
33659
33660#define ID3D12GraphicsCommandList7_GetDevice(This,riid,ppvDevice) \
33661 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
33662
33663
33664#define ID3D12GraphicsCommandList7_GetType(This) \
33665 ( (This)->lpVtbl -> GetType(This) )
33666
33667
33668#define ID3D12GraphicsCommandList7_Close(This) \
33669 ( (This)->lpVtbl -> Close(This) )
33670
33671#define ID3D12GraphicsCommandList7_Reset(This,pAllocator,pInitialState) \
33672 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
33673
33674#define ID3D12GraphicsCommandList7_ClearState(This,pPipelineState) \
33675 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
33676
33677#define ID3D12GraphicsCommandList7_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
33678 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
33679
33680#define ID3D12GraphicsCommandList7_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
33681 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
33682
33683#define ID3D12GraphicsCommandList7_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33684 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33685
33686#define ID3D12GraphicsCommandList7_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
33687 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
33688
33689#define ID3D12GraphicsCommandList7_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
33690 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
33691
33692#define ID3D12GraphicsCommandList7_CopyResource(This,pDstResource,pSrcResource) \
33693 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
33694
33695#define ID3D12GraphicsCommandList7_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
33696 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
33697
33698#define ID3D12GraphicsCommandList7_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
33699 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
33700
33701#define ID3D12GraphicsCommandList7_IASetPrimitiveTopology(This,PrimitiveTopology) \
33702 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
33703
33704#define ID3D12GraphicsCommandList7_RSSetViewports(This,NumViewports,pViewports) \
33705 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
33706
33707#define ID3D12GraphicsCommandList7_RSSetScissorRects(This,NumRects,pRects) \
33708 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
33709
33710#define ID3D12GraphicsCommandList7_OMSetBlendFactor(This,BlendFactor) \
33711 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
33712
33713#define ID3D12GraphicsCommandList7_OMSetStencilRef(This,StencilRef) \
33714 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
33715
33716#define ID3D12GraphicsCommandList7_SetPipelineState(This,pPipelineState) \
33717 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
33718
33719#define ID3D12GraphicsCommandList7_ResourceBarrier(This,NumBarriers,pBarriers) \
33720 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
33721
33722#define ID3D12GraphicsCommandList7_ExecuteBundle(This,pCommandList) \
33723 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
33724
33725#define ID3D12GraphicsCommandList7_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
33726 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
33727
33728#define ID3D12GraphicsCommandList7_SetComputeRootSignature(This,pRootSignature) \
33729 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
33730
33731#define ID3D12GraphicsCommandList7_SetGraphicsRootSignature(This,pRootSignature) \
33732 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
33733
33734#define ID3D12GraphicsCommandList7_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
33735 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
33736
33737#define ID3D12GraphicsCommandList7_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
33738 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
33739
33740#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
33741 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
33742
33743#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
33744 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
33745
33746#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
33747 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
33748
33749#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
33750 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
33751
33752#define ID3D12GraphicsCommandList7_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
33753 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
33754
33755#define ID3D12GraphicsCommandList7_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
33756 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
33757
33758#define ID3D12GraphicsCommandList7_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
33759 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
33760
33761#define ID3D12GraphicsCommandList7_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
33762 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
33763
33764#define ID3D12GraphicsCommandList7_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
33765 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
33766
33767#define ID3D12GraphicsCommandList7_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
33768 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
33769
33770#define ID3D12GraphicsCommandList7_IASetIndexBuffer(This,pView) \
33771 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
33772
33773#define ID3D12GraphicsCommandList7_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
33774 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
33775
33776#define ID3D12GraphicsCommandList7_SOSetTargets(This,StartSlot,NumViews,pViews) \
33777 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
33778
33779#define ID3D12GraphicsCommandList7_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
33780 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
33781
33782#define ID3D12GraphicsCommandList7_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
33783 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
33784
33785#define ID3D12GraphicsCommandList7_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
33786 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
33787
33788#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
33789 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
33790
33791#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
33792 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
33793
33794#define ID3D12GraphicsCommandList7_DiscardResource(This,pResource,pRegion) \
33795 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
33796
33797#define ID3D12GraphicsCommandList7_BeginQuery(This,pQueryHeap,Type,Index) \
33798 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
33799
33800#define ID3D12GraphicsCommandList7_EndQuery(This,pQueryHeap,Type,Index) \
33801 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
33802
33803#define ID3D12GraphicsCommandList7_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
33804 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
33805
33806#define ID3D12GraphicsCommandList7_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
33807 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
33808
33809#define ID3D12GraphicsCommandList7_SetMarker(This,Metadata,pData,Size) \
33810 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
33811
33812#define ID3D12GraphicsCommandList7_BeginEvent(This,Metadata,pData,Size) \
33813 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
33814
33815#define ID3D12GraphicsCommandList7_EndEvent(This) \
33816 ( (This)->lpVtbl -> EndEvent(This) )
33817
33818#define ID3D12GraphicsCommandList7_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
33819 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
33820
33821
33822#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
33823 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
33824
33825#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
33826 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
33827
33828#define ID3D12GraphicsCommandList7_OMSetDepthBounds(This,Min,Max) \
33829 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
33830
33831#define ID3D12GraphicsCommandList7_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
33832 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
33833
33834#define ID3D12GraphicsCommandList7_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
33835 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
33836
33837#define ID3D12GraphicsCommandList7_SetViewInstanceMask(This,Mask) \
33838 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
33839
33840
33841#define ID3D12GraphicsCommandList7_WriteBufferImmediate(This,Count,pParams,pModes) \
33842 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
33843
33844
33845#define ID3D12GraphicsCommandList7_SetProtectedResourceSession(This,pProtectedResourceSession) \
33846 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
33847
33848
33849#define ID3D12GraphicsCommandList7_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
33850 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
33851
33852#define ID3D12GraphicsCommandList7_EndRenderPass(This) \
33853 ( (This)->lpVtbl -> EndRenderPass(This) )
33854
33855#define ID3D12GraphicsCommandList7_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
33856 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
33857
33858#define ID3D12GraphicsCommandList7_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
33859 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
33860
33861#define ID3D12GraphicsCommandList7_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
33862 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
33863
33864#define ID3D12GraphicsCommandList7_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
33865 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
33866
33867#define ID3D12GraphicsCommandList7_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
33868 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
33869
33870#define ID3D12GraphicsCommandList7_SetPipelineState1(This,pStateObject) \
33871 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
33872
33873#define ID3D12GraphicsCommandList7_DispatchRays(This,pDesc) \
33874 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
33875
33876
33877#define ID3D12GraphicsCommandList7_RSSetShadingRate(This,baseShadingRate,combiners) \
33878 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
33879
33880#define ID3D12GraphicsCommandList7_RSSetShadingRateImage(This,shadingRateImage) \
33881 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
33882
33883
33884#define ID3D12GraphicsCommandList7_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33885 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33886
33887
33888#define ID3D12GraphicsCommandList7_Barrier(This,NumBarrierGroups,pBarrierGroups) \
33889 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
33890
33891#endif /* COBJMACROS */
33892
33893
33894#endif /* C style interface */
33895
33896
33897
33898
33899#endif /* __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__ */
33900
33901
33902#ifndef __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
33903#define __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
33904
33905/* interface ID3D12GraphicsCommandList8 */
33906/* [unique][local][object][uuid] */
33907
33908
33909EXTERN_C const IID IID_ID3D12GraphicsCommandList8;
33910
33911#if defined(__cplusplus) && !defined(CINTERFACE)
33912
33913 MIDL_INTERFACE("ee936ef9-599d-4d28-938e-23c4ad05ce51")
33914 ID3D12GraphicsCommandList8 : public ID3D12GraphicsCommandList7
33915 {
33916 public:
33917 virtual void STDMETHODCALLTYPE OMSetFrontAndBackStencilRef(
33918 _In_ UINT FrontStencilRef,
33919 _In_ UINT BackStencilRef) = 0;
33920
33921 };
33922
33923
33924#else /* C style interface */
33925
33926 typedef struct ID3D12GraphicsCommandList8Vtbl
33927 {
33928 BEGIN_INTERFACE
33929
33930 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
33931 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
33932 ID3D12GraphicsCommandList8 * This,
33933 REFIID riid,
33934 _COM_Outptr_ void **ppvObject);
33935
33936 DECLSPEC_XFGVIRT(IUnknown, AddRef)
33937 ULONG ( STDMETHODCALLTYPE *AddRef )(
33938 ID3D12GraphicsCommandList8 * This);
33939
33940 DECLSPEC_XFGVIRT(IUnknown, Release)
33941 ULONG ( STDMETHODCALLTYPE *Release )(
33942 ID3D12GraphicsCommandList8 * This);
33943
33944 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
33945 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
33946 ID3D12GraphicsCommandList8 * This,
33947 _In_ REFGUID guid,
33948 _Inout_ UINT *pDataSize,
33949 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
33950
33951 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
33952 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
33953 ID3D12GraphicsCommandList8 * This,
33954 _In_ REFGUID guid,
33955 _In_ UINT DataSize,
33956 _In_reads_bytes_opt_( DataSize ) const void *pData);
33957
33958 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
33959 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
33960 ID3D12GraphicsCommandList8 * This,
33961 _In_ REFGUID guid,
33962 _In_opt_ const IUnknown *pData);
33963
33964 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
33965 HRESULT ( STDMETHODCALLTYPE *SetName )(
33966 ID3D12GraphicsCommandList8 * This,
33967 _In_z_ LPCWSTR Name);
33968
33969 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
33970 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
33971 ID3D12GraphicsCommandList8 * This,
33972 REFIID riid,
33973 _COM_Outptr_opt_ void **ppvDevice);
33974
33975 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
33976 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
33977 ID3D12GraphicsCommandList8 * This);
33978
33979 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
33980 HRESULT ( STDMETHODCALLTYPE *Close )(
33981 ID3D12GraphicsCommandList8 * This);
33982
33983 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
33984 HRESULT ( STDMETHODCALLTYPE *Reset )(
33985 ID3D12GraphicsCommandList8 * This,
33986 _In_ ID3D12CommandAllocator *pAllocator,
33987 _In_opt_ ID3D12PipelineState *pInitialState);
33988
33989 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
33990 void ( STDMETHODCALLTYPE *ClearState )(
33991 ID3D12GraphicsCommandList8 * This,
33992 _In_opt_ ID3D12PipelineState *pPipelineState);
33993
33994 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
33995 void ( STDMETHODCALLTYPE *DrawInstanced )(
33996 ID3D12GraphicsCommandList8 * This,
33997 _In_ UINT VertexCountPerInstance,
33998 _In_ UINT InstanceCount,
33999 _In_ UINT StartVertexLocation,
34000 _In_ UINT StartInstanceLocation);
34001
34002 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
34003 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
34004 ID3D12GraphicsCommandList8 * This,
34005 _In_ UINT IndexCountPerInstance,
34006 _In_ UINT InstanceCount,
34007 _In_ UINT StartIndexLocation,
34008 _In_ INT BaseVertexLocation,
34009 _In_ UINT StartInstanceLocation);
34010
34011 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
34012 void ( STDMETHODCALLTYPE *Dispatch )(
34013 ID3D12GraphicsCommandList8 * This,
34014 _In_ UINT ThreadGroupCountX,
34015 _In_ UINT ThreadGroupCountY,
34016 _In_ UINT ThreadGroupCountZ);
34017
34018 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
34019 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
34020 ID3D12GraphicsCommandList8 * This,
34021 _In_ ID3D12Resource *pDstBuffer,
34022 UINT64 DstOffset,
34023 _In_ ID3D12Resource *pSrcBuffer,
34024 UINT64 SrcOffset,
34025 UINT64 NumBytes);
34026
34027 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
34028 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
34029 ID3D12GraphicsCommandList8 * This,
34030 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
34031 UINT DstX,
34032 UINT DstY,
34033 UINT DstZ,
34034 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
34035 _In_opt_ const D3D12_BOX *pSrcBox);
34036
34037 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
34038 void ( STDMETHODCALLTYPE *CopyResource )(
34039 ID3D12GraphicsCommandList8 * This,
34040 _In_ ID3D12Resource *pDstResource,
34041 _In_ ID3D12Resource *pSrcResource);
34042
34043 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
34044 void ( STDMETHODCALLTYPE *CopyTiles )(
34045 ID3D12GraphicsCommandList8 * This,
34046 _In_ ID3D12Resource *pTiledResource,
34047 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
34048 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
34049 _In_ ID3D12Resource *pBuffer,
34050 UINT64 BufferStartOffsetInBytes,
34051 D3D12_TILE_COPY_FLAGS Flags);
34052
34053 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
34054 void ( STDMETHODCALLTYPE *ResolveSubresource )(
34055 ID3D12GraphicsCommandList8 * This,
34056 _In_ ID3D12Resource *pDstResource,
34057 _In_ UINT DstSubresource,
34058 _In_ ID3D12Resource *pSrcResource,
34059 _In_ UINT SrcSubresource,
34060 _In_ DXGI_FORMAT Format);
34061
34062 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
34063 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
34064 ID3D12GraphicsCommandList8 * This,
34065 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
34066
34067 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
34068 void ( STDMETHODCALLTYPE *RSSetViewports )(
34069 ID3D12GraphicsCommandList8 * This,
34070 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
34071 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
34072
34073 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
34074 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
34075 ID3D12GraphicsCommandList8 * This,
34076 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
34077 _In_reads_( NumRects) const D3D12_RECT *pRects);
34078
34079 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
34080 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
34081 ID3D12GraphicsCommandList8 * This,
34082 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
34083
34084 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
34085 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
34086 ID3D12GraphicsCommandList8 * This,
34087 _In_ UINT StencilRef);
34088
34089 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
34090 void ( STDMETHODCALLTYPE *SetPipelineState )(
34091 ID3D12GraphicsCommandList8 * This,
34092 _In_ ID3D12PipelineState *pPipelineState);
34093
34094 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
34095 void ( STDMETHODCALLTYPE *ResourceBarrier )(
34096 ID3D12GraphicsCommandList8 * This,
34097 _In_ UINT NumBarriers,
34098 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
34099
34100 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
34101 void ( STDMETHODCALLTYPE *ExecuteBundle )(
34102 ID3D12GraphicsCommandList8 * This,
34103 _In_ ID3D12GraphicsCommandList *pCommandList);
34104
34105 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
34106 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
34107 ID3D12GraphicsCommandList8 * This,
34108 _In_ UINT NumDescriptorHeaps,
34109 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
34110
34111 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
34112 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
34113 ID3D12GraphicsCommandList8 * This,
34114 _In_opt_ ID3D12RootSignature *pRootSignature);
34115
34116 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
34117 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
34118 ID3D12GraphicsCommandList8 * This,
34119 _In_opt_ ID3D12RootSignature *pRootSignature);
34120
34121 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
34122 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
34123 ID3D12GraphicsCommandList8 * This,
34124 _In_ UINT RootParameterIndex,
34125 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34126
34127 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
34128 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
34129 ID3D12GraphicsCommandList8 * This,
34130 _In_ UINT RootParameterIndex,
34131 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34132
34133 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
34134 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
34135 ID3D12GraphicsCommandList8 * This,
34136 _In_ UINT RootParameterIndex,
34137 _In_ UINT SrcData,
34138 _In_ UINT DestOffsetIn32BitValues);
34139
34140 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
34141 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
34142 ID3D12GraphicsCommandList8 * This,
34143 _In_ UINT RootParameterIndex,
34144 _In_ UINT SrcData,
34145 _In_ UINT DestOffsetIn32BitValues);
34146
34147 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
34148 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
34149 ID3D12GraphicsCommandList8 * This,
34150 _In_ UINT RootParameterIndex,
34151 _In_ UINT Num32BitValuesToSet,
34152 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
34153 _In_ UINT DestOffsetIn32BitValues);
34154
34155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
34156 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
34157 ID3D12GraphicsCommandList8 * This,
34158 _In_ UINT RootParameterIndex,
34159 _In_ UINT Num32BitValuesToSet,
34160 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
34161 _In_ UINT DestOffsetIn32BitValues);
34162
34163 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
34164 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
34165 ID3D12GraphicsCommandList8 * This,
34166 _In_ UINT RootParameterIndex,
34167 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34168
34169 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
34170 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
34171 ID3D12GraphicsCommandList8 * This,
34172 _In_ UINT RootParameterIndex,
34173 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34174
34175 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
34176 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
34177 ID3D12GraphicsCommandList8 * This,
34178 _In_ UINT RootParameterIndex,
34179 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34180
34181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
34182 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
34183 ID3D12GraphicsCommandList8 * This,
34184 _In_ UINT RootParameterIndex,
34185 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34186
34187 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
34188 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
34189 ID3D12GraphicsCommandList8 * This,
34190 _In_ UINT RootParameterIndex,
34191 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34192
34193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
34194 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
34195 ID3D12GraphicsCommandList8 * This,
34196 _In_ UINT RootParameterIndex,
34197 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34198
34199 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
34200 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
34201 ID3D12GraphicsCommandList8 * This,
34202 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
34203
34204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
34205 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
34206 ID3D12GraphicsCommandList8 * This,
34207 _In_ UINT StartSlot,
34208 _In_ UINT NumViews,
34209 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
34210
34211 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
34212 void ( STDMETHODCALLTYPE *SOSetTargets )(
34213 ID3D12GraphicsCommandList8 * This,
34214 _In_ UINT StartSlot,
34215 _In_ UINT NumViews,
34216 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
34217
34218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
34219 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
34220 ID3D12GraphicsCommandList8 * This,
34221 _In_ UINT NumRenderTargetDescriptors,
34222 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
34223 _In_ BOOL RTsSingleHandleToDescriptorRange,
34224 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
34225
34226 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
34227 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
34228 ID3D12GraphicsCommandList8 * This,
34229 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
34230 _In_ D3D12_CLEAR_FLAGS ClearFlags,
34231 _In_ FLOAT Depth,
34232 _In_ UINT8 Stencil,
34233 _In_ UINT NumRects,
34234 _In_reads_(NumRects) const D3D12_RECT *pRects);
34235
34236 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
34237 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
34238 ID3D12GraphicsCommandList8 * This,
34239 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
34240 _In_ const FLOAT ColorRGBA[ 4 ],
34241 _In_ UINT NumRects,
34242 _In_reads_(NumRects) const D3D12_RECT *pRects);
34243
34244 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
34245 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
34246 ID3D12GraphicsCommandList8 * This,
34247 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
34248 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
34249 _In_ ID3D12Resource *pResource,
34250 _In_ const UINT Values[ 4 ],
34251 _In_ UINT NumRects,
34252 _In_reads_(NumRects) const D3D12_RECT *pRects);
34253
34254 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
34255 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
34256 ID3D12GraphicsCommandList8 * This,
34257 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
34258 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
34259 _In_ ID3D12Resource *pResource,
34260 _In_ const FLOAT Values[ 4 ],
34261 _In_ UINT NumRects,
34262 _In_reads_(NumRects) const D3D12_RECT *pRects);
34263
34264 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
34265 void ( STDMETHODCALLTYPE *DiscardResource )(
34266 ID3D12GraphicsCommandList8 * This,
34267 _In_ ID3D12Resource *pResource,
34268 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
34269
34270 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
34271 void ( STDMETHODCALLTYPE *BeginQuery )(
34272 ID3D12GraphicsCommandList8 * This,
34273 _In_ ID3D12QueryHeap *pQueryHeap,
34274 _In_ D3D12_QUERY_TYPE Type,
34275 _In_ UINT Index);
34276
34277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
34278 void ( STDMETHODCALLTYPE *EndQuery )(
34279 ID3D12GraphicsCommandList8 * This,
34280 _In_ ID3D12QueryHeap *pQueryHeap,
34281 _In_ D3D12_QUERY_TYPE Type,
34282 _In_ UINT Index);
34283
34284 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
34285 void ( STDMETHODCALLTYPE *ResolveQueryData )(
34286 ID3D12GraphicsCommandList8 * This,
34287 _In_ ID3D12QueryHeap *pQueryHeap,
34288 _In_ D3D12_QUERY_TYPE Type,
34289 _In_ UINT StartIndex,
34290 _In_ UINT NumQueries,
34291 _In_ ID3D12Resource *pDestinationBuffer,
34292 _In_ UINT64 AlignedDestinationBufferOffset);
34293
34294 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
34295 void ( STDMETHODCALLTYPE *SetPredication )(
34296 ID3D12GraphicsCommandList8 * This,
34297 _In_opt_ ID3D12Resource *pBuffer,
34298 _In_ UINT64 AlignedBufferOffset,
34299 _In_ D3D12_PREDICATION_OP Operation);
34300
34301 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
34302 void ( STDMETHODCALLTYPE *SetMarker )(
34303 ID3D12GraphicsCommandList8 * This,
34304 UINT Metadata,
34305 _In_reads_bytes_opt_(Size) const void *pData,
34306 UINT Size);
34307
34308 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
34309 void ( STDMETHODCALLTYPE *BeginEvent )(
34310 ID3D12GraphicsCommandList8 * This,
34311 UINT Metadata,
34312 _In_reads_bytes_opt_(Size) const void *pData,
34313 UINT Size);
34314
34315 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
34316 void ( STDMETHODCALLTYPE *EndEvent )(
34317 ID3D12GraphicsCommandList8 * This);
34318
34319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
34320 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
34321 ID3D12GraphicsCommandList8 * This,
34322 _In_ ID3D12CommandSignature *pCommandSignature,
34323 _In_ UINT MaxCommandCount,
34324 _In_ ID3D12Resource *pArgumentBuffer,
34325 _In_ UINT64 ArgumentBufferOffset,
34326 _In_opt_ ID3D12Resource *pCountBuffer,
34327 _In_ UINT64 CountBufferOffset);
34328
34329 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
34330 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
34331 ID3D12GraphicsCommandList8 * This,
34332 _In_ ID3D12Resource *pDstBuffer,
34333 UINT64 DstOffset,
34334 _In_ ID3D12Resource *pSrcBuffer,
34335 UINT64 SrcOffset,
34336 UINT Dependencies,
34337 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
34338 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
34339
34340 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
34341 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
34342 ID3D12GraphicsCommandList8 * This,
34343 _In_ ID3D12Resource *pDstBuffer,
34344 UINT64 DstOffset,
34345 _In_ ID3D12Resource *pSrcBuffer,
34346 UINT64 SrcOffset,
34347 UINT Dependencies,
34348 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
34349 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
34350
34351 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
34352 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
34353 ID3D12GraphicsCommandList8 * This,
34354 _In_ FLOAT Min,
34355 _In_ FLOAT Max);
34356
34357 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
34358 void ( STDMETHODCALLTYPE *SetSamplePositions )(
34359 ID3D12GraphicsCommandList8 * This,
34360 _In_ UINT NumSamplesPerPixel,
34361 _In_ UINT NumPixels,
34362 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
34363
34364 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
34365 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
34366 ID3D12GraphicsCommandList8 * This,
34367 _In_ ID3D12Resource *pDstResource,
34368 _In_ UINT DstSubresource,
34369 _In_ UINT DstX,
34370 _In_ UINT DstY,
34371 _In_ ID3D12Resource *pSrcResource,
34372 _In_ UINT SrcSubresource,
34373 _In_opt_ D3D12_RECT *pSrcRect,
34374 _In_ DXGI_FORMAT Format,
34375 _In_ D3D12_RESOLVE_MODE ResolveMode);
34376
34377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
34378 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
34379 ID3D12GraphicsCommandList8 * This,
34380 _In_ UINT Mask);
34381
34382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
34383 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
34384 ID3D12GraphicsCommandList8 * This,
34385 UINT Count,
34386 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
34387 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
34388
34389 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
34390 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
34391 ID3D12GraphicsCommandList8 * This,
34392 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
34393
34394 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
34395 void ( STDMETHODCALLTYPE *BeginRenderPass )(
34396 ID3D12GraphicsCommandList8 * This,
34397 _In_ UINT NumRenderTargets,
34398 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
34399 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
34400 D3D12_RENDER_PASS_FLAGS Flags);
34401
34402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
34403 void ( STDMETHODCALLTYPE *EndRenderPass )(
34404 ID3D12GraphicsCommandList8 * This);
34405
34406 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
34407 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
34408 ID3D12GraphicsCommandList8 * This,
34409 _In_ ID3D12MetaCommand *pMetaCommand,
34410 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
34411 _In_ SIZE_T InitializationParametersDataSizeInBytes);
34412
34413 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
34414 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
34415 ID3D12GraphicsCommandList8 * This,
34416 _In_ ID3D12MetaCommand *pMetaCommand,
34417 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
34418 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
34419
34420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
34421 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
34422 ID3D12GraphicsCommandList8 * This,
34423 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
34424 _In_ UINT NumPostbuildInfoDescs,
34425 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
34426
34427 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
34428 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
34429 ID3D12GraphicsCommandList8 * This,
34430 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
34431 _In_ UINT NumSourceAccelerationStructures,
34432 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
34433
34434 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
34435 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
34436 ID3D12GraphicsCommandList8 * This,
34437 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
34438 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
34439 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
34440
34441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
34442 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
34443 ID3D12GraphicsCommandList8 * This,
34444 _In_ ID3D12StateObject *pStateObject);
34445
34446 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
34447 void ( STDMETHODCALLTYPE *DispatchRays )(
34448 ID3D12GraphicsCommandList8 * This,
34449 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
34450
34451 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
34452 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
34453 ID3D12GraphicsCommandList8 * This,
34454 _In_ D3D12_SHADING_RATE baseShadingRate,
34455 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
34456
34457 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
34458 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
34459 ID3D12GraphicsCommandList8 * This,
34460 _In_opt_ ID3D12Resource *shadingRateImage);
34461
34462 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
34463 void ( STDMETHODCALLTYPE *DispatchMesh )(
34464 ID3D12GraphicsCommandList8 * This,
34465 _In_ UINT ThreadGroupCountX,
34466 _In_ UINT ThreadGroupCountY,
34467 _In_ UINT ThreadGroupCountZ);
34468
34469 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
34470 void ( STDMETHODCALLTYPE *Barrier )(
34471 ID3D12GraphicsCommandList8 * This,
34472 UINT32 NumBarrierGroups,
34473 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
34474
34475 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
34476 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
34477 ID3D12GraphicsCommandList8 * This,
34478 _In_ UINT FrontStencilRef,
34479 _In_ UINT BackStencilRef);
34480
34481 END_INTERFACE
34482 } ID3D12GraphicsCommandList8Vtbl;
34483
34484 interface ID3D12GraphicsCommandList8
34485 {
34486 CONST_VTBL struct ID3D12GraphicsCommandList8Vtbl *lpVtbl;
34487 };
34488
34489
34490
34491#ifdef COBJMACROS
34492
34493
34494#define ID3D12GraphicsCommandList8_QueryInterface(This,riid,ppvObject) \
34495 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
34496
34497#define ID3D12GraphicsCommandList8_AddRef(This) \
34498 ( (This)->lpVtbl -> AddRef(This) )
34499
34500#define ID3D12GraphicsCommandList8_Release(This) \
34501 ( (This)->lpVtbl -> Release(This) )
34502
34503
34504#define ID3D12GraphicsCommandList8_GetPrivateData(This,guid,pDataSize,pData) \
34505 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
34506
34507#define ID3D12GraphicsCommandList8_SetPrivateData(This,guid,DataSize,pData) \
34508 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
34509
34510#define ID3D12GraphicsCommandList8_SetPrivateDataInterface(This,guid,pData) \
34511 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
34512
34513#define ID3D12GraphicsCommandList8_SetName(This,Name) \
34514 ( (This)->lpVtbl -> SetName(This,Name) )
34515
34516
34517#define ID3D12GraphicsCommandList8_GetDevice(This,riid,ppvDevice) \
34518 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
34519
34520
34521#define ID3D12GraphicsCommandList8_GetType(This) \
34522 ( (This)->lpVtbl -> GetType(This) )
34523
34524
34525#define ID3D12GraphicsCommandList8_Close(This) \
34526 ( (This)->lpVtbl -> Close(This) )
34527
34528#define ID3D12GraphicsCommandList8_Reset(This,pAllocator,pInitialState) \
34529 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
34530
34531#define ID3D12GraphicsCommandList8_ClearState(This,pPipelineState) \
34532 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
34533
34534#define ID3D12GraphicsCommandList8_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
34535 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
34536
34537#define ID3D12GraphicsCommandList8_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
34538 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
34539
34540#define ID3D12GraphicsCommandList8_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
34541 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
34542
34543#define ID3D12GraphicsCommandList8_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
34544 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
34545
34546#define ID3D12GraphicsCommandList8_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
34547 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
34548
34549#define ID3D12GraphicsCommandList8_CopyResource(This,pDstResource,pSrcResource) \
34550 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
34551
34552#define ID3D12GraphicsCommandList8_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
34553 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
34554
34555#define ID3D12GraphicsCommandList8_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
34556 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
34557
34558#define ID3D12GraphicsCommandList8_IASetPrimitiveTopology(This,PrimitiveTopology) \
34559 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
34560
34561#define ID3D12GraphicsCommandList8_RSSetViewports(This,NumViewports,pViewports) \
34562 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
34563
34564#define ID3D12GraphicsCommandList8_RSSetScissorRects(This,NumRects,pRects) \
34565 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
34566
34567#define ID3D12GraphicsCommandList8_OMSetBlendFactor(This,BlendFactor) \
34568 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
34569
34570#define ID3D12GraphicsCommandList8_OMSetStencilRef(This,StencilRef) \
34571 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
34572
34573#define ID3D12GraphicsCommandList8_SetPipelineState(This,pPipelineState) \
34574 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
34575
34576#define ID3D12GraphicsCommandList8_ResourceBarrier(This,NumBarriers,pBarriers) \
34577 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
34578
34579#define ID3D12GraphicsCommandList8_ExecuteBundle(This,pCommandList) \
34580 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
34581
34582#define ID3D12GraphicsCommandList8_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
34583 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
34584
34585#define ID3D12GraphicsCommandList8_SetComputeRootSignature(This,pRootSignature) \
34586 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
34587
34588#define ID3D12GraphicsCommandList8_SetGraphicsRootSignature(This,pRootSignature) \
34589 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
34590
34591#define ID3D12GraphicsCommandList8_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
34592 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
34593
34594#define ID3D12GraphicsCommandList8_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
34595 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
34596
34597#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
34598 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
34599
34600#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
34601 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
34602
34603#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
34604 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
34605
34606#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
34607 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
34608
34609#define ID3D12GraphicsCommandList8_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
34610 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
34611
34612#define ID3D12GraphicsCommandList8_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
34613 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
34614
34615#define ID3D12GraphicsCommandList8_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
34616 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
34617
34618#define ID3D12GraphicsCommandList8_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
34619 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
34620
34621#define ID3D12GraphicsCommandList8_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
34622 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
34623
34624#define ID3D12GraphicsCommandList8_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
34625 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
34626
34627#define ID3D12GraphicsCommandList8_IASetIndexBuffer(This,pView) \
34628 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
34629
34630#define ID3D12GraphicsCommandList8_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
34631 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
34632
34633#define ID3D12GraphicsCommandList8_SOSetTargets(This,StartSlot,NumViews,pViews) \
34634 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
34635
34636#define ID3D12GraphicsCommandList8_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
34637 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
34638
34639#define ID3D12GraphicsCommandList8_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
34640 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
34641
34642#define ID3D12GraphicsCommandList8_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
34643 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
34644
34645#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
34646 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
34647
34648#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
34649 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
34650
34651#define ID3D12GraphicsCommandList8_DiscardResource(This,pResource,pRegion) \
34652 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
34653
34654#define ID3D12GraphicsCommandList8_BeginQuery(This,pQueryHeap,Type,Index) \
34655 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
34656
34657#define ID3D12GraphicsCommandList8_EndQuery(This,pQueryHeap,Type,Index) \
34658 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
34659
34660#define ID3D12GraphicsCommandList8_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
34661 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
34662
34663#define ID3D12GraphicsCommandList8_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
34664 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
34665
34666#define ID3D12GraphicsCommandList8_SetMarker(This,Metadata,pData,Size) \
34667 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
34668
34669#define ID3D12GraphicsCommandList8_BeginEvent(This,Metadata,pData,Size) \
34670 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
34671
34672#define ID3D12GraphicsCommandList8_EndEvent(This) \
34673 ( (This)->lpVtbl -> EndEvent(This) )
34674
34675#define ID3D12GraphicsCommandList8_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
34676 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
34677
34678
34679#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
34680 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
34681
34682#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
34683 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
34684
34685#define ID3D12GraphicsCommandList8_OMSetDepthBounds(This,Min,Max) \
34686 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
34687
34688#define ID3D12GraphicsCommandList8_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
34689 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
34690
34691#define ID3D12GraphicsCommandList8_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
34692 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
34693
34694#define ID3D12GraphicsCommandList8_SetViewInstanceMask(This,Mask) \
34695 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
34696
34697
34698#define ID3D12GraphicsCommandList8_WriteBufferImmediate(This,Count,pParams,pModes) \
34699 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
34700
34701
34702#define ID3D12GraphicsCommandList8_SetProtectedResourceSession(This,pProtectedResourceSession) \
34703 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
34704
34705
34706#define ID3D12GraphicsCommandList8_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
34707 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
34708
34709#define ID3D12GraphicsCommandList8_EndRenderPass(This) \
34710 ( (This)->lpVtbl -> EndRenderPass(This) )
34711
34712#define ID3D12GraphicsCommandList8_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
34713 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
34714
34715#define ID3D12GraphicsCommandList8_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
34716 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
34717
34718#define ID3D12GraphicsCommandList8_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
34719 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
34720
34721#define ID3D12GraphicsCommandList8_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
34722 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
34723
34724#define ID3D12GraphicsCommandList8_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
34725 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
34726
34727#define ID3D12GraphicsCommandList8_SetPipelineState1(This,pStateObject) \
34728 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
34729
34730#define ID3D12GraphicsCommandList8_DispatchRays(This,pDesc) \
34731 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
34732
34733
34734#define ID3D12GraphicsCommandList8_RSSetShadingRate(This,baseShadingRate,combiners) \
34735 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
34736
34737#define ID3D12GraphicsCommandList8_RSSetShadingRateImage(This,shadingRateImage) \
34738 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
34739
34740
34741#define ID3D12GraphicsCommandList8_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
34742 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
34743
34744
34745#define ID3D12GraphicsCommandList8_Barrier(This,NumBarrierGroups,pBarrierGroups) \
34746 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
34747
34748
34749#define ID3D12GraphicsCommandList8_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
34750 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
34751
34752#endif /* COBJMACROS */
34753
34754
34755#endif /* C style interface */
34756
34757
34758
34759
34760#endif /* __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__ */
34761
34762
34763#ifndef __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
34764#define __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
34765
34766/* interface ID3D12GraphicsCommandList9 */
34767/* [unique][local][object][uuid] */
34768
34769
34770EXTERN_C const IID IID_ID3D12GraphicsCommandList9;
34771
34772#if defined(__cplusplus) && !defined(CINTERFACE)
34773
34774 MIDL_INTERFACE("34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1")
34775 ID3D12GraphicsCommandList9 : public ID3D12GraphicsCommandList8
34776 {
34777 public:
34778 virtual void STDMETHODCALLTYPE RSSetDepthBias(
34779 _In_ FLOAT DepthBias,
34780 _In_ FLOAT DepthBiasClamp,
34781 _In_ FLOAT SlopeScaledDepthBias) = 0;
34782
34783 virtual void STDMETHODCALLTYPE IASetIndexBufferStripCutValue(
34784 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) = 0;
34785
34786 };
34787
34788
34789#else /* C style interface */
34790
34791 typedef struct ID3D12GraphicsCommandList9Vtbl
34792 {
34793 BEGIN_INTERFACE
34794
34795 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
34796 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
34797 ID3D12GraphicsCommandList9 * This,
34798 REFIID riid,
34799 _COM_Outptr_ void **ppvObject);
34800
34801 DECLSPEC_XFGVIRT(IUnknown, AddRef)
34802 ULONG ( STDMETHODCALLTYPE *AddRef )(
34803 ID3D12GraphicsCommandList9 * This);
34804
34805 DECLSPEC_XFGVIRT(IUnknown, Release)
34806 ULONG ( STDMETHODCALLTYPE *Release )(
34807 ID3D12GraphicsCommandList9 * This);
34808
34809 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
34810 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
34811 ID3D12GraphicsCommandList9 * This,
34812 _In_ REFGUID guid,
34813 _Inout_ UINT *pDataSize,
34814 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
34815
34816 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
34817 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
34818 ID3D12GraphicsCommandList9 * This,
34819 _In_ REFGUID guid,
34820 _In_ UINT DataSize,
34821 _In_reads_bytes_opt_( DataSize ) const void *pData);
34822
34823 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
34824 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
34825 ID3D12GraphicsCommandList9 * This,
34826 _In_ REFGUID guid,
34827 _In_opt_ const IUnknown *pData);
34828
34829 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
34830 HRESULT ( STDMETHODCALLTYPE *SetName )(
34831 ID3D12GraphicsCommandList9 * This,
34832 _In_z_ LPCWSTR Name);
34833
34834 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
34835 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
34836 ID3D12GraphicsCommandList9 * This,
34837 REFIID riid,
34838 _COM_Outptr_opt_ void **ppvDevice);
34839
34840 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
34841 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
34842 ID3D12GraphicsCommandList9 * This);
34843
34844 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
34845 HRESULT ( STDMETHODCALLTYPE *Close )(
34846 ID3D12GraphicsCommandList9 * This);
34847
34848 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
34849 HRESULT ( STDMETHODCALLTYPE *Reset )(
34850 ID3D12GraphicsCommandList9 * This,
34851 _In_ ID3D12CommandAllocator *pAllocator,
34852 _In_opt_ ID3D12PipelineState *pInitialState);
34853
34854 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
34855 void ( STDMETHODCALLTYPE *ClearState )(
34856 ID3D12GraphicsCommandList9 * This,
34857 _In_opt_ ID3D12PipelineState *pPipelineState);
34858
34859 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
34860 void ( STDMETHODCALLTYPE *DrawInstanced )(
34861 ID3D12GraphicsCommandList9 * This,
34862 _In_ UINT VertexCountPerInstance,
34863 _In_ UINT InstanceCount,
34864 _In_ UINT StartVertexLocation,
34865 _In_ UINT StartInstanceLocation);
34866
34867 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
34868 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
34869 ID3D12GraphicsCommandList9 * This,
34870 _In_ UINT IndexCountPerInstance,
34871 _In_ UINT InstanceCount,
34872 _In_ UINT StartIndexLocation,
34873 _In_ INT BaseVertexLocation,
34874 _In_ UINT StartInstanceLocation);
34875
34876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
34877 void ( STDMETHODCALLTYPE *Dispatch )(
34878 ID3D12GraphicsCommandList9 * This,
34879 _In_ UINT ThreadGroupCountX,
34880 _In_ UINT ThreadGroupCountY,
34881 _In_ UINT ThreadGroupCountZ);
34882
34883 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
34884 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
34885 ID3D12GraphicsCommandList9 * This,
34886 _In_ ID3D12Resource *pDstBuffer,
34887 UINT64 DstOffset,
34888 _In_ ID3D12Resource *pSrcBuffer,
34889 UINT64 SrcOffset,
34890 UINT64 NumBytes);
34891
34892 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
34893 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
34894 ID3D12GraphicsCommandList9 * This,
34895 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
34896 UINT DstX,
34897 UINT DstY,
34898 UINT DstZ,
34899 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
34900 _In_opt_ const D3D12_BOX *pSrcBox);
34901
34902 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
34903 void ( STDMETHODCALLTYPE *CopyResource )(
34904 ID3D12GraphicsCommandList9 * This,
34905 _In_ ID3D12Resource *pDstResource,
34906 _In_ ID3D12Resource *pSrcResource);
34907
34908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
34909 void ( STDMETHODCALLTYPE *CopyTiles )(
34910 ID3D12GraphicsCommandList9 * This,
34911 _In_ ID3D12Resource *pTiledResource,
34912 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
34913 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
34914 _In_ ID3D12Resource *pBuffer,
34915 UINT64 BufferStartOffsetInBytes,
34916 D3D12_TILE_COPY_FLAGS Flags);
34917
34918 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
34919 void ( STDMETHODCALLTYPE *ResolveSubresource )(
34920 ID3D12GraphicsCommandList9 * This,
34921 _In_ ID3D12Resource *pDstResource,
34922 _In_ UINT DstSubresource,
34923 _In_ ID3D12Resource *pSrcResource,
34924 _In_ UINT SrcSubresource,
34925 _In_ DXGI_FORMAT Format);
34926
34927 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
34928 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
34929 ID3D12GraphicsCommandList9 * This,
34930 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
34931
34932 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
34933 void ( STDMETHODCALLTYPE *RSSetViewports )(
34934 ID3D12GraphicsCommandList9 * This,
34935 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
34936 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
34937
34938 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
34939 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
34940 ID3D12GraphicsCommandList9 * This,
34941 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
34942 _In_reads_( NumRects) const D3D12_RECT *pRects);
34943
34944 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
34945 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
34946 ID3D12GraphicsCommandList9 * This,
34947 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
34948
34949 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
34950 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
34951 ID3D12GraphicsCommandList9 * This,
34952 _In_ UINT StencilRef);
34953
34954 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
34955 void ( STDMETHODCALLTYPE *SetPipelineState )(
34956 ID3D12GraphicsCommandList9 * This,
34957 _In_ ID3D12PipelineState *pPipelineState);
34958
34959 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
34960 void ( STDMETHODCALLTYPE *ResourceBarrier )(
34961 ID3D12GraphicsCommandList9 * This,
34962 _In_ UINT NumBarriers,
34963 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
34964
34965 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
34966 void ( STDMETHODCALLTYPE *ExecuteBundle )(
34967 ID3D12GraphicsCommandList9 * This,
34968 _In_ ID3D12GraphicsCommandList *pCommandList);
34969
34970 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
34971 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
34972 ID3D12GraphicsCommandList9 * This,
34973 _In_ UINT NumDescriptorHeaps,
34974 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
34975
34976 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
34977 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
34978 ID3D12GraphicsCommandList9 * This,
34979 _In_opt_ ID3D12RootSignature *pRootSignature);
34980
34981 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
34982 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
34983 ID3D12GraphicsCommandList9 * This,
34984 _In_opt_ ID3D12RootSignature *pRootSignature);
34985
34986 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
34987 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
34988 ID3D12GraphicsCommandList9 * This,
34989 _In_ UINT RootParameterIndex,
34990 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34991
34992 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
34993 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
34994 ID3D12GraphicsCommandList9 * This,
34995 _In_ UINT RootParameterIndex,
34996 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34997
34998 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
34999 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
35000 ID3D12GraphicsCommandList9 * This,
35001 _In_ UINT RootParameterIndex,
35002 _In_ UINT SrcData,
35003 _In_ UINT DestOffsetIn32BitValues);
35004
35005 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
35006 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
35007 ID3D12GraphicsCommandList9 * This,
35008 _In_ UINT RootParameterIndex,
35009 _In_ UINT SrcData,
35010 _In_ UINT DestOffsetIn32BitValues);
35011
35012 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
35013 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
35014 ID3D12GraphicsCommandList9 * This,
35015 _In_ UINT RootParameterIndex,
35016 _In_ UINT Num32BitValuesToSet,
35017 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35018 _In_ UINT DestOffsetIn32BitValues);
35019
35020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
35021 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
35022 ID3D12GraphicsCommandList9 * This,
35023 _In_ UINT RootParameterIndex,
35024 _In_ UINT Num32BitValuesToSet,
35025 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35026 _In_ UINT DestOffsetIn32BitValues);
35027
35028 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
35029 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
35030 ID3D12GraphicsCommandList9 * This,
35031 _In_ UINT RootParameterIndex,
35032 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35033
35034 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
35035 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
35036 ID3D12GraphicsCommandList9 * This,
35037 _In_ UINT RootParameterIndex,
35038 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35039
35040 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
35041 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
35042 ID3D12GraphicsCommandList9 * This,
35043 _In_ UINT RootParameterIndex,
35044 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35045
35046 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
35047 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
35048 ID3D12GraphicsCommandList9 * This,
35049 _In_ UINT RootParameterIndex,
35050 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35051
35052 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
35053 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
35054 ID3D12GraphicsCommandList9 * This,
35055 _In_ UINT RootParameterIndex,
35056 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35057
35058 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
35059 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
35060 ID3D12GraphicsCommandList9 * This,
35061 _In_ UINT RootParameterIndex,
35062 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35063
35064 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
35065 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
35066 ID3D12GraphicsCommandList9 * This,
35067 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
35068
35069 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
35070 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
35071 ID3D12GraphicsCommandList9 * This,
35072 _In_ UINT StartSlot,
35073 _In_ UINT NumViews,
35074 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
35075
35076 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
35077 void ( STDMETHODCALLTYPE *SOSetTargets )(
35078 ID3D12GraphicsCommandList9 * This,
35079 _In_ UINT StartSlot,
35080 _In_ UINT NumViews,
35081 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
35082
35083 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
35084 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
35085 ID3D12GraphicsCommandList9 * This,
35086 _In_ UINT NumRenderTargetDescriptors,
35087 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
35088 _In_ BOOL RTsSingleHandleToDescriptorRange,
35089 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
35090
35091 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
35092 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
35093 ID3D12GraphicsCommandList9 * This,
35094 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
35095 _In_ D3D12_CLEAR_FLAGS ClearFlags,
35096 _In_ FLOAT Depth,
35097 _In_ UINT8 Stencil,
35098 _In_ UINT NumRects,
35099 _In_reads_(NumRects) const D3D12_RECT *pRects);
35100
35101 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
35102 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
35103 ID3D12GraphicsCommandList9 * This,
35104 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
35105 _In_ const FLOAT ColorRGBA[ 4 ],
35106 _In_ UINT NumRects,
35107 _In_reads_(NumRects) const D3D12_RECT *pRects);
35108
35109 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
35110 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
35111 ID3D12GraphicsCommandList9 * This,
35112 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35113 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35114 _In_ ID3D12Resource *pResource,
35115 _In_ const UINT Values[ 4 ],
35116 _In_ UINT NumRects,
35117 _In_reads_(NumRects) const D3D12_RECT *pRects);
35118
35119 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
35120 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
35121 ID3D12GraphicsCommandList9 * This,
35122 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35123 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35124 _In_ ID3D12Resource *pResource,
35125 _In_ const FLOAT Values[ 4 ],
35126 _In_ UINT NumRects,
35127 _In_reads_(NumRects) const D3D12_RECT *pRects);
35128
35129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
35130 void ( STDMETHODCALLTYPE *DiscardResource )(
35131 ID3D12GraphicsCommandList9 * This,
35132 _In_ ID3D12Resource *pResource,
35133 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
35134
35135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
35136 void ( STDMETHODCALLTYPE *BeginQuery )(
35137 ID3D12GraphicsCommandList9 * This,
35138 _In_ ID3D12QueryHeap *pQueryHeap,
35139 _In_ D3D12_QUERY_TYPE Type,
35140 _In_ UINT Index);
35141
35142 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
35143 void ( STDMETHODCALLTYPE *EndQuery )(
35144 ID3D12GraphicsCommandList9 * This,
35145 _In_ ID3D12QueryHeap *pQueryHeap,
35146 _In_ D3D12_QUERY_TYPE Type,
35147 _In_ UINT Index);
35148
35149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
35150 void ( STDMETHODCALLTYPE *ResolveQueryData )(
35151 ID3D12GraphicsCommandList9 * This,
35152 _In_ ID3D12QueryHeap *pQueryHeap,
35153 _In_ D3D12_QUERY_TYPE Type,
35154 _In_ UINT StartIndex,
35155 _In_ UINT NumQueries,
35156 _In_ ID3D12Resource *pDestinationBuffer,
35157 _In_ UINT64 AlignedDestinationBufferOffset);
35158
35159 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
35160 void ( STDMETHODCALLTYPE *SetPredication )(
35161 ID3D12GraphicsCommandList9 * This,
35162 _In_opt_ ID3D12Resource *pBuffer,
35163 _In_ UINT64 AlignedBufferOffset,
35164 _In_ D3D12_PREDICATION_OP Operation);
35165
35166 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
35167 void ( STDMETHODCALLTYPE *SetMarker )(
35168 ID3D12GraphicsCommandList9 * This,
35169 UINT Metadata,
35170 _In_reads_bytes_opt_(Size) const void *pData,
35171 UINT Size);
35172
35173 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
35174 void ( STDMETHODCALLTYPE *BeginEvent )(
35175 ID3D12GraphicsCommandList9 * This,
35176 UINT Metadata,
35177 _In_reads_bytes_opt_(Size) const void *pData,
35178 UINT Size);
35179
35180 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
35181 void ( STDMETHODCALLTYPE *EndEvent )(
35182 ID3D12GraphicsCommandList9 * This);
35183
35184 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
35185 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
35186 ID3D12GraphicsCommandList9 * This,
35187 _In_ ID3D12CommandSignature *pCommandSignature,
35188 _In_ UINT MaxCommandCount,
35189 _In_ ID3D12Resource *pArgumentBuffer,
35190 _In_ UINT64 ArgumentBufferOffset,
35191 _In_opt_ ID3D12Resource *pCountBuffer,
35192 _In_ UINT64 CountBufferOffset);
35193
35194 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
35195 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
35196 ID3D12GraphicsCommandList9 * This,
35197 _In_ ID3D12Resource *pDstBuffer,
35198 UINT64 DstOffset,
35199 _In_ ID3D12Resource *pSrcBuffer,
35200 UINT64 SrcOffset,
35201 UINT Dependencies,
35202 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
35203 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
35204
35205 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
35206 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
35207 ID3D12GraphicsCommandList9 * This,
35208 _In_ ID3D12Resource *pDstBuffer,
35209 UINT64 DstOffset,
35210 _In_ ID3D12Resource *pSrcBuffer,
35211 UINT64 SrcOffset,
35212 UINT Dependencies,
35213 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
35214 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
35215
35216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
35217 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
35218 ID3D12GraphicsCommandList9 * This,
35219 _In_ FLOAT Min,
35220 _In_ FLOAT Max);
35221
35222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
35223 void ( STDMETHODCALLTYPE *SetSamplePositions )(
35224 ID3D12GraphicsCommandList9 * This,
35225 _In_ UINT NumSamplesPerPixel,
35226 _In_ UINT NumPixels,
35227 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
35228
35229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
35230 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
35231 ID3D12GraphicsCommandList9 * This,
35232 _In_ ID3D12Resource *pDstResource,
35233 _In_ UINT DstSubresource,
35234 _In_ UINT DstX,
35235 _In_ UINT DstY,
35236 _In_ ID3D12Resource *pSrcResource,
35237 _In_ UINT SrcSubresource,
35238 _In_opt_ D3D12_RECT *pSrcRect,
35239 _In_ DXGI_FORMAT Format,
35240 _In_ D3D12_RESOLVE_MODE ResolveMode);
35241
35242 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
35243 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
35244 ID3D12GraphicsCommandList9 * This,
35245 _In_ UINT Mask);
35246
35247 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
35248 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
35249 ID3D12GraphicsCommandList9 * This,
35250 UINT Count,
35251 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
35252 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
35253
35254 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
35255 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
35256 ID3D12GraphicsCommandList9 * This,
35257 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
35258
35259 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
35260 void ( STDMETHODCALLTYPE *BeginRenderPass )(
35261 ID3D12GraphicsCommandList9 * This,
35262 _In_ UINT NumRenderTargets,
35263 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
35264 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
35265 D3D12_RENDER_PASS_FLAGS Flags);
35266
35267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
35268 void ( STDMETHODCALLTYPE *EndRenderPass )(
35269 ID3D12GraphicsCommandList9 * This);
35270
35271 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
35272 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
35273 ID3D12GraphicsCommandList9 * This,
35274 _In_ ID3D12MetaCommand *pMetaCommand,
35275 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
35276 _In_ SIZE_T InitializationParametersDataSizeInBytes);
35277
35278 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
35279 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
35280 ID3D12GraphicsCommandList9 * This,
35281 _In_ ID3D12MetaCommand *pMetaCommand,
35282 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
35283 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
35284
35285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
35286 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
35287 ID3D12GraphicsCommandList9 * This,
35288 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
35289 _In_ UINT NumPostbuildInfoDescs,
35290 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
35291
35292 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
35293 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
35294 ID3D12GraphicsCommandList9 * This,
35295 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
35296 _In_ UINT NumSourceAccelerationStructures,
35297 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
35298
35299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
35300 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
35301 ID3D12GraphicsCommandList9 * This,
35302 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
35303 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
35304 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
35305
35306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
35307 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
35308 ID3D12GraphicsCommandList9 * This,
35309 _In_ ID3D12StateObject *pStateObject);
35310
35311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
35312 void ( STDMETHODCALLTYPE *DispatchRays )(
35313 ID3D12GraphicsCommandList9 * This,
35314 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
35315
35316 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
35317 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
35318 ID3D12GraphicsCommandList9 * This,
35319 _In_ D3D12_SHADING_RATE baseShadingRate,
35320 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
35321
35322 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
35323 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
35324 ID3D12GraphicsCommandList9 * This,
35325 _In_opt_ ID3D12Resource *shadingRateImage);
35326
35327 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
35328 void ( STDMETHODCALLTYPE *DispatchMesh )(
35329 ID3D12GraphicsCommandList9 * This,
35330 _In_ UINT ThreadGroupCountX,
35331 _In_ UINT ThreadGroupCountY,
35332 _In_ UINT ThreadGroupCountZ);
35333
35334 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
35335 void ( STDMETHODCALLTYPE *Barrier )(
35336 ID3D12GraphicsCommandList9 * This,
35337 UINT32 NumBarrierGroups,
35338 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
35339
35340 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
35341 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
35342 ID3D12GraphicsCommandList9 * This,
35343 _In_ UINT FrontStencilRef,
35344 _In_ UINT BackStencilRef);
35345
35346 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
35347 void ( STDMETHODCALLTYPE *RSSetDepthBias )(
35348 ID3D12GraphicsCommandList9 * This,
35349 _In_ FLOAT DepthBias,
35350 _In_ FLOAT DepthBiasClamp,
35351 _In_ FLOAT SlopeScaledDepthBias);
35352
35353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
35354 void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
35355 ID3D12GraphicsCommandList9 * This,
35356 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
35357
35358 END_INTERFACE
35359 } ID3D12GraphicsCommandList9Vtbl;
35360
35361 interface ID3D12GraphicsCommandList9
35362 {
35363 CONST_VTBL struct ID3D12GraphicsCommandList9Vtbl *lpVtbl;
35364 };
35365
35366
35367
35368#ifdef COBJMACROS
35369
35370
35371#define ID3D12GraphicsCommandList9_QueryInterface(This,riid,ppvObject) \
35372 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
35373
35374#define ID3D12GraphicsCommandList9_AddRef(This) \
35375 ( (This)->lpVtbl -> AddRef(This) )
35376
35377#define ID3D12GraphicsCommandList9_Release(This) \
35378 ( (This)->lpVtbl -> Release(This) )
35379
35380
35381#define ID3D12GraphicsCommandList9_GetPrivateData(This,guid,pDataSize,pData) \
35382 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
35383
35384#define ID3D12GraphicsCommandList9_SetPrivateData(This,guid,DataSize,pData) \
35385 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
35386
35387#define ID3D12GraphicsCommandList9_SetPrivateDataInterface(This,guid,pData) \
35388 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
35389
35390#define ID3D12GraphicsCommandList9_SetName(This,Name) \
35391 ( (This)->lpVtbl -> SetName(This,Name) )
35392
35393
35394#define ID3D12GraphicsCommandList9_GetDevice(This,riid,ppvDevice) \
35395 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
35396
35397
35398#define ID3D12GraphicsCommandList9_GetType(This) \
35399 ( (This)->lpVtbl -> GetType(This) )
35400
35401
35402#define ID3D12GraphicsCommandList9_Close(This) \
35403 ( (This)->lpVtbl -> Close(This) )
35404
35405#define ID3D12GraphicsCommandList9_Reset(This,pAllocator,pInitialState) \
35406 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
35407
35408#define ID3D12GraphicsCommandList9_ClearState(This,pPipelineState) \
35409 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
35410
35411#define ID3D12GraphicsCommandList9_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
35412 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
35413
35414#define ID3D12GraphicsCommandList9_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
35415 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
35416
35417#define ID3D12GraphicsCommandList9_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
35418 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
35419
35420#define ID3D12GraphicsCommandList9_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
35421 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
35422
35423#define ID3D12GraphicsCommandList9_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
35424 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
35425
35426#define ID3D12GraphicsCommandList9_CopyResource(This,pDstResource,pSrcResource) \
35427 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
35428
35429#define ID3D12GraphicsCommandList9_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
35430 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
35431
35432#define ID3D12GraphicsCommandList9_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
35433 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
35434
35435#define ID3D12GraphicsCommandList9_IASetPrimitiveTopology(This,PrimitiveTopology) \
35436 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
35437
35438#define ID3D12GraphicsCommandList9_RSSetViewports(This,NumViewports,pViewports) \
35439 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
35440
35441#define ID3D12GraphicsCommandList9_RSSetScissorRects(This,NumRects,pRects) \
35442 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
35443
35444#define ID3D12GraphicsCommandList9_OMSetBlendFactor(This,BlendFactor) \
35445 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
35446
35447#define ID3D12GraphicsCommandList9_OMSetStencilRef(This,StencilRef) \
35448 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
35449
35450#define ID3D12GraphicsCommandList9_SetPipelineState(This,pPipelineState) \
35451 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
35452
35453#define ID3D12GraphicsCommandList9_ResourceBarrier(This,NumBarriers,pBarriers) \
35454 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
35455
35456#define ID3D12GraphicsCommandList9_ExecuteBundle(This,pCommandList) \
35457 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
35458
35459#define ID3D12GraphicsCommandList9_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
35460 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
35461
35462#define ID3D12GraphicsCommandList9_SetComputeRootSignature(This,pRootSignature) \
35463 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
35464
35465#define ID3D12GraphicsCommandList9_SetGraphicsRootSignature(This,pRootSignature) \
35466 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
35467
35468#define ID3D12GraphicsCommandList9_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
35469 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
35470
35471#define ID3D12GraphicsCommandList9_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
35472 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
35473
35474#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
35475 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
35476
35477#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
35478 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
35479
35480#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
35481 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
35482
35483#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
35484 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
35485
35486#define ID3D12GraphicsCommandList9_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
35487 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
35488
35489#define ID3D12GraphicsCommandList9_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
35490 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
35491
35492#define ID3D12GraphicsCommandList9_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
35493 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
35494
35495#define ID3D12GraphicsCommandList9_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
35496 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
35497
35498#define ID3D12GraphicsCommandList9_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
35499 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
35500
35501#define ID3D12GraphicsCommandList9_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
35502 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
35503
35504#define ID3D12GraphicsCommandList9_IASetIndexBuffer(This,pView) \
35505 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
35506
35507#define ID3D12GraphicsCommandList9_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
35508 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
35509
35510#define ID3D12GraphicsCommandList9_SOSetTargets(This,StartSlot,NumViews,pViews) \
35511 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
35512
35513#define ID3D12GraphicsCommandList9_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
35514 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
35515
35516#define ID3D12GraphicsCommandList9_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
35517 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
35518
35519#define ID3D12GraphicsCommandList9_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
35520 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
35521
35522#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
35523 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
35524
35525#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
35526 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
35527
35528#define ID3D12GraphicsCommandList9_DiscardResource(This,pResource,pRegion) \
35529 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
35530
35531#define ID3D12GraphicsCommandList9_BeginQuery(This,pQueryHeap,Type,Index) \
35532 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
35533
35534#define ID3D12GraphicsCommandList9_EndQuery(This,pQueryHeap,Type,Index) \
35535 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
35536
35537#define ID3D12GraphicsCommandList9_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
35538 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
35539
35540#define ID3D12GraphicsCommandList9_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
35541 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
35542
35543#define ID3D12GraphicsCommandList9_SetMarker(This,Metadata,pData,Size) \
35544 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
35545
35546#define ID3D12GraphicsCommandList9_BeginEvent(This,Metadata,pData,Size) \
35547 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
35548
35549#define ID3D12GraphicsCommandList9_EndEvent(This) \
35550 ( (This)->lpVtbl -> EndEvent(This) )
35551
35552#define ID3D12GraphicsCommandList9_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
35553 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
35554
35555
35556#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
35557 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
35558
35559#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
35560 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
35561
35562#define ID3D12GraphicsCommandList9_OMSetDepthBounds(This,Min,Max) \
35563 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
35564
35565#define ID3D12GraphicsCommandList9_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
35566 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
35567
35568#define ID3D12GraphicsCommandList9_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
35569 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
35570
35571#define ID3D12GraphicsCommandList9_SetViewInstanceMask(This,Mask) \
35572 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
35573
35574
35575#define ID3D12GraphicsCommandList9_WriteBufferImmediate(This,Count,pParams,pModes) \
35576 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
35577
35578
35579#define ID3D12GraphicsCommandList9_SetProtectedResourceSession(This,pProtectedResourceSession) \
35580 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
35581
35582
35583#define ID3D12GraphicsCommandList9_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
35584 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
35585
35586#define ID3D12GraphicsCommandList9_EndRenderPass(This) \
35587 ( (This)->lpVtbl -> EndRenderPass(This) )
35588
35589#define ID3D12GraphicsCommandList9_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
35590 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
35591
35592#define ID3D12GraphicsCommandList9_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
35593 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
35594
35595#define ID3D12GraphicsCommandList9_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
35596 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
35597
35598#define ID3D12GraphicsCommandList9_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
35599 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
35600
35601#define ID3D12GraphicsCommandList9_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
35602 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
35603
35604#define ID3D12GraphicsCommandList9_SetPipelineState1(This,pStateObject) \
35605 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
35606
35607#define ID3D12GraphicsCommandList9_DispatchRays(This,pDesc) \
35608 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
35609
35610
35611#define ID3D12GraphicsCommandList9_RSSetShadingRate(This,baseShadingRate,combiners) \
35612 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
35613
35614#define ID3D12GraphicsCommandList9_RSSetShadingRateImage(This,shadingRateImage) \
35615 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
35616
35617
35618#define ID3D12GraphicsCommandList9_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
35619 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
35620
35621
35622#define ID3D12GraphicsCommandList9_Barrier(This,NumBarrierGroups,pBarrierGroups) \
35623 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
35624
35625
35626#define ID3D12GraphicsCommandList9_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
35627 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
35628
35629
35630#define ID3D12GraphicsCommandList9_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
35631 ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
35632
35633#define ID3D12GraphicsCommandList9_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
35634 ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
35635
35636#endif /* COBJMACROS */
35637
35638
35639#endif /* C style interface */
35640
35641
35642
35643
35644#endif /* __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__ */
35645
35646
35647#ifndef __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
35648#define __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
35649
35650/* interface ID3D12GraphicsCommandList10 */
35651/* [unique][local][object][uuid] */
35652
35653
35654EXTERN_C const IID IID_ID3D12GraphicsCommandList10;
35655
35656#if defined(__cplusplus) && !defined(CINTERFACE)
35657
35658 MIDL_INTERFACE("7013c015-d161-4b63-a08c-238552dd8acc")
35659 ID3D12GraphicsCommandList10 : public ID3D12GraphicsCommandList9
35660 {
35661 public:
35662 virtual void STDMETHODCALLTYPE SetProgram(
35663 _In_ const D3D12_SET_PROGRAM_DESC *pDesc) = 0;
35664
35665 virtual void STDMETHODCALLTYPE DispatchGraph(
35666 _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc) = 0;
35667
35668 };
35669
35670
35671#else /* C style interface */
35672
35673 typedef struct ID3D12GraphicsCommandList10Vtbl
35674 {
35675 BEGIN_INTERFACE
35676
35677 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
35678 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
35679 ID3D12GraphicsCommandList10 * This,
35680 REFIID riid,
35681 _COM_Outptr_ void **ppvObject);
35682
35683 DECLSPEC_XFGVIRT(IUnknown, AddRef)
35684 ULONG ( STDMETHODCALLTYPE *AddRef )(
35685 ID3D12GraphicsCommandList10 * This);
35686
35687 DECLSPEC_XFGVIRT(IUnknown, Release)
35688 ULONG ( STDMETHODCALLTYPE *Release )(
35689 ID3D12GraphicsCommandList10 * This);
35690
35691 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
35692 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
35693 ID3D12GraphicsCommandList10 * This,
35694 _In_ REFGUID guid,
35695 _Inout_ UINT *pDataSize,
35696 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
35697
35698 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
35699 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
35700 ID3D12GraphicsCommandList10 * This,
35701 _In_ REFGUID guid,
35702 _In_ UINT DataSize,
35703 _In_reads_bytes_opt_( DataSize ) const void *pData);
35704
35705 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
35706 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
35707 ID3D12GraphicsCommandList10 * This,
35708 _In_ REFGUID guid,
35709 _In_opt_ const IUnknown *pData);
35710
35711 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
35712 HRESULT ( STDMETHODCALLTYPE *SetName )(
35713 ID3D12GraphicsCommandList10 * This,
35714 _In_z_ LPCWSTR Name);
35715
35716 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
35717 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
35718 ID3D12GraphicsCommandList10 * This,
35719 REFIID riid,
35720 _COM_Outptr_opt_ void **ppvDevice);
35721
35722 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
35723 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
35724 ID3D12GraphicsCommandList10 * This);
35725
35726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
35727 HRESULT ( STDMETHODCALLTYPE *Close )(
35728 ID3D12GraphicsCommandList10 * This);
35729
35730 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
35731 HRESULT ( STDMETHODCALLTYPE *Reset )(
35732 ID3D12GraphicsCommandList10 * This,
35733 _In_ ID3D12CommandAllocator *pAllocator,
35734 _In_opt_ ID3D12PipelineState *pInitialState);
35735
35736 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
35737 void ( STDMETHODCALLTYPE *ClearState )(
35738 ID3D12GraphicsCommandList10 * This,
35739 _In_opt_ ID3D12PipelineState *pPipelineState);
35740
35741 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
35742 void ( STDMETHODCALLTYPE *DrawInstanced )(
35743 ID3D12GraphicsCommandList10 * This,
35744 _In_ UINT VertexCountPerInstance,
35745 _In_ UINT InstanceCount,
35746 _In_ UINT StartVertexLocation,
35747 _In_ UINT StartInstanceLocation);
35748
35749 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
35750 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
35751 ID3D12GraphicsCommandList10 * This,
35752 _In_ UINT IndexCountPerInstance,
35753 _In_ UINT InstanceCount,
35754 _In_ UINT StartIndexLocation,
35755 _In_ INT BaseVertexLocation,
35756 _In_ UINT StartInstanceLocation);
35757
35758 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
35759 void ( STDMETHODCALLTYPE *Dispatch )(
35760 ID3D12GraphicsCommandList10 * This,
35761 _In_ UINT ThreadGroupCountX,
35762 _In_ UINT ThreadGroupCountY,
35763 _In_ UINT ThreadGroupCountZ);
35764
35765 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
35766 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
35767 ID3D12GraphicsCommandList10 * This,
35768 _In_ ID3D12Resource *pDstBuffer,
35769 UINT64 DstOffset,
35770 _In_ ID3D12Resource *pSrcBuffer,
35771 UINT64 SrcOffset,
35772 UINT64 NumBytes);
35773
35774 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
35775 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
35776 ID3D12GraphicsCommandList10 * This,
35777 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
35778 UINT DstX,
35779 UINT DstY,
35780 UINT DstZ,
35781 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
35782 _In_opt_ const D3D12_BOX *pSrcBox);
35783
35784 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
35785 void ( STDMETHODCALLTYPE *CopyResource )(
35786 ID3D12GraphicsCommandList10 * This,
35787 _In_ ID3D12Resource *pDstResource,
35788 _In_ ID3D12Resource *pSrcResource);
35789
35790 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
35791 void ( STDMETHODCALLTYPE *CopyTiles )(
35792 ID3D12GraphicsCommandList10 * This,
35793 _In_ ID3D12Resource *pTiledResource,
35794 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
35795 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
35796 _In_ ID3D12Resource *pBuffer,
35797 UINT64 BufferStartOffsetInBytes,
35798 D3D12_TILE_COPY_FLAGS Flags);
35799
35800 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
35801 void ( STDMETHODCALLTYPE *ResolveSubresource )(
35802 ID3D12GraphicsCommandList10 * This,
35803 _In_ ID3D12Resource *pDstResource,
35804 _In_ UINT DstSubresource,
35805 _In_ ID3D12Resource *pSrcResource,
35806 _In_ UINT SrcSubresource,
35807 _In_ DXGI_FORMAT Format);
35808
35809 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
35810 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
35811 ID3D12GraphicsCommandList10 * This,
35812 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
35813
35814 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
35815 void ( STDMETHODCALLTYPE *RSSetViewports )(
35816 ID3D12GraphicsCommandList10 * This,
35817 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
35818 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
35819
35820 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
35821 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
35822 ID3D12GraphicsCommandList10 * This,
35823 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
35824 _In_reads_( NumRects) const D3D12_RECT *pRects);
35825
35826 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
35827 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
35828 ID3D12GraphicsCommandList10 * This,
35829 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
35830
35831 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
35832 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
35833 ID3D12GraphicsCommandList10 * This,
35834 _In_ UINT StencilRef);
35835
35836 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
35837 void ( STDMETHODCALLTYPE *SetPipelineState )(
35838 ID3D12GraphicsCommandList10 * This,
35839 _In_ ID3D12PipelineState *pPipelineState);
35840
35841 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
35842 void ( STDMETHODCALLTYPE *ResourceBarrier )(
35843 ID3D12GraphicsCommandList10 * This,
35844 _In_ UINT NumBarriers,
35845 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
35846
35847 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
35848 void ( STDMETHODCALLTYPE *ExecuteBundle )(
35849 ID3D12GraphicsCommandList10 * This,
35850 _In_ ID3D12GraphicsCommandList *pCommandList);
35851
35852 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
35853 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
35854 ID3D12GraphicsCommandList10 * This,
35855 _In_ UINT NumDescriptorHeaps,
35856 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
35857
35858 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
35859 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
35860 ID3D12GraphicsCommandList10 * This,
35861 _In_opt_ ID3D12RootSignature *pRootSignature);
35862
35863 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
35864 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
35865 ID3D12GraphicsCommandList10 * This,
35866 _In_opt_ ID3D12RootSignature *pRootSignature);
35867
35868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
35869 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
35870 ID3D12GraphicsCommandList10 * This,
35871 _In_ UINT RootParameterIndex,
35872 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
35873
35874 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
35875 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
35876 ID3D12GraphicsCommandList10 * This,
35877 _In_ UINT RootParameterIndex,
35878 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
35879
35880 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
35881 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
35882 ID3D12GraphicsCommandList10 * This,
35883 _In_ UINT RootParameterIndex,
35884 _In_ UINT SrcData,
35885 _In_ UINT DestOffsetIn32BitValues);
35886
35887 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
35888 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
35889 ID3D12GraphicsCommandList10 * This,
35890 _In_ UINT RootParameterIndex,
35891 _In_ UINT SrcData,
35892 _In_ UINT DestOffsetIn32BitValues);
35893
35894 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
35895 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
35896 ID3D12GraphicsCommandList10 * This,
35897 _In_ UINT RootParameterIndex,
35898 _In_ UINT Num32BitValuesToSet,
35899 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35900 _In_ UINT DestOffsetIn32BitValues);
35901
35902 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
35903 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
35904 ID3D12GraphicsCommandList10 * This,
35905 _In_ UINT RootParameterIndex,
35906 _In_ UINT Num32BitValuesToSet,
35907 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35908 _In_ UINT DestOffsetIn32BitValues);
35909
35910 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
35911 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
35912 ID3D12GraphicsCommandList10 * This,
35913 _In_ UINT RootParameterIndex,
35914 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35915
35916 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
35917 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
35918 ID3D12GraphicsCommandList10 * This,
35919 _In_ UINT RootParameterIndex,
35920 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35921
35922 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
35923 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
35924 ID3D12GraphicsCommandList10 * This,
35925 _In_ UINT RootParameterIndex,
35926 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35927
35928 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
35929 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
35930 ID3D12GraphicsCommandList10 * This,
35931 _In_ UINT RootParameterIndex,
35932 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35933
35934 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
35935 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
35936 ID3D12GraphicsCommandList10 * This,
35937 _In_ UINT RootParameterIndex,
35938 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35939
35940 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
35941 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
35942 ID3D12GraphicsCommandList10 * This,
35943 _In_ UINT RootParameterIndex,
35944 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35945
35946 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
35947 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
35948 ID3D12GraphicsCommandList10 * This,
35949 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
35950
35951 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
35952 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
35953 ID3D12GraphicsCommandList10 * This,
35954 _In_ UINT StartSlot,
35955 _In_ UINT NumViews,
35956 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
35957
35958 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
35959 void ( STDMETHODCALLTYPE *SOSetTargets )(
35960 ID3D12GraphicsCommandList10 * This,
35961 _In_ UINT StartSlot,
35962 _In_ UINT NumViews,
35963 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
35964
35965 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
35966 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
35967 ID3D12GraphicsCommandList10 * This,
35968 _In_ UINT NumRenderTargetDescriptors,
35969 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
35970 _In_ BOOL RTsSingleHandleToDescriptorRange,
35971 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
35972
35973 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
35974 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
35975 ID3D12GraphicsCommandList10 * This,
35976 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
35977 _In_ D3D12_CLEAR_FLAGS ClearFlags,
35978 _In_ FLOAT Depth,
35979 _In_ UINT8 Stencil,
35980 _In_ UINT NumRects,
35981 _In_reads_(NumRects) const D3D12_RECT *pRects);
35982
35983 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
35984 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
35985 ID3D12GraphicsCommandList10 * This,
35986 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
35987 _In_ const FLOAT ColorRGBA[ 4 ],
35988 _In_ UINT NumRects,
35989 _In_reads_(NumRects) const D3D12_RECT *pRects);
35990
35991 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
35992 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
35993 ID3D12GraphicsCommandList10 * This,
35994 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35995 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35996 _In_ ID3D12Resource *pResource,
35997 _In_ const UINT Values[ 4 ],
35998 _In_ UINT NumRects,
35999 _In_reads_(NumRects) const D3D12_RECT *pRects);
36000
36001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
36002 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
36003 ID3D12GraphicsCommandList10 * This,
36004 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
36005 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
36006 _In_ ID3D12Resource *pResource,
36007 _In_ const FLOAT Values[ 4 ],
36008 _In_ UINT NumRects,
36009 _In_reads_(NumRects) const D3D12_RECT *pRects);
36010
36011 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
36012 void ( STDMETHODCALLTYPE *DiscardResource )(
36013 ID3D12GraphicsCommandList10 * This,
36014 _In_ ID3D12Resource *pResource,
36015 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
36016
36017 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
36018 void ( STDMETHODCALLTYPE *BeginQuery )(
36019 ID3D12GraphicsCommandList10 * This,
36020 _In_ ID3D12QueryHeap *pQueryHeap,
36021 _In_ D3D12_QUERY_TYPE Type,
36022 _In_ UINT Index);
36023
36024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
36025 void ( STDMETHODCALLTYPE *EndQuery )(
36026 ID3D12GraphicsCommandList10 * This,
36027 _In_ ID3D12QueryHeap *pQueryHeap,
36028 _In_ D3D12_QUERY_TYPE Type,
36029 _In_ UINT Index);
36030
36031 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
36032 void ( STDMETHODCALLTYPE *ResolveQueryData )(
36033 ID3D12GraphicsCommandList10 * This,
36034 _In_ ID3D12QueryHeap *pQueryHeap,
36035 _In_ D3D12_QUERY_TYPE Type,
36036 _In_ UINT StartIndex,
36037 _In_ UINT NumQueries,
36038 _In_ ID3D12Resource *pDestinationBuffer,
36039 _In_ UINT64 AlignedDestinationBufferOffset);
36040
36041 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
36042 void ( STDMETHODCALLTYPE *SetPredication )(
36043 ID3D12GraphicsCommandList10 * This,
36044 _In_opt_ ID3D12Resource *pBuffer,
36045 _In_ UINT64 AlignedBufferOffset,
36046 _In_ D3D12_PREDICATION_OP Operation);
36047
36048 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
36049 void ( STDMETHODCALLTYPE *SetMarker )(
36050 ID3D12GraphicsCommandList10 * This,
36051 UINT Metadata,
36052 _In_reads_bytes_opt_(Size) const void *pData,
36053 UINT Size);
36054
36055 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
36056 void ( STDMETHODCALLTYPE *BeginEvent )(
36057 ID3D12GraphicsCommandList10 * This,
36058 UINT Metadata,
36059 _In_reads_bytes_opt_(Size) const void *pData,
36060 UINT Size);
36061
36062 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
36063 void ( STDMETHODCALLTYPE *EndEvent )(
36064 ID3D12GraphicsCommandList10 * This);
36065
36066 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
36067 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
36068 ID3D12GraphicsCommandList10 * This,
36069 _In_ ID3D12CommandSignature *pCommandSignature,
36070 _In_ UINT MaxCommandCount,
36071 _In_ ID3D12Resource *pArgumentBuffer,
36072 _In_ UINT64 ArgumentBufferOffset,
36073 _In_opt_ ID3D12Resource *pCountBuffer,
36074 _In_ UINT64 CountBufferOffset);
36075
36076 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
36077 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
36078 ID3D12GraphicsCommandList10 * This,
36079 _In_ ID3D12Resource *pDstBuffer,
36080 UINT64 DstOffset,
36081 _In_ ID3D12Resource *pSrcBuffer,
36082 UINT64 SrcOffset,
36083 UINT Dependencies,
36084 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
36085 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
36086
36087 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
36088 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
36089 ID3D12GraphicsCommandList10 * This,
36090 _In_ ID3D12Resource *pDstBuffer,
36091 UINT64 DstOffset,
36092 _In_ ID3D12Resource *pSrcBuffer,
36093 UINT64 SrcOffset,
36094 UINT Dependencies,
36095 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
36096 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
36097
36098 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
36099 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
36100 ID3D12GraphicsCommandList10 * This,
36101 _In_ FLOAT Min,
36102 _In_ FLOAT Max);
36103
36104 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
36105 void ( STDMETHODCALLTYPE *SetSamplePositions )(
36106 ID3D12GraphicsCommandList10 * This,
36107 _In_ UINT NumSamplesPerPixel,
36108 _In_ UINT NumPixels,
36109 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
36110
36111 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
36112 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
36113 ID3D12GraphicsCommandList10 * This,
36114 _In_ ID3D12Resource *pDstResource,
36115 _In_ UINT DstSubresource,
36116 _In_ UINT DstX,
36117 _In_ UINT DstY,
36118 _In_ ID3D12Resource *pSrcResource,
36119 _In_ UINT SrcSubresource,
36120 _In_opt_ D3D12_RECT *pSrcRect,
36121 _In_ DXGI_FORMAT Format,
36122 _In_ D3D12_RESOLVE_MODE ResolveMode);
36123
36124 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
36125 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
36126 ID3D12GraphicsCommandList10 * This,
36127 _In_ UINT Mask);
36128
36129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
36130 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
36131 ID3D12GraphicsCommandList10 * This,
36132 UINT Count,
36133 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
36134 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
36135
36136 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
36137 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
36138 ID3D12GraphicsCommandList10 * This,
36139 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
36140
36141 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
36142 void ( STDMETHODCALLTYPE *BeginRenderPass )(
36143 ID3D12GraphicsCommandList10 * This,
36144 _In_ UINT NumRenderTargets,
36145 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
36146 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
36147 D3D12_RENDER_PASS_FLAGS Flags);
36148
36149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
36150 void ( STDMETHODCALLTYPE *EndRenderPass )(
36151 ID3D12GraphicsCommandList10 * This);
36152
36153 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
36154 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
36155 ID3D12GraphicsCommandList10 * This,
36156 _In_ ID3D12MetaCommand *pMetaCommand,
36157 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
36158 _In_ SIZE_T InitializationParametersDataSizeInBytes);
36159
36160 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
36161 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
36162 ID3D12GraphicsCommandList10 * This,
36163 _In_ ID3D12MetaCommand *pMetaCommand,
36164 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
36165 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
36166
36167 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
36168 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
36169 ID3D12GraphicsCommandList10 * This,
36170 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
36171 _In_ UINT NumPostbuildInfoDescs,
36172 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
36173
36174 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
36175 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
36176 ID3D12GraphicsCommandList10 * This,
36177 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
36178 _In_ UINT NumSourceAccelerationStructures,
36179 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
36180
36181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
36182 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
36183 ID3D12GraphicsCommandList10 * This,
36184 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
36185 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
36186 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
36187
36188 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
36189 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
36190 ID3D12GraphicsCommandList10 * This,
36191 _In_ ID3D12StateObject *pStateObject);
36192
36193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
36194 void ( STDMETHODCALLTYPE *DispatchRays )(
36195 ID3D12GraphicsCommandList10 * This,
36196 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
36197
36198 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
36199 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
36200 ID3D12GraphicsCommandList10 * This,
36201 _In_ D3D12_SHADING_RATE baseShadingRate,
36202 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
36203
36204 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
36205 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
36206 ID3D12GraphicsCommandList10 * This,
36207 _In_opt_ ID3D12Resource *shadingRateImage);
36208
36209 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
36210 void ( STDMETHODCALLTYPE *DispatchMesh )(
36211 ID3D12GraphicsCommandList10 * This,
36212 _In_ UINT ThreadGroupCountX,
36213 _In_ UINT ThreadGroupCountY,
36214 _In_ UINT ThreadGroupCountZ);
36215
36216 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
36217 void ( STDMETHODCALLTYPE *Barrier )(
36218 ID3D12GraphicsCommandList10 * This,
36219 UINT32 NumBarrierGroups,
36220 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
36221
36222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
36223 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
36224 ID3D12GraphicsCommandList10 * This,
36225 _In_ UINT FrontStencilRef,
36226 _In_ UINT BackStencilRef);
36227
36228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
36229 void ( STDMETHODCALLTYPE *RSSetDepthBias )(
36230 ID3D12GraphicsCommandList10 * This,
36231 _In_ FLOAT DepthBias,
36232 _In_ FLOAT DepthBiasClamp,
36233 _In_ FLOAT SlopeScaledDepthBias);
36234
36235 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
36236 void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
36237 ID3D12GraphicsCommandList10 * This,
36238 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
36239
36240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, SetProgram)
36241 void ( STDMETHODCALLTYPE *SetProgram )(
36242 ID3D12GraphicsCommandList10 * This,
36243 _In_ const D3D12_SET_PROGRAM_DESC *pDesc);
36244
36245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, DispatchGraph)
36246 void ( STDMETHODCALLTYPE *DispatchGraph )(
36247 ID3D12GraphicsCommandList10 * This,
36248 _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc);
36249
36250 END_INTERFACE
36251 } ID3D12GraphicsCommandList10Vtbl;
36252
36253 interface ID3D12GraphicsCommandList10
36254 {
36255 CONST_VTBL struct ID3D12GraphicsCommandList10Vtbl *lpVtbl;
36256 };
36257
36258
36259
36260#ifdef COBJMACROS
36261
36262
36263#define ID3D12GraphicsCommandList10_QueryInterface(This,riid,ppvObject) \
36264 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36265
36266#define ID3D12GraphicsCommandList10_AddRef(This) \
36267 ( (This)->lpVtbl -> AddRef(This) )
36268
36269#define ID3D12GraphicsCommandList10_Release(This) \
36270 ( (This)->lpVtbl -> Release(This) )
36271
36272
36273#define ID3D12GraphicsCommandList10_GetPrivateData(This,guid,pDataSize,pData) \
36274 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
36275
36276#define ID3D12GraphicsCommandList10_SetPrivateData(This,guid,DataSize,pData) \
36277 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
36278
36279#define ID3D12GraphicsCommandList10_SetPrivateDataInterface(This,guid,pData) \
36280 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
36281
36282#define ID3D12GraphicsCommandList10_SetName(This,Name) \
36283 ( (This)->lpVtbl -> SetName(This,Name) )
36284
36285
36286#define ID3D12GraphicsCommandList10_GetDevice(This,riid,ppvDevice) \
36287 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
36288
36289
36290#define ID3D12GraphicsCommandList10_GetType(This) \
36291 ( (This)->lpVtbl -> GetType(This) )
36292
36293
36294#define ID3D12GraphicsCommandList10_Close(This) \
36295 ( (This)->lpVtbl -> Close(This) )
36296
36297#define ID3D12GraphicsCommandList10_Reset(This,pAllocator,pInitialState) \
36298 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
36299
36300#define ID3D12GraphicsCommandList10_ClearState(This,pPipelineState) \
36301 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
36302
36303#define ID3D12GraphicsCommandList10_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
36304 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
36305
36306#define ID3D12GraphicsCommandList10_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
36307 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
36308
36309#define ID3D12GraphicsCommandList10_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
36310 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
36311
36312#define ID3D12GraphicsCommandList10_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
36313 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
36314
36315#define ID3D12GraphicsCommandList10_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
36316 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
36317
36318#define ID3D12GraphicsCommandList10_CopyResource(This,pDstResource,pSrcResource) \
36319 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
36320
36321#define ID3D12GraphicsCommandList10_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
36322 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
36323
36324#define ID3D12GraphicsCommandList10_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
36325 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
36326
36327#define ID3D12GraphicsCommandList10_IASetPrimitiveTopology(This,PrimitiveTopology) \
36328 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
36329
36330#define ID3D12GraphicsCommandList10_RSSetViewports(This,NumViewports,pViewports) \
36331 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
36332
36333#define ID3D12GraphicsCommandList10_RSSetScissorRects(This,NumRects,pRects) \
36334 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
36335
36336#define ID3D12GraphicsCommandList10_OMSetBlendFactor(This,BlendFactor) \
36337 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
36338
36339#define ID3D12GraphicsCommandList10_OMSetStencilRef(This,StencilRef) \
36340 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
36341
36342#define ID3D12GraphicsCommandList10_SetPipelineState(This,pPipelineState) \
36343 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
36344
36345#define ID3D12GraphicsCommandList10_ResourceBarrier(This,NumBarriers,pBarriers) \
36346 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
36347
36348#define ID3D12GraphicsCommandList10_ExecuteBundle(This,pCommandList) \
36349 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
36350
36351#define ID3D12GraphicsCommandList10_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
36352 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
36353
36354#define ID3D12GraphicsCommandList10_SetComputeRootSignature(This,pRootSignature) \
36355 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
36356
36357#define ID3D12GraphicsCommandList10_SetGraphicsRootSignature(This,pRootSignature) \
36358 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
36359
36360#define ID3D12GraphicsCommandList10_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
36361 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
36362
36363#define ID3D12GraphicsCommandList10_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
36364 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
36365
36366#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
36367 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
36368
36369#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
36370 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
36371
36372#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
36373 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
36374
36375#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
36376 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
36377
36378#define ID3D12GraphicsCommandList10_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
36379 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
36380
36381#define ID3D12GraphicsCommandList10_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
36382 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
36383
36384#define ID3D12GraphicsCommandList10_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
36385 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
36386
36387#define ID3D12GraphicsCommandList10_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
36388 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
36389
36390#define ID3D12GraphicsCommandList10_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
36391 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
36392
36393#define ID3D12GraphicsCommandList10_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
36394 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
36395
36396#define ID3D12GraphicsCommandList10_IASetIndexBuffer(This,pView) \
36397 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
36398
36399#define ID3D12GraphicsCommandList10_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
36400 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
36401
36402#define ID3D12GraphicsCommandList10_SOSetTargets(This,StartSlot,NumViews,pViews) \
36403 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
36404
36405#define ID3D12GraphicsCommandList10_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
36406 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
36407
36408#define ID3D12GraphicsCommandList10_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
36409 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
36410
36411#define ID3D12GraphicsCommandList10_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
36412 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
36413
36414#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
36415 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
36416
36417#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
36418 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
36419
36420#define ID3D12GraphicsCommandList10_DiscardResource(This,pResource,pRegion) \
36421 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
36422
36423#define ID3D12GraphicsCommandList10_BeginQuery(This,pQueryHeap,Type,Index) \
36424 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
36425
36426#define ID3D12GraphicsCommandList10_EndQuery(This,pQueryHeap,Type,Index) \
36427 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
36428
36429#define ID3D12GraphicsCommandList10_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
36430 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
36431
36432#define ID3D12GraphicsCommandList10_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
36433 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
36434
36435#define ID3D12GraphicsCommandList10_SetMarker(This,Metadata,pData,Size) \
36436 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
36437
36438#define ID3D12GraphicsCommandList10_BeginEvent(This,Metadata,pData,Size) \
36439 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
36440
36441#define ID3D12GraphicsCommandList10_EndEvent(This) \
36442 ( (This)->lpVtbl -> EndEvent(This) )
36443
36444#define ID3D12GraphicsCommandList10_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
36445 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
36446
36447
36448#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
36449 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
36450
36451#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
36452 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
36453
36454#define ID3D12GraphicsCommandList10_OMSetDepthBounds(This,Min,Max) \
36455 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
36456
36457#define ID3D12GraphicsCommandList10_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
36458 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
36459
36460#define ID3D12GraphicsCommandList10_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
36461 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
36462
36463#define ID3D12GraphicsCommandList10_SetViewInstanceMask(This,Mask) \
36464 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
36465
36466
36467#define ID3D12GraphicsCommandList10_WriteBufferImmediate(This,Count,pParams,pModes) \
36468 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
36469
36470
36471#define ID3D12GraphicsCommandList10_SetProtectedResourceSession(This,pProtectedResourceSession) \
36472 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
36473
36474
36475#define ID3D12GraphicsCommandList10_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
36476 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
36477
36478#define ID3D12GraphicsCommandList10_EndRenderPass(This) \
36479 ( (This)->lpVtbl -> EndRenderPass(This) )
36480
36481#define ID3D12GraphicsCommandList10_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
36482 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
36483
36484#define ID3D12GraphicsCommandList10_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
36485 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
36486
36487#define ID3D12GraphicsCommandList10_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
36488 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
36489
36490#define ID3D12GraphicsCommandList10_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
36491 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
36492
36493#define ID3D12GraphicsCommandList10_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
36494 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
36495
36496#define ID3D12GraphicsCommandList10_SetPipelineState1(This,pStateObject) \
36497 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
36498
36499#define ID3D12GraphicsCommandList10_DispatchRays(This,pDesc) \
36500 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
36501
36502
36503#define ID3D12GraphicsCommandList10_RSSetShadingRate(This,baseShadingRate,combiners) \
36504 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
36505
36506#define ID3D12GraphicsCommandList10_RSSetShadingRateImage(This,shadingRateImage) \
36507 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
36508
36509
36510#define ID3D12GraphicsCommandList10_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
36511 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
36512
36513
36514#define ID3D12GraphicsCommandList10_Barrier(This,NumBarrierGroups,pBarrierGroups) \
36515 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
36516
36517
36518#define ID3D12GraphicsCommandList10_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
36519 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
36520
36521
36522#define ID3D12GraphicsCommandList10_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
36523 ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
36524
36525#define ID3D12GraphicsCommandList10_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
36526 ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
36527
36528
36529#define ID3D12GraphicsCommandList10_SetProgram(This,pDesc) \
36530 ( (This)->lpVtbl -> SetProgram(This,pDesc) )
36531
36532#define ID3D12GraphicsCommandList10_DispatchGraph(This,pDesc) \
36533 ( (This)->lpVtbl -> DispatchGraph(This,pDesc) )
36534
36535#endif /* COBJMACROS */
36536
36537
36538#endif /* C style interface */
36539
36540
36541
36542
36543#endif /* __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__ */
36544
36545
36546#ifndef __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
36547#define __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
36548
36549/* interface ID3D12DSRDeviceFactory */
36550/* [unique][local][object][uuid] */
36551
36552
36553EXTERN_C const IID IID_ID3D12DSRDeviceFactory;
36554
36555#if defined(__cplusplus) && !defined(CINTERFACE)
36556
36557 MIDL_INTERFACE("f343d1a0-afe3-439f-b13d-cd87a43b70ca")
36558 ID3D12DSRDeviceFactory : public IUnknown
36559 {
36560 public:
36561 virtual HRESULT STDMETHODCALLTYPE CreateDSRDevice(
36562 ID3D12Device *pD3D12Device,
36563 UINT NodeMask,
36564 REFIID riid,
36565 _COM_Outptr_ void **ppvDSRDevice) = 0;
36566
36567 };
36568
36569
36570#else /* C style interface */
36571
36572 typedef struct ID3D12DSRDeviceFactoryVtbl
36573 {
36574 BEGIN_INTERFACE
36575
36576 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
36577 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
36578 ID3D12DSRDeviceFactory * This,
36579 REFIID riid,
36580 _COM_Outptr_ void **ppvObject);
36581
36582 DECLSPEC_XFGVIRT(IUnknown, AddRef)
36583 ULONG ( STDMETHODCALLTYPE *AddRef )(
36584 ID3D12DSRDeviceFactory * This);
36585
36586 DECLSPEC_XFGVIRT(IUnknown, Release)
36587 ULONG ( STDMETHODCALLTYPE *Release )(
36588 ID3D12DSRDeviceFactory * This);
36589
36590 DECLSPEC_XFGVIRT(ID3D12DSRDeviceFactory, CreateDSRDevice)
36591 HRESULT ( STDMETHODCALLTYPE *CreateDSRDevice )(
36592 ID3D12DSRDeviceFactory * This,
36593 ID3D12Device *pD3D12Device,
36594 UINT NodeMask,
36595 REFIID riid,
36596 _COM_Outptr_ void **ppvDSRDevice);
36597
36598 END_INTERFACE
36599 } ID3D12DSRDeviceFactoryVtbl;
36600
36601 interface ID3D12DSRDeviceFactory
36602 {
36603 CONST_VTBL struct ID3D12DSRDeviceFactoryVtbl *lpVtbl;
36604 };
36605
36606
36607
36608#ifdef COBJMACROS
36609
36610
36611#define ID3D12DSRDeviceFactory_QueryInterface(This,riid,ppvObject) \
36612 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36613
36614#define ID3D12DSRDeviceFactory_AddRef(This) \
36615 ( (This)->lpVtbl -> AddRef(This) )
36616
36617#define ID3D12DSRDeviceFactory_Release(This) \
36618 ( (This)->lpVtbl -> Release(This) )
36619
36620
36621#define ID3D12DSRDeviceFactory_CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) \
36622 ( (This)->lpVtbl -> CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) )
36623
36624#endif /* COBJMACROS */
36625
36626
36627#endif /* C style interface */
36628
36629
36630
36631
36632#endif /* __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__ */
36633
36634
36635#ifndef __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
36636#define __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
36637
36638/* interface ID3D12GBVDiagnostics */
36639/* [unique][local][object][uuid] */
36640
36641
36642EXTERN_C const IID IID_ID3D12GBVDiagnostics;
36643
36644#if defined(__cplusplus) && !defined(CINTERFACE)
36645
36646 MIDL_INTERFACE("597985ab-9b75-4dbb-be23-0761195bebee")
36647 ID3D12GBVDiagnostics : public IUnknown
36648 {
36649 public:
36650 virtual HRESULT STDMETHODCALLTYPE GetGBVEntireSubresourceStatesData(
36651 _In_ ID3D12Resource *pResource,
36652 _Out_writes_bytes_(DataSize) int *pData,
36653 UINT DataSize) = 0;
36654
36655 virtual HRESULT STDMETHODCALLTYPE GetGBVSubresourceState(
36656 _In_ ID3D12Resource *pResource,
36657 UINT Subresource,
36658 _Out_ int *pData) = 0;
36659
36660 virtual HRESULT STDMETHODCALLTYPE GetGBVResourceUniformState(
36661 _In_ ID3D12Resource *pResource,
36662 _Out_ int *pData) = 0;
36663
36664 virtual HRESULT STDMETHODCALLTYPE GetGBVResourceInfo(
36665 _In_ ID3D12Resource *pResource,
36666 _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
36667 _In_opt_ UINT32 *pResourceHash,
36668 _In_opt_ UINT32 *pSubresourceStatesByteOffset) = 0;
36669
36670 virtual void STDMETHODCALLTYPE GBVReserved0( void) = 0;
36671
36672 virtual void STDMETHODCALLTYPE GBVReserved1( void) = 0;
36673
36674 };
36675
36676
36677#else /* C style interface */
36678
36679 typedef struct ID3D12GBVDiagnosticsVtbl
36680 {
36681 BEGIN_INTERFACE
36682
36683 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
36684 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
36685 ID3D12GBVDiagnostics * This,
36686 REFIID riid,
36687 _COM_Outptr_ void **ppvObject);
36688
36689 DECLSPEC_XFGVIRT(IUnknown, AddRef)
36690 ULONG ( STDMETHODCALLTYPE *AddRef )(
36691 ID3D12GBVDiagnostics * This);
36692
36693 DECLSPEC_XFGVIRT(IUnknown, Release)
36694 ULONG ( STDMETHODCALLTYPE *Release )(
36695 ID3D12GBVDiagnostics * This);
36696
36697 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVEntireSubresourceStatesData)
36698 HRESULT ( STDMETHODCALLTYPE *GetGBVEntireSubresourceStatesData )(
36699 ID3D12GBVDiagnostics * This,
36700 _In_ ID3D12Resource *pResource,
36701 _Out_writes_bytes_(DataSize) int *pData,
36702 UINT DataSize);
36703
36704 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVSubresourceState)
36705 HRESULT ( STDMETHODCALLTYPE *GetGBVSubresourceState )(
36706 ID3D12GBVDiagnostics * This,
36707 _In_ ID3D12Resource *pResource,
36708 UINT Subresource,
36709 _Out_ int *pData);
36710
36711 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceUniformState)
36712 HRESULT ( STDMETHODCALLTYPE *GetGBVResourceUniformState )(
36713 ID3D12GBVDiagnostics * This,
36714 _In_ ID3D12Resource *pResource,
36715 _Out_ int *pData);
36716
36717 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceInfo)
36718 HRESULT ( STDMETHODCALLTYPE *GetGBVResourceInfo )(
36719 ID3D12GBVDiagnostics * This,
36720 _In_ ID3D12Resource *pResource,
36721 _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
36722 _In_opt_ UINT32 *pResourceHash,
36723 _In_opt_ UINT32 *pSubresourceStatesByteOffset);
36724
36725 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved0)
36726 void ( STDMETHODCALLTYPE *GBVReserved0 )(
36727 ID3D12GBVDiagnostics * This);
36728
36729 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved1)
36730 void ( STDMETHODCALLTYPE *GBVReserved1 )(
36731 ID3D12GBVDiagnostics * This);
36732
36733 END_INTERFACE
36734 } ID3D12GBVDiagnosticsVtbl;
36735
36736 interface ID3D12GBVDiagnostics
36737 {
36738 CONST_VTBL struct ID3D12GBVDiagnosticsVtbl *lpVtbl;
36739 };
36740
36741
36742
36743#ifdef COBJMACROS
36744
36745
36746#define ID3D12GBVDiagnostics_QueryInterface(This,riid,ppvObject) \
36747 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36748
36749#define ID3D12GBVDiagnostics_AddRef(This) \
36750 ( (This)->lpVtbl -> AddRef(This) )
36751
36752#define ID3D12GBVDiagnostics_Release(This) \
36753 ( (This)->lpVtbl -> Release(This) )
36754
36755
36756#define ID3D12GBVDiagnostics_GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) \
36757 ( (This)->lpVtbl -> GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) )
36758
36759#define ID3D12GBVDiagnostics_GetGBVSubresourceState(This,pResource,Subresource,pData) \
36760 ( (This)->lpVtbl -> GetGBVSubresourceState(This,pResource,Subresource,pData) )
36761
36762#define ID3D12GBVDiagnostics_GetGBVResourceUniformState(This,pResource,pData) \
36763 ( (This)->lpVtbl -> GetGBVResourceUniformState(This,pResource,pData) )
36764
36765#define ID3D12GBVDiagnostics_GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) \
36766 ( (This)->lpVtbl -> GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) )
36767
36768#define ID3D12GBVDiagnostics_GBVReserved0(This) \
36769 ( (This)->lpVtbl -> GBVReserved0(This) )
36770
36771#define ID3D12GBVDiagnostics_GBVReserved1(This) \
36772 ( (This)->lpVtbl -> GBVReserved1(This) )
36773
36774#endif /* COBJMACROS */
36775
36776
36777#endif /* C style interface */
36778
36779
36780
36781
36782#endif /* __ID3D12GBVDiagnostics_INTERFACE_DEFINED__ */
36783
36784
36785/* interface __MIDL_itf_d3d12_0000_0085 */
36786/* [local] */
36787
36788#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
36789#pragma endregion
36790DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
36791DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
36792DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
36793DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
36794DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
36795DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
36796DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
36797DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
36798DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
36799DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
36800DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
36801DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
36802DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);
36803DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
36804DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
36805DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
36806DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
36807DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
36808DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
36809DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
36810DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
36811DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);
36812DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
36813DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
36814DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
36815DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
36816DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
36817DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);
36818DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);
36819DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);
36820DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);
36821DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);
36822DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
36823DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
36824DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
36825DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
36826DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);
36827DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);
36828DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);
36829DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
36830DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
36831DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
36832DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);
36833DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);
36834DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);
36835DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);
36836DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);
36837DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);
36838DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);
36839DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);
36840DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);
36841DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);
36842DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);
36843DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);
36844DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);
36845DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);
36846DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);
36847DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
36848DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);
36849DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);
36850DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);
36851DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);
36852DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);
36853DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);
36854DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);
36855DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
36856DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);
36857DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);
36858DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);
36859DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);
36860DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);
36861DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
36862DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);
36863DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);
36864DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);
36865DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);
36866DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);
36867DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
36868DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
36869DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);
36870DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);
36871DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);
36872DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);
36873DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);
36874DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);
36875
36876
36877extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_c_ifspec;
36878extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_s_ifspec;
36879
36880/* Additional Prototypes for ALL interfaces */
36881
36882/* end of Additional Prototypes */
36883
36884#ifdef __cplusplus
36885}
36886#endif
36887
36888#endif
36889
36890
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.idl
new file mode 100644
index 0000000..a3f0125
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12.idl
@@ -0,0 +1,7016 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "dxgiformat.idl";
12
13import "d3dcommon.idl";
14
15cpp_quote("#include <winapifamily.h>")
16
17#pragma region App Family
18cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
19
20// NOTE: The following constants are generated from the D3D12 hardware spec. Do not edit these values directly.
21cpp_quote("#ifndef _D3D12_CONSTANTS")
22cpp_quote("#define _D3D12_CONSTANTS")
23const UINT D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
24const UINT D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
25const UINT D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
26const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
27const UINT D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
28const UINT D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
29const UINT D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
30const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
31const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
32const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
33const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
34const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
35const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
36const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
37const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
38const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
39const UINT D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
40const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
41const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
42const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
43const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
44const UINT D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
45const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
46const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
47const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
48const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
49const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
50const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
51const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
52const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
53const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
54const UINT D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
55const UINT D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
56const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
57const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
58const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
59const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
60const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
61const UINT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
62const INT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
63const INT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
64const UINT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
65const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
66const UINT D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
67const UINT D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
68const UINT D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
69const UINT D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
70const UINT D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
71const UINT D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
72const UINT D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
73const UINT D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
74const UINT D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
75const UINT D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
76const UINT D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
77const UINT D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
78const UINT D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
79const UINT D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
80const UINT D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
81const UINT D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
82const UINT D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
83const UINT D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
84const UINT D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
85const UINT D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
86const UINT D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
87const UINT D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
88const UINT D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
89const UINT D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
90const UINT D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
91const UINT D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
92const UINT D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
93const UINT D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
94const UINT D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
95const UINT D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
96const UINT D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
97const UINT D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
98const UINT D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
99const UINT D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
100const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
101const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
102const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
103const UINT D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
104const UINT D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
105const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
106const UINT D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
107const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
108const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
109const UINT D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
110const UINT D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
111const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
112const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
113const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
114const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
115const UINT D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
116const UINT D3D12_CS_THREADID_REGISTER_COUNT = 1;
117const UINT D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
118const UINT D3D12_CS_THREAD_GROUP_MAX_X = 1024;
119const UINT D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
120const UINT D3D12_CS_THREAD_GROUP_MAX_Z = 64;
121const UINT D3D12_CS_THREAD_GROUP_MIN_X = 1;
122const UINT D3D12_CS_THREAD_GROUP_MIN_Y = 1;
123const UINT D3D12_CS_THREAD_GROUP_MIN_Z = 1;
124const UINT D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
125cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )")
126cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )")
127cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )")
128cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )")
129cpp_quote("#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )")
130const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
131cpp_quote("#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )")
132const UINT D3D12_DEFAULT_MAX_ANISOTROPY = 16;
133cpp_quote("#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )")
134const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
135const UINT D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
136const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
137const UINT D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
138const UINT D3D12_DEFAULT_SCISSOR_ENDX = 0;
139const UINT D3D12_DEFAULT_SCISSOR_ENDY = 0;
140const UINT D3D12_DEFAULT_SCISSOR_STARTX = 0;
141const UINT D3D12_DEFAULT_SCISSOR_STARTY = 0;
142cpp_quote("#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )")
143const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
144const UINT D3D12_DEFAULT_STENCIL_REFERENCE = 0;
145const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
146const UINT D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
147const UINT D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
148cpp_quote("#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )")
149cpp_quote("#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )")
150const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
151const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
152const UINT D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
153const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
154const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
155const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
156const UINT D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
157const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
158const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
159const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
160const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
161const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
162const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
163const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
164const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
165const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
166const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
167const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
168const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
169const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
170const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
171const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
172const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
173const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
174const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
175const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
176const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
177const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
178const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
179const UINT D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
180cpp_quote("#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )")
181cpp_quote("#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )")
182cpp_quote("#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )")
183cpp_quote("#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )")
184cpp_quote("#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )")
185cpp_quote("#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )")
186cpp_quote("#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )")
187cpp_quote("#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )")
188cpp_quote("#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )")
189cpp_quote("#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )")
190cpp_quote("#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )")
191cpp_quote("#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )")
192cpp_quote("#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )")
193const UINT D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
194const UINT D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
195const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
196const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
197const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
198const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
199const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
200const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
201const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
202const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
203const UINT D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
204const UINT D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
205const UINT D3D12_GS_INPUT_REGISTER_COUNT = 32;
206const UINT D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
207const UINT D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
208const UINT D3D12_GS_INPUT_REGISTER_VERTICES = 32;
209const UINT D3D12_GS_MAX_INSTANCE_COUNT = 32;
210const UINT D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
211const UINT D3D12_GS_OUTPUT_ELEMENTS = 32;
212const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
213const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
214const UINT D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
215const UINT D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
216const UINT D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
217const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
218const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
219const UINT D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
220const UINT D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
221const UINT D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
222const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
223const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
224const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
225const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
226const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
227const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
228const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
229const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
230const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
231const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
232const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
233const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
234const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
235const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
236const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
237const UINT D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
238cpp_quote("#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )")
239cpp_quote("#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )")
240const UINT D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
241const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
242const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
243const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
244const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
245const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
246const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
247const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
248const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
249const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
250const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
251const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
252const UINT D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
253const UINT D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
254const UINT D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
255const UINT D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
256const UINT D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
257const UINT D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
258const UINT D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
259const UINT D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
260const UINT D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
261const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
262const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
263const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
264const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
265const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
266const UINT D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
267const UINT D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
268cpp_quote("#define D3D12_LINEAR_GAMMA ( 1.0f )")
269const UINT D3D12_MAJOR_VERSION = 12;
270cpp_quote("#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )")
271cpp_quote("#define D3D12_MAX_DEPTH ( 1.0f )")
272const UINT D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
273const UINT D3D12_MAX_MAXANISOTROPY = 16;
274const UINT D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
275cpp_quote("#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )")
276const UINT D3D12_MAX_ROOT_COST = 64;
277const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000;
278const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000;
279const UINT D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
280const UINT D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
281const UINT D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
282const UINT D3D12_MINOR_VERSION = 0;
283cpp_quote("#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )")
284cpp_quote("#define D3D12_MIN_DEPTH ( 0.0f )")
285const UINT D3D12_MIN_MAXANISOTROPY = 0;
286cpp_quote("#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )")
287cpp_quote("#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )")
288const UINT D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
289const UINT D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
290const UINT D3D12_MS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID = 4194303;
291cpp_quote("#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )")
292const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
293const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
294const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
295const UINT D3D12_PACKED_TILE = 0xffffffff;
296const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
297const UINT D3D12_PREVIEW_SDK_VERSION = 717;
298const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
299const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
300const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
301const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
302const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
303const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
304const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
305const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
306const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
307const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
308const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
309const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
310const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
311cpp_quote("#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )")
312const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
313const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
314const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
315const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
316const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
317const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
318const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
319const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
320const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
321cpp_quote("#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )")
322const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
323const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
324const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
325const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
326const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
327const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
328const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
329const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
330const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
331const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
332const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
333const UINT D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT = 128;
334const UINT D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL = 12;
335const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
336const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
337const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
338const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
339const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
340const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
341const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
342const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
343const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
344const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
345const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
346const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
347const UINT D3D12_REQ_MAXANISOTROPY = 16;
348const UINT D3D12_REQ_MIP_LEVELS = 15;
349const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
350const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
351const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
352const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
353cpp_quote("#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )")
354const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
355const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
356const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
357const UINT D3D12_REQ_SUBRESOURCES = 30720;
358const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
359const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
360const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
361const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
362const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
363const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
364const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
365const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
366const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
367const UINT D3D12_SDK_VERSION = 618;
368const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
369const UINT D3D12_SHADER_MAJOR_VERSION = 5;
370const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
371const UINT D3D12_SHADER_MAX_INTERFACES = 253;
372const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
373const UINT D3D12_SHADER_MAX_TYPES = 65535;
374const UINT D3D12_SHADER_MINOR_VERSION = 1;
375const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
376const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
377const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
378const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
379const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
380const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
381const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
382const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
383const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
384const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
385const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
386const UINT D3D12_SO_STREAM_COUNT = 4;
387const UINT D3D12_SPEC_DATE_DAY = 14;
388const UINT D3D12_SPEC_DATE_MONTH = 11;
389const UINT D3D12_SPEC_DATE_YEAR = 2014;
390cpp_quote("#define D3D12_SPEC_VERSION ( 1.16 )")
391cpp_quote("#define D3D12_SRGB_GAMMA ( 2.2f )")
392cpp_quote("#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )")
393cpp_quote("#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )")
394cpp_quote("#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )")
395cpp_quote("#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )")
396cpp_quote("#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )")
397cpp_quote("#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )")
398const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
399const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
400const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
401const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
402const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
403const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
404const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
405const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
406const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
407const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
408const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
409const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
410const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
411const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
412const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
413const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
414const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
415const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
416const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
417const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
418const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
419const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
420const UINT D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT = 4096;
421const UINT D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT = 8;
422const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
423const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
424const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
425const UINT D3D12_UAV_SLOT_COUNT = 64;
426const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
427const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
428const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
429const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
430const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
431const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
432const UINT D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX = 0xFF;
433const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS = 64;
434const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS = 64;
435const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN = 9;
436const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM = 8;
437const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
438const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
439const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
440const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
441const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
442const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
443const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
444const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
445const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
446const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
447const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
448const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
449const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
450const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
451const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
452const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
453const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
454const UINT D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES = 8;
455const UINT D3D12_WORK_GRAPHS_DISPATCH_MAX_THREAD_GROUPS_PER_GRID = 16777215;
456const UINT D3D12_WORK_GRAPHS_MAX_NODE_DEPTH = 32;
457cpp_quote("#endif")
458
459
460// Forward declarations
461interface ID3D12CommandQueue;
462
463
464typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
465
466typedef enum D3D12_COMMAND_LIST_TYPE
467{
468 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
469 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
470 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
471 D3D12_COMMAND_LIST_TYPE_COPY = 3,
472 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
473 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
474 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
475
476 D3D12_COMMAND_LIST_TYPE_NONE = -1,
477
478} D3D12_COMMAND_LIST_TYPE;
479
480typedef enum D3D12_COMMAND_QUEUE_FLAGS
481{
482 D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
483 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
484 D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2,
485} D3D12_COMMAND_QUEUE_FLAGS;
486cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )" )
487
488typedef enum D3D12_COMMAND_QUEUE_PRIORITY
489{
490 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
491 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
492 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
493} D3D12_COMMAND_QUEUE_PRIORITY;
494
495typedef struct D3D12_COMMAND_QUEUE_DESC
496{
497 D3D12_COMMAND_LIST_TYPE Type;
498 INT Priority;
499 D3D12_COMMAND_QUEUE_FLAGS Flags;
500 UINT NodeMask;
501} D3D12_COMMAND_QUEUE_DESC;
502
503typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
504{
505 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
506 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
507 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
508 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
509 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
510} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
511
512typedef enum D3D12_INPUT_CLASSIFICATION
513{
514 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
515 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
516} D3D12_INPUT_CLASSIFICATION;
517
518typedef struct D3D12_INPUT_ELEMENT_DESC
519{
520 LPCSTR SemanticName;
521 UINT SemanticIndex;
522 DXGI_FORMAT Format;
523 UINT InputSlot;
524 UINT AlignedByteOffset;
525 D3D12_INPUT_CLASSIFICATION InputSlotClass;
526 UINT InstanceDataStepRate;
527} D3D12_INPUT_ELEMENT_DESC;
528
529// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
530typedef enum D3D12_FILL_MODE
531{
532 // 1 was POINT in D3D, unused in D3D12
533 D3D12_FILL_MODE_WIREFRAME = 2,
534 D3D12_FILL_MODE_SOLID = 3
535} D3D12_FILL_MODE;
536
537typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
538
539typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
540
541// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
542typedef enum D3D12_CULL_MODE
543{
544 D3D12_CULL_MODE_NONE = 1,
545 D3D12_CULL_MODE_FRONT = 2,
546 D3D12_CULL_MODE_BACK = 3
547} D3D12_CULL_MODE;
548
549typedef struct D3D12_SO_DECLARATION_ENTRY
550{
551 UINT Stream;
552 LPCSTR SemanticName;
553 UINT SemanticIndex;
554 BYTE StartComponent;
555 BYTE ComponentCount;
556 BYTE OutputSlot;
557} D3D12_SO_DECLARATION_ENTRY;
558
559typedef struct D3D12_VIEWPORT
560{
561 FLOAT TopLeftX;
562 FLOAT TopLeftY;
563 FLOAT Width;
564 FLOAT Height;
565 FLOAT MinDepth;
566 FLOAT MaxDepth;
567} D3D12_VIEWPORT;
568
569
570typedef RECT D3D12_RECT;
571
572
573typedef struct D3D12_BOX
574{
575 UINT left;
576 UINT top;
577 UINT front;
578 UINT right;
579 UINT bottom;
580 UINT back;
581} D3D12_BOX;
582
583//--------------------------------------------------------------------------------------------------------
584// The system LUID struct isn't defined in wtypes, so we repeat it here just
585// for the MIDL compiler.
586cpp_quote("#ifdef __midl")
587cpp_quote("#ifndef LUID_DEFINED")
588cpp_quote("#define LUID_DEFINED 1")
589typedef struct __LUID {
590 DWORD LowPart;
591 LONG HighPart;
592} LUID, * PLUID;
593cpp_quote("#endif")
594cpp_quote("#endif")
595
596
597////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
598//
599// Depth-Stencil State
600//
601////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
602
603// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
604typedef enum D3D12_COMPARISON_FUNC
605{
606 D3D12_COMPARISON_FUNC_NONE = 0,
607 D3D12_COMPARISON_FUNC_NEVER = 1,
608 D3D12_COMPARISON_FUNC_LESS = 2,
609 D3D12_COMPARISON_FUNC_EQUAL = 3,
610 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
611 D3D12_COMPARISON_FUNC_GREATER = 5,
612 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
613 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
614 D3D12_COMPARISON_FUNC_ALWAYS = 8
615} D3D12_COMPARISON_FUNC;
616
617typedef enum D3D12_DEPTH_WRITE_MASK
618{
619 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
620 D3D12_DEPTH_WRITE_MASK_ALL = 1
621} D3D12_DEPTH_WRITE_MASK;
622
623// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
624typedef enum D3D12_STENCIL_OP
625{
626 D3D12_STENCIL_OP_KEEP = 1,
627 D3D12_STENCIL_OP_ZERO = 2,
628 D3D12_STENCIL_OP_REPLACE = 3,
629 D3D12_STENCIL_OP_INCR_SAT = 4,
630 D3D12_STENCIL_OP_DECR_SAT = 5,
631 D3D12_STENCIL_OP_INVERT = 6,
632 D3D12_STENCIL_OP_INCR = 7,
633 D3D12_STENCIL_OP_DECR = 8
634} D3D12_STENCIL_OP;
635
636typedef struct D3D12_DEPTH_STENCILOP_DESC
637{
638 D3D12_STENCIL_OP StencilFailOp;
639 D3D12_STENCIL_OP StencilDepthFailOp;
640 D3D12_STENCIL_OP StencilPassOp;
641 D3D12_COMPARISON_FUNC StencilFunc;
642} D3D12_DEPTH_STENCILOP_DESC;
643
644typedef struct D3D12_DEPTH_STENCIL_DESC
645{
646 BOOL DepthEnable;
647 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
648 D3D12_COMPARISON_FUNC DepthFunc;
649 BOOL StencilEnable;
650 UINT8 StencilReadMask;
651 UINT8 StencilWriteMask;
652 D3D12_DEPTH_STENCILOP_DESC FrontFace;
653 D3D12_DEPTH_STENCILOP_DESC BackFace;
654} D3D12_DEPTH_STENCIL_DESC;
655
656typedef struct D3D12_DEPTH_STENCIL_DESC1
657{
658 BOOL DepthEnable;
659 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
660 D3D12_COMPARISON_FUNC DepthFunc;
661 BOOL StencilEnable;
662 UINT8 StencilReadMask;
663 UINT8 StencilWriteMask;
664 D3D12_DEPTH_STENCILOP_DESC FrontFace;
665 D3D12_DEPTH_STENCILOP_DESC BackFace;
666 BOOL DepthBoundsTestEnable;
667} D3D12_DEPTH_STENCIL_DESC1;
668
669// Front/back face independent stencil masks
670typedef struct D3D12_DEPTH_STENCILOP_DESC1
671{
672 D3D12_STENCIL_OP StencilFailOp;
673 D3D12_STENCIL_OP StencilDepthFailOp;
674 D3D12_STENCIL_OP StencilPassOp;
675 D3D12_COMPARISON_FUNC StencilFunc;
676 UINT8 StencilReadMask;
677 UINT8 StencilWriteMask;
678} D3D12_DEPTH_STENCILOP_DESC1;
679
680typedef struct D3D12_DEPTH_STENCIL_DESC2
681{
682 BOOL DepthEnable;
683 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
684 D3D12_COMPARISON_FUNC DepthFunc;
685 BOOL StencilEnable;
686 D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
687 D3D12_DEPTH_STENCILOP_DESC1 BackFace;
688 BOOL DepthBoundsTestEnable;
689} D3D12_DEPTH_STENCIL_DESC2;
690
691
692////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
693//
694// Blend State
695//
696////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
697
698// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
699typedef enum D3D12_BLEND
700{
701 D3D12_BLEND_ZERO = 1,
702 D3D12_BLEND_ONE = 2,
703 D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
704 D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
705 D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
706 D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
707 D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
708 D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
709 D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
710 D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
711 D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
712 // 12 reserved (was BOTHSRCALPHA)
713 // 13 reserved (was BOTHSRCALPHA)
714 D3D12_BLEND_BLEND_FACTOR = 14,
715 D3D12_BLEND_INV_BLEND_FACTOR = 15,
716 D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
717 D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
718 D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
719 D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
720 D3D12_BLEND_ALPHA_FACTOR = 20,
721 D3D12_BLEND_INV_ALPHA_FACTOR = 21
722} D3D12_BLEND;
723
724// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
725typedef enum D3D12_BLEND_OP
726{
727 D3D12_BLEND_OP_ADD = 1,
728 D3D12_BLEND_OP_SUBTRACT = 2,
729 D3D12_BLEND_OP_REV_SUBTRACT = 3,
730 D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
731 D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
732} D3D12_BLEND_OP;
733
734typedef enum D3D12_COLOR_WRITE_ENABLE
735{
736 D3D12_COLOR_WRITE_ENABLE_RED = 1,
737 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
738 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
739 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
740 D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
741 D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
742} D3D12_COLOR_WRITE_ENABLE;
743
744typedef enum D3D12_LOGIC_OP
745{
746 // Operation:
747 // (s == PS output, d = RTV contents)
748 D3D12_LOGIC_OP_CLEAR = 0, // 0
749 D3D12_LOGIC_OP_SET, // 1
750 D3D12_LOGIC_OP_COPY, // s
751 D3D12_LOGIC_OP_COPY_INVERTED, // ~s
752 D3D12_LOGIC_OP_NOOP, // d
753 D3D12_LOGIC_OP_INVERT, // ~d
754 D3D12_LOGIC_OP_AND, // s & d
755 D3D12_LOGIC_OP_NAND, // ~(s & d)
756 D3D12_LOGIC_OP_OR, // s | d
757 D3D12_LOGIC_OP_NOR, // ~(s | d)
758 D3D12_LOGIC_OP_XOR, // s ^ d
759 D3D12_LOGIC_OP_EQUIV, // ~(s ^ d)
760 D3D12_LOGIC_OP_AND_REVERSE, // s & ~d
761 D3D12_LOGIC_OP_AND_INVERTED, // ~s & d
762 D3D12_LOGIC_OP_OR_REVERSE, // s | ~d
763 D3D12_LOGIC_OP_OR_INVERTED, // ~s | d
764} D3D12_LOGIC_OP;
765
766typedef struct D3D12_RENDER_TARGET_BLEND_DESC
767{
768 BOOL BlendEnable;
769 BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
770 D3D12_BLEND SrcBlend;
771 D3D12_BLEND DestBlend;
772 D3D12_BLEND_OP BlendOp;
773 D3D12_BLEND SrcBlendAlpha;
774 D3D12_BLEND DestBlendAlpha;
775 D3D12_BLEND_OP BlendOpAlpha;
776 D3D12_LOGIC_OP LogicOp; // applies to RGBA
777 UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
778} D3D12_RENDER_TARGET_BLEND_DESC;
779
780typedef struct D3D12_BLEND_DESC
781{
782 BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
783 BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
784 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
785} D3D12_BLEND_DESC;
786
787cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
788cpp_quote( " IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" )
789
790
791////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
792//
793// Rasterizer State
794//
795////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
796
797typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
798{
799 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, // Default
800 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
801} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
802
803typedef struct D3D12_RASTERIZER_DESC
804{
805 D3D12_FILL_MODE FillMode;
806 D3D12_CULL_MODE CullMode;
807 BOOL FrontCounterClockwise;
808 INT DepthBias;
809 FLOAT DepthBiasClamp;
810 FLOAT SlopeScaledDepthBias;
811 BOOL DepthClipEnable;
812 BOOL MultisampleEnable;
813 BOOL AntialiasedLineEnable;
814 UINT ForcedSampleCount;
815 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
816} D3D12_RASTERIZER_DESC;
817
818typedef struct D3D12_RASTERIZER_DESC1
819{
820 D3D12_FILL_MODE FillMode;
821 D3D12_CULL_MODE CullMode;
822 BOOL FrontCounterClockwise;
823 FLOAT DepthBias;
824 FLOAT DepthBiasClamp;
825 FLOAT SlopeScaledDepthBias;
826 BOOL DepthClipEnable;
827 BOOL MultisampleEnable;
828 BOOL AntialiasedLineEnable;
829 UINT ForcedSampleCount;
830 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
831} D3D12_RASTERIZER_DESC1;
832
833typedef enum D3D12_LINE_RASTERIZATION_MODE
834{
835 D3D12_LINE_RASTERIZATION_MODE_ALIASED,
836 D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED,
837 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE,
838 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW,
839} D3D12_LINE_RASTERIZATION_MODE;
840
841typedef struct D3D12_RASTERIZER_DESC2
842{
843 D3D12_FILL_MODE FillMode;
844 D3D12_CULL_MODE CullMode;
845 BOOL FrontCounterClockwise;
846 FLOAT DepthBias;
847 FLOAT DepthBiasClamp;
848 FLOAT SlopeScaledDepthBias;
849 BOOL DepthClipEnable;
850 D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
851 UINT ForcedSampleCount;
852 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
853} D3D12_RASTERIZER_DESC2;
854
855////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
856//
857// Pipeline State v1
858//
859////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
860
861[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
862interface ID3D12RootSignature
863 : ID3D12DeviceChild
864{
865}
866
867typedef struct D3D12_SHADER_BYTECODE
868{
869 [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
870 SIZE_T BytecodeLength;
871} D3D12_SHADER_BYTECODE;
872
873typedef struct D3D12_STREAM_OUTPUT_DESC
874{
875 [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
876 UINT NumEntries;
877 [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
878 UINT NumStrides;
879 UINT RasterizedStream;
880} D3D12_STREAM_OUTPUT_DESC;
881
882typedef struct D3D12_INPUT_LAYOUT_DESC
883{
884 [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
885 UINT NumElements;
886} D3D12_INPUT_LAYOUT_DESC;
887
888typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
889{
890 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
891 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
892 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
893} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
894
895typedef enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
896{
897 D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
898 D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
899} D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
900
901typedef struct D3D12_CACHED_PIPELINE_STATE
902{
903 [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
904 SIZE_T CachedBlobSizeInBytes;
905} D3D12_CACHED_PIPELINE_STATE;
906
907typedef enum D3D12_PIPELINE_STATE_FLAGS
908{
909 D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
910 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
911 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
912 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8,
913
914} D3D12_PIPELINE_STATE_FLAGS;
915cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )" )
916
917typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
918{
919 ID3D12RootSignature* pRootSignature;
920 D3D12_SHADER_BYTECODE VS;
921 D3D12_SHADER_BYTECODE PS;
922 D3D12_SHADER_BYTECODE DS;
923 D3D12_SHADER_BYTECODE HS;
924 D3D12_SHADER_BYTECODE GS;
925 D3D12_STREAM_OUTPUT_DESC StreamOutput;
926 D3D12_BLEND_DESC BlendState;
927 UINT SampleMask;
928 D3D12_RASTERIZER_DESC RasterizerState;
929 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
930 D3D12_INPUT_LAYOUT_DESC InputLayout;
931 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
932 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
933 UINT NumRenderTargets;
934 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
935 DXGI_FORMAT DSVFormat;
936 DXGI_SAMPLE_DESC SampleDesc;
937 UINT NodeMask;
938 D3D12_CACHED_PIPELINE_STATE CachedPSO;
939 D3D12_PIPELINE_STATE_FLAGS Flags;
940} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
941
942typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
943{
944 ID3D12RootSignature* pRootSignature;
945 D3D12_SHADER_BYTECODE CS;
946 UINT NodeMask;
947 D3D12_CACHED_PIPELINE_STATE CachedPSO;
948 D3D12_PIPELINE_STATE_FLAGS Flags;
949} D3D12_COMPUTE_PIPELINE_STATE_DESC;
950
951////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
952//
953// Serialized Root Signature
954//
955////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
956typedef enum D3D_ROOT_SIGNATURE_VERSION
957{
958 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
959 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
960 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
961 D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3,
962} D3D_ROOT_SIGNATURE_VERSION;
963
964typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
965{
966 [annotation("_Field_size_bytes_full_(SerializedBlobSizeInBytes)")] const void* pSerializedBlob;
967 SIZE_T SerializedBlobSizeInBytes;
968} D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
969
970typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
971{
972 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
973} D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
974
975typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
976{
977 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
978} D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
979
980////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
981//
982// Pipeline State v2
983//
984////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
985
986struct D3D12_RT_FORMAT_ARRAY
987{
988 DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
989 UINT NumRenderTargets;
990};
991
992typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
993{
994 [annotation("_In_")] SIZE_T SizeInBytes;
995 [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
996} D3D12_PIPELINE_STATE_STREAM_DESC;
997
998typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
999{
1000 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
1001 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
1002 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
1003 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
1004 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
1005 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
1006 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
1007 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
1008 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
1009 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
1010 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
1011 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
1012 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
1013 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
1014 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
1015 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
1016 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
1017 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
1018 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
1019 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
1020 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
1021 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
1022 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
1023 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
1024 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
1025 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26, // D3D12_DEPTH_STENCIL_DESC2
1026 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27, // D3D12_RASTERIZER_DESC1
1027 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28, // D3D12_RASTERIZER_DESC2
1028 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29, // D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
1029 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
1030} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
1031
1032////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1033//
1034// D3D12 Caps
1035//
1036////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1037
1038typedef enum D3D12_FEATURE
1039{
1040 D3D12_FEATURE_D3D12_OPTIONS = 0,
1041 D3D12_FEATURE_ARCHITECTURE = 1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
1042 D3D12_FEATURE_FEATURE_LEVELS = 2,
1043 D3D12_FEATURE_FORMAT_SUPPORT = 3,
1044 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
1045 D3D12_FEATURE_FORMAT_INFO = 5,
1046 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
1047 D3D12_FEATURE_SHADER_MODEL = 7,
1048 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
1049 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
1050 D3D12_FEATURE_ROOT_SIGNATURE = 12,
1051 D3D12_FEATURE_ARCHITECTURE1 = 16,
1052 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
1053 D3D12_FEATURE_SHADER_CACHE = 19,
1054 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
1055 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
1056 D3D12_FEATURE_EXISTING_HEAPS = 22,
1057 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
1058 D3D12_FEATURE_SERIALIZATION = 24,
1059 D3D12_FEATURE_CROSS_NODE = 25,
1060 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
1061 D3D12_FEATURE_DISPLAYABLE = 28,
1062 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
1063 D3D12_FEATURE_QUERY_META_COMMAND = 31,
1064 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
1065 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
1066 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
1067 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
1068 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
1069 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
1070 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
1071 D3D12_FEATURE_D3D12_OPTIONS12 = 41,
1072 D3D12_FEATURE_D3D12_OPTIONS13 = 42,
1073 D3D12_FEATURE_D3D12_OPTIONS14 = 43,
1074 D3D12_FEATURE_D3D12_OPTIONS15 = 44,
1075 D3D12_FEATURE_D3D12_OPTIONS16 = 45,
1076 D3D12_FEATURE_D3D12_OPTIONS17 = 46,
1077 D3D12_FEATURE_D3D12_OPTIONS18 = 47,
1078 D3D12_FEATURE_D3D12_OPTIONS19 = 48,
1079 D3D12_FEATURE_D3D12_OPTIONS20 = 49,
1080 D3D12_FEATURE_PREDICATION = 50,
1081 D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
1082 D3D12_FEATURE_HARDWARE_COPY = 52,
1083 D3D12_FEATURE_D3D12_OPTIONS21 = 53,
1084 D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
1085 D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
1086 D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
1087 D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61,
1088
1089} D3D12_FEATURE;
1090
1091typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
1092{
1093 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
1094 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
1095 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
1096} D3D12_SHADER_MIN_PRECISION_SUPPORT;
1097cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )" )
1098
1099typedef enum D3D12_TILED_RESOURCES_TIER
1100{
1101 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
1102 D3D12_TILED_RESOURCES_TIER_1 = 1,
1103 D3D12_TILED_RESOURCES_TIER_2 = 2,
1104 D3D12_TILED_RESOURCES_TIER_3 = 3,
1105 D3D12_TILED_RESOURCES_TIER_4 = 4,
1106} D3D12_TILED_RESOURCES_TIER;
1107
1108typedef enum D3D12_RESOURCE_BINDING_TIER
1109{
1110 D3D12_RESOURCE_BINDING_TIER_1 = 1,
1111 D3D12_RESOURCE_BINDING_TIER_2 = 2,
1112 D3D12_RESOURCE_BINDING_TIER_3 = 3,
1113} D3D12_RESOURCE_BINDING_TIER;
1114
1115typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
1116 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
1117 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
1118 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
1119 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
1120} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
1121
1122
1123typedef enum D3D12_FORMAT_SUPPORT1
1124{
1125 D3D12_FORMAT_SUPPORT1_NONE = 0,
1126 D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
1127 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
1128 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
1129 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
1130 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
1131 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
1132 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
1133 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
1134 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
1135 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
1136 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
1137 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
1138 D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
1139 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
1140 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
1141 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
1142 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
1143 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
1144 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
1145 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
1146 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
1147 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
1148 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
1149 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
1150 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
1151 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
1152 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1153 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
1154 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
1155} D3D12_FORMAT_SUPPORT1;
1156cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )" )
1157
1158typedef enum D3D12_FORMAT_SUPPORT2
1159{
1160 D3D12_FORMAT_SUPPORT2_NONE = 0,
1161 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
1162 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
1163 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
1164 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
1165 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
1166 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
1167 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
1168 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
1169 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
1170 D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
1171 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
1172 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x00008000,
1173 D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x00010000,
1174} D3D12_FORMAT_SUPPORT2;
1175cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )" )
1176
1177typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
1178{
1179 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
1180 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
1181} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
1182cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )" )
1183
1184typedef enum D3D12_CROSS_NODE_SHARING_TIER
1185{
1186 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
1187 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
1188 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
1189 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
1190 D3D12_CROSS_NODE_SHARING_TIER_3 = 4,
1191} D3D12_CROSS_NODE_SHARING_TIER;
1192
1193typedef enum D3D12_RESOURCE_HEAP_TIER
1194{
1195 D3D12_RESOURCE_HEAP_TIER_1 = 1,
1196 D3D12_RESOURCE_HEAP_TIER_2 = 2,
1197} D3D12_RESOURCE_HEAP_TIER;
1198
1199typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
1200{
1201 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
1202 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
1203 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
1204} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
1205
1206typedef enum D3D12_VIEW_INSTANCING_TIER
1207{
1208 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
1209 D3D12_VIEW_INSTANCING_TIER_1 = 1,
1210 D3D12_VIEW_INSTANCING_TIER_2 = 2,
1211 D3D12_VIEW_INSTANCING_TIER_3 = 3,
1212} D3D12_VIEW_INSTANCING_TIER;
1213
1214
1215typedef enum D3D12_WORK_GRAPHS_TIER {
1216 D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
1217 D3D12_WORK_GRAPHS_TIER_1_0 = 10,
1218} D3D12_WORK_GRAPHS_TIER;
1219
1220
1221// D3D12_FEATURE_D3D12_OPTIONS
1222typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
1223{
1224 [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
1225 [annotation("_Out_")] BOOL OutputMergerLogicOp;
1226 [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
1227 [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
1228 [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
1229 [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
1230 [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
1231 [annotation("_Out_")] BOOL ROVsSupported;
1232 [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
1233 [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
1234 [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
1235 [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
1236 [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
1237 [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
1238 [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
1239} D3D12_FEATURE_DATA_D3D12_OPTIONS;
1240
1241// D3D12_FEATURE_D3D12_OPTIONS1
1242typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
1243{
1244 [annotation("_Out_")] BOOL WaveOps;
1245 [annotation("_Out_")] UINT WaveLaneCountMin;
1246 [annotation("_Out_")] UINT WaveLaneCountMax;
1247 [annotation("_Out_")] UINT TotalLaneCount;
1248 [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
1249 [annotation("_Out_")] BOOL Int64ShaderOps;
1250} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
1251
1252// D3D12_FEATURE_D3D12_OPTIONS2
1253typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
1254{
1255 [annotation("_Out_")] BOOL DepthBoundsTestSupported;
1256 [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
1257} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
1258
1259// D3D12_FEATURE_ROOT_SIGNATURE
1260typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
1261{
1262 [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
1263} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
1264
1265// D3D12_FEATURE_ARCHITECTURE
1266typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
1267{
1268 [annotation("_In_")] UINT NodeIndex;
1269 [annotation("_Out_")] BOOL TileBasedRenderer;
1270 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1271 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1272} D3D12_FEATURE_DATA_ARCHITECTURE;
1273
1274// D3D12_FEATURE_ARCHITECTURE1
1275typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
1276{
1277 [annotation("_In_")] UINT NodeIndex;
1278 [annotation("_Out_")] BOOL TileBasedRenderer;
1279 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1280 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1281 [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
1282} D3D12_FEATURE_DATA_ARCHITECTURE1;
1283
1284// D3D12_FEATURE_FEATURE_LEVELS
1285typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
1286{
1287 [annotation("_In_")] UINT NumFeatureLevels;
1288 [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
1289 [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
1290} D3D12_FEATURE_DATA_FEATURE_LEVELS;
1291
1292// D3D_SHADER_MODEL
1293typedef enum D3D_SHADER_MODEL
1294{
1295 D3D_SHADER_MODEL_NONE = 0x0, // e.g MCDM Generic devices
1296 D3D_SHADER_MODEL_5_1 = 0x51,
1297 D3D_SHADER_MODEL_6_0 = 0x60,
1298 D3D_SHADER_MODEL_6_1 = 0x61,
1299 D3D_SHADER_MODEL_6_2 = 0x62,
1300 D3D_SHADER_MODEL_6_3 = 0x63,
1301 D3D_SHADER_MODEL_6_4 = 0x64,
1302 D3D_SHADER_MODEL_6_5 = 0x65,
1303 D3D_SHADER_MODEL_6_6 = 0x66,
1304 D3D_SHADER_MODEL_6_7 = 0x67,
1305 D3D_SHADER_MODEL_6_8 = 0x68,
1306 D3D_SHADER_MODEL_6_9 = 0x69,
1307 D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
1308} D3D_SHADER_MODEL;
1309
1310typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
1311{
1312 [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
1313} D3D12_FEATURE_DATA_SHADER_MODEL;
1314
1315// D3D12_FEATURE_FORMAT_SUPPORT
1316typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
1317{
1318 [annotation("_In_")] DXGI_FORMAT Format;
1319 [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
1320 [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
1321} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
1322
1323// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
1324typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
1325{
1326 [annotation("_In_")] DXGI_FORMAT Format;
1327 [annotation("_In_")] UINT SampleCount;
1328 [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
1329 [annotation("_Out_")] UINT NumQualityLevels;
1330} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
1331
1332// D3D12_FEATURE_FORMAT_INFO
1333typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
1334{
1335 DXGI_FORMAT Format;
1336 UINT8 PlaneCount;
1337} D3D12_FEATURE_DATA_FORMAT_INFO;
1338
1339// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
1340typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
1341{
1342 UINT MaxGPUVirtualAddressBitsPerResource;
1343 UINT MaxGPUVirtualAddressBitsPerProcess;
1344} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
1345
1346
1347typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
1348{
1349 D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
1350 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, // Always supported
1351 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
1352 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
1353 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
1354 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
1355 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
1356 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
1357} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
1358cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )" )
1359
1360// D3D12_FEATURE_SHADER_CACHE
1361typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
1362{
1363 [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
1364} D3D12_FEATURE_DATA_SHADER_CACHE;
1365
1366// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
1367typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
1368{
1369 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
1370 [annotation("_In_")] UINT Priority;
1371 [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
1372} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
1373
1374typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
1375{
1376 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x00000000,
1377 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
1378 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
1379 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
1380 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
1381 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
1382 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
1383 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
1384
1385} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
1386cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )")
1387
1388// D3D12_FEATURE_D3D12_OPTIONS3
1389typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
1390{
1391 [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
1392 [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
1393 [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
1394 [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
1395 [annotation("_Out_")] BOOL BarycentricsSupported;
1396} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
1397
1398// D3D12_FEATURE_EXISTING_HEAPS
1399typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
1400{
1401 [annotation("_Out_")] BOOL Supported;
1402} D3D12_FEATURE_DATA_EXISTING_HEAPS;
1403
1404typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
1405{
1406 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0,
1407 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
1408 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
1409} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
1410
1411typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
1412{
1413 [annotation("_Out_")] BOOL DisplayableTexture;
1414 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1415} D3D12_FEATURE_DATA_DISPLAYABLE;
1416
1417// D3D12_FEATURE_D3D12_OPTIONS4
1418typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
1419{
1420 [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
1421 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1422 [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
1423} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
1424
1425typedef enum D3D12_HEAP_SERIALIZATION_TIER
1426{
1427 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
1428 D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
1429} D3D12_HEAP_SERIALIZATION_TIER;
1430
1431// D3D12_FEATURE_SERIALIZATION
1432typedef struct D3D12_FEATURE_DATA_SERIALIZATION
1433{
1434 [annotation("_In_")] UINT NodeIndex;
1435 [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
1436} D3D12_FEATURE_DATA_SERIALIZATION;
1437
1438// D3D12_FEATURE_CROSS_NODE
1439typedef struct D3D12_FEATURE_DATA_CROSS_NODE
1440{
1441 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
1442 BOOL AtomicShaderInstructions;
1443} D3D12_FEATURE_DATA_CROSS_NODE;
1444
1445
1446typedef enum D3D12_RENDER_PASS_TIER
1447{
1448 D3D12_RENDER_PASS_TIER_0 = 0,
1449 D3D12_RENDER_PASS_TIER_1 = 1,
1450 D3D12_RENDER_PASS_TIER_2 = 2,
1451
1452
1453} D3D12_RENDER_PASS_TIER;
1454
1455typedef enum D3D12_RAYTRACING_TIER
1456{
1457 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
1458 D3D12_RAYTRACING_TIER_1_0 = 10,
1459 D3D12_RAYTRACING_TIER_1_1 = 11,
1460 D3D12_RAYTRACING_TIER_1_2 = 12,
1461} D3D12_RAYTRACING_TIER;
1462
1463// D3D12_FEATURE_D3D12_OPTIONS5
1464typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
1465{
1466 [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
1467 [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
1468 [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
1469} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
1470
1471typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
1472{
1473 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
1474 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
1475 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
1476} D3D12_VARIABLE_SHADING_RATE_TIER;
1477
1478// D3D12_FEATURE_D3D12_OPTIONS6
1479typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
1480{
1481 [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
1482 [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
1483 [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
1484 [annotation("_Out_")] UINT ShadingRateImageTileSize;
1485 [annotation("_Out_")] BOOL BackgroundProcessingSupported;
1486} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
1487
1488typedef enum D3D12_MESH_SHADER_TIER
1489{
1490 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
1491 D3D12_MESH_SHADER_TIER_1 = 10,
1492} D3D12_MESH_SHADER_TIER;
1493
1494typedef enum D3D12_SAMPLER_FEEDBACK_TIER
1495{
1496 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
1497 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
1498 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
1499} D3D12_SAMPLER_FEEDBACK_TIER;
1500
1501// D3D12_FEATURE_D3D12_OPTIONS7
1502typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
1503{
1504 [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
1505 [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
1506
1507} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
1508
1509typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
1510{
1511 [annotation("_In_")] GUID CommandId;
1512 [annotation("_In_")] UINT NodeMask;
1513 [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
1514 [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
1515 [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
1516 [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
1517} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
1518
1519// D3D12_FEATURE_D3D12_OPTIONS8
1520typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
1521{
1522 [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
1523} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
1524
1525typedef enum D3D12_WAVE_MMA_TIER {
1526 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
1527 D3D12_WAVE_MMA_TIER_1_0 = 10,
1528} D3D12_WAVE_MMA_TIER;
1529
1530// D3D12_FEATURE_D3D12_OPTIONS9
1531typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
1532{
1533 [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
1534 [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
1535 [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
1536 [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
1537 [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
1538 [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
1539} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
1540
1541// D3D12_FEATURE_D3D12_OPTIONS10
1542typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
1543{
1544 [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
1545 [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
1546} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
1547
1548// D3D12_FEATURE_D3D12_OPTIONS11
1549typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
1550{
1551 [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
1552} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
1553
1554typedef enum D3D12_TRI_STATE {
1555 D3D12_TRI_STATE_UNKNOWN = -1,
1556 D3D12_TRI_STATE_FALSE = 0,
1557 D3D12_TRI_STATE_TRUE = 1,
1558} D3D12_TRI_STATE;
1559
1560// D3D12_FEATURE_D3D12_OPTIONS12
1561typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
1562{
1563 [annotation("_Out_")] D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
1564 [annotation("_Out_")] BOOL EnhancedBarriersSupported;
1565 [annotation("_Out_")] BOOL RelaxedFormatCastingSupported;
1566} D3D12_FEATURE_DATA_D3D12_OPTIONS12;
1567
1568// D3D12_FEATURE_D3D12_OPTIONS13
1569typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
1570{
1571 [annotation("_Out_")] BOOL UnrestrictedBufferTextureCopyPitchSupported;
1572 [annotation("_Out_")] BOOL UnrestrictedVertexElementAlignmentSupported;
1573 [annotation("_Out_")] BOOL InvertedViewportHeightFlipsYSupported;
1574 [annotation("_Out_")] BOOL InvertedViewportDepthFlipsZSupported;
1575 [annotation("_Out_")] BOOL TextureCopyBetweenDimensionsSupported;
1576 [annotation("_Out_")] BOOL AlphaBlendFactorSupported;
1577} D3D12_FEATURE_DATA_D3D12_OPTIONS13;
1578
1579// D3D12_FEATURE_D3D12_OPTIONS14
1580typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
1581{
1582 [annotation("_Out_")] BOOL AdvancedTextureOpsSupported;
1583 [annotation("_Out_")] BOOL WriteableMSAATexturesSupported;
1584 [annotation("_Out_")] BOOL IndependentFrontAndBackStencilRefMaskSupported;
1585} D3D12_FEATURE_DATA_D3D12_OPTIONS14;
1586
1587// D3D12_FEATURE_D3D12_OPTIONS15
1588typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
1589{
1590 [annotation("_Out_")] BOOL TriangleFanSupported;
1591 [annotation("_Out_")] BOOL DynamicIndexBufferStripCutSupported;
1592} D3D12_FEATURE_DATA_D3D12_OPTIONS15;
1593
1594// D3D12_FEATURE_D3D12_OPTIONS16
1595typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
1596{
1597 [annotation("_Out_")] BOOL DynamicDepthBiasSupported;
1598 [annotation("_Out_")] BOOL GPUUploadHeapSupported;
1599} D3D12_FEATURE_DATA_D3D12_OPTIONS16;
1600
1601// D3D12_FEATURE_D3D12_OPTIONS17
1602typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
1603{
1604 [annotation("_Out_")] BOOL NonNormalizedCoordinateSamplersSupported;
1605 [annotation("_Out_")] BOOL ManualWriteTrackingResourceSupported;
1606} D3D12_FEATURE_DATA_D3D12_OPTIONS17;
1607
1608// D3D12_FEATURE_D3D12_OPTIONS18
1609typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
1610{
1611 [annotation("_Out_")] BOOL RenderPassesValid;
1612} D3D12_FEATURE_DATA_D3D12_OPTIONS18;
1613
1614// D3D12_FEATURE_D3D12_OPTIONS19
1615typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
1616{
1617 BOOL MismatchingOutputDimensionsSupported;
1618 UINT SupportedSampleCountsWithNoOutputs;
1619 BOOL PointSamplingAddressesNeverRoundUp;
1620 BOOL RasterizerDesc2Supported;
1621 BOOL NarrowQuadrilateralLinesSupported;
1622 BOOL AnisoFilterWithPointMipSupported;
1623 UINT MaxSamplerDescriptorHeapSize;
1624 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
1625 UINT MaxViewDescriptorHeapSize;
1626 [annotation("_Out_")] BOOL ComputeOnlyCustomHeapSupported;
1627} D3D12_FEATURE_DATA_D3D12_OPTIONS19;
1628
1629
1630typedef enum D3D12_RECREATE_AT_TIER
1631{
1632 D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
1633
1634 // * Supports retrieving resource and heap allocation information
1635 // with ID3D12PageableTools::GetAllocationInfo
1636 // * Supports setting resource and heap virtual addresses with
1637 // ID3D12DeviceTools::SetNextAllocation
1638 D3D12_RECREATE_AT_TIER_1 = 1,
1639
1640} D3D12_RECREATE_AT_TIER;
1641
1642
1643// D3D12_FEATURE_D3D12_OPTIONS20
1644typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
1645{
1646 [annotation("_Out_")] BOOL ComputeOnlyWriteWatchSupported;
1647 D3D12_RECREATE_AT_TIER RecreateAtTier;
1648} D3D12_FEATURE_DATA_D3D12_OPTIONS20;
1649
1650typedef enum D3D12_EXECUTE_INDIRECT_TIER
1651{
1652 D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
1653 D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11,
1654} D3D12_EXECUTE_INDIRECT_TIER;
1655
1656typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
1657{
1658 [annotation("_Out_")] D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
1659 [annotation("_Out_")] D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
1660 [annotation("_Out_")] BOOL SampleCmpGradientAndBiasSupported;
1661 [annotation("_Out_")] BOOL ExtendedCommandInfoSupported;
1662} D3D12_FEATURE_DATA_D3D12_OPTIONS21;
1663
1664
1665typedef enum D3D12_TIGHT_ALIGNMENT_TIER
1666{
1667 D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED,
1668 D3D12_TIGHT_ALIGNMENT_TIER_1 // Tight alignment of buffers supported
1669} D3D12_TIGHT_ALIGNMENT_TIER;
1670
1671typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
1672{
1673 [annotation("_Out_")] D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
1674} D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
1675
1676
1677typedef struct D3D12_FEATURE_DATA_PREDICATION
1678{
1679 [annotation("_Out_")] BOOL Supported;
1680} D3D12_FEATURE_DATA_PREDICATION;
1681
1682typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
1683{
1684 [annotation("_Out_")] BOOL Supported;
1685} D3D12_FEATURE_DATA_HARDWARE_COPY;
1686
1687typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
1688{
1689 [annotation("_Out_")] BOOL Supported;
1690} D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
1691
1692typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
1693{
1694 [annotation("_Out_")] BOOL Supported;
1695} D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
1696
1697typedef struct D3D12_RESOURCE_ALLOCATION_INFO
1698{
1699 UINT64 SizeInBytes;
1700 UINT64 Alignment;
1701} D3D12_RESOURCE_ALLOCATION_INFO;
1702
1703typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
1704{
1705 UINT64 Offset;
1706 UINT64 Alignment;
1707 UINT64 SizeInBytes;
1708} D3D12_RESOURCE_ALLOCATION_INFO1;
1709
1710typedef enum D3D12_HEAP_TYPE
1711{
1712 D3D12_HEAP_TYPE_DEFAULT = 1,
1713 D3D12_HEAP_TYPE_UPLOAD = 2,
1714 D3D12_HEAP_TYPE_READBACK = 3,
1715 D3D12_HEAP_TYPE_CUSTOM = 4,
1716 D3D12_HEAP_TYPE_GPU_UPLOAD = 5,
1717} D3D12_HEAP_TYPE;
1718
1719typedef enum D3D12_CPU_PAGE_PROPERTY
1720{
1721 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
1722 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
1723 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
1724 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
1725} D3D12_CPU_PAGE_PROPERTY;
1726
1727typedef enum D3D12_MEMORY_POOL
1728{
1729 D3D12_MEMORY_POOL_UNKNOWN = 0,
1730 D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
1731 D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
1732} D3D12_MEMORY_POOL;
1733
1734typedef struct D3D12_HEAP_PROPERTIES
1735{
1736 D3D12_HEAP_TYPE Type;
1737 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
1738 D3D12_MEMORY_POOL MemoryPoolPreference;
1739 UINT CreationNodeMask;
1740 UINT VisibleNodeMask;
1741} D3D12_HEAP_PROPERTIES;
1742
1743typedef enum D3D12_HEAP_FLAGS
1744{
1745 D3D12_HEAP_FLAG_NONE = 0x0,
1746 D3D12_HEAP_FLAG_SHARED = 0x1,
1747 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
1748 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
1749 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
1750 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
1751 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
1752 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
1753 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
1754 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
1755 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
1756 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
1757 D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
1758
1759 // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
1760 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
1761 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
1762 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
1763 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
1764
1765
1766} D3D12_HEAP_FLAGS;
1767cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )" )
1768
1769typedef struct D3D12_HEAP_DESC
1770{
1771 UINT64 SizeInBytes;
1772 D3D12_HEAP_PROPERTIES Properties;
1773 UINT64 Alignment;
1774 D3D12_HEAP_FLAGS Flags;
1775} D3D12_HEAP_DESC;
1776
1777typedef enum D3D12_RESOURCE_DIMENSION
1778{
1779 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
1780 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
1781 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
1782 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
1783 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
1784} D3D12_RESOURCE_DIMENSION;
1785
1786typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
1787{
1788 [annotation("_In_")] DXGI_FORMAT Format;
1789 [annotation("_In_")] D3D12_RESOURCE_DIMENSION Dimension;
1790 [annotation("_In_")] D3D12_HEAP_PROPERTIES DestHeapProperties;
1791 [annotation("_Out_")] BOOL Supported;
1792} D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
1793
1794typedef enum D3D12_TEXTURE_LAYOUT
1795{
1796 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
1797 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers. Can be used with cross-adapter shared textures.
1798 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
1799 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
1800} D3D12_TEXTURE_LAYOUT;
1801
1802typedef enum D3D12_RESOURCE_FLAGS
1803{
1804 D3D12_RESOURCE_FLAG_NONE = 0x0,
1805 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
1806 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
1807 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
1808 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
1809 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
1810 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
1811 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
1812 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
1813 D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
1814 D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400,
1815
1816} D3D12_RESOURCE_FLAGS;
1817cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )" )
1818
1819typedef struct D3D12_MIP_REGION
1820{
1821 UINT Width;
1822 UINT Height;
1823 UINT Depth;
1824} D3D12_MIP_REGION;
1825
1826typedef struct D3D12_RESOURCE_DESC
1827{
1828 D3D12_RESOURCE_DIMENSION Dimension;
1829 UINT64 Alignment;
1830 UINT64 Width;
1831 UINT Height;
1832 UINT16 DepthOrArraySize;
1833 UINT16 MipLevels;
1834 DXGI_FORMAT Format;
1835 DXGI_SAMPLE_DESC SampleDesc;
1836 D3D12_TEXTURE_LAYOUT Layout;
1837 D3D12_RESOURCE_FLAGS Flags;
1838} D3D12_RESOURCE_DESC;
1839
1840typedef struct D3D12_RESOURCE_DESC1
1841{
1842 D3D12_RESOURCE_DIMENSION Dimension;
1843 UINT64 Alignment;
1844 UINT64 Width;
1845 UINT Height;
1846 UINT16 DepthOrArraySize;
1847 UINT16 MipLevels;
1848 DXGI_FORMAT Format;
1849 DXGI_SAMPLE_DESC SampleDesc;
1850 D3D12_TEXTURE_LAYOUT Layout;
1851 D3D12_RESOURCE_FLAGS Flags;
1852 D3D12_MIP_REGION SamplerFeedbackMipRegion;
1853} D3D12_RESOURCE_DESC1;
1854
1855
1856
1857typedef struct D3D12_DEPTH_STENCIL_VALUE
1858{
1859 FLOAT Depth;
1860 UINT8 Stencil;
1861} D3D12_DEPTH_STENCIL_VALUE;
1862
1863typedef struct D3D12_CLEAR_VALUE
1864{
1865 DXGI_FORMAT Format;
1866 union
1867 {
1868 FLOAT Color[4];
1869 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
1870 };
1871} D3D12_CLEAR_VALUE;
1872
1873typedef struct D3D12_RANGE
1874{
1875 SIZE_T Begin;
1876 SIZE_T End; // One past end, so (End - Begin) = Size
1877} D3D12_RANGE;
1878
1879typedef struct D3D12_RANGE_UINT64
1880{
1881 UINT64 Begin;
1882 UINT64 End; // One past end, so (End - Begin) = Size
1883} D3D12_RANGE_UINT64;
1884
1885typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
1886{
1887 UINT Subresource;
1888 D3D12_RANGE_UINT64 Range;
1889} D3D12_SUBRESOURCE_RANGE_UINT64;
1890
1891typedef struct D3D12_SUBRESOURCE_INFO
1892{
1893 UINT64 Offset;
1894 UINT RowPitch;
1895 UINT DepthPitch;
1896} D3D12_SUBRESOURCE_INFO;
1897
1898typedef struct D3D12_TILED_RESOURCE_COORDINATE
1899{
1900 UINT X;
1901 UINT Y;
1902 UINT Z;
1903 UINT Subresource;
1904} D3D12_TILED_RESOURCE_COORDINATE;
1905
1906typedef struct D3D12_TILE_REGION_SIZE
1907{
1908 UINT NumTiles;
1909 BOOL UseBox;
1910 UINT Width;
1911 UINT16 Height;
1912 UINT16 Depth;
1913} D3D12_TILE_REGION_SIZE;
1914
1915typedef enum D3D12_TILE_RANGE_FLAGS
1916{
1917 D3D12_TILE_RANGE_FLAG_NONE = 0,
1918 D3D12_TILE_RANGE_FLAG_NULL = 1,
1919 D3D12_TILE_RANGE_FLAG_SKIP = 2,
1920 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
1921
1922} D3D12_TILE_RANGE_FLAGS;
1923
1924typedef struct D3D12_SUBRESOURCE_TILING
1925{
1926 UINT WidthInTiles;
1927 UINT16 HeightInTiles;
1928 UINT16 DepthInTiles;
1929 UINT StartTileIndexInOverallResource;
1930} D3D12_SUBRESOURCE_TILING;
1931
1932typedef struct D3D12_TILE_SHAPE
1933{
1934 UINT WidthInTexels;
1935 UINT HeightInTexels;
1936 UINT DepthInTexels;
1937} D3D12_TILE_SHAPE;
1938
1939typedef struct D3D12_PACKED_MIP_INFO
1940{
1941 UINT8 NumStandardMips;
1942 UINT8 NumPackedMips;
1943 UINT NumTilesForPackedMips;
1944 UINT StartTileIndexInOverallResource;
1945} D3D12_PACKED_MIP_INFO;
1946
1947typedef enum D3D12_TILE_MAPPING_FLAGS
1948{
1949 D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
1950 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
1951} D3D12_TILE_MAPPING_FLAGS;
1952cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )" )
1953
1954typedef enum D3D12_TILE_COPY_FLAGS
1955{
1956 D3D12_TILE_COPY_FLAG_NONE = 0x0,
1957 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
1958 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
1959 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
1960} D3D12_TILE_COPY_FLAGS;
1961cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )")
1962
1963// Resource Barrier
1964typedef enum D3D12_RESOURCE_STATES
1965{
1966 D3D12_RESOURCE_STATE_COMMON = 0,
1967
1968 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
1969 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
1970 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
1971 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
1972 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
1973 D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
1974 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
1975 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
1976 D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
1977 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
1978 D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
1979 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
1980 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
1981 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
1982 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
1983 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
1984
1985 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
1986 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
1987 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
1988 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
1989 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
1990
1991 D3D12_RESOURCE_STATE_GENERIC_READ =
1992 /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
1993 /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/ 0x0002 |
1994 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x0040 |
1995 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x0080 |
1996 /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200 |
1997 /*D3D12_RESOURCE_STATE_COPY_SOURCE*/ 0x0800,
1998
1999 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
2000 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
2001 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x80,
2002
2003 D3D12_RESOURCE_STATE_PRESENT = 0,
2004 D3D12_RESOURCE_STATE_PREDICATION = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
2005
2006 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x00010000,
2007 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x00020000,
2008 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x00040000,
2009 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x00080000,
2010 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x00200000,
2011 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x00800000,
2012
2013} D3D12_RESOURCE_STATES;
2014cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )" )
2015
2016typedef enum D3D12_RESOURCE_BARRIER_TYPE
2017{
2018 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
2019 D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
2020 D3D12_RESOURCE_BARRIER_TYPE_UAV,
2021} D3D12_RESOURCE_BARRIER_TYPE;
2022
2023interface ID3D12Resource;
2024
2025typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
2026{
2027 ID3D12Resource* pResource;
2028 UINT Subresource;
2029 D3D12_RESOURCE_STATES StateBefore;
2030 D3D12_RESOURCE_STATES StateAfter;
2031} D3D12_RESOURCE_TRANSITION_BARRIER;
2032
2033typedef struct D3D12_RESOURCE_ALIASING_BARRIER
2034{
2035 ID3D12Resource* pResourceBefore;
2036 ID3D12Resource* pResourceAfter;
2037} D3D12_RESOURCE_ALIASING_BARRIER;
2038
2039typedef struct D3D12_RESOURCE_UAV_BARRIER
2040{
2041 ID3D12Resource* pResource;
2042} D3D12_RESOURCE_UAV_BARRIER;
2043
2044typedef enum D3D12_RESOURCE_BARRIER_FLAGS
2045{
2046 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
2047 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
2048 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
2049} D3D12_RESOURCE_BARRIER_FLAGS;
2050cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )" )
2051
2052typedef struct D3D12_RESOURCE_BARRIER
2053{
2054 D3D12_RESOURCE_BARRIER_TYPE Type;
2055 D3D12_RESOURCE_BARRIER_FLAGS Flags;
2056
2057 union
2058 {
2059 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
2060 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
2061 D3D12_RESOURCE_UAV_BARRIER UAV;
2062 };
2063} D3D12_RESOURCE_BARRIER;
2064
2065typedef struct D3D12_SUBRESOURCE_FOOTPRINT
2066{
2067 DXGI_FORMAT Format;
2068 UINT Width;
2069 UINT Height;
2070 UINT Depth;
2071 UINT RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
2072} D3D12_SUBRESOURCE_FOOTPRINT;
2073
2074typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
2075{
2076 UINT64 Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
2077 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
2078} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
2079
2080typedef enum D3D12_TEXTURE_COPY_TYPE
2081{
2082 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
2083 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
2084} D3D12_TEXTURE_COPY_TYPE;
2085
2086typedef struct D3D12_TEXTURE_COPY_LOCATION
2087{
2088 ID3D12Resource* pResource;
2089 D3D12_TEXTURE_COPY_TYPE Type;
2090 union
2091 {
2092 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
2093 UINT SubresourceIndex;
2094 };
2095} D3D12_TEXTURE_COPY_LOCATION;
2096
2097typedef enum D3D12_RESOLVE_MODE
2098{
2099 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
2100 D3D12_RESOLVE_MODE_MIN = 1,
2101 D3D12_RESOLVE_MODE_MAX = 2,
2102 D3D12_RESOLVE_MODE_AVERAGE = 3,
2103 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
2104 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
2105} D3D12_RESOLVE_MODE;
2106
2107typedef struct D3D12_SAMPLE_POSITION
2108{
2109 INT8 X;
2110 INT8 Y;
2111} D3D12_SAMPLE_POSITION;
2112
2113typedef struct D3D12_VIEW_INSTANCE_LOCATION
2114{
2115 UINT ViewportArrayIndex;
2116 UINT RenderTargetArrayIndex;
2117} D3D12_VIEW_INSTANCE_LOCATION;
2118
2119typedef enum D3D12_VIEW_INSTANCING_FLAGS
2120{
2121 D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
2122 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
2123} D3D12_VIEW_INSTANCING_FLAGS;
2124cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )")
2125
2126typedef struct D3D12_VIEW_INSTANCING_DESC
2127{
2128 UINT ViewInstanceCount;
2129 [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
2130 D3D12_VIEW_INSTANCING_FLAGS Flags;
2131} D3D12_VIEW_INSTANCING_DESC;
2132
2133// D3D12 view descriptions
2134typedef enum D3D12_SHADER_COMPONENT_MAPPING
2135{
2136 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
2137 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
2138 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
2139 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
2140 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
2141 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
2142} D3D12_SHADER_COMPONENT_MAPPING;
2143
2144cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
2145cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
2146cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
2147cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
2148cpp_quote( " (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
2149cpp_quote( " (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
2150cpp_quote( " (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
2151cpp_quote( " D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
2152cpp_quote( "#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
2153cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
2154typedef enum D3D12_BUFFER_SRV_FLAGS
2155{
2156 D3D12_BUFFER_SRV_FLAG_NONE = 0,
2157 D3D12_BUFFER_SRV_FLAG_RAW = 0x00000001, // allow device multi-component reads with DWORD addressing
2158} D3D12_BUFFER_SRV_FLAGS;
2159cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )" )
2160
2161typedef struct D3D12_BUFFER_SRV
2162{
2163 UINT64 FirstElement;
2164 UINT NumElements;
2165 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2166 D3D12_BUFFER_SRV_FLAGS Flags;
2167} D3D12_BUFFER_SRV;
2168
2169typedef struct D3D12_TEX1D_SRV
2170{
2171 UINT MostDetailedMip;
2172 UINT MipLevels;
2173 FLOAT ResourceMinLODClamp;
2174} D3D12_TEX1D_SRV;
2175
2176typedef struct D3D12_TEX1D_ARRAY_SRV
2177{
2178 UINT MostDetailedMip;
2179 UINT MipLevels;
2180 UINT FirstArraySlice;
2181 UINT ArraySize;
2182 FLOAT ResourceMinLODClamp;
2183} D3D12_TEX1D_ARRAY_SRV;
2184
2185typedef struct D3D12_TEX2D_SRV
2186{
2187 UINT MostDetailedMip;
2188 UINT MipLevels;
2189 UINT PlaneSlice;
2190 FLOAT ResourceMinLODClamp;
2191} D3D12_TEX2D_SRV;
2192
2193typedef struct D3D12_TEX2D_ARRAY_SRV
2194{
2195 UINT MostDetailedMip;
2196 UINT MipLevels;
2197 UINT FirstArraySlice;
2198 UINT ArraySize;
2199 UINT PlaneSlice;
2200 FLOAT ResourceMinLODClamp;
2201} D3D12_TEX2D_ARRAY_SRV;
2202
2203typedef struct D3D12_TEX3D_SRV
2204{
2205 UINT MostDetailedMip;
2206 UINT MipLevels;
2207 FLOAT ResourceMinLODClamp;
2208} D3D12_TEX3D_SRV;
2209
2210typedef struct D3D12_TEXCUBE_SRV
2211{
2212 UINT MostDetailedMip;
2213 UINT MipLevels;
2214 FLOAT ResourceMinLODClamp;
2215} D3D12_TEXCUBE_SRV;
2216
2217typedef struct D3D12_TEXCUBE_ARRAY_SRV
2218{
2219 UINT MostDetailedMip;
2220 UINT MipLevels;
2221 UINT First2DArrayFace;
2222 UINT NumCubes;
2223 FLOAT ResourceMinLODClamp;
2224} D3D12_TEXCUBE_ARRAY_SRV;
2225
2226typedef struct D3D12_TEX2DMS_SRV
2227{
2228 // don't need to define anything specific for this view dimension
2229 UINT UnusedField_NothingToDefine;
2230} D3D12_TEX2DMS_SRV;
2231
2232typedef struct D3D12_TEX2DMS_ARRAY_SRV
2233{
2234 UINT FirstArraySlice;
2235 UINT ArraySize;
2236} D3D12_TEX2DMS_ARRAY_SRV;
2237
2238typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
2239{
2240 D3D12_GPU_VIRTUAL_ADDRESS Location;
2241} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
2242
2243typedef enum D3D12_SRV_DIMENSION {
2244 D3D12_SRV_DIMENSION_UNKNOWN = 0,
2245 D3D12_SRV_DIMENSION_BUFFER = 1,
2246 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
2247 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
2248 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
2249 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
2250 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
2251 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
2252 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
2253 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
2254 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
2255 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
2256} D3D12_SRV_DIMENSION;
2257
2258typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
2259{
2260 DXGI_FORMAT Format;
2261 D3D12_SRV_DIMENSION ViewDimension;
2262 UINT Shader4ComponentMapping;
2263
2264 union
2265 {
2266 D3D12_BUFFER_SRV Buffer;
2267 D3D12_TEX1D_SRV Texture1D;
2268 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
2269 D3D12_TEX2D_SRV Texture2D;
2270 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
2271 D3D12_TEX2DMS_SRV Texture2DMS;
2272 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
2273 D3D12_TEX3D_SRV Texture3D;
2274 D3D12_TEXCUBE_SRV TextureCube;
2275 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
2276 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
2277 };
2278} D3D12_SHADER_RESOURCE_VIEW_DESC;
2279
2280typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
2281{
2282 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2283 UINT SizeInBytes;
2284} D3D12_CONSTANT_BUFFER_VIEW_DESC;
2285
2286////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2287//
2288// Sampler
2289//
2290////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2291typedef enum D3D12_FILTER
2292{
2293 // Bits used in defining enumeration of valid filters:
2294 // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
2295 // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
2296 // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
2297 // bit [6] - aniso
2298 // bits [8:7] - reduction type:
2299 // 0 == standard filtering
2300 // 1 == comparison
2301 // 2 == min
2302 // 3 == max
2303 // bit [31] - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
2304
2305 D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00000000,
2306 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x00000001,
2307 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000004,
2308 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x00000005,
2309 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x00000010,
2310 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000011,
2311 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x00000014,
2312 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x00000015,
2313 D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000054,
2314 D3D12_FILTER_ANISOTROPIC = 0x00000055,
2315 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x00000080,
2316 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x00000081,
2317 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000084,
2318 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x00000085,
2319 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x00000090,
2320 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000091,
2321 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x00000094,
2322 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x00000095,
2323 D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000000d4,
2324 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0x000000d5,
2325 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x00000100,
2326 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000101,
2327 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000104,
2328 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000105,
2329 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000110,
2330 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000111,
2331 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000114,
2332 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x00000115,
2333 D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000154,
2334 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x00000155,
2335 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x00000180,
2336 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000181,
2337 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000184,
2338 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000185,
2339 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000190,
2340 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000191,
2341 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000194,
2342 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x00000195,
2343 D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000001d4,
2344 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x000001d5
2345} D3D12_FILTER;
2346
2347typedef enum D3D12_FILTER_TYPE
2348{
2349 D3D12_FILTER_TYPE_POINT = 0,
2350 D3D12_FILTER_TYPE_LINEAR = 1,
2351} D3D12_FILTER_TYPE;
2352
2353typedef enum D3D12_FILTER_REDUCTION_TYPE
2354{
2355 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
2356 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
2357 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
2358 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
2359} D3D12_FILTER_REDUCTION_TYPE;
2360
2361const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
2362const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
2363
2364const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
2365const UINT D3D12_MIN_FILTER_SHIFT = 4;
2366const UINT D3D12_MAG_FILTER_SHIFT = 2;
2367const UINT D3D12_MIP_FILTER_SHIFT = 0;
2368
2369const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
2370
2371// encode enum entry for most filters except anisotropic filtering
2372cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \\" )
2373cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2374cpp_quote( " ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \\" )
2375cpp_quote( " ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \\" )
2376cpp_quote( " ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \\" )
2377cpp_quote( " ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
2378
2379// encode enum entry for anisotropic filtering (with or without comparison filtering)
2380cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \\" )
2381cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2382cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2383cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2384cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2385cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2386cpp_quote( " reduction ) ) ) " )
2387cpp_quote( "#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \\" )
2388cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2389cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2390cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2391cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2392cpp_quote( " D3D12_FILTER_TYPE_POINT, \\" )
2393cpp_quote( " reduction ) ) ) " )
2394
2395cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \\" )
2396cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2397cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2398
2399cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \\" )
2400cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2401cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2402
2403cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \\" )
2404cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2405cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2406
2407cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \\" )
2408cpp_quote( " ( ( D3D12_FILTER_REDUCTION_TYPE ) \\" )
2409cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
2410
2411cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \\" )
2412cpp_quote( " ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
2413
2414cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \\" )
2415cpp_quote( " ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \\" )
2416cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \\" )
2417cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) ) " )
2418
2419typedef enum D3D12_TEXTURE_ADDRESS_MODE
2420{
2421 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
2422 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
2423 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
2424 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
2425 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
2426} D3D12_TEXTURE_ADDRESS_MODE;
2427
2428
2429
2430typedef struct D3D12_SAMPLER_DESC
2431{
2432 D3D12_FILTER Filter;
2433 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2434 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2435 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2436 FLOAT MipLODBias;
2437 UINT MaxAnisotropy;
2438 D3D12_COMPARISON_FUNC ComparisonFunc;
2439 FLOAT BorderColor[4]; // RGBA
2440 FLOAT MinLOD;
2441 FLOAT MaxLOD;
2442} D3D12_SAMPLER_DESC;
2443
2444
2445typedef enum D3D12_SAMPLER_FLAGS
2446{
2447 D3D12_SAMPLER_FLAG_NONE = 0x0,
2448 D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x01,
2449 D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x02,
2450} D3D12_SAMPLER_FLAGS;
2451cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )")
2452
2453typedef struct D3D12_SAMPLER_DESC2
2454{
2455 D3D12_FILTER Filter;
2456 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2457 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2458 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2459 FLOAT MipLODBias;
2460 UINT MaxAnisotropy;
2461 D3D12_COMPARISON_FUNC ComparisonFunc;
2462 union
2463 {
2464 FLOAT FloatBorderColor[4]; // RGBA
2465 UINT UintBorderColor[4];
2466 };
2467 FLOAT MinLOD;
2468 FLOAT MaxLOD;
2469 D3D12_SAMPLER_FLAGS Flags;
2470} D3D12_SAMPLER_DESC2;
2471
2472
2473
2474typedef enum D3D12_BUFFER_UAV_FLAGS
2475{
2476 D3D12_BUFFER_UAV_FLAG_NONE = 0,
2477 D3D12_BUFFER_UAV_FLAG_RAW = 0x00000001,
2478} D3D12_BUFFER_UAV_FLAGS;
2479cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )" )
2480
2481typedef struct D3D12_BUFFER_UAV
2482{
2483 UINT64 FirstElement;
2484 UINT NumElements;
2485 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2486 UINT64 CounterOffsetInBytes;
2487 D3D12_BUFFER_UAV_FLAGS Flags;
2488} D3D12_BUFFER_UAV;
2489
2490typedef struct D3D12_TEX1D_UAV
2491{
2492 UINT MipSlice;
2493} D3D12_TEX1D_UAV;
2494
2495typedef struct D3D12_TEX1D_ARRAY_UAV
2496{
2497 UINT MipSlice;
2498 UINT FirstArraySlice;
2499 UINT ArraySize;
2500} D3D12_TEX1D_ARRAY_UAV;
2501
2502typedef struct D3D12_TEX2D_UAV
2503{
2504 UINT MipSlice;
2505 UINT PlaneSlice;
2506} D3D12_TEX2D_UAV;
2507
2508typedef struct D3D12_TEX2D_ARRAY_UAV
2509{
2510 UINT MipSlice;
2511 UINT FirstArraySlice;
2512 UINT ArraySize;
2513 UINT PlaneSlice;
2514} D3D12_TEX2D_ARRAY_UAV;
2515
2516typedef struct D3D12_TEX2DMS_UAV
2517{
2518 // don't need to define anything specific for this view dimension
2519 UINT UnusedField_NothingToDefine;
2520} D3D12_TEX2DMS_UAV;
2521
2522typedef struct D3D12_TEX2DMS_ARRAY_UAV
2523{
2524 UINT FirstArraySlice;
2525 UINT ArraySize;
2526} D3D12_TEX2DMS_ARRAY_UAV;
2527
2528typedef struct D3D12_TEX3D_UAV
2529{
2530 UINT MipSlice;
2531 UINT FirstWSlice;
2532 UINT WSize;
2533} D3D12_TEX3D_UAV;
2534
2535typedef enum D3D12_UAV_DIMENSION
2536{
2537 D3D12_UAV_DIMENSION_UNKNOWN = 0,
2538 D3D12_UAV_DIMENSION_BUFFER = 1,
2539 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
2540 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
2541 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
2542 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
2543 D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
2544 D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
2545 D3D12_UAV_DIMENSION_TEXTURE3D = 8,
2546} D3D12_UAV_DIMENSION;
2547
2548typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
2549{
2550 DXGI_FORMAT Format;
2551 D3D12_UAV_DIMENSION ViewDimension;
2552
2553 union
2554 {
2555 D3D12_BUFFER_UAV Buffer;
2556 D3D12_TEX1D_UAV Texture1D;
2557 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
2558 D3D12_TEX2D_UAV Texture2D;
2559 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
2560 D3D12_TEX2DMS_UAV Texture2DMS;
2561 D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
2562 D3D12_TEX3D_UAV Texture3D;
2563 };
2564} D3D12_UNORDERED_ACCESS_VIEW_DESC;
2565
2566typedef struct D3D12_BUFFER_RTV
2567{
2568 UINT64 FirstElement;
2569 UINT NumElements;
2570} D3D12_BUFFER_RTV;
2571
2572typedef struct D3D12_TEX1D_RTV
2573{
2574 UINT MipSlice;
2575} D3D12_TEX1D_RTV;
2576
2577typedef struct D3D12_TEX1D_ARRAY_RTV
2578{
2579 UINT MipSlice;
2580 UINT FirstArraySlice;
2581 UINT ArraySize;
2582} D3D12_TEX1D_ARRAY_RTV;
2583
2584typedef struct D3D12_TEX2D_RTV
2585{
2586 UINT MipSlice;
2587 UINT PlaneSlice;
2588} D3D12_TEX2D_RTV;
2589
2590typedef struct D3D12_TEX2DMS_RTV
2591{
2592 UINT UnusedField_NothingToDefine;
2593} D3D12_TEX2DMS_RTV;
2594
2595typedef struct D3D12_TEX2D_ARRAY_RTV
2596{
2597 UINT MipSlice;
2598 UINT FirstArraySlice;
2599 UINT ArraySize;
2600 UINT PlaneSlice;
2601} D3D12_TEX2D_ARRAY_RTV;
2602
2603typedef struct D3D12_TEX2DMS_ARRAY_RTV
2604{
2605 UINT FirstArraySlice;
2606 UINT ArraySize;
2607} D3D12_TEX2DMS_ARRAY_RTV;
2608
2609typedef struct D3D12_TEX3D_RTV
2610{
2611 UINT MipSlice;
2612 UINT FirstWSlice;
2613 UINT WSize;
2614} D3D12_TEX3D_RTV;
2615
2616typedef enum D3D12_RTV_DIMENSION
2617{
2618 D3D12_RTV_DIMENSION_UNKNOWN = 0,
2619 D3D12_RTV_DIMENSION_BUFFER = 1,
2620 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
2621 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
2622 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
2623 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
2624 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
2625 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
2626 D3D12_RTV_DIMENSION_TEXTURE3D = 8,
2627} D3D12_RTV_DIMENSION;
2628
2629typedef struct D3D12_RENDER_TARGET_VIEW_DESC
2630{
2631 DXGI_FORMAT Format;
2632 D3D12_RTV_DIMENSION ViewDimension;
2633
2634 union
2635 {
2636 D3D12_BUFFER_RTV Buffer;
2637 D3D12_TEX1D_RTV Texture1D;
2638 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
2639 D3D12_TEX2D_RTV Texture2D;
2640 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
2641 D3D12_TEX2DMS_RTV Texture2DMS;
2642 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
2643 D3D12_TEX3D_RTV Texture3D;
2644 };
2645} D3D12_RENDER_TARGET_VIEW_DESC;
2646
2647typedef struct D3D12_TEX1D_DSV
2648{
2649 UINT MipSlice;
2650} D3D12_TEX1D_DSV;
2651
2652typedef struct D3D12_TEX1D_ARRAY_DSV
2653{
2654 UINT MipSlice;
2655 UINT FirstArraySlice;
2656 UINT ArraySize;
2657} D3D12_TEX1D_ARRAY_DSV;
2658
2659typedef struct D3D12_TEX2D_DSV
2660{
2661 UINT MipSlice;
2662} D3D12_TEX2D_DSV;
2663
2664typedef struct D3D12_TEX2D_ARRAY_DSV
2665{
2666 UINT MipSlice;
2667 UINT FirstArraySlice;
2668 UINT ArraySize;
2669} D3D12_TEX2D_ARRAY_DSV;
2670
2671typedef struct D3D12_TEX2DMS_DSV
2672{
2673 UINT UnusedField_NothingToDefine;
2674} D3D12_TEX2DMS_DSV;
2675
2676typedef struct D3D12_TEX2DMS_ARRAY_DSV
2677{
2678 UINT FirstArraySlice;
2679 UINT ArraySize;
2680} D3D12_TEX2DMS_ARRAY_DSV;
2681
2682typedef enum D3D12_DSV_FLAGS
2683{
2684 D3D12_DSV_FLAG_NONE = 0x0,
2685 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
2686 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
2687} D3D12_DSV_FLAGS;
2688cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )" )
2689
2690typedef enum D3D12_DSV_DIMENSION
2691{
2692 D3D12_DSV_DIMENSION_UNKNOWN = 0,
2693 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
2694 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
2695 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
2696 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
2697 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
2698 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
2699} D3D12_DSV_DIMENSION;
2700
2701typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
2702{
2703 DXGI_FORMAT Format;
2704 D3D12_DSV_DIMENSION ViewDimension;
2705 D3D12_DSV_FLAGS Flags;
2706
2707 union
2708 {
2709 D3D12_TEX1D_DSV Texture1D;
2710 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
2711 D3D12_TEX2D_DSV Texture2D;
2712 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
2713 D3D12_TEX2DMS_DSV Texture2DMS;
2714 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
2715 };
2716} D3D12_DEPTH_STENCIL_VIEW_DESC;
2717
2718typedef enum D3D12_CLEAR_FLAGS
2719{
2720 // Intentionally no flag for NONE
2721 D3D12_CLEAR_FLAG_DEPTH = 0x01,
2722 D3D12_CLEAR_FLAG_STENCIL = 0x02,
2723} D3D12_CLEAR_FLAGS;
2724cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )" )
2725
2726typedef enum D3D12_FENCE_FLAGS
2727{
2728 D3D12_FENCE_FLAG_NONE = 0x0,
2729 D3D12_FENCE_FLAG_SHARED = 0x1,
2730 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
2731 D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
2732} D3D12_FENCE_FLAGS;
2733cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )" )
2734
2735typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
2736{
2737 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
2738 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
2739 D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
2740 D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
2741 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
2742} D3D12_DESCRIPTOR_HEAP_TYPE;
2743
2744typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
2745{
2746 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
2747 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
2748} D3D12_DESCRIPTOR_HEAP_FLAGS;
2749cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )" )
2750
2751typedef struct D3D12_DESCRIPTOR_HEAP_DESC
2752{
2753 D3D12_DESCRIPTOR_HEAP_TYPE Type;
2754 UINT NumDescriptors;
2755 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
2756 UINT NodeMask;
2757} D3D12_DESCRIPTOR_HEAP_DESC;
2758
2759typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
2760{
2761 D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
2762 D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
2763 D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
2764 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
2765} D3D12_DESCRIPTOR_RANGE_TYPE;
2766
2767typedef struct D3D12_DESCRIPTOR_RANGE
2768{
2769 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2770 UINT NumDescriptors;
2771 UINT BaseShaderRegister;
2772 UINT RegisterSpace;
2773 UINT OffsetInDescriptorsFromTableStart;
2774} D3D12_DESCRIPTOR_RANGE;
2775
2776
2777typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
2778{
2779 UINT NumDescriptorRanges;
2780 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
2781} D3D12_ROOT_DESCRIPTOR_TABLE;
2782
2783
2784typedef struct D3D12_ROOT_CONSTANTS
2785{
2786 UINT ShaderRegister;
2787 UINT RegisterSpace;
2788 UINT Num32BitValues;
2789} D3D12_ROOT_CONSTANTS;
2790
2791typedef struct D3D12_ROOT_DESCRIPTOR
2792{
2793 UINT ShaderRegister;
2794 UINT RegisterSpace;
2795} D3D12_ROOT_DESCRIPTOR;
2796
2797typedef enum D3D12_SHADER_VISIBILITY
2798{
2799 D3D12_SHADER_VISIBILITY_ALL = 0,
2800 D3D12_SHADER_VISIBILITY_VERTEX = 1,
2801 D3D12_SHADER_VISIBILITY_HULL = 2,
2802 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
2803 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
2804 D3D12_SHADER_VISIBILITY_PIXEL = 5,
2805 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
2806 D3D12_SHADER_VISIBILITY_MESH = 7,
2807} D3D12_SHADER_VISIBILITY;
2808
2809typedef enum D3D12_ROOT_PARAMETER_TYPE
2810{
2811 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
2812 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
2813 D3D12_ROOT_PARAMETER_TYPE_CBV,
2814 D3D12_ROOT_PARAMETER_TYPE_SRV,
2815 D3D12_ROOT_PARAMETER_TYPE_UAV
2816} D3D12_ROOT_PARAMETER_TYPE;
2817
2818typedef struct D3D12_ROOT_PARAMETER
2819{
2820 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2821 union
2822 {
2823 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
2824 D3D12_ROOT_CONSTANTS Constants;
2825 D3D12_ROOT_DESCRIPTOR Descriptor;
2826 };
2827 D3D12_SHADER_VISIBILITY ShaderVisibility;
2828} D3D12_ROOT_PARAMETER;
2829
2830typedef enum D3D12_ROOT_SIGNATURE_FLAGS
2831{
2832 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
2833 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
2834 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
2835 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
2836 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
2837 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2838 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2839 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2840 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
2841 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
2842 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
2843 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
2844 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800,
2845} D3D12_ROOT_SIGNATURE_FLAGS;
2846cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )" )
2847
2848
2849typedef enum D3D12_STATIC_BORDER_COLOR
2850{
2851 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
2852 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
2853 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
2854 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT, // 0,0,0,1
2855 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT, // 1,1,1,1
2856
2857} D3D12_STATIC_BORDER_COLOR;
2858
2859typedef struct D3D12_STATIC_SAMPLER_DESC
2860{
2861 D3D12_FILTER Filter;
2862 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2863 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2864 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2865 FLOAT MipLODBias;
2866 UINT MaxAnisotropy;
2867 D3D12_COMPARISON_FUNC ComparisonFunc;
2868 D3D12_STATIC_BORDER_COLOR BorderColor;
2869 FLOAT MinLOD;
2870 FLOAT MaxLOD;
2871 UINT ShaderRegister;
2872 UINT RegisterSpace;
2873 D3D12_SHADER_VISIBILITY ShaderVisibility;
2874} D3D12_STATIC_SAMPLER_DESC;
2875
2876typedef struct D3D12_STATIC_SAMPLER_DESC1
2877{
2878 D3D12_FILTER Filter;
2879 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2880 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2881 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2882 FLOAT MipLODBias;
2883 UINT MaxAnisotropy;
2884 D3D12_COMPARISON_FUNC ComparisonFunc;
2885 D3D12_STATIC_BORDER_COLOR BorderColor;
2886 FLOAT MinLOD;
2887 FLOAT MaxLOD;
2888 UINT ShaderRegister;
2889 UINT RegisterSpace;
2890 D3D12_SHADER_VISIBILITY ShaderVisibility;
2891 D3D12_SAMPLER_FLAGS Flags;
2892} D3D12_STATIC_SAMPLER_DESC1;
2893
2894typedef struct D3D12_ROOT_SIGNATURE_DESC
2895{
2896 UINT NumParameters;
2897 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
2898 UINT NumStaticSamplers;
2899 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2900 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2901} D3D12_ROOT_SIGNATURE_DESC;
2902
2903typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
2904{
2905 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2906 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2907 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2908 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2909 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2910 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
2911} D3D12_DESCRIPTOR_RANGE_FLAGS;
2912cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )")
2913
2914typedef struct D3D12_DESCRIPTOR_RANGE1
2915{
2916 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2917 UINT NumDescriptors;
2918 UINT BaseShaderRegister;
2919 UINT RegisterSpace;
2920 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
2921 UINT OffsetInDescriptorsFromTableStart;
2922} D3D12_DESCRIPTOR_RANGE1;
2923
2924typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
2925{
2926 UINT NumDescriptorRanges;
2927 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
2928} D3D12_ROOT_DESCRIPTOR_TABLE1;
2929
2930typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
2931{
2932 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2933 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2934 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2935 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2936} D3D12_ROOT_DESCRIPTOR_FLAGS;
2937cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )")
2938
2939typedef struct D3D12_ROOT_DESCRIPTOR1
2940{
2941 UINT ShaderRegister;
2942 UINT RegisterSpace;
2943 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
2944} D3D12_ROOT_DESCRIPTOR1;
2945
2946typedef struct D3D12_ROOT_PARAMETER1
2947{
2948 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2949 union
2950 {
2951 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
2952 D3D12_ROOT_CONSTANTS Constants;
2953 D3D12_ROOT_DESCRIPTOR1 Descriptor;
2954 };
2955 D3D12_SHADER_VISIBILITY ShaderVisibility;
2956} D3D12_ROOT_PARAMETER1;
2957
2958typedef struct D3D12_ROOT_SIGNATURE_DESC1
2959{
2960 UINT NumParameters;
2961 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2962 UINT NumStaticSamplers;
2963 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2964 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2965} D3D12_ROOT_SIGNATURE_DESC1;
2966
2967typedef struct D3D12_ROOT_SIGNATURE_DESC2
2968{
2969 UINT NumParameters;
2970 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2971 UINT NumStaticSamplers;
2972 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC1* pStaticSamplers;
2973 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2974} D3D12_ROOT_SIGNATURE_DESC2;
2975
2976
2977typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
2978{
2979 D3D_ROOT_SIGNATURE_VERSION Version;
2980 union
2981 {
2982 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
2983 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
2984 D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
2985 };
2986} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
2987
2988[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
2989interface ID3D12RootSignatureDeserializer
2990 : IUnknown
2991{
2992 const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
2993};
2994
2995[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
2996interface ID3D12VersionedRootSignatureDeserializer
2997 : IUnknown
2998{
2999 HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
3000 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
3001};
3002
3003cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
3004cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
3005cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
3006cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3007cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3008cpp_quote( "" )
3009cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
3010cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
3011cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
3012cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3013cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3014cpp_quote( "" )
3015cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
3016cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3017cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3018cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3019cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3020cpp_quote( "" )
3021cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
3022cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3023cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3024cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3025cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3026cpp_quote( "" )
3027cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
3028cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
3029cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3030cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3031cpp_quote( "" )
3032cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
3033cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
3034cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3035cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3036cpp_quote( "" )
3037cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(" )
3038cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3039cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3040cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3041cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3042cpp_quote( "" )
3043cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
3044cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3045cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3046cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3047cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3048cpp_quote( "" )
3049cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(")
3050cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
3051cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
3052cpp_quote(" _In_ LPCWSTR RootSignatureSubobjectName,")
3053cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
3054cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
3055cpp_quote("")
3056cpp_quote("HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(")
3057cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
3058cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
3059cpp_quote(" _In_opt_ LPCWSTR RootSignatureSubobjectName,")
3060cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
3061cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
3062cpp_quote("")
3063
3064typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
3065{
3066 SIZE_T ptr;
3067} D3D12_CPU_DESCRIPTOR_HANDLE;
3068
3069
3070typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
3071{
3072 UINT64 ptr;
3073} D3D12_GPU_DESCRIPTOR_HANDLE;
3074
3075cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
3076cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
3077typedef struct D3D12_DISCARD_REGION
3078{
3079 UINT NumRects;
3080 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
3081 UINT FirstSubresource;
3082 UINT NumSubresources;
3083} D3D12_DISCARD_REGION;
3084
3085typedef enum D3D12_QUERY_HEAP_TYPE
3086{
3087 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
3088 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
3089 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
3090 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
3091 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
3092 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
3093 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7,
3094
3095} D3D12_QUERY_HEAP_TYPE;
3096
3097typedef struct D3D12_QUERY_HEAP_DESC
3098{
3099 D3D12_QUERY_HEAP_TYPE Type;
3100 UINT Count;
3101 UINT NodeMask;
3102} D3D12_QUERY_HEAP_DESC;
3103
3104typedef enum D3D12_QUERY_TYPE
3105{
3106 D3D12_QUERY_TYPE_OCCLUSION = 0,
3107 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
3108 D3D12_QUERY_TYPE_TIMESTAMP = 2,
3109 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
3110 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
3111 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
3112 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
3113 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
3114 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
3115 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10,
3116
3117} D3D12_QUERY_TYPE;
3118
3119typedef enum D3D12_PREDICATION_OP
3120{
3121 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
3122 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
3123} D3D12_PREDICATION_OP;
3124
3125typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
3126{
3127 UINT64 IAVertices;
3128 UINT64 IAPrimitives;
3129 UINT64 VSInvocations;
3130 UINT64 GSInvocations;
3131 UINT64 GSPrimitives;
3132 UINT64 CInvocations;
3133 UINT64 CPrimitives;
3134 UINT64 PSInvocations;
3135 UINT64 HSInvocations;
3136 UINT64 DSInvocations;
3137 UINT64 CSInvocations;
3138} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
3139
3140typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
3141{
3142 UINT64 IAVertices;
3143 UINT64 IAPrimitives;
3144 UINT64 VSInvocations;
3145 UINT64 GSInvocations;
3146 UINT64 GSPrimitives;
3147 UINT64 CInvocations;
3148 UINT64 CPrimitives;
3149 UINT64 PSInvocations;
3150 UINT64 HSInvocations;
3151 UINT64 DSInvocations;
3152 UINT64 CSInvocations;
3153 UINT64 ASInvocations;
3154 UINT64 MSInvocations;
3155 UINT64 MSPrimitives;
3156} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
3157
3158typedef struct D3D12_QUERY_DATA_SO_STATISTICS
3159{
3160 UINT64 NumPrimitivesWritten;
3161 UINT64 PrimitivesStorageNeeded;
3162} D3D12_QUERY_DATA_SO_STATISTICS;
3163
3164typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
3165{
3166 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3167 UINT64 SizeInBytes;
3168 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
3169} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
3170
3171typedef struct D3D12_DRAW_ARGUMENTS
3172{
3173 UINT VertexCountPerInstance;
3174 UINT InstanceCount;
3175 UINT StartVertexLocation;
3176 UINT StartInstanceLocation;
3177} D3D12_DRAW_ARGUMENTS;
3178
3179typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
3180{
3181 UINT IndexCountPerInstance;
3182 UINT InstanceCount;
3183 UINT StartIndexLocation;
3184 INT BaseVertexLocation;
3185 UINT StartInstanceLocation;
3186} D3D12_DRAW_INDEXED_ARGUMENTS;
3187
3188typedef struct D3D12_DISPATCH_ARGUMENTS
3189{
3190 UINT ThreadGroupCountX;
3191 UINT ThreadGroupCountY;
3192 UINT ThreadGroupCountZ;
3193} D3D12_DISPATCH_ARGUMENTS;
3194
3195typedef struct D3D12_VERTEX_BUFFER_VIEW
3196{
3197 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3198 UINT SizeInBytes;
3199 UINT StrideInBytes;
3200} D3D12_VERTEX_BUFFER_VIEW;
3201
3202typedef struct D3D12_INDEX_BUFFER_VIEW
3203{
3204 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3205 UINT SizeInBytes;
3206 DXGI_FORMAT Format;
3207} D3D12_INDEX_BUFFER_VIEW;
3208
3209typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
3210{
3211 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
3212 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
3213 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
3214 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
3215 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
3216 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
3217 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
3218 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
3219 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
3220 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
3221 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
3222 D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT,
3223} D3D12_INDIRECT_ARGUMENT_TYPE;
3224
3225typedef struct D3D12_INDIRECT_ARGUMENT_DESC
3226{
3227 D3D12_INDIRECT_ARGUMENT_TYPE Type;
3228
3229 union
3230 {
3231 struct
3232 {
3233 UINT Slot;
3234 } VertexBuffer;
3235
3236 struct
3237 {
3238 UINT RootParameterIndex;
3239 UINT DestOffsetIn32BitValues;
3240 UINT Num32BitValuesToSet;
3241 } Constant;
3242
3243 struct
3244 {
3245 UINT RootParameterIndex;
3246 } ConstantBufferView;
3247
3248 struct
3249 {
3250 UINT RootParameterIndex;
3251 } ShaderResourceView;
3252
3253 struct
3254 {
3255 UINT RootParameterIndex;
3256 } UnorderedAccessView;
3257
3258 // Tier 1.1 support
3259 struct
3260 {
3261 UINT RootParameterIndex;
3262 UINT DestOffsetIn32BitValues;
3263 } IncrementingConstant;
3264 };
3265} D3D12_INDIRECT_ARGUMENT_DESC;
3266
3267typedef struct D3D12_COMMAND_SIGNATURE_DESC
3268{
3269 // The number of bytes between each drawing structure
3270 UINT ByteStride;
3271 UINT NumArgumentDescs;
3272 [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
3273 UINT NodeMask;
3274} D3D12_COMMAND_SIGNATURE_DESC;
3275
3276interface ID3D12Device;
3277
3278[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
3279interface ID3D12Object
3280 : IUnknown
3281{
3282 HRESULT GetPrivateData(
3283 [annotation("_In_")] REFGUID guid,
3284 [annotation("_Inout_")] UINT* pDataSize,
3285 [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
3286 HRESULT SetPrivateData(
3287 [annotation("_In_")] REFGUID guid,
3288 [annotation("_In_")] UINT DataSize,
3289 [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
3290 HRESULT SetPrivateDataInterface(
3291 [annotation("_In_")] REFGUID guid,
3292 [annotation("_In_opt_")] const IUnknown* pData );
3293 HRESULT SetName(
3294 [annotation("_In_z_")] LPCWSTR Name );
3295}
3296
3297[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
3298interface ID3D12DeviceChild
3299 : ID3D12Object
3300{
3301 HRESULT GetDevice(
3302 [in] REFIID riid,
3303 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
3304 );
3305}
3306
3307[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
3308interface ID3D12Pageable
3309 : ID3D12DeviceChild
3310{
3311}
3312
3313[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
3314interface ID3D12Heap
3315 : ID3D12Pageable
3316{
3317 D3D12_HEAP_DESC GetDesc();
3318}
3319
3320[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
3321interface ID3D12Resource
3322 : ID3D12Pageable
3323{
3324 HRESULT Map(
3325 UINT Subresource,
3326 [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
3327 [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
3328
3329 void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
3330
3331 D3D12_RESOURCE_DESC GetDesc();
3332
3333 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
3334
3335 HRESULT WriteToSubresource(
3336 UINT DstSubresource,
3337 [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
3338 [annotation("_In_")] const void* pSrcData,
3339 UINT SrcRowPitch,
3340 UINT SrcDepthPitch );
3341
3342 HRESULT ReadFromSubresource(
3343 [annotation("_Out_")] void* pDstData,
3344 UINT DstRowPitch,
3345 UINT DstDepthPitch,
3346 UINT SrcSubresource,
3347 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
3348
3349 HRESULT GetHeapProperties(
3350 [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
3351 [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
3352 );
3353}
3354
3355[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
3356interface ID3D12CommandAllocator
3357 : ID3D12Pageable
3358{
3359 HRESULT Reset();
3360}
3361
3362[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
3363interface ID3D12Fence
3364 : ID3D12Pageable
3365{
3366 UINT64 GetCompletedValue();
3367 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
3368 HRESULT Signal(UINT64 Value);
3369};
3370
3371[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
3372interface ID3D12Fence1
3373 : ID3D12Fence
3374{
3375 D3D12_FENCE_FLAGS GetCreationFlags();
3376};
3377
3378
3379[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
3380interface ID3D12PipelineState
3381 : ID3D12Pageable
3382{
3383 HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
3384}
3385
3386[uuid(5646804c-9638-48f7-9182-b3ee5a6b60fb), object, local, pointer_default(unique)]
3387interface ID3D12PipelineState1
3388 : ID3D12PipelineState
3389{
3390 HRESULT GetRootSignature(
3391 [in] REFIID riid, // Expected ID3D12RootSignature
3392 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3393}
3394
3395[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
3396interface ID3D12DescriptorHeap
3397 : ID3D12Pageable
3398{
3399 D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
3400
3401 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
3402 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
3403}
3404
3405[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
3406interface ID3D12QueryHeap
3407 : ID3D12Pageable
3408{
3409};
3410
3411[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
3412interface ID3D12CommandSignature
3413 : ID3D12Pageable
3414{
3415};
3416
3417[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
3418interface ID3D12CommandList
3419 : ID3D12DeviceChild
3420{
3421 D3D12_COMMAND_LIST_TYPE GetType();
3422}
3423
3424// Superseded by ID3D12GraphicsCommandList1
3425[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
3426interface ID3D12GraphicsCommandList
3427 : ID3D12CommandList
3428{
3429 HRESULT Close();
3430
3431 HRESULT Reset(
3432 [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
3433 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
3434 );
3435
3436 void ClearState(
3437 [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
3438 );
3439
3440 void DrawInstanced(
3441 [annotation("_In_")] UINT VertexCountPerInstance,
3442 [annotation("_In_")] UINT InstanceCount,
3443 [annotation("_In_")] UINT StartVertexLocation,
3444 [annotation("_In_")] UINT StartInstanceLocation
3445 );
3446
3447 void DrawIndexedInstanced(
3448 [annotation("_In_")] UINT IndexCountPerInstance,
3449 [annotation("_In_")] UINT InstanceCount,
3450 [annotation("_In_")] UINT StartIndexLocation,
3451 [annotation("_In_")] INT BaseVertexLocation,
3452 [annotation("_In_")] UINT StartInstanceLocation
3453 );
3454
3455 void Dispatch(
3456 [annotation("_In_")] UINT ThreadGroupCountX,
3457 [annotation("_In_")] UINT ThreadGroupCountY,
3458 [annotation("_In_")] UINT ThreadGroupCountZ
3459 );
3460
3461 void CopyBufferRegion(
3462 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3463 UINT64 DstOffset,
3464 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3465 UINT64 SrcOffset,
3466 UINT64 NumBytes
3467 );
3468
3469 void CopyTextureRegion(
3470 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
3471 UINT DstX, UINT DstY, UINT DstZ,
3472 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
3473 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
3474 );
3475
3476 void CopyResource(
3477 [annotation("_In_")] ID3D12Resource* pDstResource,
3478 [annotation("_In_")] ID3D12Resource* pSrcResource
3479 );
3480
3481 void CopyTiles(
3482 [annotation("_In_")] ID3D12Resource* pTiledResource,
3483 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
3484 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
3485 [annotation("_In_")] ID3D12Resource* pBuffer,
3486 UINT64 BufferStartOffsetInBytes,
3487 D3D12_TILE_COPY_FLAGS Flags
3488 );
3489
3490 void ResolveSubresource(
3491 [annotation("_In_")] ID3D12Resource* pDstResource,
3492 [annotation("_In_")] UINT DstSubresource,
3493 [annotation("_In_")] ID3D12Resource* pSrcResource,
3494 [annotation("_In_")] UINT SrcSubresource,
3495 [annotation("_In_")] DXGI_FORMAT Format
3496 );
3497
3498 void IASetPrimitiveTopology(
3499 [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
3500 );
3501
3502 void RSSetViewports(
3503 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
3504 [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
3505 );
3506
3507 void RSSetScissorRects(
3508 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
3509 [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
3510 );
3511
3512 void OMSetBlendFactor(
3513 [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
3514 );
3515
3516 void OMSetStencilRef(
3517 [annotation("_In_")] UINT StencilRef
3518 );
3519
3520 void SetPipelineState(
3521 [annotation("_In_")] ID3D12PipelineState* pPipelineState
3522 );
3523
3524 void ResourceBarrier(
3525 [annotation("_In_")] UINT NumBarriers,
3526 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
3527 );
3528
3529 void ExecuteBundle(
3530 [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
3531 );
3532
3533 void SetDescriptorHeaps(
3534 [annotation("_In_")] UINT NumDescriptorHeaps,
3535 [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
3536 );
3537
3538 void SetComputeRootSignature(
3539 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3540 );
3541
3542 void SetGraphicsRootSignature(
3543 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3544 );
3545
3546 void SetComputeRootDescriptorTable(
3547 [annotation("_In_")] UINT RootParameterIndex,
3548 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3549 );
3550
3551 void SetGraphicsRootDescriptorTable(
3552 [annotation("_In_")] UINT RootParameterIndex,
3553 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3554 );
3555
3556 // Single constant
3557 void SetComputeRoot32BitConstant(
3558 [annotation("_In_")] UINT RootParameterIndex,
3559 [annotation("_In_")] UINT SrcData,
3560 [annotation("_In_")] UINT DestOffsetIn32BitValues
3561 );
3562
3563 void SetGraphicsRoot32BitConstant(
3564 [annotation("_In_")] UINT RootParameterIndex,
3565 [annotation("_In_")] UINT SrcData,
3566 [annotation("_In_")] UINT DestOffsetIn32BitValues
3567 );
3568
3569 // Group of constants
3570 void SetComputeRoot32BitConstants(
3571 [annotation("_In_")] UINT RootParameterIndex,
3572 [annotation("_In_")] UINT Num32BitValuesToSet,
3573 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3574 [annotation("_In_")] UINT DestOffsetIn32BitValues
3575 );
3576
3577 void SetGraphicsRoot32BitConstants(
3578 [annotation("_In_")] UINT RootParameterIndex,
3579 [annotation("_In_")] UINT Num32BitValuesToSet,
3580 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3581 [annotation("_In_")] UINT DestOffsetIn32BitValues
3582 );
3583
3584 // CBV
3585 void SetComputeRootConstantBufferView(
3586 [annotation("_In_")] UINT RootParameterIndex,
3587 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3588 );
3589
3590 void SetGraphicsRootConstantBufferView(
3591 [annotation("_In_")] UINT RootParameterIndex,
3592 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3593 );
3594
3595 // SRV
3596 void SetComputeRootShaderResourceView(
3597 [annotation("_In_")] UINT RootParameterIndex,
3598 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3599 );
3600
3601 void SetGraphicsRootShaderResourceView(
3602 [annotation("_In_")] UINT RootParameterIndex,
3603 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3604 );
3605
3606 // UAV
3607 void SetComputeRootUnorderedAccessView(
3608 [annotation("_In_")] UINT RootParameterIndex,
3609 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3610 );
3611
3612 void SetGraphicsRootUnorderedAccessView(
3613 [annotation("_In_")] UINT RootParameterIndex,
3614 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3615 );
3616
3617 void IASetIndexBuffer(
3618 [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
3619 );
3620
3621 void IASetVertexBuffers(
3622 [annotation("_In_")] UINT StartSlot,
3623 [annotation("_In_")] UINT NumViews,
3624 [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
3625 );
3626
3627 void SOSetTargets(
3628 [annotation("_In_")] UINT StartSlot,
3629 [annotation("_In_")] UINT NumViews,
3630 [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
3631 );
3632
3633 void OMSetRenderTargets(
3634 [annotation("_In_")] UINT NumRenderTargetDescriptors,
3635 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
3636 [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
3637 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
3638 );
3639
3640 void ClearDepthStencilView(
3641 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
3642 [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
3643 [annotation("_In_")] FLOAT Depth,
3644 [annotation("_In_")] UINT8 Stencil,
3645 [annotation("_In_")] UINT NumRects,
3646 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3647 );
3648
3649 void ClearRenderTargetView(
3650 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
3651 [annotation("_In_")] const FLOAT ColorRGBA[4],
3652 [annotation("_In_")] UINT NumRects,
3653 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3654 );
3655
3656 void ClearUnorderedAccessViewUint(
3657 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3658 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3659 [annotation("_In_")] ID3D12Resource* pResource,
3660 [annotation("_In_")] const UINT Values[4],
3661 [annotation("_In_")] UINT NumRects,
3662 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3663 );
3664
3665 void ClearUnorderedAccessViewFloat(
3666 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3667 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3668 [annotation("_In_")] ID3D12Resource* pResource,
3669 [annotation("_In_")] const FLOAT Values[4],
3670 [annotation("_In_")] UINT NumRects,
3671 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3672 );
3673
3674 void DiscardResource(
3675 [annotation("_In_")] ID3D12Resource* pResource,
3676 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
3677 );
3678
3679 void BeginQuery(
3680 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3681 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3682 [annotation("_In_")] UINT Index
3683 );
3684
3685 void EndQuery(
3686 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3687 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3688 [annotation("_In_")] UINT Index
3689 );
3690
3691 void ResolveQueryData(
3692 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3693 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3694 [annotation("_In_")] UINT StartIndex,
3695 [annotation("_In_")] UINT NumQueries,
3696 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
3697 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
3698 );
3699
3700 void SetPredication(
3701 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
3702 [annotation("_In_")] UINT64 AlignedBufferOffset,
3703 [annotation("_In_")] D3D12_PREDICATION_OP Operation
3704 );
3705
3706 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3707 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3708 void EndEvent();
3709
3710 void ExecuteIndirect(
3711 [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
3712 [annotation("_In_")] UINT MaxCommandCount,
3713 [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
3714 [annotation("_In_")] UINT64 ArgumentBufferOffset,
3715 [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
3716 [annotation("_In_")] UINT64 CountBufferOffset
3717 );
3718}
3719
3720[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
3721interface ID3D12GraphicsCommandList1
3722 : ID3D12GraphicsCommandList
3723{
3724 void AtomicCopyBufferUINT(
3725 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3726 UINT64 DstOffset,
3727 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3728 UINT64 SrcOffset,
3729 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3730 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3731 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3732 );
3733
3734 // UINT64 is only valid on UMA architectures
3735 void AtomicCopyBufferUINT64(
3736 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3737 UINT64 DstOffset,
3738 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3739 UINT64 SrcOffset,
3740 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3741 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3742 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3743 );
3744
3745 void OMSetDepthBounds(
3746 [annotation("_In_")] FLOAT Min,
3747 [annotation("_In_")] FLOAT Max
3748 );
3749
3750 void SetSamplePositions(
3751 [annotation("_In_")] UINT NumSamplesPerPixel,
3752 [annotation("_In_")] UINT NumPixels,
3753 [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
3754 );
3755
3756 void ResolveSubresourceRegion(
3757 [annotation("_In_")] ID3D12Resource* pDstResource,
3758 [annotation("_In_")] UINT DstSubresource,
3759 [annotation("_In_")] UINT DstX,
3760 [annotation("_In_")] UINT DstY,
3761 [annotation("_In_")] ID3D12Resource* pSrcResource,
3762 [annotation("_In_")] UINT SrcSubresource,
3763 [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
3764 [annotation("_In_")] DXGI_FORMAT Format,
3765 [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
3766 );
3767
3768 void SetViewInstanceMask(
3769 [annotation("_In_")] UINT Mask
3770 );
3771
3772}
3773
3774typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
3775{
3776 D3D12_GPU_VIRTUAL_ADDRESS Dest;
3777 UINT32 Value;
3778} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
3779
3780typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
3781{
3782 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
3783 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
3784 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
3785
3786} D3D12_WRITEBUFFERIMMEDIATE_MODE;
3787
3788[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
3789interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
3790{
3791 void WriteBufferImmediate(
3792 UINT Count,
3793 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3794 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
3795 );
3796}
3797
3798[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
3799interface ID3D12CommandQueue
3800 : ID3D12Pageable
3801{
3802 void UpdateTileMappings(
3803 [annotation("_In_")] ID3D12Resource* pResource,
3804 UINT NumResourceRegions,
3805 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
3806 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
3807 [annotation("_In_opt_")] ID3D12Heap* pHeap,
3808 UINT NumRanges,
3809 [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
3810 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
3811 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
3812 D3D12_TILE_MAPPING_FLAGS Flags );
3813
3814 void CopyTileMappings(
3815 [annotation("_In_")] ID3D12Resource* pDstResource,
3816 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
3817 [annotation("_In_")] ID3D12Resource* pSrcResource,
3818 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
3819 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
3820 D3D12_TILE_MAPPING_FLAGS Flags );
3821
3822 void ExecuteCommandLists(
3823 [annotation("_In_")] UINT NumCommandLists,
3824 [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
3825 );
3826
3827 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3828 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3829 void EndEvent();
3830
3831 HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
3832 HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
3833
3834 HRESULT GetTimestampFrequency(
3835 [annotation("_Out_")] UINT64* pFrequency
3836 );
3837
3838 HRESULT GetClockCalibration(
3839 [annotation("_Out_")] UINT64* pGpuTimestamp,
3840 [annotation("_Out_")] UINT64* pCpuTimestamp
3841 );
3842
3843 D3D12_COMMAND_QUEUE_DESC GetDesc();
3844}
3845
3846//
3847// Dynamic priority command queue features start
3848//
3849
3850typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
3851{
3852 [annotation("_Out_")] UINT ComputeQueuesPer3DQueue; // 0 means scheduling groups do not group multiple queues.
3853} D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
3854
3855typedef enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
3856{
3857 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
3858 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1,
3859} D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
3860
3861typedef enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
3862{
3863 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
3864 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
3865 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
3866
3867 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
3868 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
3869 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
3870 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
3871 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
3872 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
3873 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
3874 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
3875 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
3876 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
3877 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
3878 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
3879 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
3880 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
3881
3882 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32,
3883} D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
3884
3885[uuid(3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9), object, local, pointer_default(unique)]
3886interface ID3D12CommandQueue1
3887 : ID3D12CommandQueue
3888{
3889 HRESULT SetProcessPriority(D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
3890 HRESULT GetProcessPriority(D3D12_COMMAND_QUEUE_PROCESS_PRIORITY* pOutValue);
3891
3892 HRESULT SetGlobalPriority(D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
3893 HRESULT GetGlobalPriority(D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY* pOutValue);
3894}
3895
3896//
3897// Dynamic priority command queue features end
3898//
3899
3900
3901[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
3902interface ID3D12Device
3903 : ID3D12Object
3904{
3905 UINT GetNodeCount();
3906
3907 HRESULT CreateCommandQueue(
3908 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
3909 [in] REFIID riid, // Expected: ID3D12CommandQueue
3910 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
3911 );
3912
3913 HRESULT CreateCommandAllocator(
3914 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3915 [in] REFIID riid, // Expected: ID3D12CommandAllocator
3916 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
3917 );
3918
3919 HRESULT CreateGraphicsPipelineState(
3920 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3921 [in] REFIID riid, // Expected: ID3D12PipelineState
3922 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3923 );
3924
3925 HRESULT CreateComputePipelineState(
3926 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3927 [in] REFIID riid, // Expected: ID3D12PipelineState
3928 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3929 );
3930
3931 HRESULT CreateCommandList(
3932 [annotation("_In_")] UINT nodeMask,
3933 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3934 [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
3935 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
3936 [in] REFIID riid, // Expected: ID3D12CommandList
3937 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3938 );
3939
3940 HRESULT CheckFeatureSupport(
3941 D3D12_FEATURE Feature,
3942 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
3943 UINT FeatureSupportDataSize
3944 );
3945
3946 HRESULT CreateDescriptorHeap(
3947 [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
3948 [in] REFIID riid, // Expected ID3D12DescriptorHeap
3949 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
3950
3951 UINT GetDescriptorHandleIncrementSize(
3952 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
3953
3954 HRESULT CreateRootSignature(
3955 [annotation("_In_")] UINT nodeMask,
3956 [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
3957 [annotation("_In_")] SIZE_T blobLengthInBytes,
3958 [in] REFIID riid, // Expected ID3D12RootSignature
3959 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3960
3961 void CreateConstantBufferView(
3962 [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
3963 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3964
3965 void CreateShaderResourceView(
3966 [annotation("_In_opt_")] ID3D12Resource* pResource,
3967 [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
3968 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3969
3970 void CreateUnorderedAccessView(
3971 [annotation("_In_opt_")] ID3D12Resource* pResource,
3972 [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
3973 [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
3974 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3975
3976 void CreateRenderTargetView(
3977 [annotation("_In_opt_")] ID3D12Resource* pResource,
3978 [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
3979 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3980
3981 void CreateDepthStencilView(
3982 [annotation("_In_opt_")] ID3D12Resource* pResource,
3983 [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
3984 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3985
3986 void CreateSampler(
3987 [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
3988 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3989
3990 void CopyDescriptors(
3991 [annotation("_In_")] UINT NumDestDescriptorRanges,
3992 [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
3993 [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
3994 [annotation("_In_")] UINT NumSrcDescriptorRanges,
3995 [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
3996 [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
3997 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3998
3999 void CopyDescriptorsSimple(
4000 [annotation("_In_")] UINT NumDescriptors,
4001 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
4002 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
4003 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
4004
4005 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
4006 [annotation("_In_")] UINT visibleMask,
4007 [annotation("_In_")] UINT numResourceDescs,
4008 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
4009
4010 D3D12_HEAP_PROPERTIES GetCustomHeapProperties(
4011 [annotation("_In_")] UINT nodeMask,
4012 D3D12_HEAP_TYPE heapType
4013 );
4014
4015 HRESULT CreateCommittedResource(
4016 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4017 D3D12_HEAP_FLAGS HeapFlags,
4018 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4019 D3D12_RESOURCE_STATES InitialResourceState,
4020 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4021 [in] REFIID riidResource, // Expected: ID3D12Resource*
4022 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
4023
4024 HRESULT CreateHeap(
4025 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
4026 [in] REFIID riid, // Expected: ID3D12Heap*
4027 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
4028
4029 HRESULT CreatePlacedResource(
4030 [annotation("_In_")] ID3D12Heap* pHeap,
4031 UINT64 HeapOffset,
4032 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4033 D3D12_RESOURCE_STATES InitialState,
4034 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4035 [in] REFIID riid, // Expected: ID3D12Resource*
4036 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
4037
4038 HRESULT CreateReservedResource(
4039 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4040 D3D12_RESOURCE_STATES InitialState,
4041 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4042 [in] REFIID riid, // Expected: ID3D12Resource*
4043 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
4044
4045 HRESULT CreateSharedHandle(
4046 [annotation("_In_")] ID3D12DeviceChild* pObject,
4047 [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
4048 DWORD Access,
4049 [annotation("_In_opt_")] LPCWSTR Name,
4050 [annotation("_Out_")] HANDLE* pHandle );
4051
4052 HRESULT OpenSharedHandle(
4053 [annotation("_In_")] HANDLE NTHandle,
4054 [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
4055 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
4056
4057 HRESULT OpenSharedHandleByName(
4058 [annotation("_In_")] LPCWSTR Name,
4059 DWORD Access,
4060 [out, annotation("_Out_")] HANDLE* pNTHandle );
4061
4062 HRESULT MakeResident(
4063 UINT NumObjects,
4064 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
4065
4066 HRESULT Evict(
4067 UINT NumObjects,
4068 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
4069
4070 HRESULT CreateFence(
4071 UINT64 InitialValue,
4072 D3D12_FENCE_FLAGS Flags,
4073 [in] REFIID riid, // Expected: ID3D12Fence
4074 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);
4075
4076 HRESULT GetDeviceRemovedReason();
4077
4078 void GetCopyableFootprints(
4079 [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
4080 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
4081 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
4082 UINT64 BaseOffset,
4083 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
4084 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
4085 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
4086 [annotation("_Out_opt_")] UINT64* pTotalBytes );
4087
4088 HRESULT CreateQueryHeap(
4089 [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
4090 [in] REFIID riid, // Expected: ID3D12QueryHeap
4091 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
4092 );
4093
4094 HRESULT SetStablePowerState(BOOL Enable);
4095
4096 HRESULT CreateCommandSignature(
4097 [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
4098 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
4099 [in] REFIID riid, // Expected: ID3D12CommandSignature
4100 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
4101 );
4102
4103 void GetResourceTiling(
4104 [annotation("_In_")] ID3D12Resource* pTiledResource,
4105 [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource,
4106 [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc,
4107 [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips,
4108 [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings,
4109 [annotation("_In_")] UINT FirstSubresourceTilingToGet,
4110 [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
4111 );
4112
4113 LUID GetAdapterLuid();
4114}
4115
4116// D3D12 Revision 1
4117[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
4118interface ID3D12PipelineLibrary
4119 : ID3D12DeviceChild
4120{
4121 HRESULT StorePipeline(
4122 [annotation("_In_opt_")] LPCWSTR pName,
4123 [annotation("_In_")] ID3D12PipelineState *pPipeline
4124 );
4125
4126 HRESULT LoadGraphicsPipeline(
4127 [annotation("_In_")] LPCWSTR pName,
4128 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
4129 [in] REFIID riid, // Expected: ID3D12PipelineState
4130 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4131 );
4132
4133 HRESULT LoadComputePipeline(
4134 [annotation("_In_")] LPCWSTR pName,
4135 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
4136 [in] REFIID riid, // Expected: ID3D12PipelineState
4137 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4138 );
4139
4140 SIZE_T GetSerializedSize();
4141
4142 HRESULT Serialize(
4143 [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
4144 SIZE_T DataSizeInBytes
4145 );
4146}
4147
4148// Pipeline State v2
4149[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
4150interface ID3D12PipelineLibrary1
4151 : ID3D12PipelineLibrary
4152{
4153 HRESULT LoadPipeline(
4154 [annotation("_In_")] LPCWSTR pName,
4155 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
4156 [in] REFIID riid, // Expected: ID3D12PipelineState
4157 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4158 );
4159}
4160
4161typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
4162{
4163 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
4164 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
4165
4166 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
4167} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
4168cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )" )
4169
4170// Applications may use the whole value range of UINT for a priority.
4171// These names are merely semantic suggestions.
4172typedef enum D3D12_RESIDENCY_PRIORITY
4173{
4174 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
4175 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
4176 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
4177 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
4178 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
4179} D3D12_RESIDENCY_PRIORITY;
4180
4181[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
4182interface ID3D12Device1
4183 : ID3D12Device
4184{
4185 HRESULT CreatePipelineLibrary(
4186 [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
4187 SIZE_T BlobLength,
4188 [in] REFIID riid, // Expected: ID3D12PipelineLibrary
4189 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
4190 );
4191
4192 HRESULT SetEventOnMultipleFenceCompletion(
4193 [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
4194 [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
4195 UINT NumFences,
4196 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
4197 HANDLE hEvent
4198 );
4199
4200 HRESULT SetResidencyPriority(
4201 UINT NumObjects,
4202 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
4203 [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
4204}
4205
4206[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
4207interface ID3D12Device2
4208 : ID3D12Device1
4209{
4210 HRESULT CreatePipelineState(
4211 [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
4212 [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
4213 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4214 );
4215}
4216
4217typedef enum D3D12_RESIDENCY_FLAGS
4218{
4219 D3D12_RESIDENCY_FLAG_NONE = 0x0,
4220 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
4221} D3D12_RESIDENCY_FLAGS;
4222cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )" )
4223
4224[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
4225interface ID3D12Device3
4226 : ID3D12Device2
4227{
4228 HRESULT OpenExistingHeapFromAddress(
4229 [annotation("_In_")] const void* pAddress,
4230 [in] REFIID riid, // Expected: ID3D12Heap
4231 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
4232 );
4233 HRESULT OpenExistingHeapFromFileMapping(
4234 [annotation("_In_")] HANDLE hFileMapping,
4235 [in] REFIID riid, // Expected: ID3D12Heap
4236 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
4237 );
4238 HRESULT EnqueueMakeResident(
4239 D3D12_RESIDENCY_FLAGS Flags,
4240 UINT NumObjects,
4241 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
4242 [annotation("_In_")] ID3D12Fence* pFenceToSignal,
4243 UINT64 FenceValueToSignal
4244 );
4245}
4246
4247typedef enum D3D12_COMMAND_LIST_FLAGS
4248{
4249 D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
4250} D3D12_COMMAND_LIST_FLAGS;
4251cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )")
4252
4253
4254typedef enum D3D12_COMMAND_POOL_FLAGS
4255{
4256 D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
4257
4258} D3D12_COMMAND_POOL_FLAGS;
4259cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )")
4260
4261typedef enum D3D12_COMMAND_RECORDER_FLAGS
4262{
4263 D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
4264
4265} D3D12_COMMAND_RECORDER_FLAGS;
4266cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )")
4267
4268typedef enum D3D12_PROTECTED_SESSION_STATUS
4269{
4270 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
4271 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
4272} D3D12_PROTECTED_SESSION_STATUS;
4273
4274[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
4275interface ID3D12ProtectedSession
4276 : ID3D12DeviceChild
4277{
4278 HRESULT GetStatusFence(
4279 [in] REFIID riid,
4280 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
4281
4282 D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
4283}
4284
4285typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
4286{
4287 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
4288 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
4289
4290} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
4291cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )")
4292
4293typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
4294{
4295 UINT NodeIndex; // input
4296 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; // output
4297} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
4298
4299typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
4300{
4301 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
4302
4303} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
4304cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )")
4305
4306typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
4307{
4308 UINT NodeMask;
4309 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
4310} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
4311
4312[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
4313interface ID3D12ProtectedResourceSession
4314 : ID3D12ProtectedSession
4315{
4316 D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
4317}
4318
4319[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
4320interface ID3D12Device4
4321 : ID3D12Device3
4322{
4323 HRESULT CreateCommandList1(
4324 [annotation("_In_")] UINT nodeMask,
4325 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
4326 [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
4327 [in] REFIID riid, // Expected: ID3D12CommandList
4328 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
4329 );
4330
4331 HRESULT CreateProtectedResourceSession(
4332 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
4333 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession,
4334 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
4335 );
4336
4337 HRESULT CreateCommittedResource1(
4338 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4339 D3D12_HEAP_FLAGS HeapFlags,
4340 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4341 D3D12_RESOURCE_STATES InitialResourceState,
4342 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4343 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4344 [in] REFIID riidResource, // Expected: ID3D12Resource1*
4345 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
4346 );
4347
4348 HRESULT CreateHeap1(
4349 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
4350 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4351 [in] REFIID riid, // Expected: ID3D12Heap1*
4352 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
4353 );
4354
4355 HRESULT CreateReservedResource1(
4356 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4357 D3D12_RESOURCE_STATES InitialState,
4358 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4359 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4360 [in] REFIID riid, // Expected: ID3D12Resource1*
4361 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
4362 );
4363
4364 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
4365 UINT visibleMask,
4366 UINT numResourceDescs,
4367 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
4368 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
4369 );
4370}
4371
4372typedef enum D3D12_LIFETIME_STATE
4373{
4374 D3D12_LIFETIME_STATE_IN_USE,
4375 D3D12_LIFETIME_STATE_NOT_IN_USE,
4376} D3D12_LIFETIME_STATE;
4377
4378interface ID3D12LifetimeTracker;
4379
4380[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
4381interface ID3D12LifetimeOwner : IUnknown
4382{
4383 void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
4384}
4385
4386[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
4387interface ID3D12SwapChainAssistant
4388 : IUnknown
4389{
4390 LUID GetLUID();
4391 HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
4392 HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
4393 REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
4394 HRESULT InsertImplicitSync();
4395}
4396
4397[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
4398interface ID3D12LifetimeTracker
4399 : ID3D12DeviceChild
4400{
4401 HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
4402}
4403
4404typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
4405{
4406 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
4407 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
4408 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
4409 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
4410 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
4411} D3D12_META_COMMAND_PARAMETER_TYPE;
4412
4413typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
4414{
4415 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
4416 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
4417} D3D12_META_COMMAND_PARAMETER_FLAGS;
4418cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )")
4419
4420typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
4421{
4422 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
4423 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
4424 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
4425} D3D12_META_COMMAND_PARAMETER_STAGE;
4426
4427typedef struct D3D12_META_COMMAND_PARAMETER_DESC
4428{
4429 LPCWSTR Name;
4430 D3D12_META_COMMAND_PARAMETER_TYPE Type;
4431 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
4432 D3D12_RESOURCE_STATES RequiredResourceState;
4433 UINT StructureOffset;
4434} D3D12_META_COMMAND_PARAMETER_DESC;
4435
4436typedef enum D3D12_GRAPHICS_STATES
4437{
4438 D3D12_GRAPHICS_STATE_NONE = 0,
4439 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
4440 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
4441 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
4442 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
4443 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
4444 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
4445 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
4446 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
4447 D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
4448 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
4449 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
4450 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
4451 D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
4452 D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
4453 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
4454 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
4455 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
4456
4457} D3D12_GRAPHICS_STATES;
4458cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )")
4459
4460typedef struct D3D12_META_COMMAND_DESC
4461{
4462 GUID Id;
4463 LPCWSTR Name;
4464 D3D12_GRAPHICS_STATES InitializationDirtyState;
4465 D3D12_GRAPHICS_STATES ExecutionDirtyState;
4466} D3D12_META_COMMAND_DESC;
4467
4468[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
4469interface ID3D12StateObject
4470 : ID3D12Pageable
4471{
4472}
4473
4474[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
4475interface ID3D12StateObjectProperties
4476 : IUnknown
4477{
4478 void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
4479 UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
4480 UINT64 GetPipelineStackSize();
4481 void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
4482}
4483
4484typedef struct D3D12_PROGRAM_IDENTIFIER
4485{
4486 UINT64 OpaqueData[4];
4487} D3D12_PROGRAM_IDENTIFIER;
4488
4489[uuid(460caac7-1d24-446a-a184-ca67db494138), object, local, pointer_default(unique)]
4490interface ID3D12StateObjectProperties1
4491 : ID3D12StateObjectProperties
4492{
4493 D3D12_PROGRAM_IDENTIFIER GetProgramIdentifier(LPCWSTR pProgramName);
4494}
4495
4496[uuid(d5e82917-f0f1-44cf-ae5e-ce222dd0b884), object, local, pointer_default(unique)]
4497interface ID3D12StateObjectProperties2
4498 : ID3D12StateObjectProperties1
4499{
4500 HRESULT GetGlobalRootSignatureForProgram(
4501 [in] LPCWSTR pProgramName,
4502 [in] REFIID riid, // Expected ID3D12RootSignature
4503 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
4504
4505 HRESULT GetGlobalRootSignatureForShader(
4506 [in] LPCWSTR pExportName,
4507 [in] REFIID riid, // Expected ID3D12RootSignature
4508 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
4509}
4510
4511typedef struct D3D12_NODE_ID
4512{
4513 LPCWSTR Name;
4514 UINT ArrayIndex;
4515} D3D12_NODE_ID;
4516
4517typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
4518{
4519 UINT64 MinSizeInBytes;
4520 UINT64 MaxSizeInBytes;
4521 UINT SizeGranularityInBytes;
4522} D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
4523
4524[uuid(065acf71-f863-4b89-82f4-02e4d5886757), object, local, pointer_default(unique)]
4525interface ID3D12WorkGraphProperties : IUnknown
4526{
4527 UINT GetNumWorkGraphs();
4528 LPCWSTR GetProgramName(UINT WorkGraphIndex);
4529 UINT GetWorkGraphIndex(LPCWSTR pProgramName);
4530
4531 UINT GetNumNodes(UINT WorkGraphIndex);
4532 D3D12_NODE_ID GetNodeID(UINT WorkGraphIndex, UINT NodeIndex);
4533 UINT GetNodeIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
4534 UINT GetNodeLocalRootArgumentsTableIndex(UINT WorkGraphIndex, UINT NodeIndex);
4535
4536 UINT GetNumEntrypoints(UINT WorkGraphIndex);
4537 D3D12_NODE_ID GetEntrypointID(UINT WorkGraphIndex, UINT EntrypointIndex);
4538 UINT GetEntrypointIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
4539 UINT GetEntrypointRecordSizeInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
4540
4541 void GetWorkGraphMemoryRequirements(
4542 UINT WorkGraphIndex,
4543 [annotation("_Out_")] D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS* pWorkGraphMemoryRequirements);
4544
4545 UINT GetEntrypointRecordAlignmentInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
4546}
4547
4548
4549typedef enum D3D12_STATE_SUBOBJECT_TYPE
4550{
4551 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
4552 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
4553 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
4554 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
4555 // 4 unused
4556 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
4557 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
4558 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4559 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4560 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
4561 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, // D3D12_RAYTRACING_PIPELINE_CONFIG
4562 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, // D3D12_HIT_GROUP_DESC
4563 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12, // D3D12_RAYTRACING_PIPELINE_CONFIG1
4564 D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13, // D3D12_WORK_GRAPH_DESC
4565 D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14, // D3D12_STREAM_OUTPUT_DESC
4566 D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15, // D3D12_BLEND_DESC
4567 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16, // UINT
4568 D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17, // D3D12_RASTERIZER_DESC2
4569 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18, // D3D12_DEPTH_STENCIL_DESC
4570 D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19, // D3D12_INPUT_LAYOUT_DESC
4571 D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
4572 D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
4573 D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22, // D3D12_RT_FORMAT_ARRAY
4574 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23, // DXGI_FORMAT
4575 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24, // DXGI_SAMPLE_DESC
4576 // 25 is unused
4577 D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26, // D3D12_PIPELINE_STATE_FLAGS
4578 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27, // D3D12_DEPTH_STENCIL_DESC1
4579 D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28, // D3D12_VIEW_INSTANCING_DESC
4580 D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29, // D3D12_GENERIC_PROGRAM_DESC
4581 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30, // D3D12_DEPTH_STENCIL_DESC2
4582 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31, // D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_DESC
4583 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32, // D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE_DESC
4584 D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33, // D3D12_COMPILER_EXISTING_COLLECTION_DESC
4585 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36, // D3D12_EXISTING_COLLECTION_BY_KEY_DESC
4586 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
4587} D3D12_STATE_SUBOBJECT_TYPE;
4588
4589typedef struct D3D12_STATE_SUBOBJECT
4590{
4591 D3D12_STATE_SUBOBJECT_TYPE Type;
4592 const void* pDesc;
4593} D3D12_STATE_SUBOBJECT;
4594
4595typedef enum D3D12_STATE_OBJECT_FLAGS
4596{
4597 D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
4598 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
4599 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
4600 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
4601
4602} D3D12_STATE_OBJECT_FLAGS;
4603cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )")
4604
4605typedef struct D3D12_STATE_OBJECT_CONFIG
4606{
4607 D3D12_STATE_OBJECT_FLAGS Flags;
4608} D3D12_STATE_OBJECT_CONFIG;
4609
4610typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
4611{
4612 ID3D12RootSignature* pGlobalRootSignature;
4613} D3D12_GLOBAL_ROOT_SIGNATURE;
4614
4615typedef struct D3D12_LOCAL_ROOT_SIGNATURE
4616{
4617 ID3D12RootSignature* pLocalRootSignature;
4618} D3D12_LOCAL_ROOT_SIGNATURE;
4619
4620typedef struct D3D12_NODE_MASK
4621{
4622 UINT NodeMask;
4623} D3D12_NODE_MASK;
4624
4625typedef struct D3D12_SAMPLE_MASK
4626{
4627 UINT SampleMask;
4628} D3D12_SAMPLE_MASK;
4629
4630typedef struct D3D12_IB_STRIP_CUT_VALUE
4631{
4632 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
4633} D3D12_IB_STRIP_CUT_VALUE;
4634
4635typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
4636{
4637 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
4638} D3D12_PRIMITIVE_TOPOLOGY_DESC;
4639
4640typedef struct D3D12_DEPTH_STENCIL_FORMAT
4641{
4642 DXGI_FORMAT DepthStencilFormat;
4643} D3D12_DEPTH_STENCIL_FORMAT;
4644
4645typedef enum D3D12_EXPORT_FLAGS
4646{
4647 D3D12_EXPORT_FLAG_NONE = 0x0,
4648} D3D12_EXPORT_FLAGS;
4649cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )")
4650
4651typedef struct D3D12_EXPORT_DESC
4652{
4653 LPCWSTR Name;
4654 [annotation("_In_opt_")] LPCWSTR ExportToRename;
4655 D3D12_EXPORT_FLAGS Flags;
4656} D3D12_EXPORT_DESC;
4657
4658typedef struct D3D12_DXIL_LIBRARY_DESC
4659{
4660 D3D12_SHADER_BYTECODE DXILLibrary;
4661 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4662 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
4663} D3D12_DXIL_LIBRARY_DESC;
4664
4665
4666typedef struct D3D12_EXISTING_COLLECTION_DESC
4667{
4668 ID3D12StateObject* pExistingCollection;
4669 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4670 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
4671} D3D12_EXISTING_COLLECTION_DESC;
4672
4673typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4674{
4675 const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate;
4676 UINT NumExports;
4677 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4678} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4679
4680typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4681{
4682 LPCWSTR SubobjectToAssociate;
4683 UINT NumExports;
4684 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4685} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4686
4687typedef enum D3D12_HIT_GROUP_TYPE
4688{
4689 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
4690 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
4691} D3D12_HIT_GROUP_TYPE;
4692
4693typedef struct D3D12_HIT_GROUP_DESC
4694{
4695 LPCWSTR HitGroupExport;
4696 D3D12_HIT_GROUP_TYPE Type;
4697 [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
4698 [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
4699 [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
4700} D3D12_HIT_GROUP_DESC;
4701
4702typedef struct D3D12_RAYTRACING_SHADER_CONFIG
4703{
4704 UINT MaxPayloadSizeInBytes;
4705 UINT MaxAttributeSizeInBytes;
4706} D3D12_RAYTRACING_SHADER_CONFIG;
4707
4708typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
4709{
4710 UINT MaxTraceRecursionDepth;
4711} D3D12_RAYTRACING_PIPELINE_CONFIG;
4712
4713typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
4714{
4715 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
4716 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
4717 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4718 D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400,
4719} D3D12_RAYTRACING_PIPELINE_FLAGS;
4720cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )")
4721
4722typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
4723{
4724 UINT MaxTraceRecursionDepth;
4725 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
4726} D3D12_RAYTRACING_PIPELINE_CONFIG1;
4727
4728typedef struct D3D12_NODE_OUTPUT_OVERRIDES
4729{
4730 UINT OutputIndex;
4731 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4732 [annotation("_In_opt_")] const BOOL* pAllowSparseNodes;
4733 [annotation("_In_opt_")] const UINT* pMaxRecords;
4734 [annotation("_In_opt_")] const UINT* pMaxRecordsSharedWithOutputIndex;
4735} D3D12_NODE_OUTPUT_OVERRIDES;
4736
4737typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
4738{
4739 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4740 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4741 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4742 [annotation("_In_opt_ ")] const D3D12_NODE_ID* pShareInputOf;
4743 [annotation("_In_reads_opt_(3)")] const UINT* pDispatchGrid;
4744 [annotation("_In_reads_opt_(3)")] const UINT* pMaxDispatchGrid;
4745 UINT NumOutputOverrides;
4746 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4747} D3D12_BROADCASTING_LAUNCH_OVERRIDES;
4748
4749typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
4750{
4751 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4752 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4753 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4754 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4755 UINT NumOutputOverrides;
4756 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4757} D3D12_COALESCING_LAUNCH_OVERRIDES;
4758
4759typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
4760{
4761 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4762 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4763 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4764 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4765 UINT NumOutputOverrides;
4766 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4767} D3D12_THREAD_LAUNCH_OVERRIDES;
4768
4769typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
4770{
4771 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4772 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4773 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4774 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4775 UINT NumOutputOverrides;
4776 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4777} D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
4778
4779typedef enum D3D12_NODE_OVERRIDES_TYPE
4780{
4781 D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
4782 D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
4783 D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
4784 D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
4785 D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4,
4786} D3D12_NODE_OVERRIDES_TYPE;
4787
4788typedef struct D3D12_SHADER_NODE
4789{
4790 LPCWSTR Shader;
4791 D3D12_NODE_OVERRIDES_TYPE OverridesType;
4792 union
4793 {
4794 const D3D12_BROADCASTING_LAUNCH_OVERRIDES* pBroadcastingLaunchOverrides;
4795 const D3D12_COALESCING_LAUNCH_OVERRIDES* pCoalescingLaunchOverrides;
4796 const D3D12_THREAD_LAUNCH_OVERRIDES* pThreadLaunchOverrides;
4797 const D3D12_COMMON_COMPUTE_NODE_OVERRIDES* pCommonComputeNodeOverrides;
4798 };
4799} D3D12_SHADER_NODE;
4800
4801
4802typedef enum D3D12_NODE_TYPE
4803{
4804 D3D12_NODE_TYPE_SHADER = 0x0,
4805} D3D12_NODE_TYPE;
4806
4807typedef struct D3D12_NODE
4808{
4809 D3D12_NODE_TYPE NodeType;
4810 union
4811 {
4812 D3D12_SHADER_NODE Shader; // D3D12_NODE_TYPE_SHADER
4813 };
4814} D3D12_NODE;
4815
4816typedef enum D3D12_WORK_GRAPH_FLAGS
4817{
4818 D3D12_WORK_GRAPH_FLAG_NONE = 0x0,
4819 D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1,
4820} D3D12_WORK_GRAPH_FLAGS;
4821cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )")
4822
4823typedef struct D3D12_WORK_GRAPH_DESC
4824{
4825 LPCWSTR ProgramName;
4826 D3D12_WORK_GRAPH_FLAGS Flags;
4827 UINT NumEntrypoints;
4828 [annotation("_In_reads_opt_(NumEntrypoints)")] const D3D12_NODE_ID* pEntrypoints;
4829 UINT NumExplicitlyDefinedNodes;
4830 [annotation("_In_reads_opt_(NumExplicitlyDefinedNodes)")] const D3D12_NODE* pExplicitlyDefinedNodes;
4831} D3D12_WORK_GRAPH_DESC;
4832
4833typedef struct D3D12_GENERIC_PROGRAM_DESC
4834{
4835 LPCWSTR ProgramName;
4836 UINT NumExports;
4837 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4838 UINT NumSubobjects;
4839 [annotation("_In_reads_opt_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* const* ppSubobjects;
4840} D3D12_GENERIC_PROGRAM_DESC;
4841
4842typedef enum D3D12_STATE_OBJECT_TYPE
4843{
4844 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
4845 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
4846 D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
4847} D3D12_STATE_OBJECT_TYPE;
4848
4849typedef struct D3D12_STATE_OBJECT_DESC
4850{
4851 D3D12_STATE_OBJECT_TYPE Type;
4852 UINT NumSubobjects;
4853 [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects;
4854} D3D12_STATE_OBJECT_DESC;
4855
4856typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
4857{
4858 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
4859 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
4860 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
4861} D3D12_RAYTRACING_GEOMETRY_FLAGS;
4862cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )")
4863
4864typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
4865{
4866 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
4867 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
4868 D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES
4869} D3D12_RAYTRACING_GEOMETRY_TYPE;
4870
4871typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
4872{
4873 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
4874 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
4875 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
4876 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
4877 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
4878 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
4879 D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
4880} D3D12_RAYTRACING_INSTANCE_FLAGS;
4881cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )")
4882
4883typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
4884{
4885 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4886 UINT64 StrideInBytes;
4887} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
4888
4889typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
4890{
4891 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4892 UINT64 SizeInBytes;
4893} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
4894
4895typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
4896{
4897 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4898 UINT64 SizeInBytes;
4899 UINT64 StrideInBytes;
4900} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
4901
4902typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
4903{
4904 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
4905 DXGI_FORMAT IndexFormat;
4906 DXGI_FORMAT VertexFormat;
4907 UINT IndexCount;
4908 UINT VertexCount;
4909 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
4910 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
4911} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
4912
4913typedef struct D3D12_RAYTRACING_AABB
4914{
4915 FLOAT MinX;
4916 FLOAT MinY;
4917 FLOAT MinZ;
4918 FLOAT MaxX;
4919 FLOAT MaxY;
4920 FLOAT MaxZ;
4921} D3D12_RAYTRACING_AABB;
4922
4923typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
4924{
4925 UINT64 AABBCount;
4926 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
4927} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
4928
4929typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
4930{
4931 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
4932 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
4933 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
4934 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4,
4935} D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
4936
4937typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
4938{
4939 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
4940 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
4941 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
4942 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3,
4943} D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
4944
4945typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
4946{
4947 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
4948 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2,
4949} D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
4950
4951cpp_quote("typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC")
4952cpp_quote("{")
4953cpp_quote(" UINT ByteOffset;")
4954cpp_quote(" UINT SubdivisionLevel : 16;")
4955cpp_quote(" D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;")
4956cpp_quote("} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;")
4957
4958typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
4959{
4960 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
4961 DXGI_FORMAT OpacityMicromapIndexFormat;
4962 UINT OpacityMicromapBaseLocation;
4963 D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
4964} D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
4965
4966typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
4967{
4968 const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC* pTriangles;
4969 const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC* pOmmLinkage;
4970} D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
4971
4972typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
4973{
4974 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
4975 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
4976 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
4977 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
4978 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
4979 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
4980 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
4981 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
4982 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80,
4983
4984} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
4985cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )")
4986
4987typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
4988{
4989 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
4990 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
4991 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
4992 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
4993 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
4994} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
4995
4996typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
4997{
4998 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
4999 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
5000 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2,
5001} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
5002
5003typedef enum D3D12_ELEMENTS_LAYOUT
5004{
5005 D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
5006 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
5007} D3D12_ELEMENTS_LAYOUT;
5008
5009typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
5010{
5011 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
5012 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
5013 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
5014 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
5015} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
5016
5017typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
5018{
5019 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
5020 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
5021} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
5022
5023typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
5024{
5025 UINT64 CompactedSizeInBytes;
5026} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
5027
5028typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
5029{
5030 UINT64 DecodedSizeInBytes;
5031} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
5032
5033typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
5034{
5035 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
5036 UINT NumDescs;
5037} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
5038cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
5039cpp_quote("// depending on Type field, NumDescs above is followed by either:")
5040cpp_quote("// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
5041cpp_quote("// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
5042cpp_quote("// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).")
5043cpp_quote("//")
5044cpp_quote("// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer")
5045cpp_quote("//")
5046cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
5047cpp_quote("")
5048
5049typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
5050{
5051 UINT64 SerializedSizeInBytes;
5052 union
5053 {
5054 UINT64 NumBottomLevelAccelerationStructurePointers;
5055 UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
5056 };
5057} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
5058
5059typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
5060{
5061 GUID DriverOpaqueGUID;
5062 BYTE DriverOpaqueVersioningData[16];
5063} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
5064
5065typedef enum D3D12_SERIALIZED_DATA_TYPE
5066{
5067 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
5068 D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1,
5069} D3D12_SERIALIZED_DATA_TYPE;
5070
5071typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
5072{
5073 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
5074 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
5075 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
5076 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
5077 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
5078} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
5079
5080typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
5081{
5082 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
5083 UINT64 SerializedSizeInBytesIncludingHeader;
5084 UINT64 DeserializedSizeInBytes;
5085 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
5086} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
5087
5088typedef enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
5089{
5090 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
5091 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
5092 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
5093} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
5094
5095typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
5096{
5097 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
5098 UINT64 SerializedSizeInBytesIncludingHeader;
5099 UINT64 DeserializedSizeInBytes;
5100 union
5101 {
5102 UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
5103 UINT NumBlocks;
5104 };
5105 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
5106} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
5107
5108typedef enum D3D12_SERIALIZED_BLOCK_TYPE
5109{
5110 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0x0,
5111} D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
5112
5113typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
5114{
5115 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
5116 UINT64 NumBlockPointersAfterHeader;
5117} D3D12_RAYTRACING_SERIALIZED_BLOCK;
5118
5119typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
5120{
5121 UINT64 CurrentSizeInBytes;
5122} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
5123
5124typedef struct D3D12_RAYTRACING_INSTANCE_DESC
5125{
5126 FLOAT Transform[3][4];
5127 UINT InstanceID : 24;
5128 UINT InstanceMask : 8;
5129 UINT InstanceContributionToHitGroupIndex : 24;
5130 UINT Flags : 8;
5131 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
5132} D3D12_RAYTRACING_INSTANCE_DESC;
5133
5134typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
5135{
5136 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
5137 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
5138 union
5139 {
5140 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
5141 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
5142 D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
5143 };
5144} D3D12_RAYTRACING_GEOMETRY_DESC;
5145
5146typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
5147{
5148 UINT Count;
5149 UINT SubdivisionLevel;
5150 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
5151} D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
5152
5153typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
5154{
5155 UINT NumOmmHistogramEntries;
5156 const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY* pOmmHistogram;
5157 D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
5158 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
5159} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
5160
5161typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
5162{
5163 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
5164 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
5165 UINT NumDescs;
5166 D3D12_ELEMENTS_LAYOUT DescsLayout;
5167 union
5168 {
5169 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
5170 const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
5171 const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
5172 const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC* pOpacityMicromapArrayDesc;
5173 };
5174} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
5175
5176typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
5177{
5178 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
5179 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
5180 [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
5181 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
5182} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
5183
5184typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
5185{
5186 UINT64 ResultDataMaxSizeInBytes;
5187 UINT64 ScratchDataSizeInBytes;
5188 UINT64 UpdateScratchDataSizeInBytes;
5189} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
5190
5191typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
5192{
5193 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0x0,
5194 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
5195} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
5196
5197typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
5198{
5199 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
5200 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
5201} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
5202
5203typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
5204{
5205 UINT64 CurrentSizeInBytes;
5206} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
5207
5208typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
5209{
5210 UINT64 DecodedSizeInBytes;
5211} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
5212
5213typedef enum D3D12_RAY_FLAGS
5214{
5215 D3D12_RAY_FLAG_NONE = 0x00,
5216 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
5217 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
5218 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
5219 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
5220 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
5221 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
5222 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
5223 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
5224 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
5225 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
5226 D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400,
5227} D3D12_RAY_FLAGS;
5228cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )" )
5229
5230typedef enum D3D12_HIT_KIND
5231{
5232 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
5233 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff,
5234} D3D12_HIT_KIND;
5235
5236[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
5237interface ID3D12Device5
5238 : ID3D12Device4
5239{
5240 HRESULT CreateLifetimeTracker(
5241 [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
5242 [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
5243 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
5244 );
5245
5246 void RemoveDevice();
5247
5248 HRESULT EnumerateMetaCommands(
5249 [annotation("_Inout_")] UINT* pNumMetaCommands,
5250 [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
5251 );
5252
5253 HRESULT EnumerateMetaCommandParameters(
5254 [annotation("_In_")] REFGUID CommandId,
5255 [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
5256 [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
5257 [annotation("_Inout_")] UINT* pParameterCount,
5258 [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
5259 );
5260
5261 HRESULT CreateMetaCommand(
5262 [annotation("_In_")] REFGUID CommandId,
5263 [annotation("_In_")] UINT NodeMask,
5264 [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
5265 [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
5266 [in] REFIID riid,
5267 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
5268 );
5269
5270 HRESULT CreateStateObject(
5271 [in] const D3D12_STATE_OBJECT_DESC* pDesc,
5272 [in] REFIID riid, // ID3D12StateObject
5273 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
5274 );
5275
5276 void GetRaytracingAccelerationStructurePrebuildInfo(
5277 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
5278 [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
5279 );
5280
5281 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
5282 [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
5283 [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
5284}
5285
5286#include "D3D12MarkerApiEnums.idl"
5287
5288typedef struct D3D12_AUTO_BREADCRUMB_NODE
5289{
5290 const char *pCommandListDebugNameA;
5291 const wchar_t *pCommandListDebugNameW;
5292 const char *pCommandQueueDebugNameA;
5293 const wchar_t *pCommandQueueDebugNameW;
5294 ID3D12GraphicsCommandList *pCommandList;
5295 ID3D12CommandQueue *pCommandQueue;
5296 UINT32 BreadcrumbCount;
5297 const UINT32 *pLastBreadcrumbValue;
5298 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
5299 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
5300} D3D12_AUTO_BREADCRUMB_NODE;
5301
5302typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
5303{
5304 UINT BreadcrumbIndex;
5305 const wchar_t *pContextString;
5306} D3D12_DRED_BREADCRUMB_CONTEXT;
5307
5308// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
5309typedef struct D3D12_AUTO_BREADCRUMB_NODE1
5310{
5311 const char *pCommandListDebugNameA;
5312 const wchar_t *pCommandListDebugNameW;
5313 const char *pCommandQueueDebugNameA;
5314 const wchar_t *pCommandQueueDebugNameW;
5315 ID3D12GraphicsCommandList *pCommandList;
5316 ID3D12CommandQueue *pCommandQueue;
5317 UINT BreadcrumbCount;
5318 const UINT *pLastBreadcrumbValue;
5319 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
5320 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
5321 UINT BreadcrumbContextsCount;
5322 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
5323} D3D12_AUTO_BREADCRUMB_NODE1;
5324
5325// D3D12_DRED_VERSION
5326typedef enum D3D12_DRED_VERSION
5327{
5328 D3D12_DRED_VERSION_1_0 = 0x1,
5329 D3D12_DRED_VERSION_1_1 = 0x2,
5330 D3D12_DRED_VERSION_1_2 = 0x3,
5331 D3D12_DRED_VERSION_1_3 = 0x4,
5332} D3D12_DRED_VERSION;
5333
5334typedef enum D3D12_DRED_FLAGS
5335{
5336 D3D12_DRED_FLAG_NONE = 0,
5337 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
5338 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
5339} D3D12_DRED_FLAGS;
5340cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )")
5341
5342typedef enum D3D12_DRED_ENABLEMENT
5343{
5344 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
5345 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
5346 D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
5347} D3D12_DRED_ENABLEMENT;
5348
5349typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
5350{
5351 [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
5352 [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
5353} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
5354
5355typedef enum D3D12_DRED_ALLOCATION_TYPE
5356{
5357 // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
5358 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
5359 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
5360 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
5361 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
5362 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
5363 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
5364 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
5365 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
5366 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
5367 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
5368 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
5369 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
5370 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
5371 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
5372 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
5373 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
5374 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
5375 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
5376 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
5377 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
5378 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
5379 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
5380 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
5381 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
5382 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
5383 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
5384 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
5385 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
5386
5387
5388 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
5389} D3D12_DRED_ALLOCATION_TYPE;
5390
5391typedef struct D3D12_DRED_ALLOCATION_NODE
5392{
5393 const char *ObjectNameA;
5394 const wchar_t *ObjectNameW;
5395 D3D12_DRED_ALLOCATION_TYPE AllocationType;
5396 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
5397} D3D12_DRED_ALLOCATION_NODE;
5398
5399typedef struct D3D12_DRED_ALLOCATION_NODE1
5400{
5401 const char *ObjectNameA;
5402 const wchar_t *ObjectNameW;
5403 D3D12_DRED_ALLOCATION_TYPE AllocationType;
5404 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
5405 const IUnknown *pObject;
5406} D3D12_DRED_ALLOCATION_NODE1;
5407
5408typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
5409{
5410 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
5411} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
5412
5413typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
5414{
5415 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
5416} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
5417
5418typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
5419{
5420 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5421 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
5422 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
5423} D3D12_DRED_PAGE_FAULT_OUTPUT;
5424
5425typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
5426{
5427 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5428 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
5429 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
5430} D3D12_DRED_PAGE_FAULT_OUTPUT1;
5431
5432typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
5433{
5434 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
5435} D3D12_DRED_PAGE_FAULT_FLAGS;
5436cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )")
5437
5438typedef enum D3D12_DRED_DEVICE_STATE
5439{
5440 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, // Only known if DRED event occurred
5441 D3D12_DRED_DEVICE_STATE_HUNG = 3,
5442 D3D12_DRED_DEVICE_STATE_FAULT = 6,
5443 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7,
5444} D3D12_DRED_DEVICE_STATE;
5445
5446typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
5447{
5448 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5449 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
5450 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
5451 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
5452
5453} D3D12_DRED_PAGE_FAULT_OUTPUT2;
5454
5455typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
5456{
5457 HRESULT DeviceRemovedReason;
5458 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
5459 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
5460} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
5461
5462typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
5463{
5464 HRESULT DeviceRemovedReason;
5465 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
5466 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
5467} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
5468
5469typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
5470{
5471 HRESULT DeviceRemovedReason;
5472 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
5473 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
5474 D3D12_DRED_DEVICE_STATE DeviceState;
5475} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
5476
5477typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
5478{
5479 D3D12_DRED_VERSION Version; // Version of the DRED data
5480 union
5481 {
5482 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
5483 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
5484 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
5485 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
5486 };
5487} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
5488
5489[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
5490interface ID3D12DeviceRemovedExtendedDataSettings
5491 : IUnknown
5492{
5493 void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
5494 void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
5495 void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
5496};
5497
5498[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
5499interface ID3D12DeviceRemovedExtendedDataSettings1
5500 : ID3D12DeviceRemovedExtendedDataSettings
5501{
5502 void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
5503};
5504
5505[uuid(61552388-01ab-4008-a436-83db189566ea), object, local, pointer_default(unique)]
5506interface ID3D12DeviceRemovedExtendedDataSettings2
5507 : ID3D12DeviceRemovedExtendedDataSettings1
5508{
5509 void UseMarkersOnlyAutoBreadcrumbs(BOOL MarkersOnly);
5510};
5511
5512
5513[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
5514interface ID3D12DeviceRemovedExtendedData
5515 : IUnknown
5516{
5517 HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
5518 HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
5519};
5520
5521[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
5522interface ID3D12DeviceRemovedExtendedData1
5523 : ID3D12DeviceRemovedExtendedData
5524{
5525 HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
5526 HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
5527};
5528
5529[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
5530interface ID3D12DeviceRemovedExtendedData2
5531 : ID3D12DeviceRemovedExtendedData1
5532{
5533 HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
5534 D3D12_DRED_DEVICE_STATE GetDeviceState();
5535};
5536
5537typedef enum D3D12_BACKGROUND_PROCESSING_MODE
5538{
5539 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
5540 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
5541 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
5542 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
5543} D3D12_BACKGROUND_PROCESSING_MODE;
5544
5545typedef enum D3D12_MEASUREMENTS_ACTION
5546{
5547 D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
5548 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
5549 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
5550 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
5551} D3D12_MEASUREMENTS_ACTION;
5552
5553[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
5554interface ID3D12Device6 : ID3D12Device5
5555{
5556 HRESULT SetBackgroundProcessingMode(
5557 D3D12_BACKGROUND_PROCESSING_MODE Mode,
5558 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
5559 [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
5560 [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
5561};
5562
5563cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
5564
5565// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
5566typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
5567{
5568 UINT NodeIndex; // input
5569 UINT Count; // output
5570} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
5571
5572// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
5573typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
5574{
5575 UINT NodeIndex; // input
5576 UINT Count; // input
5577 GUID* pTypes; // output
5578} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
5579
5580typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
5581{
5582 UINT NodeMask;
5583 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
5584 GUID ProtectionType;
5585} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
5586
5587[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
5588interface ID3D12ProtectedResourceSession1
5589 : ID3D12ProtectedResourceSession
5590{
5591 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
5592};
5593
5594[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
5595interface ID3D12Device7 : ID3D12Device6
5596{
5597 HRESULT AddToStateObject(
5598 [in] const D3D12_STATE_OBJECT_DESC* pAddition,
5599 [in] ID3D12StateObject* pStateObjectToGrowFrom,
5600 [in] REFIID riid, // ID3D12StateObject
5601 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
5602 );
5603
5604 HRESULT CreateProtectedResourceSession1(
5605 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
5606 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1,
5607 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
5608 );
5609};
5610
5611[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
5612interface ID3D12Device8 : ID3D12Device7
5613{
5614 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
5615 UINT visibleMask,
5616 UINT numResourceDescs,
5617 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
5618 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
5619
5620 HRESULT CreateCommittedResource2(
5621 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
5622 D3D12_HEAP_FLAGS HeapFlags,
5623 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
5624 D3D12_RESOURCE_STATES InitialResourceState,
5625 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
5626 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
5627 [in] REFIID riidResource, // Expected: ID3D12Resource1*
5628 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
5629
5630 HRESULT CreatePlacedResource1(
5631 [annotation("_In_")] ID3D12Heap* pHeap,
5632 UINT64 HeapOffset,
5633 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
5634 D3D12_RESOURCE_STATES InitialState,
5635 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
5636 [in] REFIID riid, // Expected: ID3D12Resource*
5637 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
5638
5639 void CreateSamplerFeedbackUnorderedAccessView(
5640 [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
5641 [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
5642 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
5643
5644 void GetCopyableFootprints1(
5645 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
5646 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
5647 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
5648 UINT64 BaseOffset,
5649 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
5650 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
5651 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
5652 [annotation("_Out_opt_")] UINT64* pTotalBytes);
5653};
5654
5655
5656[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
5657interface ID3D12Resource1
5658 : ID3D12Resource
5659{
5660 HRESULT GetProtectedResourceSession(
5661 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
5662 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
5663}
5664
5665[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
5666interface ID3D12Resource2
5667 : ID3D12Resource1
5668{
5669 D3D12_RESOURCE_DESC1 GetDesc1();
5670}
5671
5672
5673
5674[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
5675interface ID3D12Heap1
5676 : ID3D12Heap
5677{
5678 HRESULT GetProtectedResourceSession(
5679 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
5680 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
5681}
5682
5683
5684[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
5685interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
5686{
5687 void SetProtectedResourceSession(
5688 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
5689 );
5690}
5691
5692// Beginning Access
5693typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
5694{
5695 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
5696 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
5697 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
5698 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS,
5699 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
5700 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
5701 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
5702} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
5703
5704typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
5705{
5706 D3D12_CLEAR_VALUE ClearValue;
5707} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
5708
5709typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
5710{
5711 UINT AdditionalWidth;
5712 UINT AdditionalHeight;
5713} D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
5714
5715typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
5716{
5717 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
5718
5719 union
5720 {
5721 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
5722 D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
5723 };
5724} D3D12_RENDER_PASS_BEGINNING_ACCESS;
5725
5726// Ending Access
5727typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
5728{
5729 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
5730 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
5731 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
5732 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS,
5733 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
5734 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
5735 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
5736} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
5737
5738typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
5739{
5740 UINT SrcSubresource;
5741 UINT DstSubresource;
5742
5743 UINT DstX;
5744 UINT DstY;
5745 D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
5746
5747} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
5748
5749typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
5750{
5751 ID3D12Resource* pSrcResource;
5752 ID3D12Resource* pDstResource;
5753
5754 // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
5755 UINT SubresourceCount;
5756 [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
5757
5758 DXGI_FORMAT Format;
5759 D3D12_RESOLVE_MODE ResolveMode;
5760
5761 BOOL PreserveResolveSource;
5762
5763} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
5764
5765typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
5766{
5767 UINT AdditionalWidth;
5768 UINT AdditionalHeight;
5769} D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
5770
5771typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
5772{
5773 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
5774
5775 union
5776 {
5777 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
5778 D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
5779 };
5780} D3D12_RENDER_PASS_ENDING_ACCESS;
5781
5782// Render Target Desc
5783typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
5784{
5785 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
5786
5787 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
5788 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
5789
5790} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
5791
5792// Depth-Stencil Desc
5793typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
5794{
5795 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
5796
5797 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
5798 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
5799
5800 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
5801 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
5802
5803} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
5804
5805typedef enum D3D12_RENDER_PASS_FLAGS
5806{
5807 D3D12_RENDER_PASS_FLAG_NONE = 0x0,
5808 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
5809 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
5810 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
5811 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
5812 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
5813} D3D12_RENDER_PASS_FLAGS;
5814cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )")
5815
5816[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
5817interface ID3D12MetaCommand : ID3D12Pageable
5818{
5819 UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")] UINT ParameterIndex);
5820}
5821
5822typedef struct D3D12_DISPATCH_RAYS_DESC
5823{
5824 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
5825 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
5826 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
5827 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
5828 UINT Width;
5829 UINT Height;
5830 UINT Depth;
5831} D3D12_DISPATCH_RAYS_DESC;
5832
5833typedef enum D3D12_SET_WORK_GRAPH_FLAGS
5834{
5835 D3D12_SET_WORK_GRAPH_FLAG_NONE = 0x0,
5836 D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1,
5837} D3D12_SET_WORK_GRAPH_FLAGS;
5838cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )" )
5839
5840typedef struct D3D12_SET_WORK_GRAPH_DESC
5841{
5842 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5843 D3D12_SET_WORK_GRAPH_FLAGS Flags;
5844 D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
5845 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
5846} D3D12_SET_WORK_GRAPH_DESC;
5847
5848typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
5849{
5850 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5851} D3D12_SET_RAYTRACING_PIPELINE_DESC;
5852
5853typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
5854{
5855 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5856} D3D12_SET_GENERIC_PIPELINE_DESC;
5857
5858typedef enum D3D12_PROGRAM_TYPE
5859{
5860 D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
5861 D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
5862 D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
5863} D3D12_PROGRAM_TYPE;
5864
5865typedef struct D3D12_SET_PROGRAM_DESC
5866{
5867 D3D12_PROGRAM_TYPE Type;
5868 union
5869 {
5870 D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
5871 D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
5872 D3D12_SET_WORK_GRAPH_DESC WorkGraph;
5873 };
5874} D3D12_SET_PROGRAM_DESC;
5875
5876typedef enum D3D12_DISPATCH_MODE
5877{
5878 D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0, // D3D12_NODE_CPU_INPUT
5879 D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1, // D3D12_NODE_GPU_INPUT in GPU memory
5880 D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2, // D3D12_MULTI_NODE_CPU_INPUT
5881 D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3 // D3D12_MULTI_NODE_GPU_INPUT in GPU memory
5882} D3D12_DISPATCH_MODE;
5883
5884typedef struct D3D12_NODE_CPU_INPUT
5885{
5886 UINT EntrypointIndex;
5887 UINT NumRecords;
5888 const void* pRecords;
5889 UINT64 RecordStrideInBytes;
5890} D3D12_NODE_CPU_INPUT;
5891
5892typedef struct D3D12_NODE_GPU_INPUT
5893{
5894 UINT EntrypointIndex;
5895 UINT NumRecords;
5896 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
5897} D3D12_NODE_GPU_INPUT;
5898
5899typedef struct D3D12_MULTI_NODE_CPU_INPUT
5900{
5901 UINT NumNodeInputs;
5902 const D3D12_NODE_CPU_INPUT* pNodeInputs;
5903 UINT64 NodeInputStrideInBytes;
5904} D3D12_MULTI_NODE_CPU_INPUT;
5905
5906typedef struct D3D12_MULTI_NODE_GPU_INPUT
5907{
5908 UINT NumNodeInputs;
5909 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs; // D3D12_GPU_NODE_INPUT array
5910} D3D12_MULTI_NODE_GPU_INPUT;
5911
5912typedef struct D3D12_DISPATCH_GRAPH_DESC
5913{
5914 D3D12_DISPATCH_MODE Mode;
5915 union
5916 {
5917 D3D12_NODE_CPU_INPUT NodeCPUInput;
5918 D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
5919 D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
5920 D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
5921 };
5922} D3D12_DISPATCH_GRAPH_DESC;
5923
5924[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
5925interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
5926{
5927 void BeginRenderPass(
5928 [annotation("_In_")] UINT NumRenderTargets,
5929 [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
5930 [annotation("_In_opt_")] const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
5931 D3D12_RENDER_PASS_FLAGS Flags
5932 );
5933
5934 void EndRenderPass();
5935
5936 void InitializeMetaCommand(
5937 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5938 [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
5939 [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
5940 );
5941
5942 void ExecuteMetaCommand(
5943 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5944 [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
5945 [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
5946 );
5947
5948 void BuildRaytracingAccelerationStructure(
5949 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
5950 [annotation("_In_")] UINT NumPostbuildInfoDescs,
5951 [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
5952 );
5953
5954 void EmitRaytracingAccelerationStructurePostbuildInfo(
5955 [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
5956 [annotation("_In_")] UINT NumSourceAccelerationStructures,
5957 [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
5958
5959 void CopyRaytracingAccelerationStructure(
5960 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
5961 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
5962 [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
5963
5964 void SetPipelineState1(
5965 [annotation("_In_")] ID3D12StateObject* pStateObject);
5966
5967 void DispatchRays(
5968 [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
5969}
5970
5971typedef enum D3D12_SHADER_CACHE_MODE
5972{
5973 D3D12_SHADER_CACHE_MODE_MEMORY,
5974 D3D12_SHADER_CACHE_MODE_DISK,
5975} D3D12_SHADER_CACHE_MODE;
5976
5977typedef enum D3D12_SHADER_CACHE_FLAGS
5978{
5979 D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
5980 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
5981 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
5982} D3D12_SHADER_CACHE_FLAGS;
5983cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )")
5984
5985typedef struct D3D12_SHADER_CACHE_SESSION_DESC
5986{
5987 GUID Identifier;
5988 D3D12_SHADER_CACHE_MODE Mode;
5989 D3D12_SHADER_CACHE_FLAGS Flags;
5990
5991 UINT MaximumInMemoryCacheSizeBytes;
5992 UINT MaximumInMemoryCacheEntries;
5993
5994 UINT MaximumValueFileSizeBytes;
5995
5996 UINT64 Version;
5997} D3D12_SHADER_CACHE_SESSION_DESC;
5998
5999typedef enum D3D12_BARRIER_LAYOUT
6000{
6001 D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
6002 D3D12_BARRIER_LAYOUT_COMMON = 0,
6003 D3D12_BARRIER_LAYOUT_PRESENT = 0,
6004 D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
6005 D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
6006 D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
6007 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
6008 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
6009 D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
6010 D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
6011 D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
6012 D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
6013 D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
6014 D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
6015 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
6016 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
6017 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
6018 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
6019 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
6020 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
6021 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
6022 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
6023 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
6024 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
6025 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
6026 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
6027 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
6028 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
6029 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
6030 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
6031 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
6032 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
6033 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31,
6034
6035} D3D12_BARRIER_LAYOUT;
6036
6037typedef enum D3D12_BARRIER_SYNC
6038{
6039 D3D12_BARRIER_SYNC_NONE = 0x0,
6040 D3D12_BARRIER_SYNC_ALL = 0x1,
6041 D3D12_BARRIER_SYNC_DRAW = 0x2,
6042 D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
6043 D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
6044 D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
6045 D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
6046 D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
6047 D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
6048 D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
6049 D3D12_BARRIER_SYNC_COPY = 0x200,
6050 D3D12_BARRIER_SYNC_RESOLVE = 0x400,
6051 D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
6052 D3D12_BARRIER_SYNC_PREDICATION = 0x800, // Aliased with SYNC_EXECUTE_INDIRECT
6053 D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
6054 D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
6055 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
6056 D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
6057 D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
6058 D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
6059 D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
6060 D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
6061 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
6062 D3D12_BARRIER_SYNC_SPLIT = 0x80000000,
6063} D3D12_BARRIER_SYNC;
6064cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )" )
6065
6066typedef enum D3D12_BARRIER_ACCESS
6067{
6068 D3D12_BARRIER_ACCESS_COMMON = 0,
6069 D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
6070 D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
6071 D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
6072 D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
6073 D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
6074 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
6075 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
6076 D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
6077 D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
6078 D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
6079 D3D12_BARRIER_ACCESS_PREDICATION = 0x200, // Aliased with ACCESS_INDIRECT_ARGUMENT
6080 D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
6081 D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
6082 D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
6083 D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
6084 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
6085 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
6086 D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
6087 D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
6088 D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
6089 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
6090 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
6091 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
6092 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
6093 D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000,
6094} D3D12_BARRIER_ACCESS;
6095cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )" )
6096
6097typedef enum D3D12_BARRIER_TYPE
6098{
6099 D3D12_BARRIER_TYPE_GLOBAL,
6100 D3D12_BARRIER_TYPE_TEXTURE,
6101 D3D12_BARRIER_TYPE_BUFFER,
6102} D3D12_BARRIER_TYPE;
6103
6104typedef enum D3D12_TEXTURE_BARRIER_FLAGS
6105{
6106 D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
6107 D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1,
6108} D3D12_TEXTURE_BARRIER_FLAGS;
6109cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )")
6110
6111typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
6112{
6113 UINT IndexOrFirstMipLevel;
6114 UINT NumMipLevels;
6115 UINT FirstArraySlice;
6116 UINT NumArraySlices;
6117 UINT FirstPlane;
6118 UINT NumPlanes;
6119} D3D12_BARRIER_SUBRESOURCE_RANGE;
6120
6121typedef struct D3D12_GLOBAL_BARRIER
6122{
6123 D3D12_BARRIER_SYNC SyncBefore;
6124 D3D12_BARRIER_SYNC SyncAfter;
6125 D3D12_BARRIER_ACCESS AccessBefore;
6126 D3D12_BARRIER_ACCESS AccessAfter;
6127} D3D12_GLOBAL_BARRIER;
6128
6129typedef struct D3D12_TEXTURE_BARRIER
6130{
6131 D3D12_BARRIER_SYNC SyncBefore;
6132 D3D12_BARRIER_SYNC SyncAfter;
6133 D3D12_BARRIER_ACCESS AccessBefore;
6134 D3D12_BARRIER_ACCESS AccessAfter;
6135 D3D12_BARRIER_LAYOUT LayoutBefore;
6136 D3D12_BARRIER_LAYOUT LayoutAfter;
6137 [annotation("_In_")] ID3D12Resource *pResource;
6138 D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
6139 D3D12_TEXTURE_BARRIER_FLAGS Flags;
6140} D3D12_TEXTURE_BARRIER;
6141
6142typedef struct D3D12_BUFFER_BARRIER
6143{
6144 D3D12_BARRIER_SYNC SyncBefore;
6145 D3D12_BARRIER_SYNC SyncAfter;
6146 D3D12_BARRIER_ACCESS AccessBefore;
6147 D3D12_BARRIER_ACCESS AccessAfter;
6148 [annotation("_In_")] ID3D12Resource *pResource;
6149 UINT64 Offset;
6150 UINT64 Size;
6151} D3D12_BUFFER_BARRIER;
6152
6153typedef struct D3D12_BARRIER_GROUP
6154{
6155 D3D12_BARRIER_TYPE Type;
6156 UINT32 NumBarriers;
6157 union
6158 {
6159 [annotation("_In_reads_(NumBarriers)")] const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
6160 [annotation("_In_reads_(NumBarriers)")] const D3D12_TEXTURE_BARRIER *pTextureBarriers;
6161 [annotation("_In_reads_(NumBarriers)")] const D3D12_BUFFER_BARRIER *pBufferBarriers;
6162 };
6163} D3D12_BARRIER_GROUP;
6164
6165[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
6166interface ID3D12ShaderCacheSession
6167 : ID3D12DeviceChild
6168{
6169 HRESULT FindValue(
6170 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6171 UINT KeySize,
6172 [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
6173 [annotation("_Inout_")] UINT* pValueSize);
6174 HRESULT StoreValue(
6175 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6176 UINT KeySize,
6177 [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
6178 UINT ValueSize);
6179
6180 void SetDeleteOnDestroy();
6181 D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
6182};
6183
6184typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
6185{
6186 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
6187 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
6188 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
6189 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
6190} D3D12_SHADER_CACHE_KIND_FLAGS;
6191cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )")
6192
6193typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
6194{
6195 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
6196 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
6197 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
6198} D3D12_SHADER_CACHE_CONTROL_FLAGS;
6199cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )")
6200
6201[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
6202interface ID3D12Device9
6203 : ID3D12Device8
6204{
6205 HRESULT CreateShaderCacheSession(
6206 [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
6207 REFIID riid,
6208 [annotation("_COM_Outptr_opt_")] void** ppvSession);
6209
6210 HRESULT ShaderCacheControl(
6211 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
6212 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
6213
6214 HRESULT CreateCommandQueue1(
6215 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
6216 REFIID CreatorID,
6217 [in] REFIID riid, // Expected: ID3D12CommandQueue
6218 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
6219 );
6220};
6221
6222[uuid(517f8718-aa66-49f9-b02b-a7ab89c06031), object, local, pointer_default(unique)]
6223interface ID3D12Device10
6224 : ID3D12Device9
6225{
6226 HRESULT CreateCommittedResource3(
6227 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
6228 D3D12_HEAP_FLAGS HeapFlags,
6229 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
6230 D3D12_BARRIER_LAYOUT InitialLayout,
6231 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6232 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
6233 UINT32 NumCastableFormats,
6234 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6235 [in] REFIID riidResource, // Expected: ID3D12Resource1*
6236 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
6237
6238 HRESULT CreatePlacedResource2(
6239 [annotation("_In_")] ID3D12Heap* pHeap,
6240 UINT64 HeapOffset,
6241 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
6242 D3D12_BARRIER_LAYOUT InitialLayout,
6243 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6244 UINT32 NumCastableFormats,
6245 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6246 [in] REFIID riid, // Expected: ID3D12Resource*
6247 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
6248
6249 HRESULT CreateReservedResource2(
6250 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
6251 D3D12_BARRIER_LAYOUT InitialLayout,
6252 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6253 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
6254 UINT32 NumCastableFormats,
6255 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6256 [in] REFIID riid, // Expected: ID3D12Resource1*
6257 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
6258 );
6259};
6260
6261[uuid(5405c344-d457-444e-b4dd-2366e45aee39), object, local, pointer_default(unique)]
6262interface ID3D12Device11
6263 : ID3D12Device10
6264{
6265 void CreateSampler2(
6266 [annotation("_In_")] const D3D12_SAMPLER_DESC2* pDesc,
6267 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
6268};
6269
6270[uuid(5af5c532-4c91-4cd0-b541-15a405395fc5), object, local, pointer_default(unique)]
6271interface ID3D12Device12
6272 : ID3D12Device11
6273{
6274 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo3(
6275 UINT visibleMask,
6276 UINT numResourceDescs,
6277 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
6278 [annotation("_In_opt_count_(numResourceDescs)")] const UINT32* pNumCastableFormats,
6279 [annotation("_In_opt_count_(numResourceDescs)")] const DXGI_FORMAT *const *ppCastableFormats,
6280 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
6281};
6282
6283[uuid(14eecffc-4df8-40f7-a118-5c816f45695e), object, local, pointer_default(unique)]
6284interface ID3D12Device13
6285 : ID3D12Device12
6286{
6287 HRESULT OpenExistingHeapFromAddress1(
6288 [annotation("_In_")] const void* pAddress,
6289 SIZE_T size,
6290 [in] REFIID riid, // Expected: ID3D12Heap
6291 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
6292 );
6293};
6294
6295[uuid(5f6e592d-d895-44c2-8e4a-88ad4926d323), object, local, pointer_default(unique)]
6296interface ID3D12Device14 : ID3D12Device13
6297{
6298 HRESULT CreateRootSignatureFromSubobjectInLibrary(
6299 [annotation("_In_")] UINT nodeMask,
6300 [annotation("_In_reads_(blobLengthInBytes)")] const void* pLibraryBlob,
6301 [annotation("_In_")] SIZE_T blobLengthInBytes,
6302 [annotation("_In_opt_")] LPCWSTR subobjectName,
6303 [in] REFIID riid, // Expected ID3D12RootSignature
6304 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
6305};
6306
6307typedef union D3D12_VERSION_NUMBER
6308{
6309 UINT64 Version;
6310 UINT16 VersionParts[4];
6311} D3D12_VERSION_NUMBER;
6312
6313// D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT
6314typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
6315{
6316 WCHAR szAdapterFamily[128];
6317 UINT64 MinimumABISupportVersion;
6318 UINT64 MaximumABISupportVersion;
6319 D3D12_VERSION_NUMBER CompilerVersion;
6320 D3D12_VERSION_NUMBER ApplicationProfileVersion;
6321} D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
6322
6323
6324typedef void(__stdcall* D3D12PipelineStateFunc) (
6325 [annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6326 UINT KeySize,
6327 UINT Version,
6328 const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
6329 [annotation("_Inout_opt_")] void* pContext
6330 );
6331
6332typedef void(__stdcall* D3D12StateObjectFunc) (
6333 [annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6334 UINT KeySize,
6335 UINT Version,
6336 const D3D12_STATE_OBJECT_DESC* pDesc,
6337 [annotation("_In_reads_bytes_(ParentKeySize)")] const void* pParentKey,
6338 UINT ParentKeySize,
6339 [annotation("_Inout_opt_")] void* pContext
6340 );
6341
6342
6343typedef struct D3D12_APPLICATION_DESC
6344{
6345 LPCWSTR pExeFilename;
6346 LPCWSTR pName;
6347 D3D12_VERSION_NUMBER Version;
6348 LPCWSTR pEngineName;
6349 D3D12_VERSION_NUMBER EngineVersion;
6350} D3D12_APPLICATION_DESC;
6351
6352typedef void(__stdcall* D3D12ApplicationDescFunc) (
6353 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
6354 [annotation("_Inout_opt_")] void* pContext
6355 );
6356
6357typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
6358{
6359 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
6360 UINT KeySize;
6361 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
6362 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
6363} D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
6364
6365[uuid(c56060b7-b5fc-4135-98e0-a1e9997eace0), object, local, pointer_default(unique)]
6366interface ID3D12StateObjectDatabase
6367 : IUnknown
6368{
6369 HRESULT SetApplicationDesc(
6370 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc);
6371
6372 HRESULT GetApplicationDesc(
6373 [annotation("_In_")] D3D12ApplicationDescFunc CallbackFunc,
6374 [annotation("_Inout_opt_")] void* pContext);
6375
6376 HRESULT StorePipelineStateDesc(
6377 [annotation("_In_reads_(KeySize)")] const void* pKey,
6378 UINT KeySize,
6379 UINT Version,
6380 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc);
6381
6382 HRESULT FindPipelineStateDesc(
6383 [annotation("_In_reads_(KeySize)")] const void* pKey,
6384 UINT KeySize,
6385 [annotation("_In_")] D3D12PipelineStateFunc CallbackFunc,
6386 [annotation("_Inout_opt_")] void* pContext);
6387
6388 HRESULT StoreStateObjectDesc(
6389 [annotation("_In_reads_(KeySize)")] const void* pKey,
6390 UINT KeySize,
6391 UINT Version,
6392 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pDesc,
6393 [annotation("_In_reads_opt_(StateObjectToGrowFromKeySize)")] const void* pStateObjectToGrowFromKey,
6394 UINT StateObjectToGrowFromKeySize);
6395
6396 HRESULT FindStateObjectDesc(
6397 [annotation("_In_reads_(keySize)")] const void* pKey,
6398 UINT KeySize,
6399 D3D12StateObjectFunc CallbackFunc,
6400 [annotation("_Inout_opt_")] void* pContext);
6401
6402 HRESULT FindObjectVersion(
6403 [annotation("_In_reads_(keySize)")] const void* pKey,
6404 UINT KeySize,
6405 [annotation("_Out_")] UINT* pVersion);
6406};
6407
6408
6409
6410[uuid(bc66d368-7373-4943-8757-fc87dc79e476), object, local, pointer_default(unique)]
6411interface ID3D12VirtualizationGuestDevice
6412 : IUnknown
6413{
6414 HRESULT ShareWithHost(
6415 [annotation("_In_")] ID3D12DeviceChild* pObject,
6416 [annotation("_Out_")] HANDLE* pHandle
6417 );
6418
6419 HRESULT CreateFenceFd(
6420 [annotation("_In_")] ID3D12Fence *pFence,
6421 UINT64 FenceValue,
6422 [annotation("_Out_")] int *pFenceFd
6423 );
6424};
6425
6426
6427
6428[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
6429interface ID3D12Tools
6430 : IUnknown
6431{
6432 void EnableShaderInstrumentation(BOOL bEnable);
6433 BOOL ShaderInstrumentationEnabled();
6434}
6435
6436[uuid(e4fbc019-dd3c-43e1-8f32-7f649575f0a0), object, local, pointer_default(unique)]
6437interface ID3D12Tools1
6438 : ID3D12Tools
6439{
6440 HRESULT ReserveGPUVARangesAtCreate(
6441 [annotation("_In_reads_(uiNumRanges)")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pRanges,
6442 [annotation("_In_")] UINT uiNumRanges);
6443 void ClearReservedGPUVARangesList();
6444}
6445
6446[uuid(01d393c5-c9b0-42a1-958c-c26b02d4d097), object, local, pointer_default(unique)]
6447interface ID3D12Tools2
6448 : ID3D12Tools1
6449{
6450 HRESULT SetApplicationSpecificDriverState(
6451 [annotation("_In_")] IUnknown* pAdapter,
6452 [annotation("_In_opt_")] ID3DBlob* pBlob);
6453};
6454
6455
6456[uuid(8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d), object, local, pointer_default(unique)]
6457interface ID3D12PageableTools
6458 : IUnknown
6459{
6460 HRESULT GetAllocation(
6461 [annotation("_Inout_")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pAllocation);
6462}
6463
6464[uuid(2ea68e9c-19c3-4e47-a109-6cdadff0aca9), object, local, pointer_default(unique)]
6465interface ID3D12DeviceTools
6466 : IUnknown
6467{
6468 void SetNextAllocationAddress(
6469 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
6470}
6471
6472typedef enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
6473{
6474 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
6475 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
6476 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
6477 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4,
6478} D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
6479
6480[uuid(e30e9fc7-e641-4d6e-8a81-9dd9206ec47a), object, local, pointer_default(unique)]
6481interface ID3D12DeviceTools1
6482 : ID3D12DeviceTools
6483{
6484 HRESULT GetApplicationSpecificDriverState(
6485 [annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
6486 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS GetApplicationSpecificDriverBlobStatus();
6487}
6488
6489typedef struct D3D12_SUBRESOURCE_DATA
6490{
6491 const void* pData;
6492 LONG_PTR RowPitch;
6493 LONG_PTR SlicePitch;
6494} D3D12_SUBRESOURCE_DATA;
6495
6496typedef struct D3D12_MEMCPY_DEST
6497{
6498 void* pData;
6499 SIZE_T RowPitch;
6500 SIZE_T SlicePitch;
6501} D3D12_MEMCPY_DEST;
6502
6503
6504
6505cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
6506cpp_quote( "#include \"d3d12sdklayers.h\" ")
6507cpp_quote( "#endif ")
6508
6509
6510cpp_quote("")
6511cpp_quote("///////////////////////////////////////////////////////////////////////////")
6512cpp_quote("// D3D12CreateDevice")
6513cpp_quote("// ------------------")
6514cpp_quote("//")
6515cpp_quote("// pAdapter")
6516cpp_quote("// If NULL, D3D12CreateDevice will choose the primary adapter.")
6517cpp_quote("// If non-NULL, D3D12CreateDevice will use the provided adapter.")
6518cpp_quote("// MinimumFeatureLevel")
6519cpp_quote("// The minimum feature level required for successful device creation.")
6520cpp_quote("// riid")
6521cpp_quote("// The interface IID of the device to be returned. Expected: ID3D12Device.")
6522cpp_quote("// ppDevice")
6523cpp_quote("// Pointer to returned interface. May be NULL.")
6524cpp_quote("//")
6525cpp_quote("// Return Values")
6526cpp_quote("// Any of those documented for ")
6527cpp_quote("// CreateDXGIFactory1")
6528cpp_quote("// IDXGIFactory::EnumAdapters")
6529cpp_quote("// D3D12CreateDevice")
6530cpp_quote("//")
6531cpp_quote("///////////////////////////////////////////////////////////////////////////")
6532cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
6533cpp_quote(" D3D_FEATURE_LEVEL, ")
6534cpp_quote(" _In_ REFIID, _COM_Outptr_opt_ void** );")
6535cpp_quote("")
6536cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
6537cpp_quote(" _In_opt_ IUnknown* pAdapter,")
6538cpp_quote(" D3D_FEATURE_LEVEL MinimumFeatureLevel,")
6539cpp_quote(" _In_ REFIID riid, // Expected: ID3D12Device")
6540cpp_quote(" _COM_Outptr_opt_ void** ppDevice );")
6541cpp_quote("")
6542
6543cpp_quote("")
6544cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
6545cpp_quote("")
6546cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
6547cpp_quote("")
6548
6549cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6550cpp_quote("// D3D12EnableExperimentalFeatures")
6551cpp_quote("//")
6552cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
6553cpp_quote("// ")
6554cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
6555cpp_quote("// a configuration struct that can be passed alongside the GUID.")
6556cpp_quote("// ")
6557cpp_quote("// Some features might use an interface IID as the GUID. For these, once the feature is enabled via")
6558cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
6559cpp_quote("// for manipulating the feature. This allows for control that might not cleanly be expressed by just ")
6560cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
6561cpp_quote("//")
6562cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
6563cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
6564cpp_quote("// singleton device for a process. Removing the devices when configuration changes prevents")
6565cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
6566cpp_quote("//")
6567cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
6568cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
6569cpp_quote("// in are known to be incompatible with each other, or other errors.")
6570cpp_quote("// Returns S_OK otherwise.")
6571cpp_quote("//")
6572cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6573cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
6574cpp_quote(" UINT NumFeatures,")
6575cpp_quote(" _In_count_(NumFeatures) const IID* pIIDs,")
6576cpp_quote(" _In_opt_count_(NumFeatures) void* pConfigurationStructs,")
6577cpp_quote(" _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);")
6578cpp_quote("")
6579cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6580cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
6581cpp_quote("//")
6582cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
6583cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
6584cpp_quote("//")
6585cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6586cpp_quote("//")
6587cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6588cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
6589cpp_quote(" 0x76f5573e,")
6590cpp_quote(" 0xf13a,")
6591cpp_quote(" 0x40f5,")
6592cpp_quote(" { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
6593cpp_quote("};")
6594cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6595cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
6596cpp_quote("//")
6597cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
6598cpp_quote("// meaning texture tile data-inheritance is allowed.")
6599cpp_quote("//")
6600cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6601cpp_quote("//")
6602cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6603cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
6604cpp_quote(" 0xc9c4725f,")
6605cpp_quote(" 0xa81a,")
6606cpp_quote(" 0x4f56,")
6607cpp_quote(" { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
6608cpp_quote("};")
6609cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6610cpp_quote("// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS")
6611cpp_quote("//")
6612cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS, ")
6613cpp_quote("// driver support is still required for this feature.")
6614cpp_quote("//")
6615cpp_quote("// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6616cpp_quote("//")
6617cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6618cpp_quote("static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */")
6619cpp_quote(" 0x45dc51f3,")
6620cpp_quote(" 0x767f,")
6621cpp_quote(" 0x4588,")
6622cpp_quote(" { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }")
6623cpp_quote("};")
6624cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6625cpp_quote("// D3D12GetInterface")
6626cpp_quote("//")
6627cpp_quote("// Retrieve Global D3D12 Interface.")
6628cpp_quote("//")
6629cpp_quote("")
6630cpp_quote("DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
6631cpp_quote("DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
6632cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
6633cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
6634cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);")
6635cpp_quote("DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);")
6636cpp_quote("DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);")
6637cpp_quote("")
6638cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
6639cpp_quote("")
6640cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
6641cpp_quote("")
6642
6643//==================================================================================================================================
6644//
6645// SDK Configuration
6646//
6647//==================================================================================================================================
6648
6649[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
6650interface ID3D12SDKConfiguration
6651 : IUnknown
6652{
6653 HRESULT SetSDKVersion(
6654 UINT SDKVersion,
6655 [annotation("_In_z_")] LPCSTR SDKPath
6656 );
6657}
6658
6659[uuid(8aaf9303-ad25-48b9-9a57-d9c37e009d9f), object, local, pointer_default(unique)]
6660interface ID3D12SDKConfiguration1
6661 : ID3D12SDKConfiguration
6662{
6663 HRESULT CreateDeviceFactory(
6664 UINT SDKVersion,
6665 [annotation("_In_")] LPCSTR SDKPath,
6666 REFIID riid, // Expected: ID3D12DeviceFactory
6667 [annotation("_COM_Outptr_")] void **ppvFactory
6668 );
6669 void FreeUnusedSDKs();
6670}
6671
6672typedef enum D3D12_DEVICE_FACTORY_FLAGS
6673{
6674 D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
6675 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
6676 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
6677 D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4,
6678} D3D12_DEVICE_FACTORY_FLAGS;
6679cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )")
6680
6681[uuid(61f307d3-d34e-4e7c-8374-3ba4de23cccb), object, local, pointer_default(unique)]
6682interface ID3D12DeviceFactory
6683 : IUnknown
6684{
6685 HRESULT InitializeFromGlobalState();
6686 HRESULT ApplyToGlobalState();
6687
6688 HRESULT SetFlags(D3D12_DEVICE_FACTORY_FLAGS flags);
6689 D3D12_DEVICE_FACTORY_FLAGS GetFlags();
6690
6691 HRESULT GetConfigurationInterface(
6692 REFCLSID clsid,
6693 REFIID iid,
6694 [annotation("_COM_Outptr_")] void **ppv);
6695
6696 HRESULT EnableExperimentalFeatures(
6697 UINT NumFeatures,
6698 [annotation("_In_reads_(NumFeatures)")] const IID *pIIDs,
6699 [annotation("_In_reads_opt_(NumFeatures)")] void *pConfigurationStructs,
6700 [annotation("_In_reads_opt_(NumFeatures)")] UINT *pConfigurationStructSizes);
6701
6702 HRESULT CreateDevice(
6703 [annotation("_In_opt_")] IUnknown *adapter,
6704 D3D_FEATURE_LEVEL FeatureLevel,
6705 REFIID riid,
6706 [annotation("_COM_Outptr_opt_")] void **ppvDevice);
6707};
6708
6709typedef enum D3D12_DEVICE_FLAGS
6710{
6711 D3D12_DEVICE_FLAG_NONE = 0,
6712 D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
6713 D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
6714 D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
6715 D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
6716 D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
6717 D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
6718 D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
6719 D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
6720 D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
6721 D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
6722 D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400,
6723} D3D12_DEVICE_FLAGS;
6724cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )")
6725
6726typedef struct D3D12_DEVICE_CONFIGURATION_DESC
6727{
6728 D3D12_DEVICE_FLAGS Flags;
6729 UINT GpuBasedValidationFlags; // D3D12_GPU_BASED_VALIDATION_FLAGS from d3d12sdklayers.h
6730 UINT SDKVersion;
6731 UINT NumEnabledExperimentalFeatures;
6732} D3D12_DEVICE_CONFIGURATION_DESC;
6733
6734[uuid(78dbf87b-f766-422b-a61c-c8c446bdb9ad), object, local, pointer_default(unique)]
6735interface ID3D12DeviceConfiguration
6736 : IUnknown
6737{
6738 D3D12_DEVICE_CONFIGURATION_DESC GetDesc();
6739 HRESULT GetEnabledExperimentalFeatures([annotation("_Out_writes_(NumGuids)")] GUID *pGuids, UINT NumGuids);
6740
6741 HRESULT SerializeVersionedRootSignature(
6742 [annotation("_In_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
6743 [annotation("_COM_Outptr_")] ID3DBlob **ppResult,
6744 [annotation("_Always_(_Outptr_opt_result_maybenull_)")] ID3DBlob **ppError);
6745
6746 HRESULT CreateVersionedRootSignatureDeserializer(
6747 [annotation("_In_reads_bytes_(Size)")] const void *pBlob,
6748 SIZE_T Size,
6749 REFIID riid,
6750 [annotation("_COM_Outptr_")] void **ppvDeserializer);
6751};
6752
6753[uuid(ed342442-6343-4e16-bb82-a3a577874e56), object, local, pointer_default(unique)]
6754interface ID3D12DeviceConfiguration1
6755 : ID3D12DeviceConfiguration
6756{
6757 HRESULT CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
6758 [annotation("_In_reads_bytes_(Size)")] const void* pLibraryBlob,
6759 SIZE_T Size,
6760 LPCWSTR RootSignatureSubobjectName,
6761 REFIID riid,
6762 [annotation("_COM_Outptr_")] void** ppvDeserializer);
6763};
6764
6765
6766typedef enum D3D12_STATE_OBJECT_DATABASE_FLAGS
6767{
6768 D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0x0,
6769 D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1,
6770} D3D12_STATE_OBJECT_DATABASE_FLAGS;
6771cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )")
6772
6773[uuid(f5b066f0-648a-4611-bd41-27fd0948b9eb), object, local, pointer_default(unique)]
6774interface ID3D12StateObjectDatabaseFactory
6775 : IUnknown
6776{
6777 HRESULT CreateStateObjectDatabaseFromFile(
6778 LPCWSTR pDatabaseFile,
6779 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
6780 REFIID riid,
6781 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvStateObjectDatabase
6782 );
6783};
6784
6785
6786typedef enum D3D12_AXIS_SHADING_RATE
6787{
6788 D3D12_AXIS_SHADING_RATE_1X = 0x0,
6789 D3D12_AXIS_SHADING_RATE_2X = 0x1,
6790 D3D12_AXIS_SHADING_RATE_4X = 0x2
6791} D3D12_AXIS_SHADING_RATE;
6792
6793
6794cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
6795cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
6796
6797cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
6798
6799cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
6800cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
6801
6802typedef enum D3D12_SHADING_RATE
6803{
6804 D3D12_SHADING_RATE_1X1 = 0x0,
6805 D3D12_SHADING_RATE_1X2 = 0x1,
6806 D3D12_SHADING_RATE_2X1 = 0x4,
6807 D3D12_SHADING_RATE_2X2 = 0x5,
6808 D3D12_SHADING_RATE_2X4 = 0x6,
6809 D3D12_SHADING_RATE_4X2 = 0x9,
6810 D3D12_SHADING_RATE_4X4 = 0xA
6811} D3D12_SHADING_RATE;
6812
6813typedef enum D3D12_SHADING_RATE_COMBINER
6814{
6815 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
6816 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
6817 D3D12_SHADING_RATE_COMBINER_MIN = 2,
6818 D3D12_SHADING_RATE_COMBINER_MAX = 3,
6819 D3D12_SHADING_RATE_COMBINER_SUM = 4,
6820} D3D12_SHADING_RATE_COMBINER;
6821
6822[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
6823interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
6824{
6825 void RSSetShadingRate(
6826 [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
6827 [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
6828
6829 void RSSetShadingRateImage(
6830 [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
6831}
6832
6833typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
6834{
6835 UINT ThreadGroupCountX;
6836 UINT ThreadGroupCountY;
6837 UINT ThreadGroupCountZ;
6838} D3D12_DISPATCH_MESH_ARGUMENTS;
6839
6840[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
6841interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
6842{
6843 void DispatchMesh(
6844 [annotation("_In_")] UINT ThreadGroupCountX,
6845 [annotation("_In_")] UINT ThreadGroupCountY,
6846 [annotation("_In_")] UINT ThreadGroupCountZ
6847 );
6848}
6849
6850[uuid(dd171223-8b61-4769-90e3-160ccde4e2c1), object, local, pointer_default(unique)]
6851interface ID3D12GraphicsCommandList7 : ID3D12GraphicsCommandList6
6852{
6853 void Barrier(
6854 UINT32 NumBarrierGroups,
6855 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
6856 );
6857};
6858
6859[uuid(ee936ef9-599d-4d28-938e-23c4ad05ce51), object, local, pointer_default(unique)]
6860interface ID3D12GraphicsCommandList8 : ID3D12GraphicsCommandList7
6861{
6862 void OMSetFrontAndBackStencilRef(
6863 [annotation("_In_")] UINT FrontStencilRef,
6864 [annotation("_In_")] UINT BackStencilRef
6865 );
6866};
6867
6868[uuid(34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1), object, local, pointer_default(unique)]
6869interface ID3D12GraphicsCommandList9 : ID3D12GraphicsCommandList8
6870{
6871 void RSSetDepthBias(
6872 [annotation("_In_")] FLOAT DepthBias,
6873 [annotation("_In_")] FLOAT DepthBiasClamp,
6874 [annotation("_In_")] FLOAT SlopeScaledDepthBias
6875 );
6876
6877 void IASetIndexBufferStripCutValue(
6878 [annotation("_In_")] D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue
6879 );
6880};
6881
6882[uuid(7013c015-d161-4b63-a08c-238552dd8acc), object, local, pointer_default(unique)]
6883interface ID3D12GraphicsCommandList10 : ID3D12GraphicsCommandList9
6884{
6885 void SetProgram([annotation("_In_")] const D3D12_SET_PROGRAM_DESC* pDesc);
6886 void DispatchGraph([annotation("_In_")] const D3D12_DISPATCH_GRAPH_DESC* pDesc);
6887};
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897[uuid(f343d1a0-afe3-439f-b13d-cd87a43b70ca), object, local, pointer_default(unique)]
6898interface ID3D12DSRDeviceFactory : IUnknown
6899{
6900 HRESULT CreateDSRDevice(
6901 [in] ID3D12Device *pD3D12Device,
6902 [in] UINT NodeMask,
6903 [in] REFIID riid, // Expected IDSRDevice
6904 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvDSRDevice);
6905}
6906
6907[uuid(597985ab-9b75-4dbb-be23-0761195bebee), object, local, pointer_default(unique)]
6908interface ID3D12GBVDiagnostics
6909 : IUnknown
6910{
6911 HRESULT GetGBVEntireSubresourceStatesData( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_writes_bytes_(DataSize)")] int *pData, UINT DataSize );
6912 HRESULT GetGBVSubresourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_Out_")] int *pData );
6913 HRESULT GetGBVResourceUniformState( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_")] int *pData );
6914 HRESULT GetGBVResourceInfo( [annotation("_In_")] ID3D12Resource* pResource,
6915 [annotation("_In_opt_")] D3D12_RESOURCE_DESC* pResourceDesc,
6916 [annotation("_In_opt_")] UINT32* pResourceHash,
6917 [annotation("_In_opt_")] UINT32* pSubresourceStatesByteOffset );
6918
6919 void GBVReserved0();
6920
6921 void GBVReserved1();
6922}
6923
6924
6925//----------------------------------------------------------------------------------------------------------
6926// Old types which are still supported by the runtime for app-compat
6927
6928cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
6929#pragma endregion
6930
6931
6932cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
6933cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
6934cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
6935cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
6936cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
6937cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
6938cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
6939cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
6940cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
6941cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
6942cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
6943cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
6944cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);" )
6945cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
6946cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
6947cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
6948cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
6949cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
6950cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
6951cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
6952cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
6953cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);" )
6954cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
6955cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
6956cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
6957cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
6958cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
6959cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
6960cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
6961cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
6962cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
6963cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
6964cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
6965cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
6966cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
6967cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
6968cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);" )
6969cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);" )
6970cpp_quote( "DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);" )
6971cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
6972cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
6973cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
6974cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);" )
6975cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
6976cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
6977cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
6978cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
6979cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
6980cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
6981cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
6982cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
6983cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
6984cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
6985cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
6986cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
6987cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
6988cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
6989cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
6990cpp_quote( "DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);" )
6991cpp_quote( "DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);" )
6992cpp_quote( "DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);" )
6993cpp_quote( "DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);" )
6994cpp_quote( "DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);" )
6995cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);" )
6996cpp_quote( "DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);" )
6997cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
6998cpp_quote( "DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);" )
6999cpp_quote( "DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);" )
7000cpp_quote( "DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);" )
7001cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);" )
7002cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);" )
7003cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
7004cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);" )
7005cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);" )
7006cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);" )
7007cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);" )
7008cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);" )
7009cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
7010cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
7011cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);" )
7012cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);" )
7013cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);" )
7014cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);" )
7015cpp_quote( "DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);" )
7016cpp_quote( "DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.h
new file mode 100644
index 0000000..ec9ff5f
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.h
@@ -0,0 +1,899 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compatibility_h__
39#define __d3d12compatibility_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompatibilityDevice_FWD_DEFINED__
56#define __ID3D12CompatibilityDevice_FWD_DEFINED__
57typedef interface ID3D12CompatibilityDevice ID3D12CompatibilityDevice;
58
59#endif /* __ID3D12CompatibilityDevice_FWD_DEFINED__ */
60
61
62#ifndef __D3D11On12CreatorID_FWD_DEFINED__
63#define __D3D11On12CreatorID_FWD_DEFINED__
64typedef interface D3D11On12CreatorID D3D11On12CreatorID;
65
66#endif /* __D3D11On12CreatorID_FWD_DEFINED__ */
67
68
69#ifndef __D3D9On12CreatorID_FWD_DEFINED__
70#define __D3D9On12CreatorID_FWD_DEFINED__
71typedef interface D3D9On12CreatorID D3D9On12CreatorID;
72
73#endif /* __D3D9On12CreatorID_FWD_DEFINED__ */
74
75
76#ifndef __OpenGLOn12CreatorID_FWD_DEFINED__
77#define __OpenGLOn12CreatorID_FWD_DEFINED__
78typedef interface OpenGLOn12CreatorID OpenGLOn12CreatorID;
79
80#endif /* __OpenGLOn12CreatorID_FWD_DEFINED__ */
81
82
83#ifndef __OpenCLOn12CreatorID_FWD_DEFINED__
84#define __OpenCLOn12CreatorID_FWD_DEFINED__
85typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
86
87#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
88
89
90#ifndef __VulkanOn12CreatorID_FWD_DEFINED__
91#define __VulkanOn12CreatorID_FWD_DEFINED__
92typedef interface VulkanOn12CreatorID VulkanOn12CreatorID;
93
94#endif /* __VulkanOn12CreatorID_FWD_DEFINED__ */
95
96
97#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
98#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
99typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
100
101#endif /* __DirectMLTensorFlowCreatorID_FWD_DEFINED__ */
102
103
104#ifndef __DirectMLPyTorchCreatorID_FWD_DEFINED__
105#define __DirectMLPyTorchCreatorID_FWD_DEFINED__
106typedef interface DirectMLPyTorchCreatorID DirectMLPyTorchCreatorID;
107
108#endif /* __DirectMLPyTorchCreatorID_FWD_DEFINED__ */
109
110
111#ifndef __DirectMLWebNNCreatorID_FWD_DEFINED__
112#define __DirectMLWebNNCreatorID_FWD_DEFINED__
113typedef interface DirectMLWebNNCreatorID DirectMLWebNNCreatorID;
114
115#endif /* __DirectMLWebNNCreatorID_FWD_DEFINED__ */
116
117
118/* header files for imported files */
119#include "oaidl.h"
120#include "ocidl.h"
121#include "d3d11on12.h"
122
123#ifdef __cplusplus
124extern "C"{
125#endif
126
127
128/* interface __MIDL_itf_d3d12compatibility_0000_0000 */
129/* [local] */
130
131#include <winapifamily.h>
132#pragma region Desktop Family
133#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
134typedef
135enum D3D12_COMPATIBILITY_SHARED_FLAGS
136 {
137 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
138 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
139 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
140 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
141 } D3D12_COMPATIBILITY_SHARED_FLAGS;
142
143DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )
144typedef
145enum D3D12_REFLECT_SHARED_PROPERTY
146 {
147 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS = 0,
148 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS = ( D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS + 1 ) ,
149 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE = ( D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS + 1 )
150 } D3D12_REFLECT_SHARED_PROPERTY;
151
152
153
154extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_c_ifspec;
155extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_s_ifspec;
156
157#ifndef __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
158#define __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
159
160/* interface ID3D12CompatibilityDevice */
161/* [unique][local][object][uuid] */
162
163
164EXTERN_C const IID IID_ID3D12CompatibilityDevice;
165
166#if defined(__cplusplus) && !defined(CINTERFACE)
167
168 MIDL_INTERFACE("8f1c0e3c-fae3-4a82-b098-bfe1708207ff")
169 ID3D12CompatibilityDevice : public IUnknown
170 {
171 public:
172 virtual HRESULT STDMETHODCALLTYPE CreateSharedResource(
173 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
174 D3D12_HEAP_FLAGS HeapFlags,
175 _In_ const D3D12_RESOURCE_DESC *pDesc,
176 D3D12_RESOURCE_STATES InitialResourceState,
177 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
178 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
179 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
180 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
181 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
182 REFIID riid,
183 _COM_Outptr_opt_ void **ppResource) = 0;
184
185 virtual HRESULT STDMETHODCALLTYPE CreateSharedHeap(
186 _In_ const D3D12_HEAP_DESC *pHeapDesc,
187 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
188 REFIID riid,
189 _COM_Outptr_opt_ void **ppHeap) = 0;
190
191 virtual HRESULT STDMETHODCALLTYPE ReflectSharedProperties(
192 _In_ ID3D12Object *pHeapOrResource,
193 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
194 _Out_writes_bytes_(DataSize) void *pData,
195 UINT DataSize) = 0;
196
197 };
198
199
200#else /* C style interface */
201
202 typedef struct ID3D12CompatibilityDeviceVtbl
203 {
204 BEGIN_INTERFACE
205
206 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
207 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
208 ID3D12CompatibilityDevice * This,
209 REFIID riid,
210 _COM_Outptr_ void **ppvObject);
211
212 DECLSPEC_XFGVIRT(IUnknown, AddRef)
213 ULONG ( STDMETHODCALLTYPE *AddRef )(
214 ID3D12CompatibilityDevice * This);
215
216 DECLSPEC_XFGVIRT(IUnknown, Release)
217 ULONG ( STDMETHODCALLTYPE *Release )(
218 ID3D12CompatibilityDevice * This);
219
220 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedResource)
221 HRESULT ( STDMETHODCALLTYPE *CreateSharedResource )(
222 ID3D12CompatibilityDevice * This,
223 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
224 D3D12_HEAP_FLAGS HeapFlags,
225 _In_ const D3D12_RESOURCE_DESC *pDesc,
226 D3D12_RESOURCE_STATES InitialResourceState,
227 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
228 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
229 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
230 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
231 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
232 REFIID riid,
233 _COM_Outptr_opt_ void **ppResource);
234
235 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedHeap)
236 HRESULT ( STDMETHODCALLTYPE *CreateSharedHeap )(
237 ID3D12CompatibilityDevice * This,
238 _In_ const D3D12_HEAP_DESC *pHeapDesc,
239 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
240 REFIID riid,
241 _COM_Outptr_opt_ void **ppHeap);
242
243 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, ReflectSharedProperties)
244 HRESULT ( STDMETHODCALLTYPE *ReflectSharedProperties )(
245 ID3D12CompatibilityDevice * This,
246 _In_ ID3D12Object *pHeapOrResource,
247 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
248 _Out_writes_bytes_(DataSize) void *pData,
249 UINT DataSize);
250
251 END_INTERFACE
252 } ID3D12CompatibilityDeviceVtbl;
253
254 interface ID3D12CompatibilityDevice
255 {
256 CONST_VTBL struct ID3D12CompatibilityDeviceVtbl *lpVtbl;
257 };
258
259
260
261#ifdef COBJMACROS
262
263
264#define ID3D12CompatibilityDevice_QueryInterface(This,riid,ppvObject) \
265 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
266
267#define ID3D12CompatibilityDevice_AddRef(This) \
268 ( (This)->lpVtbl -> AddRef(This) )
269
270#define ID3D12CompatibilityDevice_Release(This) \
271 ( (This)->lpVtbl -> Release(This) )
272
273
274#define ID3D12CompatibilityDevice_CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) \
275 ( (This)->lpVtbl -> CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) )
276
277#define ID3D12CompatibilityDevice_CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) \
278 ( (This)->lpVtbl -> CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) )
279
280#define ID3D12CompatibilityDevice_ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) \
281 ( (This)->lpVtbl -> ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) )
282
283#endif /* COBJMACROS */
284
285
286#endif /* C style interface */
287
288
289
290
291#endif /* __ID3D12CompatibilityDevice_INTERFACE_DEFINED__ */
292
293
294#ifndef __D3D11On12CreatorID_INTERFACE_DEFINED__
295#define __D3D11On12CreatorID_INTERFACE_DEFINED__
296
297/* interface D3D11On12CreatorID */
298/* [unique][local][object][uuid] */
299
300
301EXTERN_C const IID IID_D3D11On12CreatorID;
302
303#if defined(__cplusplus) && !defined(CINTERFACE)
304
305 MIDL_INTERFACE("edbf5678-2960-4e81-8429-99d4b2630c4e")
306 D3D11On12CreatorID : public IUnknown
307 {
308 public:
309 };
310
311
312#else /* C style interface */
313
314 typedef struct D3D11On12CreatorIDVtbl
315 {
316 BEGIN_INTERFACE
317
318 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
319 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
320 D3D11On12CreatorID * This,
321 REFIID riid,
322 _COM_Outptr_ void **ppvObject);
323
324 DECLSPEC_XFGVIRT(IUnknown, AddRef)
325 ULONG ( STDMETHODCALLTYPE *AddRef )(
326 D3D11On12CreatorID * This);
327
328 DECLSPEC_XFGVIRT(IUnknown, Release)
329 ULONG ( STDMETHODCALLTYPE *Release )(
330 D3D11On12CreatorID * This);
331
332 END_INTERFACE
333 } D3D11On12CreatorIDVtbl;
334
335 interface D3D11On12CreatorID
336 {
337 CONST_VTBL struct D3D11On12CreatorIDVtbl *lpVtbl;
338 };
339
340
341
342#ifdef COBJMACROS
343
344
345#define D3D11On12CreatorID_QueryInterface(This,riid,ppvObject) \
346 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
347
348#define D3D11On12CreatorID_AddRef(This) \
349 ( (This)->lpVtbl -> AddRef(This) )
350
351#define D3D11On12CreatorID_Release(This) \
352 ( (This)->lpVtbl -> Release(This) )
353
354
355#endif /* COBJMACROS */
356
357
358#endif /* C style interface */
359
360
361
362
363#endif /* __D3D11On12CreatorID_INTERFACE_DEFINED__ */
364
365
366#ifndef __D3D9On12CreatorID_INTERFACE_DEFINED__
367#define __D3D9On12CreatorID_INTERFACE_DEFINED__
368
369/* interface D3D9On12CreatorID */
370/* [unique][local][object][uuid] */
371
372
373EXTERN_C const IID IID_D3D9On12CreatorID;
374
375#if defined(__cplusplus) && !defined(CINTERFACE)
376
377 MIDL_INTERFACE("fffcbb7f-15d3-42a2-841e-9d8d32f37ddd")
378 D3D9On12CreatorID : public IUnknown
379 {
380 public:
381 };
382
383
384#else /* C style interface */
385
386 typedef struct D3D9On12CreatorIDVtbl
387 {
388 BEGIN_INTERFACE
389
390 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
391 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
392 D3D9On12CreatorID * This,
393 REFIID riid,
394 _COM_Outptr_ void **ppvObject);
395
396 DECLSPEC_XFGVIRT(IUnknown, AddRef)
397 ULONG ( STDMETHODCALLTYPE *AddRef )(
398 D3D9On12CreatorID * This);
399
400 DECLSPEC_XFGVIRT(IUnknown, Release)
401 ULONG ( STDMETHODCALLTYPE *Release )(
402 D3D9On12CreatorID * This);
403
404 END_INTERFACE
405 } D3D9On12CreatorIDVtbl;
406
407 interface D3D9On12CreatorID
408 {
409 CONST_VTBL struct D3D9On12CreatorIDVtbl *lpVtbl;
410 };
411
412
413
414#ifdef COBJMACROS
415
416
417#define D3D9On12CreatorID_QueryInterface(This,riid,ppvObject) \
418 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
419
420#define D3D9On12CreatorID_AddRef(This) \
421 ( (This)->lpVtbl -> AddRef(This) )
422
423#define D3D9On12CreatorID_Release(This) \
424 ( (This)->lpVtbl -> Release(This) )
425
426
427#endif /* COBJMACROS */
428
429
430#endif /* C style interface */
431
432
433
434
435#endif /* __D3D9On12CreatorID_INTERFACE_DEFINED__ */
436
437
438#ifndef __OpenGLOn12CreatorID_INTERFACE_DEFINED__
439#define __OpenGLOn12CreatorID_INTERFACE_DEFINED__
440
441/* interface OpenGLOn12CreatorID */
442/* [unique][local][object][uuid] */
443
444
445EXTERN_C const IID IID_OpenGLOn12CreatorID;
446
447#if defined(__cplusplus) && !defined(CINTERFACE)
448
449 MIDL_INTERFACE("6bb3cd34-0d19-45ab-97ed-d720ba3dfc80")
450 OpenGLOn12CreatorID : public IUnknown
451 {
452 public:
453 };
454
455
456#else /* C style interface */
457
458 typedef struct OpenGLOn12CreatorIDVtbl
459 {
460 BEGIN_INTERFACE
461
462 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
463 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
464 OpenGLOn12CreatorID * This,
465 REFIID riid,
466 _COM_Outptr_ void **ppvObject);
467
468 DECLSPEC_XFGVIRT(IUnknown, AddRef)
469 ULONG ( STDMETHODCALLTYPE *AddRef )(
470 OpenGLOn12CreatorID * This);
471
472 DECLSPEC_XFGVIRT(IUnknown, Release)
473 ULONG ( STDMETHODCALLTYPE *Release )(
474 OpenGLOn12CreatorID * This);
475
476 END_INTERFACE
477 } OpenGLOn12CreatorIDVtbl;
478
479 interface OpenGLOn12CreatorID
480 {
481 CONST_VTBL struct OpenGLOn12CreatorIDVtbl *lpVtbl;
482 };
483
484
485
486#ifdef COBJMACROS
487
488
489#define OpenGLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
491
492#define OpenGLOn12CreatorID_AddRef(This) \
493 ( (This)->lpVtbl -> AddRef(This) )
494
495#define OpenGLOn12CreatorID_Release(This) \
496 ( (This)->lpVtbl -> Release(This) )
497
498
499#endif /* COBJMACROS */
500
501
502#endif /* C style interface */
503
504
505
506
507#endif /* __OpenGLOn12CreatorID_INTERFACE_DEFINED__ */
508
509
510#ifndef __OpenCLOn12CreatorID_INTERFACE_DEFINED__
511#define __OpenCLOn12CreatorID_INTERFACE_DEFINED__
512
513/* interface OpenCLOn12CreatorID */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_OpenCLOn12CreatorID;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("3f76bb74-91b5-4a88-b126-20ca0331cd60")
522 OpenCLOn12CreatorID : public IUnknown
523 {
524 public:
525 };
526
527
528#else /* C style interface */
529
530 typedef struct OpenCLOn12CreatorIDVtbl
531 {
532 BEGIN_INTERFACE
533
534 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
535 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
536 OpenCLOn12CreatorID * This,
537 REFIID riid,
538 _COM_Outptr_ void **ppvObject);
539
540 DECLSPEC_XFGVIRT(IUnknown, AddRef)
541 ULONG ( STDMETHODCALLTYPE *AddRef )(
542 OpenCLOn12CreatorID * This);
543
544 DECLSPEC_XFGVIRT(IUnknown, Release)
545 ULONG ( STDMETHODCALLTYPE *Release )(
546 OpenCLOn12CreatorID * This);
547
548 END_INTERFACE
549 } OpenCLOn12CreatorIDVtbl;
550
551 interface OpenCLOn12CreatorID
552 {
553 CONST_VTBL struct OpenCLOn12CreatorIDVtbl *lpVtbl;
554 };
555
556
557
558#ifdef COBJMACROS
559
560
561#define OpenCLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
562 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
563
564#define OpenCLOn12CreatorID_AddRef(This) \
565 ( (This)->lpVtbl -> AddRef(This) )
566
567#define OpenCLOn12CreatorID_Release(This) \
568 ( (This)->lpVtbl -> Release(This) )
569
570
571#endif /* COBJMACROS */
572
573
574#endif /* C style interface */
575
576
577
578
579#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
580
581
582#ifndef __VulkanOn12CreatorID_INTERFACE_DEFINED__
583#define __VulkanOn12CreatorID_INTERFACE_DEFINED__
584
585/* interface VulkanOn12CreatorID */
586/* [unique][local][object][uuid] */
587
588
589EXTERN_C const IID IID_VulkanOn12CreatorID;
590
591#if defined(__cplusplus) && !defined(CINTERFACE)
592
593 MIDL_INTERFACE("bc806e01-3052-406c-a3e8-9fc07f048f98")
594 VulkanOn12CreatorID : public IUnknown
595 {
596 public:
597 };
598
599
600#else /* C style interface */
601
602 typedef struct VulkanOn12CreatorIDVtbl
603 {
604 BEGIN_INTERFACE
605
606 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
607 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
608 VulkanOn12CreatorID * This,
609 REFIID riid,
610 _COM_Outptr_ void **ppvObject);
611
612 DECLSPEC_XFGVIRT(IUnknown, AddRef)
613 ULONG ( STDMETHODCALLTYPE *AddRef )(
614 VulkanOn12CreatorID * This);
615
616 DECLSPEC_XFGVIRT(IUnknown, Release)
617 ULONG ( STDMETHODCALLTYPE *Release )(
618 VulkanOn12CreatorID * This);
619
620 END_INTERFACE
621 } VulkanOn12CreatorIDVtbl;
622
623 interface VulkanOn12CreatorID
624 {
625 CONST_VTBL struct VulkanOn12CreatorIDVtbl *lpVtbl;
626 };
627
628
629
630#ifdef COBJMACROS
631
632
633#define VulkanOn12CreatorID_QueryInterface(This,riid,ppvObject) \
634 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
635
636#define VulkanOn12CreatorID_AddRef(This) \
637 ( (This)->lpVtbl -> AddRef(This) )
638
639#define VulkanOn12CreatorID_Release(This) \
640 ( (This)->lpVtbl -> Release(This) )
641
642
643#endif /* COBJMACROS */
644
645
646#endif /* C style interface */
647
648
649
650
651#endif /* __VulkanOn12CreatorID_INTERFACE_DEFINED__ */
652
653
654#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
655#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
656
657/* interface DirectMLTensorFlowCreatorID */
658/* [unique][local][object][uuid] */
659
660
661EXTERN_C const IID IID_DirectMLTensorFlowCreatorID;
662
663#if defined(__cplusplus) && !defined(CINTERFACE)
664
665 MIDL_INTERFACE("cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab")
666 DirectMLTensorFlowCreatorID : public IUnknown
667 {
668 public:
669 };
670
671
672#else /* C style interface */
673
674 typedef struct DirectMLTensorFlowCreatorIDVtbl
675 {
676 BEGIN_INTERFACE
677
678 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
679 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
680 DirectMLTensorFlowCreatorID * This,
681 REFIID riid,
682 _COM_Outptr_ void **ppvObject);
683
684 DECLSPEC_XFGVIRT(IUnknown, AddRef)
685 ULONG ( STDMETHODCALLTYPE *AddRef )(
686 DirectMLTensorFlowCreatorID * This);
687
688 DECLSPEC_XFGVIRT(IUnknown, Release)
689 ULONG ( STDMETHODCALLTYPE *Release )(
690 DirectMLTensorFlowCreatorID * This);
691
692 END_INTERFACE
693 } DirectMLTensorFlowCreatorIDVtbl;
694
695 interface DirectMLTensorFlowCreatorID
696 {
697 CONST_VTBL struct DirectMLTensorFlowCreatorIDVtbl *lpVtbl;
698 };
699
700
701
702#ifdef COBJMACROS
703
704
705#define DirectMLTensorFlowCreatorID_QueryInterface(This,riid,ppvObject) \
706 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
707
708#define DirectMLTensorFlowCreatorID_AddRef(This) \
709 ( (This)->lpVtbl -> AddRef(This) )
710
711#define DirectMLTensorFlowCreatorID_Release(This) \
712 ( (This)->lpVtbl -> Release(This) )
713
714
715#endif /* COBJMACROS */
716
717
718#endif /* C style interface */
719
720
721
722
723#endif /* __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ */
724
725
726#ifndef __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
727#define __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
728
729/* interface DirectMLPyTorchCreatorID */
730/* [unique][local][object][uuid] */
731
732
733EXTERN_C const IID IID_DirectMLPyTorchCreatorID;
734
735#if defined(__cplusplus) && !defined(CINTERFACE)
736
737 MIDL_INTERFACE("af029192-fba1-4b05-9116-235e06560354")
738 DirectMLPyTorchCreatorID : public IUnknown
739 {
740 public:
741 };
742
743
744#else /* C style interface */
745
746 typedef struct DirectMLPyTorchCreatorIDVtbl
747 {
748 BEGIN_INTERFACE
749
750 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
751 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
752 DirectMLPyTorchCreatorID * This,
753 REFIID riid,
754 _COM_Outptr_ void **ppvObject);
755
756 DECLSPEC_XFGVIRT(IUnknown, AddRef)
757 ULONG ( STDMETHODCALLTYPE *AddRef )(
758 DirectMLPyTorchCreatorID * This);
759
760 DECLSPEC_XFGVIRT(IUnknown, Release)
761 ULONG ( STDMETHODCALLTYPE *Release )(
762 DirectMLPyTorchCreatorID * This);
763
764 END_INTERFACE
765 } DirectMLPyTorchCreatorIDVtbl;
766
767 interface DirectMLPyTorchCreatorID
768 {
769 CONST_VTBL struct DirectMLPyTorchCreatorIDVtbl *lpVtbl;
770 };
771
772
773
774#ifdef COBJMACROS
775
776
777#define DirectMLPyTorchCreatorID_QueryInterface(This,riid,ppvObject) \
778 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
779
780#define DirectMLPyTorchCreatorID_AddRef(This) \
781 ( (This)->lpVtbl -> AddRef(This) )
782
783#define DirectMLPyTorchCreatorID_Release(This) \
784 ( (This)->lpVtbl -> Release(This) )
785
786
787#endif /* COBJMACROS */
788
789
790#endif /* C style interface */
791
792
793
794
795#endif /* __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__ */
796
797
798#ifndef __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
799#define __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
800
801/* interface DirectMLWebNNCreatorID */
802/* [unique][local][object][uuid] */
803
804
805EXTERN_C const IID IID_DirectMLWebNNCreatorID;
806
807#if defined(__cplusplus) && !defined(CINTERFACE)
808
809 MIDL_INTERFACE("fdf01a76-1e11-450f-902b-74f04ea08094")
810 DirectMLWebNNCreatorID : public IUnknown
811 {
812 public:
813 };
814
815
816#else /* C style interface */
817
818 typedef struct DirectMLWebNNCreatorIDVtbl
819 {
820 BEGIN_INTERFACE
821
822 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
823 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
824 DirectMLWebNNCreatorID * This,
825 REFIID riid,
826 _COM_Outptr_ void **ppvObject);
827
828 DECLSPEC_XFGVIRT(IUnknown, AddRef)
829 ULONG ( STDMETHODCALLTYPE *AddRef )(
830 DirectMLWebNNCreatorID * This);
831
832 DECLSPEC_XFGVIRT(IUnknown, Release)
833 ULONG ( STDMETHODCALLTYPE *Release )(
834 DirectMLWebNNCreatorID * This);
835
836 END_INTERFACE
837 } DirectMLWebNNCreatorIDVtbl;
838
839 interface DirectMLWebNNCreatorID
840 {
841 CONST_VTBL struct DirectMLWebNNCreatorIDVtbl *lpVtbl;
842 };
843
844
845
846#ifdef COBJMACROS
847
848
849#define DirectMLWebNNCreatorID_QueryInterface(This,riid,ppvObject) \
850 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
851
852#define DirectMLWebNNCreatorID_AddRef(This) \
853 ( (This)->lpVtbl -> AddRef(This) )
854
855#define DirectMLWebNNCreatorID_Release(This) \
856 ( (This)->lpVtbl -> Release(This) )
857
858
859#endif /* COBJMACROS */
860
861
862#endif /* C style interface */
863
864
865
866
867#endif /* __DirectMLWebNNCreatorID_INTERFACE_DEFINED__ */
868
869
870/* interface __MIDL_itf_d3d12compatibility_0000_0009 */
871/* [local] */
872
873#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
874#pragma endregion
875DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);
876DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);
877DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
878DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
879DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
880DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);
881DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
882DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);
883DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);
884
885
886extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_c_ifspec;
887extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_s_ifspec;
888
889/* Additional Prototypes for ALL interfaces */
890
891/* end of Additional Prototypes */
892
893#ifdef __cplusplus
894}
895#endif
896
897#endif
898
899
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.idl
new file mode 100644
index 0000000..019afc9
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compatibility.idl
@@ -0,0 +1,101 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "d3d11on12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region Desktop Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17typedef enum D3D12_COMPATIBILITY_SHARED_FLAGS
18{
19 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
20 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
21 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
22 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4,
23
24} D3D12_COMPATIBILITY_SHARED_FLAGS;
25cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )" )
26
27typedef enum D3D12_REFLECT_SHARED_PROPERTY
28{
29 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS, // D3D11_RESOURCE_FLAGS
30 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS, // D3D12_COMPATIBILITY_SHARED_FLAGS
31 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE, // HANDLE
32} D3D12_REFLECT_SHARED_PROPERTY;
33
34[ uuid( 8f1c0e3c-fae3-4a82-b098-bfe1708207ff ), object, local, pointer_default( unique ) ]
35interface ID3D12CompatibilityDevice
36 : IUnknown
37{
38 HRESULT CreateSharedResource(
39 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
40 D3D12_HEAP_FLAGS HeapFlags,
41 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
42 D3D12_RESOURCE_STATES InitialResourceState,
43 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
44 [annotation("_In_opt_")] const D3D11_RESOURCE_FLAGS* pFlags11,
45 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
46 [annotation("_In_opt_")] ID3D12LifetimeTracker* pLifetimeTracker,
47 [annotation("_In_opt_")] ID3D12SwapChainAssistant* pOwningSwapchain,
48 REFIID riid,
49 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppResource);
50
51 HRESULT CreateSharedHeap(
52 [annotation("_In_")] const D3D12_HEAP_DESC* pHeapDesc,
53 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
54 REFIID riid,
55 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppHeap);
56
57 HRESULT ReflectSharedProperties(
58 [annotation("_In_")] ID3D12Object* pHeapOrResource,
59 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
60 [annotation("_Out_writes_bytes_(DataSize)")] void* pData,
61 UINT DataSize);
62}
63
64[uuid(edbf5678-2960-4e81-8429-99d4b2630c4e), object, local, pointer_default(unique)]
65interface D3D11On12CreatorID : IUnknown { };
66
67[uuid(fffcbb7f-15d3-42a2-841e-9d8d32f37ddd), object, local, pointer_default(unique)]
68interface D3D9On12CreatorID : IUnknown { };
69
70[uuid(6bb3cd34-0d19-45ab-97ed-d720ba3dfc80), object, local, pointer_default(unique)]
71interface OpenGLOn12CreatorID : IUnknown { };
72
73[uuid(3f76bb74-91b5-4a88-b126-20ca0331cd60), object, local, pointer_default(unique)]
74interface OpenCLOn12CreatorID : IUnknown { };
75
76[uuid(bc806e01-3052-406c-a3e8-9fc07f048f98), object, local, pointer_default(unique)]
77interface VulkanOn12CreatorID : IUnknown { };
78
79[uuid(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
80interface DirectMLTensorFlowCreatorID : IUnknown { };
81
82[uuid(af029192-fba1-4b05-9116-235e06560354), object, local, pointer_default(unique)]
83interface DirectMLPyTorchCreatorID : IUnknown { };
84
85[uuid(fdf01a76-1e11-450f-902b-74f04ea08094), object, local, pointer_default(unique)]
86interface DirectMLWebNNCreatorID : IUnknown { };
87
88
89cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
90#pragma endregion
91
92
93cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
94cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
95cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
96cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
97cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
98cpp_quote( "DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);" )
99cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
100cpp_quote( "DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);" )
101cpp_quote( "DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.h
new file mode 100644
index 0000000..1d8fe3b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.h
@@ -0,0 +1,977 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compiler_h__
39#define __d3d12compiler_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompilerFactoryChild_FWD_DEFINED__
56#define __ID3D12CompilerFactoryChild_FWD_DEFINED__
57typedef interface ID3D12CompilerFactoryChild ID3D12CompilerFactoryChild;
58
59#endif /* __ID3D12CompilerFactoryChild_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12CompilerCacheSession_FWD_DEFINED__
63#define __ID3D12CompilerCacheSession_FWD_DEFINED__
64typedef interface ID3D12CompilerCacheSession ID3D12CompilerCacheSession;
65
66#endif /* __ID3D12CompilerCacheSession_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12CompilerStateObject_FWD_DEFINED__
70#define __ID3D12CompilerStateObject_FWD_DEFINED__
71typedef interface ID3D12CompilerStateObject ID3D12CompilerStateObject;
72
73#endif /* __ID3D12CompilerStateObject_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Compiler_FWD_DEFINED__
77#define __ID3D12Compiler_FWD_DEFINED__
78typedef interface ID3D12Compiler ID3D12Compiler;
79
80#endif /* __ID3D12Compiler_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12CompilerFactory_FWD_DEFINED__
84#define __ID3D12CompilerFactory_FWD_DEFINED__
85typedef interface ID3D12CompilerFactory ID3D12CompilerFactory;
86
87#endif /* __ID3D12CompilerFactory_FWD_DEFINED__ */
88
89
90/* header files for imported files */
91#include "oaidl.h"
92#include "ocidl.h"
93#include "dxgicommon.h"
94#include "d3d12.h"
95
96#ifdef __cplusplus
97extern "C"{
98#endif
99
100
101/* interface __MIDL_itf_d3d12compiler_0000_0000 */
102/* [local] */
103
104#include <winapifamily.h>
105#pragma region App Family
106#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
107typedef struct D3D12_ADAPTER_FAMILY
108 {
109 WCHAR szAdapterFamily[ 128 ];
110 } D3D12_ADAPTER_FAMILY;
111
112typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)(
113 _In_ LPCWSTR pPluginCompilerDllPath,
114 _In_ REFIID riid,
115 _COM_Outptr_opt_ void** ppFactory );
116
117HRESULT WINAPI D3D12CompilerCreateFactory(
118 _In_ LPCWSTR pPluginCompilerDllPath,
119 _In_ REFIID riid, // Expected: ID3D12CompilerFactory
120 _COM_Outptr_opt_ void** ppFactory );
121
122typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
123 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
124 _Out_ ID3DBlob** ppBlob,
125 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
126
127HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(
128 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
129 _Out_ ID3DBlob** ppBlob,
130 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
131
132
133
134extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_c_ifspec;
135extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_s_ifspec;
136
137#ifndef __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
138#define __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
139
140/* interface ID3D12CompilerFactoryChild */
141/* [unique][local][object][uuid] */
142
143
144EXTERN_C const IID IID_ID3D12CompilerFactoryChild;
145
146#if defined(__cplusplus) && !defined(CINTERFACE)
147
148 MIDL_INTERFACE("e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc")
149 ID3D12CompilerFactoryChild : public IUnknown
150 {
151 public:
152 virtual HRESULT STDMETHODCALLTYPE GetFactory(
153 _In_ REFIID riid,
154 _COM_Outptr_ void **ppCompilerFactory) = 0;
155
156 };
157
158
159#else /* C style interface */
160
161 typedef struct ID3D12CompilerFactoryChildVtbl
162 {
163 BEGIN_INTERFACE
164
165 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
166 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
167 ID3D12CompilerFactoryChild * This,
168 REFIID riid,
169 _COM_Outptr_ void **ppvObject);
170
171 DECLSPEC_XFGVIRT(IUnknown, AddRef)
172 ULONG ( STDMETHODCALLTYPE *AddRef )(
173 ID3D12CompilerFactoryChild * This);
174
175 DECLSPEC_XFGVIRT(IUnknown, Release)
176 ULONG ( STDMETHODCALLTYPE *Release )(
177 ID3D12CompilerFactoryChild * This);
178
179 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
180 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
181 ID3D12CompilerFactoryChild * This,
182 _In_ REFIID riid,
183 _COM_Outptr_ void **ppCompilerFactory);
184
185 END_INTERFACE
186 } ID3D12CompilerFactoryChildVtbl;
187
188 interface ID3D12CompilerFactoryChild
189 {
190 CONST_VTBL struct ID3D12CompilerFactoryChildVtbl *lpVtbl;
191 };
192
193
194
195#ifdef COBJMACROS
196
197
198#define ID3D12CompilerFactoryChild_QueryInterface(This,riid,ppvObject) \
199 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
200
201#define ID3D12CompilerFactoryChild_AddRef(This) \
202 ( (This)->lpVtbl -> AddRef(This) )
203
204#define ID3D12CompilerFactoryChild_Release(This) \
205 ( (This)->lpVtbl -> Release(This) )
206
207
208#define ID3D12CompilerFactoryChild_GetFactory(This,riid,ppCompilerFactory) \
209 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
210
211#endif /* COBJMACROS */
212
213
214#endif /* C style interface */
215
216
217
218
219#endif /* __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__ */
220
221
222/* interface __MIDL_itf_d3d12compiler_0000_0001 */
223/* [local] */
224
225typedef
226enum D3D12_COMPILER_VALUE_TYPE
227 {
228 D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
229 D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
230 D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
231 D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3
232 } D3D12_COMPILER_VALUE_TYPE;
233
234typedef
235enum D3D12_COMPILER_VALUE_TYPE_FLAGS
236 {
237 D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0,
238 D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = ( 1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE ) ,
239 D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_METADATA ) ,
240 D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = ( 1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB ) ,
241 D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA )
242 } D3D12_COMPILER_VALUE_TYPE_FLAGS;
243
244DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )
245typedef struct D3D12_COMPILER_DATABASE_PATH
246 {
247 D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
248 LPCWSTR pPath;
249 } D3D12_COMPILER_DATABASE_PATH;
250
251typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
252 {
253 _Field_size_bytes_full_(KeySize) const void *pKey;
254 UINT KeySize;
255 } D3D12_COMPILER_CACHE_GROUP_KEY;
256
257typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
258 {
259 _Field_size_bytes_full_(KeySize) const void *pKey;
260 UINT KeySize;
261 } D3D12_COMPILER_CACHE_VALUE_KEY;
262
263typedef struct D3D12_COMPILER_CACHE_VALUE
264 {
265 _Field_size_bytes_full_(ValueSize) void *pValue;
266 UINT ValueSize;
267 } D3D12_COMPILER_CACHE_VALUE;
268
269typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
270 {
271 D3D12_COMPILER_VALUE_TYPE Type;
272 D3D12_COMPILER_CACHE_VALUE Value;
273 } D3D12_COMPILER_CACHE_TYPED_VALUE;
274
275typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
276 {
277 _Field_size_bytes_full_(ValueSize) const void *pValue;
278 UINT ValueSize;
279 } D3D12_COMPILER_CACHE_CONST_VALUE;
280
281typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
282 {
283 D3D12_COMPILER_VALUE_TYPE Type;
284 D3D12_COMPILER_CACHE_CONST_VALUE Value;
285 } D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
286
287typedef struct D3D12_COMPILER_TARGET
288 {
289 UINT AdapterFamilyIndex;
290 UINT64 ABIVersion;
291 } D3D12_COMPILER_TARGET;
292
293typedef void *( __stdcall *D3D12CompilerCacheSessionAllocationFunc )(
294 SIZE_T SizeInBytes,
295 _Inout_opt_ void *pContext);
296
297typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValueKeysFunc )(
298 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
299 _Inout_opt_ void *pContext);
300
301typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValuesFunc )(
302 UINT ValueKeyIndex,
303 _In_ const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValue,
304 _Inout_opt_ void *pContext);
305
306
307
308extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_c_ifspec;
309extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_s_ifspec;
310
311#ifndef __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
312#define __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
313
314/* interface ID3D12CompilerCacheSession */
315/* [unique][local][object][uuid] */
316
317
318EXTERN_C const IID IID_ID3D12CompilerCacheSession;
319
320#if defined(__cplusplus) && !defined(CINTERFACE)
321
322 MIDL_INTERFACE("5704e5e6-054b-4738-b661-7b0d68d8dde2")
323 ID3D12CompilerCacheSession : public ID3D12CompilerFactoryChild
324 {
325 public:
326 virtual HRESULT STDMETHODCALLTYPE FindGroup(
327 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
328 _Out_opt_ UINT *pGroupVersion) = 0;
329
330 virtual HRESULT STDMETHODCALLTYPE FindGroupValueKeys(
331 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
332 _In_opt_ const UINT *pExpectedGroupVersion,
333 _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
334 _Inout_opt_ void *pContext) = 0;
335
336 virtual HRESULT STDMETHODCALLTYPE FindGroupValues(
337 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
338 _In_opt_ const UINT *pExpectedGroupVersion,
339 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
340 _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
341 _Inout_opt_ void *pContext) = 0;
342
343 virtual HRESULT STDMETHODCALLTYPE FindValue(
344 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
345 _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
346 UINT NumTypedValues,
347 _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
348 _Inout_opt_ void *pContext) = 0;
349
350 virtual const D3D12_APPLICATION_DESC *STDMETHODCALLTYPE GetApplicationDesc( void) = 0;
351
352#if defined(_MSC_VER) || !defined(_WIN32)
353 virtual D3D12_COMPILER_TARGET STDMETHODCALLTYPE GetCompilerTarget( void) = 0;
354#else
355 virtual D3D12_COMPILER_TARGET *STDMETHODCALLTYPE GetCompilerTarget(
356 D3D12_COMPILER_TARGET * RetVal) = 0;
357#endif
358
359 virtual D3D12_COMPILER_VALUE_TYPE_FLAGS STDMETHODCALLTYPE GetValueTypes( void) = 0;
360
361 virtual HRESULT STDMETHODCALLTYPE StoreGroupValueKeys(
362 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
363 UINT GroupVersion,
364 _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
365 UINT NumValueKeys) = 0;
366
367 virtual HRESULT STDMETHODCALLTYPE StoreValue(
368 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
369 _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
370 UINT NumTypedValues) = 0;
371
372 };
373
374
375#else /* C style interface */
376
377 typedef struct ID3D12CompilerCacheSessionVtbl
378 {
379 BEGIN_INTERFACE
380
381 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
382 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
383 ID3D12CompilerCacheSession * This,
384 REFIID riid,
385 _COM_Outptr_ void **ppvObject);
386
387 DECLSPEC_XFGVIRT(IUnknown, AddRef)
388 ULONG ( STDMETHODCALLTYPE *AddRef )(
389 ID3D12CompilerCacheSession * This);
390
391 DECLSPEC_XFGVIRT(IUnknown, Release)
392 ULONG ( STDMETHODCALLTYPE *Release )(
393 ID3D12CompilerCacheSession * This);
394
395 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
396 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
397 ID3D12CompilerCacheSession * This,
398 _In_ REFIID riid,
399 _COM_Outptr_ void **ppCompilerFactory);
400
401 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroup)
402 HRESULT ( STDMETHODCALLTYPE *FindGroup )(
403 ID3D12CompilerCacheSession * This,
404 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
405 _Out_opt_ UINT *pGroupVersion);
406
407 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValueKeys)
408 HRESULT ( STDMETHODCALLTYPE *FindGroupValueKeys )(
409 ID3D12CompilerCacheSession * This,
410 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
411 _In_opt_ const UINT *pExpectedGroupVersion,
412 _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
413 _Inout_opt_ void *pContext);
414
415 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValues)
416 HRESULT ( STDMETHODCALLTYPE *FindGroupValues )(
417 ID3D12CompilerCacheSession * This,
418 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
419 _In_opt_ const UINT *pExpectedGroupVersion,
420 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
421 _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
422 _Inout_opt_ void *pContext);
423
424 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindValue)
425 HRESULT ( STDMETHODCALLTYPE *FindValue )(
426 ID3D12CompilerCacheSession * This,
427 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
428 _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
429 UINT NumTypedValues,
430 _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
431 _Inout_opt_ void *pContext);
432
433 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetApplicationDesc)
434 const D3D12_APPLICATION_DESC *( STDMETHODCALLTYPE *GetApplicationDesc )(
435 ID3D12CompilerCacheSession * This);
436
437 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetCompilerTarget)
438#if !defined(_WIN32)
439 D3D12_COMPILER_TARGET ( STDMETHODCALLTYPE *GetCompilerTarget )(
440 ID3D12CompilerCacheSession * This);
441
442#else
443 D3D12_COMPILER_TARGET *( STDMETHODCALLTYPE *GetCompilerTarget )(
444 ID3D12CompilerCacheSession * This,
445 D3D12_COMPILER_TARGET * RetVal);
446
447#endif
448
449 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetValueTypes)
450 D3D12_COMPILER_VALUE_TYPE_FLAGS ( STDMETHODCALLTYPE *GetValueTypes )(
451 ID3D12CompilerCacheSession * This);
452
453 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreGroupValueKeys)
454 HRESULT ( STDMETHODCALLTYPE *StoreGroupValueKeys )(
455 ID3D12CompilerCacheSession * This,
456 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
457 UINT GroupVersion,
458 _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
459 UINT NumValueKeys);
460
461 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreValue)
462 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
463 ID3D12CompilerCacheSession * This,
464 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
465 _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
466 UINT NumTypedValues);
467
468 END_INTERFACE
469 } ID3D12CompilerCacheSessionVtbl;
470
471 interface ID3D12CompilerCacheSession
472 {
473 CONST_VTBL struct ID3D12CompilerCacheSessionVtbl *lpVtbl;
474 };
475
476
477
478#ifdef COBJMACROS
479
480
481#define ID3D12CompilerCacheSession_QueryInterface(This,riid,ppvObject) \
482 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
483
484#define ID3D12CompilerCacheSession_AddRef(This) \
485 ( (This)->lpVtbl -> AddRef(This) )
486
487#define ID3D12CompilerCacheSession_Release(This) \
488 ( (This)->lpVtbl -> Release(This) )
489
490
491#define ID3D12CompilerCacheSession_GetFactory(This,riid,ppCompilerFactory) \
492 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
493
494
495#define ID3D12CompilerCacheSession_FindGroup(This,pGroupKey,pGroupVersion) \
496 ( (This)->lpVtbl -> FindGroup(This,pGroupKey,pGroupVersion) )
497
498#define ID3D12CompilerCacheSession_FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) \
499 ( (This)->lpVtbl -> FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) )
500
501#define ID3D12CompilerCacheSession_FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) \
502 ( (This)->lpVtbl -> FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) )
503
504#define ID3D12CompilerCacheSession_FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) \
505 ( (This)->lpVtbl -> FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) )
506
507#define ID3D12CompilerCacheSession_GetApplicationDesc(This) \
508 ( (This)->lpVtbl -> GetApplicationDesc(This) )
509#if !defined(_WIN32)
510
511#define ID3D12CompilerCacheSession_GetCompilerTarget(This) \
512 ( (This)->lpVtbl -> GetCompilerTarget(This) )
513#else
514#define ID3D12CompilerCacheSession_GetCompilerTarget(This,RetVal) \
515 ( (This)->lpVtbl -> GetCompilerTarget(This,RetVal) )
516#endif
517
518#define ID3D12CompilerCacheSession_GetValueTypes(This) \
519 ( (This)->lpVtbl -> GetValueTypes(This) )
520
521#define ID3D12CompilerCacheSession_StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) \
522 ( (This)->lpVtbl -> StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) )
523
524#define ID3D12CompilerCacheSession_StoreValue(This,pValueKey,pTypedValues,NumTypedValues) \
525 ( (This)->lpVtbl -> StoreValue(This,pValueKey,pTypedValues,NumTypedValues) )
526
527#endif /* COBJMACROS */
528
529
530#endif /* C style interface */
531
532
533
534
535#endif /* __ID3D12CompilerCacheSession_INTERFACE_DEFINED__ */
536
537
538#ifndef __ID3D12CompilerStateObject_INTERFACE_DEFINED__
539#define __ID3D12CompilerStateObject_INTERFACE_DEFINED__
540
541/* interface ID3D12CompilerStateObject */
542/* [unique][local][object][uuid] */
543
544
545EXTERN_C const IID IID_ID3D12CompilerStateObject;
546
547#if defined(__cplusplus) && !defined(CINTERFACE)
548
549 MIDL_INTERFACE("5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a")
550 ID3D12CompilerStateObject : public IUnknown
551 {
552 public:
553 virtual HRESULT STDMETHODCALLTYPE GetCompiler(
554 _In_ REFIID riid,
555 _COM_Outptr_ void **ppCompiler) = 0;
556
557 };
558
559
560#else /* C style interface */
561
562 typedef struct ID3D12CompilerStateObjectVtbl
563 {
564 BEGIN_INTERFACE
565
566 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
567 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
568 ID3D12CompilerStateObject * This,
569 REFIID riid,
570 _COM_Outptr_ void **ppvObject);
571
572 DECLSPEC_XFGVIRT(IUnknown, AddRef)
573 ULONG ( STDMETHODCALLTYPE *AddRef )(
574 ID3D12CompilerStateObject * This);
575
576 DECLSPEC_XFGVIRT(IUnknown, Release)
577 ULONG ( STDMETHODCALLTYPE *Release )(
578 ID3D12CompilerStateObject * This);
579
580 DECLSPEC_XFGVIRT(ID3D12CompilerStateObject, GetCompiler)
581 HRESULT ( STDMETHODCALLTYPE *GetCompiler )(
582 ID3D12CompilerStateObject * This,
583 _In_ REFIID riid,
584 _COM_Outptr_ void **ppCompiler);
585
586 END_INTERFACE
587 } ID3D12CompilerStateObjectVtbl;
588
589 interface ID3D12CompilerStateObject
590 {
591 CONST_VTBL struct ID3D12CompilerStateObjectVtbl *lpVtbl;
592 };
593
594
595
596#ifdef COBJMACROS
597
598
599#define ID3D12CompilerStateObject_QueryInterface(This,riid,ppvObject) \
600 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
601
602#define ID3D12CompilerStateObject_AddRef(This) \
603 ( (This)->lpVtbl -> AddRef(This) )
604
605#define ID3D12CompilerStateObject_Release(This) \
606 ( (This)->lpVtbl -> Release(This) )
607
608
609#define ID3D12CompilerStateObject_GetCompiler(This,riid,ppCompiler) \
610 ( (This)->lpVtbl -> GetCompiler(This,riid,ppCompiler) )
611
612#endif /* COBJMACROS */
613
614
615#endif /* C style interface */
616
617
618
619
620#endif /* __ID3D12CompilerStateObject_INTERFACE_DEFINED__ */
621
622
623/* interface __MIDL_itf_d3d12compiler_0000_0003 */
624/* [local] */
625
626typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
627 {
628 ID3D12CompilerStateObject *pExistingCollection;
629 UINT NumExports;
630 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
631 } D3D12_COMPILER_EXISTING_COLLECTION_DESC;
632
633
634
635extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_c_ifspec;
636extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_s_ifspec;
637
638#ifndef __ID3D12Compiler_INTERFACE_DEFINED__
639#define __ID3D12Compiler_INTERFACE_DEFINED__
640
641/* interface ID3D12Compiler */
642/* [unique][local][object][uuid] */
643
644
645EXTERN_C const IID IID_ID3D12Compiler;
646
647#if defined(__cplusplus) && !defined(CINTERFACE)
648
649 MIDL_INTERFACE("8c403c12-993b-4583-80f1-6824138fa68e")
650 ID3D12Compiler : public ID3D12CompilerFactoryChild
651 {
652 public:
653 virtual HRESULT STDMETHODCALLTYPE CompilePipelineState(
654 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
655 UINT GroupVersion,
656 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
657
658 virtual HRESULT STDMETHODCALLTYPE CompileStateObject(
659 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
660 UINT GroupVersion,
661 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
662 _In_ REFIID riid,
663 _COM_Outptr_ void **ppCompilerStateObject) = 0;
664
665 virtual HRESULT STDMETHODCALLTYPE CompileAddToStateObject(
666 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
667 UINT GroupVersion,
668 _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
669 _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
670 _In_ REFIID riid,
671 _COM_Outptr_ void **ppNewCompilerStateObject) = 0;
672
673 virtual HRESULT STDMETHODCALLTYPE GetCacheSession(
674 _In_ REFIID riid,
675 _COM_Outptr_ void **ppCompilerCacheSession) = 0;
676
677 };
678
679
680#else /* C style interface */
681
682 typedef struct ID3D12CompilerVtbl
683 {
684 BEGIN_INTERFACE
685
686 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
687 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
688 ID3D12Compiler * This,
689 REFIID riid,
690 _COM_Outptr_ void **ppvObject);
691
692 DECLSPEC_XFGVIRT(IUnknown, AddRef)
693 ULONG ( STDMETHODCALLTYPE *AddRef )(
694 ID3D12Compiler * This);
695
696 DECLSPEC_XFGVIRT(IUnknown, Release)
697 ULONG ( STDMETHODCALLTYPE *Release )(
698 ID3D12Compiler * This);
699
700 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
701 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
702 ID3D12Compiler * This,
703 _In_ REFIID riid,
704 _COM_Outptr_ void **ppCompilerFactory);
705
706 DECLSPEC_XFGVIRT(ID3D12Compiler, CompilePipelineState)
707 HRESULT ( STDMETHODCALLTYPE *CompilePipelineState )(
708 ID3D12Compiler * This,
709 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
710 UINT GroupVersion,
711 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
712
713 DECLSPEC_XFGVIRT(ID3D12Compiler, CompileStateObject)
714 HRESULT ( STDMETHODCALLTYPE *CompileStateObject )(
715 ID3D12Compiler * This,
716 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
717 UINT GroupVersion,
718 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
719 _In_ REFIID riid,
720 _COM_Outptr_ void **ppCompilerStateObject);
721
722 DECLSPEC_XFGVIRT(ID3D12Compiler, CompileAddToStateObject)
723 HRESULT ( STDMETHODCALLTYPE *CompileAddToStateObject )(
724 ID3D12Compiler * This,
725 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
726 UINT GroupVersion,
727 _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
728 _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
729 _In_ REFIID riid,
730 _COM_Outptr_ void **ppNewCompilerStateObject);
731
732 DECLSPEC_XFGVIRT(ID3D12Compiler, GetCacheSession)
733 HRESULT ( STDMETHODCALLTYPE *GetCacheSession )(
734 ID3D12Compiler * This,
735 _In_ REFIID riid,
736 _COM_Outptr_ void **ppCompilerCacheSession);
737
738 END_INTERFACE
739 } ID3D12CompilerVtbl;
740
741 interface ID3D12Compiler
742 {
743 CONST_VTBL struct ID3D12CompilerVtbl *lpVtbl;
744 };
745
746
747
748#ifdef COBJMACROS
749
750
751#define ID3D12Compiler_QueryInterface(This,riid,ppvObject) \
752 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
753
754#define ID3D12Compiler_AddRef(This) \
755 ( (This)->lpVtbl -> AddRef(This) )
756
757#define ID3D12Compiler_Release(This) \
758 ( (This)->lpVtbl -> Release(This) )
759
760
761#define ID3D12Compiler_GetFactory(This,riid,ppCompilerFactory) \
762 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
763
764
765#define ID3D12Compiler_CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) \
766 ( (This)->lpVtbl -> CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) )
767
768#define ID3D12Compiler_CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) \
769 ( (This)->lpVtbl -> CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) )
770
771#define ID3D12Compiler_CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) \
772 ( (This)->lpVtbl -> CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) )
773
774#define ID3D12Compiler_GetCacheSession(This,riid,ppCompilerCacheSession) \
775 ( (This)->lpVtbl -> GetCacheSession(This,riid,ppCompilerCacheSession) )
776
777#endif /* COBJMACROS */
778
779
780#endif /* C style interface */
781
782
783
784
785#endif /* __ID3D12Compiler_INTERFACE_DEFINED__ */
786
787
788#ifndef __ID3D12CompilerFactory_INTERFACE_DEFINED__
789#define __ID3D12CompilerFactory_INTERFACE_DEFINED__
790
791/* interface ID3D12CompilerFactory */
792/* [unique][local][object][uuid] */
793
794
795EXTERN_C const IID IID_ID3D12CompilerFactory;
796
797#if defined(__cplusplus) && !defined(CINTERFACE)
798
799 MIDL_INTERFACE("c1ee4b59-3f59-47a5-9b4e-a855c858a878")
800 ID3D12CompilerFactory : public IUnknown
801 {
802 public:
803 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilies(
804 UINT AdapterFamilyIndex,
805 _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily) = 0;
806
807 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyABIVersions(
808 UINT AdapterFamilyIndex,
809 _Inout_ UINT32 *pNumABIVersions,
810 _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions) = 0;
811
812 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyCompilerVersion(
813 UINT AdapterFamilyIndex,
814 _Out_ D3D12_VERSION_NUMBER *pCompilerVersion) = 0;
815
816 virtual HRESULT STDMETHODCALLTYPE GetApplicationProfileVersion(
817 _In_ const D3D12_COMPILER_TARGET *pTarget,
818 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
819 _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion) = 0;
820
821 virtual HRESULT STDMETHODCALLTYPE CreateCompilerCacheSession(
822 _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
823 UINT NumPaths,
824 _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
825 _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
826 _In_ REFIID riid,
827 _COM_Outptr_ void **ppCompilerCacheSession) = 0;
828
829 virtual HRESULT STDMETHODCALLTYPE CreateCompiler(
830 _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
831 _In_ REFIID riid,
832 _COM_Outptr_ void **ppCompiler) = 0;
833
834 };
835
836
837#else /* C style interface */
838
839 typedef struct ID3D12CompilerFactoryVtbl
840 {
841 BEGIN_INTERFACE
842
843 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
844 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
845 ID3D12CompilerFactory * This,
846 REFIID riid,
847 _COM_Outptr_ void **ppvObject);
848
849 DECLSPEC_XFGVIRT(IUnknown, AddRef)
850 ULONG ( STDMETHODCALLTYPE *AddRef )(
851 ID3D12CompilerFactory * This);
852
853 DECLSPEC_XFGVIRT(IUnknown, Release)
854 ULONG ( STDMETHODCALLTYPE *Release )(
855 ID3D12CompilerFactory * This);
856
857 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilies)
858 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilies )(
859 ID3D12CompilerFactory * This,
860 UINT AdapterFamilyIndex,
861 _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily);
862
863 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyABIVersions)
864 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyABIVersions )(
865 ID3D12CompilerFactory * This,
866 UINT AdapterFamilyIndex,
867 _Inout_ UINT32 *pNumABIVersions,
868 _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions);
869
870 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyCompilerVersion)
871 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyCompilerVersion )(
872 ID3D12CompilerFactory * This,
873 UINT AdapterFamilyIndex,
874 _Out_ D3D12_VERSION_NUMBER *pCompilerVersion);
875
876 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, GetApplicationProfileVersion)
877 HRESULT ( STDMETHODCALLTYPE *GetApplicationProfileVersion )(
878 ID3D12CompilerFactory * This,
879 _In_ const D3D12_COMPILER_TARGET *pTarget,
880 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
881 _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion);
882
883 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompilerCacheSession)
884 HRESULT ( STDMETHODCALLTYPE *CreateCompilerCacheSession )(
885 ID3D12CompilerFactory * This,
886 _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
887 UINT NumPaths,
888 _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
889 _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
890 _In_ REFIID riid,
891 _COM_Outptr_ void **ppCompilerCacheSession);
892
893 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompiler)
894 HRESULT ( STDMETHODCALLTYPE *CreateCompiler )(
895 ID3D12CompilerFactory * This,
896 _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
897 _In_ REFIID riid,
898 _COM_Outptr_ void **ppCompiler);
899
900 END_INTERFACE
901 } ID3D12CompilerFactoryVtbl;
902
903 interface ID3D12CompilerFactory
904 {
905 CONST_VTBL struct ID3D12CompilerFactoryVtbl *lpVtbl;
906 };
907
908
909
910#ifdef COBJMACROS
911
912
913#define ID3D12CompilerFactory_QueryInterface(This,riid,ppvObject) \
914 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
915
916#define ID3D12CompilerFactory_AddRef(This) \
917 ( (This)->lpVtbl -> AddRef(This) )
918
919#define ID3D12CompilerFactory_Release(This) \
920 ( (This)->lpVtbl -> Release(This) )
921
922
923#define ID3D12CompilerFactory_EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) \
924 ( (This)->lpVtbl -> EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) )
925
926#define ID3D12CompilerFactory_EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) \
927 ( (This)->lpVtbl -> EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) )
928
929#define ID3D12CompilerFactory_EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) \
930 ( (This)->lpVtbl -> EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) )
931
932#define ID3D12CompilerFactory_GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) \
933 ( (This)->lpVtbl -> GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) )
934
935#define ID3D12CompilerFactory_CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) \
936 ( (This)->lpVtbl -> CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) )
937
938#define ID3D12CompilerFactory_CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) \
939 ( (This)->lpVtbl -> CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) )
940
941#endif /* COBJMACROS */
942
943
944#endif /* C style interface */
945
946
947
948
949#endif /* __ID3D12CompilerFactory_INTERFACE_DEFINED__ */
950
951
952/* interface __MIDL_itf_d3d12compiler_0000_0005 */
953/* [local] */
954
955#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
956#pragma endregion
957DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);
958DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);
959DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);
960DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);
961DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);
962
963
964extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_c_ifspec;
965extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_s_ifspec;
966
967/* Additional Prototypes for ALL interfaces */
968
969/* end of Additional Prototypes */
970
971#ifdef __cplusplus
972}
973#endif
974
975#endif
976
977
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.idl
new file mode 100644
index 0000000..c8ae4b4
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12compiler.idl
@@ -0,0 +1,291 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18
19typedef struct D3D12_ADAPTER_FAMILY
20{
21 WCHAR szAdapterFamily[128];
22} D3D12_ADAPTER_FAMILY;
23
24cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)( ")
25cpp_quote(" _In_ LPCWSTR pPluginCompilerDllPath,")
26cpp_quote(" _In_ REFIID riid,")
27cpp_quote(" _COM_Outptr_opt_ void** ppFactory );")
28cpp_quote("")
29cpp_quote("HRESULT WINAPI D3D12CompilerCreateFactory(")
30cpp_quote(" _In_ LPCWSTR pPluginCompilerDllPath,")
31cpp_quote(" _In_ REFIID riid, // Expected: ID3D12CompilerFactory")
32cpp_quote(" _COM_Outptr_opt_ void** ppFactory );")
33cpp_quote("")
34cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(")
35cpp_quote(" _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,")
36cpp_quote(" _Out_ ID3DBlob** ppBlob,")
37cpp_quote(" _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);")
38cpp_quote("")
39cpp_quote("HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(")
40cpp_quote(" _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,")
41cpp_quote(" _Out_ ID3DBlob** ppBlob,")
42cpp_quote(" _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);")
43cpp_quote("")
44
45[uuid(e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc), object, local, pointer_default(unique)]
46interface ID3D12CompilerFactoryChild
47 : IUnknown
48{
49 HRESULT GetFactory(
50 [annotation("_In_")] REFIID riid, // ID3D12CompilerFactory
51 [annotation("_COM_Outptr_")] void** ppCompilerFactory
52 );
53};
54
55typedef enum D3D12_COMPILER_VALUE_TYPE
56{
57 D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
58 D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
59 D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
60 D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3,
61
62} D3D12_COMPILER_VALUE_TYPE;
63
64typedef enum D3D12_COMPILER_VALUE_TYPE_FLAGS
65{
66 D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0x00000000,
67 D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = (1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE),
68 D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = (1 << D3D12_COMPILER_VALUE_TYPE_METADATA),
69 D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = (1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB),
70 D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = (1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA),
71
72
73} D3D12_COMPILER_VALUE_TYPE_FLAGS;
74cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )")
75
76typedef struct D3D12_COMPILER_DATABASE_PATH
77{
78 D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
79 LPCWSTR pPath;
80} D3D12_COMPILER_DATABASE_PATH;
81
82typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
83{
84 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
85 UINT KeySize;
86} D3D12_COMPILER_CACHE_GROUP_KEY;
87
88typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
89{
90 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
91 UINT KeySize;
92} D3D12_COMPILER_CACHE_VALUE_KEY;
93
94typedef struct D3D12_COMPILER_CACHE_VALUE
95{
96 [annotation("_Field_size_bytes_full_(ValueSize)")] void* pValue;
97 UINT ValueSize;
98} D3D12_COMPILER_CACHE_VALUE;
99
100typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
101{
102 D3D12_COMPILER_VALUE_TYPE Type;
103 D3D12_COMPILER_CACHE_VALUE Value;
104} D3D12_COMPILER_CACHE_TYPED_VALUE;
105
106typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
107{
108 [annotation("_Field_size_bytes_full_(ValueSize)")] const void* pValue;
109 UINT ValueSize;
110} D3D12_COMPILER_CACHE_CONST_VALUE;
111
112typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
113{
114 D3D12_COMPILER_VALUE_TYPE Type;
115 D3D12_COMPILER_CACHE_CONST_VALUE Value;
116} D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
117
118typedef struct D3D12_COMPILER_TARGET
119{
120 UINT AdapterFamilyIndex;
121 UINT64 ABIVersion;
122} D3D12_COMPILER_TARGET;
123
124typedef void* (__stdcall* D3D12CompilerCacheSessionAllocationFunc) (
125 SIZE_T SizeInBytes,
126 [annotation("_Inout_opt_")] void* pContext
127 );
128
129typedef void(__stdcall* D3D12CompilerCacheSessionGroupValueKeysFunc) (
130 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
131 [annotation("_Inout_opt_")] void* pContext
132 );
133
134typedef void(__stdcall* D3D12CompilerCacheSessionGroupValuesFunc) (
135 UINT ValueKeyIndex,
136 [annotation("_In_")] const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE* pTypedValue,
137 [annotation("_Inout_opt_")] void* pContext
138 );
139
140[uuid(5704e5e6-054b-4738-b661-7b0d68d8dde2), object, local, pointer_default(unique)]
141interface ID3D12CompilerCacheSession
142 : ID3D12CompilerFactoryChild
143{
144 HRESULT FindGroup(
145 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
146 [annotation("_Out_opt_")] UINT* pGroupVersion
147 );
148
149 HRESULT FindGroupValueKeys(
150 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
151 [annotation("_In_opt_")] const UINT* pExpectedGroupVersion,
152 [annotation("_In_")] D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
153 [annotation("_Inout_opt_")] void* pContext
154 );
155
156 HRESULT FindGroupValues(
157 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
158 [annotation("_In_opt_")] const UINT* pExpectedGroupVersion,
159 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
160 [annotation("_In_opt_")] D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
161 [annotation("_Inout_opt_")] void* pContext
162 );
163
164 HRESULT FindValue(
165 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
166 [annotation("_Inout_count_(NumTypedValues)")] D3D12_COMPILER_CACHE_TYPED_VALUE* pTypedValues,
167 UINT NumTypedValues,
168 [annotation("_In_opt_")] D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
169 [annotation("_Inout_opt_")] void* pContext
170 );
171
172 const D3D12_APPLICATION_DESC* GetApplicationDesc();
173
174 D3D12_COMPILER_TARGET GetCompilerTarget();
175
176 D3D12_COMPILER_VALUE_TYPE_FLAGS GetValueTypes();
177
178 HRESULT StoreGroupValueKeys(
179 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
180 UINT GroupVersion,
181 [annotation("_In_reads_(NumValueKeys)")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKeys,
182 UINT NumValueKeys
183 );
184
185 HRESULT StoreValue(
186 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
187 [annotation("_In_reads_(NumTypedValues)")] const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE* pTypedValues,
188 UINT NumTypedValues
189 );
190};
191
192[uuid(5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a), object, local, pointer_default(unique)]
193interface ID3D12CompilerStateObject
194 : IUnknown
195{
196 HRESULT GetCompiler(
197 [annotation("_In_")] REFIID riid, // ID3D12Compiler
198 [annotation("_COM_Outptr_")] void** ppCompiler
199 );
200};
201
202typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
203{
204 ID3D12CompilerStateObject* pExistingCollection;
205 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
206 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
207} D3D12_COMPILER_EXISTING_COLLECTION_DESC;
208
209[uuid(8c403c12-993b-4583-80f1-6824138fa68e), object, local, pointer_default(unique)]
210interface ID3D12Compiler
211 : ID3D12CompilerFactoryChild
212{
213 HRESULT CompilePipelineState(
214 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
215 UINT GroupVersion,
216 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc
217 );
218
219 HRESULT CompileStateObject(
220 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
221 UINT GroupVersion,
222 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pDesc,
223 [annotation("_In_")] REFIID riid, // ID3D12CompilerStateObject
224 [annotation("_COM_Outptr_")] void** ppCompilerStateObject
225 );
226
227 HRESULT CompileAddToStateObject(
228 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
229 UINT GroupVersion,
230 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pAddition,
231 [annotation("_In_")] ID3D12CompilerStateObject* pCompilerStateObjectToGrowFrom,
232 [annotation("_In_")] REFIID riid, // ID3D12CompilerStateObject
233 [annotation("_COM_Outptr_")] void** ppNewCompilerStateObject
234 );
235
236 HRESULT GetCacheSession(
237 [annotation("_In_")] REFIID riid, // ID3D12CompilerCacheSession
238 [annotation("_COM_Outptr_")] void** ppCompilerCacheSession
239 );
240};
241
242[uuid(c1ee4b59-3f59-47a5-9b4e-a855c858a878), object, local, pointer_default(unique)]
243interface ID3D12CompilerFactory
244 : IUnknown
245{
246 HRESULT EnumerateAdapterFamilies(
247 UINT AdapterFamilyIndex,
248 [annotation("_Out_")] D3D12_ADAPTER_FAMILY* pAdapterFamily
249 );
250
251 HRESULT EnumerateAdapterFamilyABIVersions(
252 UINT AdapterFamilyIndex,
253 [annotation("_Inout_")] UINT32* pNumABIVersions,
254 [annotation("_Out_writes_opt_(*pNumABIVersions)")] UINT64 * pABIVersions
255 );
256
257 HRESULT EnumerateAdapterFamilyCompilerVersion(
258 UINT AdapterFamilyIndex,
259 [annotation("_Out_")] D3D12_VERSION_NUMBER* pCompilerVersion
260 );
261
262 HRESULT GetApplicationProfileVersion(
263 [annotation("_In_")] const D3D12_COMPILER_TARGET* pTarget,
264 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
265 [annotation("_Out_")] D3D12_VERSION_NUMBER* pApplicationProfileVersion
266 );
267
268 HRESULT CreateCompilerCacheSession(
269 [annotation("_In_reads_(NumPaths)")] const D3D12_COMPILER_DATABASE_PATH* pPaths,
270 UINT NumPaths,
271 [annotation("_In_opt_")] const D3D12_COMPILER_TARGET* pTarget,
272 [annotation("_In_opt_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
273 [annotation("_In_")] REFIID riid, // ID3D12CompilerCacheSession
274 [annotation("_COM_Outptr_")] void** ppCompilerCacheSession
275 );
276
277 HRESULT CreateCompiler(
278 [annotation("_In_")] ID3D12CompilerCacheSession* pCompilerCacheSession,
279 [annotation("_In_")] REFIID riid, // ID3D12Compiler
280 [annotation("_COM_Outptr_")] void** ppCompiler
281 );
282};
283
284cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
285#pragma endregion
286
287cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);" )
288cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);" )
289cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);" )
290cpp_quote( "DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);" )
291cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12markerapienums.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12markerapienums.idl
new file mode 100644
index 0000000..1384b73
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12markerapienums.idl
@@ -0,0 +1,119 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 *
5 *-------------------------------------------------------------------------------------*/
6typedef enum D3D12_MARKER_API {
7 D3D12_MARKER_API_SETMARKER = 0,
8 D3D12_MARKER_API_BEGINEVENT = 1,
9 D3D12_MARKER_API_ENDEVENT = 2,
10 D3D12_MARKER_API_DRAWINSTANCED = 3,
11 D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
12 D3D12_MARKER_API_EXECUTEINDIRECT = 5,
13 D3D12_MARKER_API_DISPATCH = 6,
14 D3D12_MARKER_API_COPYBUFFERREGION = 7,
15 D3D12_MARKER_API_COPYTEXTUREREGION = 8,
16 D3D12_MARKER_API_COPYRESOURCE = 9,
17 D3D12_MARKER_API_COPYTILES = 10,
18 D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
19 D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
20 D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
21 D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
22 D3D12_MARKER_API_RESOURCEBARRIER = 15,
23 D3D12_MARKER_API_EXECUTEBUNDLE = 16,
24 D3D12_MARKER_API_PRESENT = 17,
25 D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
26 D3D12_MARKER_API_BEGINSUBMISSION = 19,
27 D3D12_MARKER_API_ENDSUBMISSION = 20,
28 D3D12_MARKER_API_DECODEFRAME = 21,
29 D3D12_MARKER_API_PROCESSFRAMES = 22,
30 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
31 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
32 D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
33 D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
34 D3D12_MARKER_API_DECODEFRAME1 = 27,
35 D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
36 D3D12_MARKER_API_DECODEFRAME2 = 29,
37 D3D12_MARKER_API_PROCESSFRAMES1 = 30,
38 D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
39 D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
40 D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
41 D3D12_MARKER_API_DISPATCHRAYS = 34,
42 D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
43 D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
44 D3D12_MARKER_API_ESTIMATEMOTION = 37,
45 D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
46 D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
47 D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
48 D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
49 D3D12_MARKER_API_DISPATCHMESH = 42,
50 D3D12_MARKER_API_ENCODEFRAME = 43,
51 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
52 D3D12_MARKER_API_BARRIER = 45,
53 D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
54 D3D12_MARKER_API_DISPATCHGRAPH = 47,
55 D3D12_MARKER_API_SETPROGRAM = 48,
56 D3D12_MARKER_API_ENCODEFRAME1 = 49,
57 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
58 D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
59 D3D12_MARKER_API_PROCESSFRAMES2 = 52,
60 D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53,
61} D3D12_MARKER_API;
62
63typedef enum D3D12_AUTO_BREADCRUMB_OP {
64 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
65 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
66 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
67 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
68 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
69 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
70 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
71 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
72 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
73 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
74 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
75 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
76 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
77 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
78 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
79 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
80 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
81 D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
82 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
83 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
84 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
85 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
86 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
87 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
88 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
89 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
90 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
91 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
92 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
93 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
94 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
95 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
96 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
97 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
98 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
99 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
100 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
101 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
102 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
103 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
104 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
105 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
106 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
107 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
108 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
109 D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
110 D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
111 D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
112 D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
113 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
114 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
115 D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
116 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
117 D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS,
118} D3D12_AUTO_BREADCRUMB_OP;
119
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.h
new file mode 100644
index 0000000..96c812b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.h
@@ -0,0 +1,4280 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12sdklayers_h__
39#define __d3d12sdklayers_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Debug_FWD_DEFINED__
56#define __ID3D12Debug_FWD_DEFINED__
57typedef interface ID3D12Debug ID3D12Debug;
58
59#endif /* __ID3D12Debug_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12Debug1_FWD_DEFINED__
63#define __ID3D12Debug1_FWD_DEFINED__
64typedef interface ID3D12Debug1 ID3D12Debug1;
65
66#endif /* __ID3D12Debug1_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12Debug2_FWD_DEFINED__
70#define __ID3D12Debug2_FWD_DEFINED__
71typedef interface ID3D12Debug2 ID3D12Debug2;
72
73#endif /* __ID3D12Debug2_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Debug3_FWD_DEFINED__
77#define __ID3D12Debug3_FWD_DEFINED__
78typedef interface ID3D12Debug3 ID3D12Debug3;
79
80#endif /* __ID3D12Debug3_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12Debug4_FWD_DEFINED__
84#define __ID3D12Debug4_FWD_DEFINED__
85typedef interface ID3D12Debug4 ID3D12Debug4;
86
87#endif /* __ID3D12Debug4_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Debug5_FWD_DEFINED__
91#define __ID3D12Debug5_FWD_DEFINED__
92typedef interface ID3D12Debug5 ID3D12Debug5;
93
94#endif /* __ID3D12Debug5_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Debug6_FWD_DEFINED__
98#define __ID3D12Debug6_FWD_DEFINED__
99typedef interface ID3D12Debug6 ID3D12Debug6;
100
101#endif /* __ID3D12Debug6_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12DebugDevice1_FWD_DEFINED__
105#define __ID3D12DebugDevice1_FWD_DEFINED__
106typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1;
107
108#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12DebugDevice_FWD_DEFINED__
112#define __ID3D12DebugDevice_FWD_DEFINED__
113typedef interface ID3D12DebugDevice ID3D12DebugDevice;
114
115#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12DebugDevice2_FWD_DEFINED__
119#define __ID3D12DebugDevice2_FWD_DEFINED__
120typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2;
121
122#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__
126#define __ID3D12DebugCommandQueue_FWD_DEFINED__
127typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue;
128
129#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12DebugCommandQueue1_FWD_DEFINED__
133#define __ID3D12DebugCommandQueue1_FWD_DEFINED__
134typedef interface ID3D12DebugCommandQueue1 ID3D12DebugCommandQueue1;
135
136#endif /* __ID3D12DebugCommandQueue1_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__
140#define __ID3D12DebugCommandList1_FWD_DEFINED__
141typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1;
142
143#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12DebugCommandList_FWD_DEFINED__
147#define __ID3D12DebugCommandList_FWD_DEFINED__
148typedef interface ID3D12DebugCommandList ID3D12DebugCommandList;
149
150#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__
154#define __ID3D12DebugCommandList2_FWD_DEFINED__
155typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2;
156
157#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12DebugCommandList3_FWD_DEFINED__
161#define __ID3D12DebugCommandList3_FWD_DEFINED__
162typedef interface ID3D12DebugCommandList3 ID3D12DebugCommandList3;
163
164#endif /* __ID3D12DebugCommandList3_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12SharingContract_FWD_DEFINED__
168#define __ID3D12SharingContract_FWD_DEFINED__
169typedef interface ID3D12SharingContract ID3D12SharingContract;
170
171#endif /* __ID3D12SharingContract_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
175#define __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
176typedef interface ID3D12ManualWriteTrackingResource ID3D12ManualWriteTrackingResource;
177
178#endif /* __ID3D12ManualWriteTrackingResource_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12InfoQueue_FWD_DEFINED__
182#define __ID3D12InfoQueue_FWD_DEFINED__
183typedef interface ID3D12InfoQueue ID3D12InfoQueue;
184
185#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12InfoQueue1_FWD_DEFINED__
189#define __ID3D12InfoQueue1_FWD_DEFINED__
190typedef interface ID3D12InfoQueue1 ID3D12InfoQueue1;
191
192#endif /* __ID3D12InfoQueue1_FWD_DEFINED__ */
193
194
195/* header files for imported files */
196#include "oaidl.h"
197#include "ocidl.h"
198#include "d3d12.h"
199
200#ifdef __cplusplus
201extern "C"{
202#endif
203
204
205/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */
206/* [local] */
207
208#include <winapifamily.h>
209#pragma region App Family
210#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
211
212
213extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec;
214extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec;
215
216#ifndef __ID3D12Debug_INTERFACE_DEFINED__
217#define __ID3D12Debug_INTERFACE_DEFINED__
218
219/* interface ID3D12Debug */
220/* [unique][local][object][uuid] */
221
222
223EXTERN_C const IID IID_ID3D12Debug;
224
225#if defined(__cplusplus) && !defined(CINTERFACE)
226
227 MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0")
228 ID3D12Debug : public IUnknown
229 {
230 public:
231 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
232
233 };
234
235
236#else /* C style interface */
237
238 typedef struct ID3D12DebugVtbl
239 {
240 BEGIN_INTERFACE
241
242 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
243 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
244 ID3D12Debug * This,
245 REFIID riid,
246 _COM_Outptr_ void **ppvObject);
247
248 DECLSPEC_XFGVIRT(IUnknown, AddRef)
249 ULONG ( STDMETHODCALLTYPE *AddRef )(
250 ID3D12Debug * This);
251
252 DECLSPEC_XFGVIRT(IUnknown, Release)
253 ULONG ( STDMETHODCALLTYPE *Release )(
254 ID3D12Debug * This);
255
256 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
257 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
258 ID3D12Debug * This);
259
260 END_INTERFACE
261 } ID3D12DebugVtbl;
262
263 interface ID3D12Debug
264 {
265 CONST_VTBL struct ID3D12DebugVtbl *lpVtbl;
266 };
267
268
269
270#ifdef COBJMACROS
271
272
273#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \
274 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
275
276#define ID3D12Debug_AddRef(This) \
277 ( (This)->lpVtbl -> AddRef(This) )
278
279#define ID3D12Debug_Release(This) \
280 ( (This)->lpVtbl -> Release(This) )
281
282
283#define ID3D12Debug_EnableDebugLayer(This) \
284 ( (This)->lpVtbl -> EnableDebugLayer(This) )
285
286#endif /* COBJMACROS */
287
288
289#endif /* C style interface */
290
291
292
293
294#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */
295
296
297/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */
298/* [local] */
299
300typedef
301enum D3D12_GPU_BASED_VALIDATION_FLAGS
302 {
303 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0,
304 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1
305 } D3D12_GPU_BASED_VALIDATION_FLAGS;
306
307DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)
308
309
310extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec;
311extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec;
312
313#ifndef __ID3D12Debug1_INTERFACE_DEFINED__
314#define __ID3D12Debug1_INTERFACE_DEFINED__
315
316/* interface ID3D12Debug1 */
317/* [unique][local][object][uuid] */
318
319
320EXTERN_C const IID IID_ID3D12Debug1;
321
322#if defined(__cplusplus) && !defined(CINTERFACE)
323
324 MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304")
325 ID3D12Debug1 : public IUnknown
326 {
327 public:
328 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
329
330 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
331 BOOL Enable) = 0;
332
333 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
334 BOOL Enable) = 0;
335
336 };
337
338
339#else /* C style interface */
340
341 typedef struct ID3D12Debug1Vtbl
342 {
343 BEGIN_INTERFACE
344
345 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
346 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
347 ID3D12Debug1 * This,
348 REFIID riid,
349 _COM_Outptr_ void **ppvObject);
350
351 DECLSPEC_XFGVIRT(IUnknown, AddRef)
352 ULONG ( STDMETHODCALLTYPE *AddRef )(
353 ID3D12Debug1 * This);
354
355 DECLSPEC_XFGVIRT(IUnknown, Release)
356 ULONG ( STDMETHODCALLTYPE *Release )(
357 ID3D12Debug1 * This);
358
359 DECLSPEC_XFGVIRT(ID3D12Debug1, EnableDebugLayer)
360 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
361 ID3D12Debug1 * This);
362
363 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableGPUBasedValidation)
364 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
365 ID3D12Debug1 * This,
366 BOOL Enable);
367
368 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableSynchronizedCommandQueueValidation)
369 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
370 ID3D12Debug1 * This,
371 BOOL Enable);
372
373 END_INTERFACE
374 } ID3D12Debug1Vtbl;
375
376 interface ID3D12Debug1
377 {
378 CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl;
379 };
380
381
382
383#ifdef COBJMACROS
384
385
386#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \
387 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
388
389#define ID3D12Debug1_AddRef(This) \
390 ( (This)->lpVtbl -> AddRef(This) )
391
392#define ID3D12Debug1_Release(This) \
393 ( (This)->lpVtbl -> Release(This) )
394
395
396#define ID3D12Debug1_EnableDebugLayer(This) \
397 ( (This)->lpVtbl -> EnableDebugLayer(This) )
398
399#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \
400 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
401
402#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
403 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
404
405#endif /* COBJMACROS */
406
407
408#endif /* C style interface */
409
410
411
412
413#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */
414
415
416#ifndef __ID3D12Debug2_INTERFACE_DEFINED__
417#define __ID3D12Debug2_INTERFACE_DEFINED__
418
419/* interface ID3D12Debug2 */
420/* [unique][local][object][uuid] */
421
422
423EXTERN_C const IID IID_ID3D12Debug2;
424
425#if defined(__cplusplus) && !defined(CINTERFACE)
426
427 MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374")
428 ID3D12Debug2 : public IUnknown
429 {
430 public:
431 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
432 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
433
434 };
435
436
437#else /* C style interface */
438
439 typedef struct ID3D12Debug2Vtbl
440 {
441 BEGIN_INTERFACE
442
443 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
444 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
445 ID3D12Debug2 * This,
446 REFIID riid,
447 _COM_Outptr_ void **ppvObject);
448
449 DECLSPEC_XFGVIRT(IUnknown, AddRef)
450 ULONG ( STDMETHODCALLTYPE *AddRef )(
451 ID3D12Debug2 * This);
452
453 DECLSPEC_XFGVIRT(IUnknown, Release)
454 ULONG ( STDMETHODCALLTYPE *Release )(
455 ID3D12Debug2 * This);
456
457 DECLSPEC_XFGVIRT(ID3D12Debug2, SetGPUBasedValidationFlags)
458 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
459 ID3D12Debug2 * This,
460 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
461
462 END_INTERFACE
463 } ID3D12Debug2Vtbl;
464
465 interface ID3D12Debug2
466 {
467 CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl;
468 };
469
470
471
472#ifdef COBJMACROS
473
474
475#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \
476 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
477
478#define ID3D12Debug2_AddRef(This) \
479 ( (This)->lpVtbl -> AddRef(This) )
480
481#define ID3D12Debug2_Release(This) \
482 ( (This)->lpVtbl -> Release(This) )
483
484
485#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \
486 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
487
488#endif /* COBJMACROS */
489
490
491#endif /* C style interface */
492
493
494
495
496#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */
497
498
499#ifndef __ID3D12Debug3_INTERFACE_DEFINED__
500#define __ID3D12Debug3_INTERFACE_DEFINED__
501
502/* interface ID3D12Debug3 */
503/* [unique][local][object][uuid] */
504
505
506EXTERN_C const IID IID_ID3D12Debug3;
507
508#if defined(__cplusplus) && !defined(CINTERFACE)
509
510 MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1")
511 ID3D12Debug3 : public ID3D12Debug
512 {
513 public:
514 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
515 BOOL Enable) = 0;
516
517 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
518 BOOL Enable) = 0;
519
520 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
521 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
522
523 };
524
525
526#else /* C style interface */
527
528 typedef struct ID3D12Debug3Vtbl
529 {
530 BEGIN_INTERFACE
531
532 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
533 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
534 ID3D12Debug3 * This,
535 REFIID riid,
536 _COM_Outptr_ void **ppvObject);
537
538 DECLSPEC_XFGVIRT(IUnknown, AddRef)
539 ULONG ( STDMETHODCALLTYPE *AddRef )(
540 ID3D12Debug3 * This);
541
542 DECLSPEC_XFGVIRT(IUnknown, Release)
543 ULONG ( STDMETHODCALLTYPE *Release )(
544 ID3D12Debug3 * This);
545
546 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
547 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
548 ID3D12Debug3 * This);
549
550 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
551 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
552 ID3D12Debug3 * This,
553 BOOL Enable);
554
555 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
556 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
557 ID3D12Debug3 * This,
558 BOOL Enable);
559
560 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
561 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
562 ID3D12Debug3 * This,
563 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
564
565 END_INTERFACE
566 } ID3D12Debug3Vtbl;
567
568 interface ID3D12Debug3
569 {
570 CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl;
571 };
572
573
574
575#ifdef COBJMACROS
576
577
578#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \
579 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
580
581#define ID3D12Debug3_AddRef(This) \
582 ( (This)->lpVtbl -> AddRef(This) )
583
584#define ID3D12Debug3_Release(This) \
585 ( (This)->lpVtbl -> Release(This) )
586
587
588#define ID3D12Debug3_EnableDebugLayer(This) \
589 ( (This)->lpVtbl -> EnableDebugLayer(This) )
590
591
592#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \
593 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
594
595#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
596 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
597
598#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \
599 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
600
601#endif /* COBJMACROS */
602
603
604#endif /* C style interface */
605
606
607
608
609#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */
610
611
612#ifndef __ID3D12Debug4_INTERFACE_DEFINED__
613#define __ID3D12Debug4_INTERFACE_DEFINED__
614
615/* interface ID3D12Debug4 */
616/* [unique][local][object][uuid] */
617
618
619EXTERN_C const IID IID_ID3D12Debug4;
620
621#if defined(__cplusplus) && !defined(CINTERFACE)
622
623 MIDL_INTERFACE("014b816e-9ec5-4a2f-a845-ffbe441ce13a")
624 ID3D12Debug4 : public ID3D12Debug3
625 {
626 public:
627 virtual void STDMETHODCALLTYPE DisableDebugLayer( void) = 0;
628
629 };
630
631
632#else /* C style interface */
633
634 typedef struct ID3D12Debug4Vtbl
635 {
636 BEGIN_INTERFACE
637
638 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
639 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
640 ID3D12Debug4 * This,
641 REFIID riid,
642 _COM_Outptr_ void **ppvObject);
643
644 DECLSPEC_XFGVIRT(IUnknown, AddRef)
645 ULONG ( STDMETHODCALLTYPE *AddRef )(
646 ID3D12Debug4 * This);
647
648 DECLSPEC_XFGVIRT(IUnknown, Release)
649 ULONG ( STDMETHODCALLTYPE *Release )(
650 ID3D12Debug4 * This);
651
652 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
653 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
654 ID3D12Debug4 * This);
655
656 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
657 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
658 ID3D12Debug4 * This,
659 BOOL Enable);
660
661 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
662 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
663 ID3D12Debug4 * This,
664 BOOL Enable);
665
666 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
667 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
668 ID3D12Debug4 * This,
669 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
670
671 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
672 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
673 ID3D12Debug4 * This);
674
675 END_INTERFACE
676 } ID3D12Debug4Vtbl;
677
678 interface ID3D12Debug4
679 {
680 CONST_VTBL struct ID3D12Debug4Vtbl *lpVtbl;
681 };
682
683
684
685#ifdef COBJMACROS
686
687
688#define ID3D12Debug4_QueryInterface(This,riid,ppvObject) \
689 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
690
691#define ID3D12Debug4_AddRef(This) \
692 ( (This)->lpVtbl -> AddRef(This) )
693
694#define ID3D12Debug4_Release(This) \
695 ( (This)->lpVtbl -> Release(This) )
696
697
698#define ID3D12Debug4_EnableDebugLayer(This) \
699 ( (This)->lpVtbl -> EnableDebugLayer(This) )
700
701
702#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable) \
703 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
704
705#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
706 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
707
708#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags) \
709 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
710
711
712#define ID3D12Debug4_DisableDebugLayer(This) \
713 ( (This)->lpVtbl -> DisableDebugLayer(This) )
714
715#endif /* COBJMACROS */
716
717
718#endif /* C style interface */
719
720
721
722
723#endif /* __ID3D12Debug4_INTERFACE_DEFINED__ */
724
725
726#ifndef __ID3D12Debug5_INTERFACE_DEFINED__
727#define __ID3D12Debug5_INTERFACE_DEFINED__
728
729/* interface ID3D12Debug5 */
730/* [unique][local][object][uuid] */
731
732
733EXTERN_C const IID IID_ID3D12Debug5;
734
735#if defined(__cplusplus) && !defined(CINTERFACE)
736
737 MIDL_INTERFACE("548d6b12-09fa-40e0-9069-5dcd589a52c9")
738 ID3D12Debug5 : public ID3D12Debug4
739 {
740 public:
741 virtual void STDMETHODCALLTYPE SetEnableAutoName(
742 BOOL Enable) = 0;
743
744 };
745
746
747#else /* C style interface */
748
749 typedef struct ID3D12Debug5Vtbl
750 {
751 BEGIN_INTERFACE
752
753 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
754 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
755 ID3D12Debug5 * This,
756 REFIID riid,
757 _COM_Outptr_ void **ppvObject);
758
759 DECLSPEC_XFGVIRT(IUnknown, AddRef)
760 ULONG ( STDMETHODCALLTYPE *AddRef )(
761 ID3D12Debug5 * This);
762
763 DECLSPEC_XFGVIRT(IUnknown, Release)
764 ULONG ( STDMETHODCALLTYPE *Release )(
765 ID3D12Debug5 * This);
766
767 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
768 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
769 ID3D12Debug5 * This);
770
771 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
772 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
773 ID3D12Debug5 * This,
774 BOOL Enable);
775
776 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
777 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
778 ID3D12Debug5 * This,
779 BOOL Enable);
780
781 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
782 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
783 ID3D12Debug5 * This,
784 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
785
786 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
787 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
788 ID3D12Debug5 * This);
789
790 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
791 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
792 ID3D12Debug5 * This,
793 BOOL Enable);
794
795 END_INTERFACE
796 } ID3D12Debug5Vtbl;
797
798 interface ID3D12Debug5
799 {
800 CONST_VTBL struct ID3D12Debug5Vtbl *lpVtbl;
801 };
802
803
804
805#ifdef COBJMACROS
806
807
808#define ID3D12Debug5_QueryInterface(This,riid,ppvObject) \
809 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
810
811#define ID3D12Debug5_AddRef(This) \
812 ( (This)->lpVtbl -> AddRef(This) )
813
814#define ID3D12Debug5_Release(This) \
815 ( (This)->lpVtbl -> Release(This) )
816
817
818#define ID3D12Debug5_EnableDebugLayer(This) \
819 ( (This)->lpVtbl -> EnableDebugLayer(This) )
820
821
822#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable) \
823 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
824
825#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
826 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
827
828#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags) \
829 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
830
831
832#define ID3D12Debug5_DisableDebugLayer(This) \
833 ( (This)->lpVtbl -> DisableDebugLayer(This) )
834
835
836#define ID3D12Debug5_SetEnableAutoName(This,Enable) \
837 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
838
839#endif /* COBJMACROS */
840
841
842#endif /* C style interface */
843
844
845
846
847#endif /* __ID3D12Debug5_INTERFACE_DEFINED__ */
848
849
850#ifndef __ID3D12Debug6_INTERFACE_DEFINED__
851#define __ID3D12Debug6_INTERFACE_DEFINED__
852
853/* interface ID3D12Debug6 */
854/* [unique][local][object][uuid] */
855
856
857EXTERN_C const IID IID_ID3D12Debug6;
858
859#if defined(__cplusplus) && !defined(CINTERFACE)
860
861 MIDL_INTERFACE("82a816d6-5d01-4157-97d0-4975463fd1ed")
862 ID3D12Debug6 : public ID3D12Debug5
863 {
864 public:
865 virtual void STDMETHODCALLTYPE SetForceLegacyBarrierValidation(
866 BOOL Enable) = 0;
867
868 };
869
870
871#else /* C style interface */
872
873 typedef struct ID3D12Debug6Vtbl
874 {
875 BEGIN_INTERFACE
876
877 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
878 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
879 ID3D12Debug6 * This,
880 REFIID riid,
881 _COM_Outptr_ void **ppvObject);
882
883 DECLSPEC_XFGVIRT(IUnknown, AddRef)
884 ULONG ( STDMETHODCALLTYPE *AddRef )(
885 ID3D12Debug6 * This);
886
887 DECLSPEC_XFGVIRT(IUnknown, Release)
888 ULONG ( STDMETHODCALLTYPE *Release )(
889 ID3D12Debug6 * This);
890
891 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
892 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
893 ID3D12Debug6 * This);
894
895 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
896 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
897 ID3D12Debug6 * This,
898 BOOL Enable);
899
900 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
901 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
902 ID3D12Debug6 * This,
903 BOOL Enable);
904
905 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
906 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
907 ID3D12Debug6 * This,
908 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
909
910 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
911 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
912 ID3D12Debug6 * This);
913
914 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
915 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
916 ID3D12Debug6 * This,
917 BOOL Enable);
918
919 DECLSPEC_XFGVIRT(ID3D12Debug6, SetForceLegacyBarrierValidation)
920 void ( STDMETHODCALLTYPE *SetForceLegacyBarrierValidation )(
921 ID3D12Debug6 * This,
922 BOOL Enable);
923
924 END_INTERFACE
925 } ID3D12Debug6Vtbl;
926
927 interface ID3D12Debug6
928 {
929 CONST_VTBL struct ID3D12Debug6Vtbl *lpVtbl;
930 };
931
932
933
934#ifdef COBJMACROS
935
936
937#define ID3D12Debug6_QueryInterface(This,riid,ppvObject) \
938 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
939
940#define ID3D12Debug6_AddRef(This) \
941 ( (This)->lpVtbl -> AddRef(This) )
942
943#define ID3D12Debug6_Release(This) \
944 ( (This)->lpVtbl -> Release(This) )
945
946
947#define ID3D12Debug6_EnableDebugLayer(This) \
948 ( (This)->lpVtbl -> EnableDebugLayer(This) )
949
950
951#define ID3D12Debug6_SetEnableGPUBasedValidation(This,Enable) \
952 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
953
954#define ID3D12Debug6_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
955 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
956
957#define ID3D12Debug6_SetGPUBasedValidationFlags(This,Flags) \
958 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
959
960
961#define ID3D12Debug6_DisableDebugLayer(This) \
962 ( (This)->lpVtbl -> DisableDebugLayer(This) )
963
964
965#define ID3D12Debug6_SetEnableAutoName(This,Enable) \
966 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
967
968
969#define ID3D12Debug6_SetForceLegacyBarrierValidation(This,Enable) \
970 ( (This)->lpVtbl -> SetForceLegacyBarrierValidation(This,Enable) )
971
972#endif /* COBJMACROS */
973
974
975#endif /* C style interface */
976
977
978
979
980#endif /* __ID3D12Debug6_INTERFACE_DEFINED__ */
981
982
983/* interface __MIDL_itf_d3d12sdklayers_0000_0007 */
984/* [local] */
985
986DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);
987typedef
988enum D3D12_RLDO_FLAGS
989 {
990 D3D12_RLDO_NONE = 0,
991 D3D12_RLDO_SUMMARY = 0x1,
992 D3D12_RLDO_DETAIL = 0x2,
993 D3D12_RLDO_IGNORE_INTERNAL = 0x4
994 } D3D12_RLDO_FLAGS;
995
996DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)
997typedef
998enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
999 {
1000 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
1001 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
1002 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) ,
1003 D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR + 1 )
1004 } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
1005
1006typedef
1007enum D3D12_DEBUG_FEATURE
1008 {
1009 D3D12_DEBUG_FEATURE_NONE = 0,
1010 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1,
1011 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2,
1012 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4,
1013 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8
1014 } D3D12_DEBUG_FEATURE;
1015
1016DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)
1017typedef
1018enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
1019 {
1020 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0,
1021 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) ,
1022 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) ,
1023 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) ,
1024 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 )
1025 } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
1026
1027typedef
1028enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
1029 {
1030 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0,
1031 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1,
1032 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2,
1033 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4,
1034 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7
1035 } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
1036
1037DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)
1038typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
1039 {
1040 UINT MaxMessagesPerCommandList;
1041 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
1042 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
1043 } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
1044
1045typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
1046 {
1047 FLOAT SlowdownFactor;
1048 } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
1049
1050typedef
1051enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
1052 {
1053 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED = 0,
1054 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED + 1 ) ,
1055 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED + 1 ) ,
1056 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT = D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
1057 } D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
1058
1059
1060
1061extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_c_ifspec;
1062extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_s_ifspec;
1063
1064#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__
1065#define __ID3D12DebugDevice1_INTERFACE_DEFINED__
1066
1067/* interface ID3D12DebugDevice1 */
1068/* [unique][local][object][uuid] */
1069
1070
1071EXTERN_C const IID IID_ID3D12DebugDevice1;
1072
1073#if defined(__cplusplus) && !defined(CINTERFACE)
1074
1075 MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88")
1076 ID3D12DebugDevice1 : public IUnknown
1077 {
1078 public:
1079 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1080 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1081 _In_reads_bytes_(DataSize) const void *pData,
1082 UINT DataSize) = 0;
1083
1084 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1085 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1086 _Out_writes_bytes_(DataSize) void *pData,
1087 UINT DataSize) = 0;
1088
1089 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1090 D3D12_RLDO_FLAGS Flags) = 0;
1091
1092 };
1093
1094
1095#else /* C style interface */
1096
1097 typedef struct ID3D12DebugDevice1Vtbl
1098 {
1099 BEGIN_INTERFACE
1100
1101 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1102 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1103 ID3D12DebugDevice1 * This,
1104 REFIID riid,
1105 _COM_Outptr_ void **ppvObject);
1106
1107 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1108 ULONG ( STDMETHODCALLTYPE *AddRef )(
1109 ID3D12DebugDevice1 * This);
1110
1111 DECLSPEC_XFGVIRT(IUnknown, Release)
1112 ULONG ( STDMETHODCALLTYPE *Release )(
1113 ID3D12DebugDevice1 * This);
1114
1115 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, SetDebugParameter)
1116 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1117 ID3D12DebugDevice1 * This,
1118 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1119 _In_reads_bytes_(DataSize) const void *pData,
1120 UINT DataSize);
1121
1122 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, GetDebugParameter)
1123 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1124 ID3D12DebugDevice1 * This,
1125 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1126 _Out_writes_bytes_(DataSize) void *pData,
1127 UINT DataSize);
1128
1129 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, ReportLiveDeviceObjects)
1130 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1131 ID3D12DebugDevice1 * This,
1132 D3D12_RLDO_FLAGS Flags);
1133
1134 END_INTERFACE
1135 } ID3D12DebugDevice1Vtbl;
1136
1137 interface ID3D12DebugDevice1
1138 {
1139 CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl;
1140 };
1141
1142
1143
1144#ifdef COBJMACROS
1145
1146
1147#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \
1148 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1149
1150#define ID3D12DebugDevice1_AddRef(This) \
1151 ( (This)->lpVtbl -> AddRef(This) )
1152
1153#define ID3D12DebugDevice1_Release(This) \
1154 ( (This)->lpVtbl -> Release(This) )
1155
1156
1157#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \
1158 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1159
1160#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \
1161 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1162
1163#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \
1164 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1165
1166#endif /* COBJMACROS */
1167
1168
1169#endif /* C style interface */
1170
1171
1172
1173
1174#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */
1175
1176
1177#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__
1178#define __ID3D12DebugDevice_INTERFACE_DEFINED__
1179
1180/* interface ID3D12DebugDevice */
1181/* [unique][local][object][uuid] */
1182
1183
1184EXTERN_C const IID IID_ID3D12DebugDevice;
1185
1186#if defined(__cplusplus) && !defined(CINTERFACE)
1187
1188 MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e")
1189 ID3D12DebugDevice : public IUnknown
1190 {
1191 public:
1192 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1193 D3D12_DEBUG_FEATURE Mask) = 0;
1194
1195 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1196
1197 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1198 D3D12_RLDO_FLAGS Flags) = 0;
1199
1200 };
1201
1202
1203#else /* C style interface */
1204
1205 typedef struct ID3D12DebugDeviceVtbl
1206 {
1207 BEGIN_INTERFACE
1208
1209 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1210 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1211 ID3D12DebugDevice * This,
1212 REFIID riid,
1213 _COM_Outptr_ void **ppvObject);
1214
1215 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1216 ULONG ( STDMETHODCALLTYPE *AddRef )(
1217 ID3D12DebugDevice * This);
1218
1219 DECLSPEC_XFGVIRT(IUnknown, Release)
1220 ULONG ( STDMETHODCALLTYPE *Release )(
1221 ID3D12DebugDevice * This);
1222
1223 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1224 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1225 ID3D12DebugDevice * This,
1226 D3D12_DEBUG_FEATURE Mask);
1227
1228 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1229 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1230 ID3D12DebugDevice * This);
1231
1232 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1233 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1234 ID3D12DebugDevice * This,
1235 D3D12_RLDO_FLAGS Flags);
1236
1237 END_INTERFACE
1238 } ID3D12DebugDeviceVtbl;
1239
1240 interface ID3D12DebugDevice
1241 {
1242 CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl;
1243 };
1244
1245
1246
1247#ifdef COBJMACROS
1248
1249
1250#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \
1251 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1252
1253#define ID3D12DebugDevice_AddRef(This) \
1254 ( (This)->lpVtbl -> AddRef(This) )
1255
1256#define ID3D12DebugDevice_Release(This) \
1257 ( (This)->lpVtbl -> Release(This) )
1258
1259
1260#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \
1261 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1262
1263#define ID3D12DebugDevice_GetFeatureMask(This) \
1264 ( (This)->lpVtbl -> GetFeatureMask(This) )
1265
1266#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \
1267 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1268
1269#endif /* COBJMACROS */
1270
1271
1272#endif /* C style interface */
1273
1274
1275
1276
1277#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */
1278
1279
1280#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__
1281#define __ID3D12DebugDevice2_INTERFACE_DEFINED__
1282
1283/* interface ID3D12DebugDevice2 */
1284/* [unique][local][object][uuid] */
1285
1286
1287EXTERN_C const IID IID_ID3D12DebugDevice2;
1288
1289#if defined(__cplusplus) && !defined(CINTERFACE)
1290
1291 MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd")
1292 ID3D12DebugDevice2 : public ID3D12DebugDevice
1293 {
1294 public:
1295 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1296 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1297 _In_reads_bytes_(DataSize) const void *pData,
1298 UINT DataSize) = 0;
1299
1300 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1301 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1302 _Out_writes_bytes_(DataSize) void *pData,
1303 UINT DataSize) = 0;
1304
1305 };
1306
1307
1308#else /* C style interface */
1309
1310 typedef struct ID3D12DebugDevice2Vtbl
1311 {
1312 BEGIN_INTERFACE
1313
1314 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1315 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1316 ID3D12DebugDevice2 * This,
1317 REFIID riid,
1318 _COM_Outptr_ void **ppvObject);
1319
1320 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1321 ULONG ( STDMETHODCALLTYPE *AddRef )(
1322 ID3D12DebugDevice2 * This);
1323
1324 DECLSPEC_XFGVIRT(IUnknown, Release)
1325 ULONG ( STDMETHODCALLTYPE *Release )(
1326 ID3D12DebugDevice2 * This);
1327
1328 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1329 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1330 ID3D12DebugDevice2 * This,
1331 D3D12_DEBUG_FEATURE Mask);
1332
1333 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1334 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1335 ID3D12DebugDevice2 * This);
1336
1337 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1338 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1339 ID3D12DebugDevice2 * This,
1340 D3D12_RLDO_FLAGS Flags);
1341
1342 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, SetDebugParameter)
1343 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1344 ID3D12DebugDevice2 * This,
1345 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1346 _In_reads_bytes_(DataSize) const void *pData,
1347 UINT DataSize);
1348
1349 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, GetDebugParameter)
1350 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1351 ID3D12DebugDevice2 * This,
1352 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1353 _Out_writes_bytes_(DataSize) void *pData,
1354 UINT DataSize);
1355
1356 END_INTERFACE
1357 } ID3D12DebugDevice2Vtbl;
1358
1359 interface ID3D12DebugDevice2
1360 {
1361 CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl;
1362 };
1363
1364
1365
1366#ifdef COBJMACROS
1367
1368
1369#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \
1370 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1371
1372#define ID3D12DebugDevice2_AddRef(This) \
1373 ( (This)->lpVtbl -> AddRef(This) )
1374
1375#define ID3D12DebugDevice2_Release(This) \
1376 ( (This)->lpVtbl -> Release(This) )
1377
1378
1379#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \
1380 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1381
1382#define ID3D12DebugDevice2_GetFeatureMask(This) \
1383 ( (This)->lpVtbl -> GetFeatureMask(This) )
1384
1385#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \
1386 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1387
1388
1389#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \
1390 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1391
1392#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \
1393 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1394
1395#endif /* COBJMACROS */
1396
1397
1398#endif /* C style interface */
1399
1400
1401
1402
1403#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */
1404
1405
1406/* interface __MIDL_itf_d3d12sdklayers_0000_0010 */
1407/* [local] */
1408
1409DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);
1410
1411
1412extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_c_ifspec;
1413extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_s_ifspec;
1414
1415#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1416#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1417
1418/* interface ID3D12DebugCommandQueue */
1419/* [unique][local][object][uuid] */
1420
1421
1422EXTERN_C const IID IID_ID3D12DebugCommandQueue;
1423
1424#if defined(__cplusplus) && !defined(CINTERFACE)
1425
1426 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a")
1427 ID3D12DebugCommandQueue : public IUnknown
1428 {
1429 public:
1430 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1431 _In_ ID3D12Resource *pResource,
1432 UINT Subresource,
1433 UINT State) = 0;
1434
1435 };
1436
1437
1438#else /* C style interface */
1439
1440 typedef struct ID3D12DebugCommandQueueVtbl
1441 {
1442 BEGIN_INTERFACE
1443
1444 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1445 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1446 ID3D12DebugCommandQueue * This,
1447 REFIID riid,
1448 _COM_Outptr_ void **ppvObject);
1449
1450 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1451 ULONG ( STDMETHODCALLTYPE *AddRef )(
1452 ID3D12DebugCommandQueue * This);
1453
1454 DECLSPEC_XFGVIRT(IUnknown, Release)
1455 ULONG ( STDMETHODCALLTYPE *Release )(
1456 ID3D12DebugCommandQueue * This);
1457
1458 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1459 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1460 ID3D12DebugCommandQueue * This,
1461 _In_ ID3D12Resource *pResource,
1462 UINT Subresource,
1463 UINT State);
1464
1465 END_INTERFACE
1466 } ID3D12DebugCommandQueueVtbl;
1467
1468 interface ID3D12DebugCommandQueue
1469 {
1470 CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl;
1471 };
1472
1473
1474
1475#ifdef COBJMACROS
1476
1477
1478#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \
1479 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1480
1481#define ID3D12DebugCommandQueue_AddRef(This) \
1482 ( (This)->lpVtbl -> AddRef(This) )
1483
1484#define ID3D12DebugCommandQueue_Release(This) \
1485 ( (This)->lpVtbl -> Release(This) )
1486
1487
1488#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \
1489 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1490
1491#endif /* COBJMACROS */
1492
1493
1494#endif /* C style interface */
1495
1496
1497
1498
1499#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */
1500
1501
1502#ifndef __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
1503#define __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
1504
1505/* interface ID3D12DebugCommandQueue1 */
1506/* [unique][local][object][uuid] */
1507
1508
1509EXTERN_C const IID IID_ID3D12DebugCommandQueue1;
1510
1511#if defined(__cplusplus) && !defined(CINTERFACE)
1512
1513 MIDL_INTERFACE("16be35a2-bfd6-49f2-bcae-eaae4aff862d")
1514 ID3D12DebugCommandQueue1 : public ID3D12DebugCommandQueue
1515 {
1516 public:
1517 virtual void STDMETHODCALLTYPE AssertResourceAccess(
1518 _In_ ID3D12Resource *pResource,
1519 UINT Subresource,
1520 D3D12_BARRIER_ACCESS Access) = 0;
1521
1522 virtual void STDMETHODCALLTYPE AssertTextureLayout(
1523 _In_ ID3D12Resource *pResource,
1524 UINT Subresource,
1525 D3D12_BARRIER_LAYOUT Layout) = 0;
1526
1527 };
1528
1529
1530#else /* C style interface */
1531
1532 typedef struct ID3D12DebugCommandQueue1Vtbl
1533 {
1534 BEGIN_INTERFACE
1535
1536 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1537 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1538 ID3D12DebugCommandQueue1 * This,
1539 REFIID riid,
1540 _COM_Outptr_ void **ppvObject);
1541
1542 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1543 ULONG ( STDMETHODCALLTYPE *AddRef )(
1544 ID3D12DebugCommandQueue1 * This);
1545
1546 DECLSPEC_XFGVIRT(IUnknown, Release)
1547 ULONG ( STDMETHODCALLTYPE *Release )(
1548 ID3D12DebugCommandQueue1 * This);
1549
1550 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1551 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1552 ID3D12DebugCommandQueue1 * This,
1553 _In_ ID3D12Resource *pResource,
1554 UINT Subresource,
1555 UINT State);
1556
1557 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertResourceAccess)
1558 void ( STDMETHODCALLTYPE *AssertResourceAccess )(
1559 ID3D12DebugCommandQueue1 * This,
1560 _In_ ID3D12Resource *pResource,
1561 UINT Subresource,
1562 D3D12_BARRIER_ACCESS Access);
1563
1564 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertTextureLayout)
1565 void ( STDMETHODCALLTYPE *AssertTextureLayout )(
1566 ID3D12DebugCommandQueue1 * This,
1567 _In_ ID3D12Resource *pResource,
1568 UINT Subresource,
1569 D3D12_BARRIER_LAYOUT Layout);
1570
1571 END_INTERFACE
1572 } ID3D12DebugCommandQueue1Vtbl;
1573
1574 interface ID3D12DebugCommandQueue1
1575 {
1576 CONST_VTBL struct ID3D12DebugCommandQueue1Vtbl *lpVtbl;
1577 };
1578
1579
1580
1581#ifdef COBJMACROS
1582
1583
1584#define ID3D12DebugCommandQueue1_QueryInterface(This,riid,ppvObject) \
1585 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1586
1587#define ID3D12DebugCommandQueue1_AddRef(This) \
1588 ( (This)->lpVtbl -> AddRef(This) )
1589
1590#define ID3D12DebugCommandQueue1_Release(This) \
1591 ( (This)->lpVtbl -> Release(This) )
1592
1593
1594#define ID3D12DebugCommandQueue1_AssertResourceState(This,pResource,Subresource,State) \
1595 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1596
1597
1598#define ID3D12DebugCommandQueue1_AssertResourceAccess(This,pResource,Subresource,Access) \
1599 ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
1600
1601#define ID3D12DebugCommandQueue1_AssertTextureLayout(This,pResource,Subresource,Layout) \
1602 ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
1603
1604#endif /* COBJMACROS */
1605
1606
1607#endif /* C style interface */
1608
1609
1610
1611
1612#endif /* __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__ */
1613
1614
1615/* interface __MIDL_itf_d3d12sdklayers_0000_0012 */
1616/* [local] */
1617
1618typedef
1619enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
1620 {
1621 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0
1622 } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
1623
1624typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
1625 {
1626 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
1627 } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
1628
1629
1630
1631extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_c_ifspec;
1632extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_s_ifspec;
1633
1634#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1635#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1636
1637/* interface ID3D12DebugCommandList1 */
1638/* [unique][local][object][uuid] */
1639
1640
1641EXTERN_C const IID IID_ID3D12DebugCommandList1;
1642
1643#if defined(__cplusplus) && !defined(CINTERFACE)
1644
1645 MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37")
1646 ID3D12DebugCommandList1 : public IUnknown
1647 {
1648 public:
1649 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1650 _In_ ID3D12Resource *pResource,
1651 UINT Subresource,
1652 UINT State) = 0;
1653
1654 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1655 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1656 _In_reads_bytes_(DataSize) const void *pData,
1657 UINT DataSize) = 0;
1658
1659 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1660 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1661 _Out_writes_bytes_(DataSize) void *pData,
1662 UINT DataSize) = 0;
1663
1664 };
1665
1666
1667#else /* C style interface */
1668
1669 typedef struct ID3D12DebugCommandList1Vtbl
1670 {
1671 BEGIN_INTERFACE
1672
1673 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1674 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1675 ID3D12DebugCommandList1 * This,
1676 REFIID riid,
1677 _COM_Outptr_ void **ppvObject);
1678
1679 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1680 ULONG ( STDMETHODCALLTYPE *AddRef )(
1681 ID3D12DebugCommandList1 * This);
1682
1683 DECLSPEC_XFGVIRT(IUnknown, Release)
1684 ULONG ( STDMETHODCALLTYPE *Release )(
1685 ID3D12DebugCommandList1 * This);
1686
1687 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, AssertResourceState)
1688 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1689 ID3D12DebugCommandList1 * This,
1690 _In_ ID3D12Resource *pResource,
1691 UINT Subresource,
1692 UINT State);
1693
1694 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, SetDebugParameter)
1695 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1696 ID3D12DebugCommandList1 * This,
1697 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1698 _In_reads_bytes_(DataSize) const void *pData,
1699 UINT DataSize);
1700
1701 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, GetDebugParameter)
1702 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1703 ID3D12DebugCommandList1 * This,
1704 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1705 _Out_writes_bytes_(DataSize) void *pData,
1706 UINT DataSize);
1707
1708 END_INTERFACE
1709 } ID3D12DebugCommandList1Vtbl;
1710
1711 interface ID3D12DebugCommandList1
1712 {
1713 CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl;
1714 };
1715
1716
1717
1718#ifdef COBJMACROS
1719
1720
1721#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \
1722 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1723
1724#define ID3D12DebugCommandList1_AddRef(This) \
1725 ( (This)->lpVtbl -> AddRef(This) )
1726
1727#define ID3D12DebugCommandList1_Release(This) \
1728 ( (This)->lpVtbl -> Release(This) )
1729
1730
1731#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \
1732 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1733
1734#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \
1735 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1736
1737#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \
1738 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1739
1740#endif /* COBJMACROS */
1741
1742
1743#endif /* C style interface */
1744
1745
1746
1747
1748#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */
1749
1750
1751#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__
1752#define __ID3D12DebugCommandList_INTERFACE_DEFINED__
1753
1754/* interface ID3D12DebugCommandList */
1755/* [unique][local][object][uuid] */
1756
1757
1758EXTERN_C const IID IID_ID3D12DebugCommandList;
1759
1760#if defined(__cplusplus) && !defined(CINTERFACE)
1761
1762 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f")
1763 ID3D12DebugCommandList : public IUnknown
1764 {
1765 public:
1766 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1767 _In_ ID3D12Resource *pResource,
1768 UINT Subresource,
1769 UINT State) = 0;
1770
1771 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1772 D3D12_DEBUG_FEATURE Mask) = 0;
1773
1774 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1775
1776 };
1777
1778
1779#else /* C style interface */
1780
1781 typedef struct ID3D12DebugCommandListVtbl
1782 {
1783 BEGIN_INTERFACE
1784
1785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1787 ID3D12DebugCommandList * This,
1788 REFIID riid,
1789 _COM_Outptr_ void **ppvObject);
1790
1791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1792 ULONG ( STDMETHODCALLTYPE *AddRef )(
1793 ID3D12DebugCommandList * This);
1794
1795 DECLSPEC_XFGVIRT(IUnknown, Release)
1796 ULONG ( STDMETHODCALLTYPE *Release )(
1797 ID3D12DebugCommandList * This);
1798
1799 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1800 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1801 ID3D12DebugCommandList * This,
1802 _In_ ID3D12Resource *pResource,
1803 UINT Subresource,
1804 UINT State);
1805
1806 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1807 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1808 ID3D12DebugCommandList * This,
1809 D3D12_DEBUG_FEATURE Mask);
1810
1811 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1812 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1813 ID3D12DebugCommandList * This);
1814
1815 END_INTERFACE
1816 } ID3D12DebugCommandListVtbl;
1817
1818 interface ID3D12DebugCommandList
1819 {
1820 CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl;
1821 };
1822
1823
1824
1825#ifdef COBJMACROS
1826
1827
1828#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \
1829 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1830
1831#define ID3D12DebugCommandList_AddRef(This) \
1832 ( (This)->lpVtbl -> AddRef(This) )
1833
1834#define ID3D12DebugCommandList_Release(This) \
1835 ( (This)->lpVtbl -> Release(This) )
1836
1837
1838#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \
1839 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1840
1841#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \
1842 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1843
1844#define ID3D12DebugCommandList_GetFeatureMask(This) \
1845 ( (This)->lpVtbl -> GetFeatureMask(This) )
1846
1847#endif /* COBJMACROS */
1848
1849
1850#endif /* C style interface */
1851
1852
1853
1854
1855#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */
1856
1857
1858#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1859#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1860
1861/* interface ID3D12DebugCommandList2 */
1862/* [unique][local][object][uuid] */
1863
1864
1865EXTERN_C const IID IID_ID3D12DebugCommandList2;
1866
1867#if defined(__cplusplus) && !defined(CINTERFACE)
1868
1869 MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e")
1870 ID3D12DebugCommandList2 : public ID3D12DebugCommandList
1871 {
1872 public:
1873 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1874 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1875 _In_reads_bytes_(DataSize) const void *pData,
1876 UINT DataSize) = 0;
1877
1878 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1879 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1880 _Out_writes_bytes_(DataSize) void *pData,
1881 UINT DataSize) = 0;
1882
1883 };
1884
1885
1886#else /* C style interface */
1887
1888 typedef struct ID3D12DebugCommandList2Vtbl
1889 {
1890 BEGIN_INTERFACE
1891
1892 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1893 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1894 ID3D12DebugCommandList2 * This,
1895 REFIID riid,
1896 _COM_Outptr_ void **ppvObject);
1897
1898 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1899 ULONG ( STDMETHODCALLTYPE *AddRef )(
1900 ID3D12DebugCommandList2 * This);
1901
1902 DECLSPEC_XFGVIRT(IUnknown, Release)
1903 ULONG ( STDMETHODCALLTYPE *Release )(
1904 ID3D12DebugCommandList2 * This);
1905
1906 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1907 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1908 ID3D12DebugCommandList2 * This,
1909 _In_ ID3D12Resource *pResource,
1910 UINT Subresource,
1911 UINT State);
1912
1913 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1914 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1915 ID3D12DebugCommandList2 * This,
1916 D3D12_DEBUG_FEATURE Mask);
1917
1918 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1919 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1920 ID3D12DebugCommandList2 * This);
1921
1922 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
1923 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1924 ID3D12DebugCommandList2 * This,
1925 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1926 _In_reads_bytes_(DataSize) const void *pData,
1927 UINT DataSize);
1928
1929 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
1930 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1931 ID3D12DebugCommandList2 * This,
1932 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1933 _Out_writes_bytes_(DataSize) void *pData,
1934 UINT DataSize);
1935
1936 END_INTERFACE
1937 } ID3D12DebugCommandList2Vtbl;
1938
1939 interface ID3D12DebugCommandList2
1940 {
1941 CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl;
1942 };
1943
1944
1945
1946#ifdef COBJMACROS
1947
1948
1949#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \
1950 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1951
1952#define ID3D12DebugCommandList2_AddRef(This) \
1953 ( (This)->lpVtbl -> AddRef(This) )
1954
1955#define ID3D12DebugCommandList2_Release(This) \
1956 ( (This)->lpVtbl -> Release(This) )
1957
1958
1959#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \
1960 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1961
1962#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \
1963 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1964
1965#define ID3D12DebugCommandList2_GetFeatureMask(This) \
1966 ( (This)->lpVtbl -> GetFeatureMask(This) )
1967
1968
1969#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \
1970 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1971
1972#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \
1973 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1974
1975#endif /* COBJMACROS */
1976
1977
1978#endif /* C style interface */
1979
1980
1981
1982
1983#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */
1984
1985
1986#ifndef __ID3D12DebugCommandList3_INTERFACE_DEFINED__
1987#define __ID3D12DebugCommandList3_INTERFACE_DEFINED__
1988
1989/* interface ID3D12DebugCommandList3 */
1990/* [unique][local][object][uuid] */
1991
1992
1993EXTERN_C const IID IID_ID3D12DebugCommandList3;
1994
1995#if defined(__cplusplus) && !defined(CINTERFACE)
1996
1997 MIDL_INTERFACE("197d5e15-4d37-4d34-af78-724cd70fdb1f")
1998 ID3D12DebugCommandList3 : public ID3D12DebugCommandList2
1999 {
2000 public:
2001 virtual void STDMETHODCALLTYPE AssertResourceAccess(
2002 _In_ ID3D12Resource *pResource,
2003 UINT Subresource,
2004 D3D12_BARRIER_ACCESS Access) = 0;
2005
2006 virtual void STDMETHODCALLTYPE AssertTextureLayout(
2007 _In_ ID3D12Resource *pResource,
2008 UINT Subresource,
2009 D3D12_BARRIER_LAYOUT Layout) = 0;
2010
2011 };
2012
2013
2014#else /* C style interface */
2015
2016 typedef struct ID3D12DebugCommandList3Vtbl
2017 {
2018 BEGIN_INTERFACE
2019
2020 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2021 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2022 ID3D12DebugCommandList3 * This,
2023 REFIID riid,
2024 _COM_Outptr_ void **ppvObject);
2025
2026 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2027 ULONG ( STDMETHODCALLTYPE *AddRef )(
2028 ID3D12DebugCommandList3 * This);
2029
2030 DECLSPEC_XFGVIRT(IUnknown, Release)
2031 ULONG ( STDMETHODCALLTYPE *Release )(
2032 ID3D12DebugCommandList3 * This);
2033
2034 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
2035 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
2036 ID3D12DebugCommandList3 * This,
2037 _In_ ID3D12Resource *pResource,
2038 UINT Subresource,
2039 UINT State);
2040
2041 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
2042 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
2043 ID3D12DebugCommandList3 * This,
2044 D3D12_DEBUG_FEATURE Mask);
2045
2046 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
2047 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
2048 ID3D12DebugCommandList3 * This);
2049
2050 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
2051 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
2052 ID3D12DebugCommandList3 * This,
2053 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
2054 _In_reads_bytes_(DataSize) const void *pData,
2055 UINT DataSize);
2056
2057 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
2058 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
2059 ID3D12DebugCommandList3 * This,
2060 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
2061 _Out_writes_bytes_(DataSize) void *pData,
2062 UINT DataSize);
2063
2064 DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertResourceAccess)
2065 void ( STDMETHODCALLTYPE *AssertResourceAccess )(
2066 ID3D12DebugCommandList3 * This,
2067 _In_ ID3D12Resource *pResource,
2068 UINT Subresource,
2069 D3D12_BARRIER_ACCESS Access);
2070
2071 DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertTextureLayout)
2072 void ( STDMETHODCALLTYPE *AssertTextureLayout )(
2073 ID3D12DebugCommandList3 * This,
2074 _In_ ID3D12Resource *pResource,
2075 UINT Subresource,
2076 D3D12_BARRIER_LAYOUT Layout);
2077
2078 END_INTERFACE
2079 } ID3D12DebugCommandList3Vtbl;
2080
2081 interface ID3D12DebugCommandList3
2082 {
2083 CONST_VTBL struct ID3D12DebugCommandList3Vtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12DebugCommandList3_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12DebugCommandList3_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12DebugCommandList3_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12DebugCommandList3_AssertResourceState(This,pResource,Subresource,State) \
2102 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
2103
2104#define ID3D12DebugCommandList3_SetFeatureMask(This,Mask) \
2105 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
2106
2107#define ID3D12DebugCommandList3_GetFeatureMask(This) \
2108 ( (This)->lpVtbl -> GetFeatureMask(This) )
2109
2110
2111#define ID3D12DebugCommandList3_SetDebugParameter(This,Type,pData,DataSize) \
2112 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
2113
2114#define ID3D12DebugCommandList3_GetDebugParameter(This,Type,pData,DataSize) \
2115 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
2116
2117
2118#define ID3D12DebugCommandList3_AssertResourceAccess(This,pResource,Subresource,Access) \
2119 ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
2120
2121#define ID3D12DebugCommandList3_AssertTextureLayout(This,pResource,Subresource,Layout) \
2122 ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
2123
2124#endif /* COBJMACROS */
2125
2126
2127#endif /* C style interface */
2128
2129
2130
2131
2132#endif /* __ID3D12DebugCommandList3_INTERFACE_DEFINED__ */
2133
2134
2135#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__
2136#define __ID3D12SharingContract_INTERFACE_DEFINED__
2137
2138/* interface ID3D12SharingContract */
2139/* [unique][local][object][uuid] */
2140
2141
2142EXTERN_C const IID IID_ID3D12SharingContract;
2143
2144#if defined(__cplusplus) && !defined(CINTERFACE)
2145
2146 MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef")
2147 ID3D12SharingContract : public IUnknown
2148 {
2149 public:
2150 virtual void STDMETHODCALLTYPE Present(
2151 _In_ ID3D12Resource *pResource,
2152 UINT Subresource,
2153 _In_ HWND window) = 0;
2154
2155 virtual void STDMETHODCALLTYPE SharedFenceSignal(
2156 _In_ ID3D12Fence *pFence,
2157 UINT64 FenceValue) = 0;
2158
2159 virtual void STDMETHODCALLTYPE BeginCapturableWork(
2160 _In_ REFGUID guid) = 0;
2161
2162 virtual void STDMETHODCALLTYPE EndCapturableWork(
2163 _In_ REFGUID guid) = 0;
2164
2165 };
2166
2167
2168#else /* C style interface */
2169
2170 typedef struct ID3D12SharingContractVtbl
2171 {
2172 BEGIN_INTERFACE
2173
2174 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2175 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2176 ID3D12SharingContract * This,
2177 REFIID riid,
2178 _COM_Outptr_ void **ppvObject);
2179
2180 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2181 ULONG ( STDMETHODCALLTYPE *AddRef )(
2182 ID3D12SharingContract * This);
2183
2184 DECLSPEC_XFGVIRT(IUnknown, Release)
2185 ULONG ( STDMETHODCALLTYPE *Release )(
2186 ID3D12SharingContract * This);
2187
2188 DECLSPEC_XFGVIRT(ID3D12SharingContract, Present)
2189 void ( STDMETHODCALLTYPE *Present )(
2190 ID3D12SharingContract * This,
2191 _In_ ID3D12Resource *pResource,
2192 UINT Subresource,
2193 _In_ HWND window);
2194
2195 DECLSPEC_XFGVIRT(ID3D12SharingContract, SharedFenceSignal)
2196 void ( STDMETHODCALLTYPE *SharedFenceSignal )(
2197 ID3D12SharingContract * This,
2198 _In_ ID3D12Fence *pFence,
2199 UINT64 FenceValue);
2200
2201 DECLSPEC_XFGVIRT(ID3D12SharingContract, BeginCapturableWork)
2202 void ( STDMETHODCALLTYPE *BeginCapturableWork )(
2203 ID3D12SharingContract * This,
2204 _In_ REFGUID guid);
2205
2206 DECLSPEC_XFGVIRT(ID3D12SharingContract, EndCapturableWork)
2207 void ( STDMETHODCALLTYPE *EndCapturableWork )(
2208 ID3D12SharingContract * This,
2209 _In_ REFGUID guid);
2210
2211 END_INTERFACE
2212 } ID3D12SharingContractVtbl;
2213
2214 interface ID3D12SharingContract
2215 {
2216 CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl;
2217 };
2218
2219
2220
2221#ifdef COBJMACROS
2222
2223
2224#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \
2225 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2226
2227#define ID3D12SharingContract_AddRef(This) \
2228 ( (This)->lpVtbl -> AddRef(This) )
2229
2230#define ID3D12SharingContract_Release(This) \
2231 ( (This)->lpVtbl -> Release(This) )
2232
2233
2234#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \
2235 ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) )
2236
2237#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \
2238 ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) )
2239
2240#define ID3D12SharingContract_BeginCapturableWork(This,guid) \
2241 ( (This)->lpVtbl -> BeginCapturableWork(This,guid) )
2242
2243#define ID3D12SharingContract_EndCapturableWork(This,guid) \
2244 ( (This)->lpVtbl -> EndCapturableWork(This,guid) )
2245
2246#endif /* COBJMACROS */
2247
2248
2249#endif /* C style interface */
2250
2251
2252
2253
2254#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */
2255
2256
2257#ifndef __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
2258#define __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
2259
2260/* interface ID3D12ManualWriteTrackingResource */
2261/* [unique][local][object][uuid] */
2262
2263
2264EXTERN_C const IID IID_ID3D12ManualWriteTrackingResource;
2265
2266#if defined(__cplusplus) && !defined(CINTERFACE)
2267
2268 MIDL_INTERFACE("86ca3b85-49ad-4b6e-aed5-eddb18540f41")
2269 ID3D12ManualWriteTrackingResource : public IUnknown
2270 {
2271 public:
2272 virtual void STDMETHODCALLTYPE TrackWrite(
2273 UINT Subresource,
2274 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
2275
2276 };
2277
2278
2279#else /* C style interface */
2280
2281 typedef struct ID3D12ManualWriteTrackingResourceVtbl
2282 {
2283 BEGIN_INTERFACE
2284
2285 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2286 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2287 ID3D12ManualWriteTrackingResource * This,
2288 REFIID riid,
2289 _COM_Outptr_ void **ppvObject);
2290
2291 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2292 ULONG ( STDMETHODCALLTYPE *AddRef )(
2293 ID3D12ManualWriteTrackingResource * This);
2294
2295 DECLSPEC_XFGVIRT(IUnknown, Release)
2296 ULONG ( STDMETHODCALLTYPE *Release )(
2297 ID3D12ManualWriteTrackingResource * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12ManualWriteTrackingResource, TrackWrite)
2300 void ( STDMETHODCALLTYPE *TrackWrite )(
2301 ID3D12ManualWriteTrackingResource * This,
2302 UINT Subresource,
2303 _In_opt_ const D3D12_RANGE *pWrittenRange);
2304
2305 END_INTERFACE
2306 } ID3D12ManualWriteTrackingResourceVtbl;
2307
2308 interface ID3D12ManualWriteTrackingResource
2309 {
2310 CONST_VTBL struct ID3D12ManualWriteTrackingResourceVtbl *lpVtbl;
2311 };
2312
2313
2314
2315#ifdef COBJMACROS
2316
2317
2318#define ID3D12ManualWriteTrackingResource_QueryInterface(This,riid,ppvObject) \
2319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2320
2321#define ID3D12ManualWriteTrackingResource_AddRef(This) \
2322 ( (This)->lpVtbl -> AddRef(This) )
2323
2324#define ID3D12ManualWriteTrackingResource_Release(This) \
2325 ( (This)->lpVtbl -> Release(This) )
2326
2327
2328#define ID3D12ManualWriteTrackingResource_TrackWrite(This,Subresource,pWrittenRange) \
2329 ( (This)->lpVtbl -> TrackWrite(This,Subresource,pWrittenRange) )
2330
2331#endif /* COBJMACROS */
2332
2333
2334#endif /* C style interface */
2335
2336
2337
2338
2339#endif /* __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__ */
2340
2341
2342/* interface __MIDL_itf_d3d12sdklayers_0000_0018 */
2343/* [local] */
2344
2345typedef
2346enum D3D12_MESSAGE_CATEGORY
2347 {
2348 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
2349 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
2350 D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
2351 D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
2352 D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
2353 D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
2354 D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
2355 D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
2356 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
2357 D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) ,
2358 D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 )
2359 } D3D12_MESSAGE_CATEGORY;
2360
2361typedef
2362enum D3D12_MESSAGE_SEVERITY
2363 {
2364 D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
2365 D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
2366 D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) ,
2367 D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) ,
2368 D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 )
2369 } D3D12_MESSAGE_SEVERITY;
2370
2371typedef
2372enum D3D12_MESSAGE_ID
2373 {
2374 D3D12_MESSAGE_ID_UNKNOWN = 0,
2375 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
2376 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
2377 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
2378 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
2379 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
2380 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
2381 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
2382 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
2383 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
2384 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
2385 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
2386 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
2387 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
2388 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
2389 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
2390 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
2391 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
2392 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
2393 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
2394 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
2395 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
2396 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
2397 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
2398 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
2399 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
2400 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
2401 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
2402 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
2403 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
2404 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
2405 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
2406 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
2407 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
2408 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
2409 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
2410 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
2411 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
2412 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
2413 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
2414 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
2415 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
2416 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
2417 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
2418 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
2419 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
2420 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
2421 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
2422 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
2423 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
2424 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
2425 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
2426 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
2427 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
2428 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
2429 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
2430 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
2431 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
2432 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
2433 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
2434 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
2435 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
2436 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
2437 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
2438 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
2439 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
2440 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
2441 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
2442 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
2443 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
2444 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
2445 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
2446 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
2447 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
2448 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
2449 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
2450 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
2451 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
2452 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
2453 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
2454 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
2455 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
2456 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
2457 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
2458 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
2459 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
2460 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
2461 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
2462 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
2463 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
2464 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
2465 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
2466 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
2467 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
2468 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
2469 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
2470 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
2471 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
2472 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
2473 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
2474 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
2475 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
2476 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
2477 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
2478 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
2479 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
2480 D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
2481 D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
2482 D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
2483 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
2484 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
2485 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
2486 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
2487 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
2488 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
2489 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
2490 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
2491 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
2492 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
2493 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
2494 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
2495 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
2496 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
2497 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
2498 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
2499 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
2500 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
2501 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
2502 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
2503 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
2504 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
2505 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
2506 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
2507 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
2508 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
2509 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
2510 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
2511 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
2512 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
2513 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
2514 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
2515 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
2516 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
2517 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
2518 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
2519 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
2520 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
2521 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
2522 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
2523 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
2524 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
2525 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
2526 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
2527 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
2528 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
2529 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
2530 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
2531 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
2532 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
2533 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
2534 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
2535 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
2536 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
2537 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
2538 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
2539 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
2540 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
2541 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
2542 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
2543 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
2544 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
2545 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
2546 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
2547 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
2548 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
2549 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
2550 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
2551 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
2552 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
2553 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
2554 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
2555 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
2556 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
2557 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
2558 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
2559 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
2560 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
2561 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
2562 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
2563 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
2564 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
2565 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
2566 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
2567 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
2568 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
2569 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
2570 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
2571 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
2572 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
2573 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
2574 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
2575 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
2576 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
2577 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
2578 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
2579 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
2580 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
2581 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
2582 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
2583 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
2584 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
2585 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
2586 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
2587 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
2588 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
2589 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
2590 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
2591 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
2592 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
2593 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
2594 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
2595 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
2596 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
2597 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
2598 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
2599 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
2600 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
2601 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
2602 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
2603 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
2604 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
2605 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
2606 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
2607 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
2608 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
2609 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
2610 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
2611 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
2612 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
2613 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
2614 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
2615 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
2616 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
2617 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
2618 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
2619 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
2620 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
2621 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
2622 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
2623 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
2624 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
2625 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
2626 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
2627 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
2628 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
2629 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
2630 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
2631 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
2632 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
2633 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
2634 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
2635 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
2636 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
2637 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
2638 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
2639 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
2640 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
2641 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
2642 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
2643 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
2644 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
2645 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
2646 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
2647 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
2648 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
2649 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
2650 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
2651 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
2652 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
2653 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
2654 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
2655 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
2656 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
2657 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
2658 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
2659 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
2660 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
2661 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
2662 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
2663 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
2664 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
2665 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
2666 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
2667 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
2668 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
2669 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
2670 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
2671 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
2672 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
2673 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
2674 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
2675 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
2676 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
2677 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
2678 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
2679 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
2680 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
2681 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
2682 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
2683 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
2684 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
2685 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
2686 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
2687 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
2688 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
2689 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
2690 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
2691 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
2692 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
2693 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
2694 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
2695 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
2696 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
2697 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
2698 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
2699 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
2700 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
2701 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
2702 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
2703 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
2704 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
2705 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
2706 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
2707 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
2708 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
2709 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
2710 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
2711 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
2712 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
2713 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
2714 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
2715 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
2716 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
2717 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
2718 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
2719 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
2720 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
2721 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
2722 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
2723 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
2724 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
2725 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
2726 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
2727 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
2728 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
2729 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
2730 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
2731 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
2732 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
2733 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
2734 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
2735 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
2736 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
2737 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
2738 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
2739 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
2740 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
2741 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
2742 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
2743 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
2744 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
2745 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
2746 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
2747 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
2748 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
2749 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
2750 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
2751 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
2752 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
2753 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
2754 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
2755 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
2756 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
2757 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
2758 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
2759 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
2760 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
2761 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
2762 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
2763 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
2764 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
2765 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
2766 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
2767 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
2768 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
2769 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
2770 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
2771 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
2772 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
2773 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
2774 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
2775 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
2776 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
2777 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
2778 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
2779 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
2780 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
2781 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
2782 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
2783 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
2784 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
2785 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
2786 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
2787 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
2788 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
2789 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
2790 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
2791 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
2792 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
2793 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
2794 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
2795 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
2796 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
2797 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
2798 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
2799 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
2800 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
2801 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
2802 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
2803 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
2804 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
2805 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
2806 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
2807 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
2808 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
2809 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
2810 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
2811 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
2812 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
2813 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
2814 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
2815 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
2816 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
2817 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
2818 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
2819 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
2820 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
2821 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
2822 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
2823 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
2824 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
2825 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
2826 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
2827 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
2828 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
2829 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
2830 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
2831 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
2832 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
2833 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
2834 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
2835 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
2836 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
2837 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
2838 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
2839 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
2840 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
2841 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
2842 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
2843 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
2844 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
2845 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
2846 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
2847 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
2848 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
2849 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
2850 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
2851 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
2852 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
2853 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
2854 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
2855 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
2856 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
2857 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
2858 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
2859 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
2860 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
2861 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
2862 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
2863 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
2864 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
2865 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
2866 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
2867 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
2868 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
2869 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
2870 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
2871 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
2872 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
2873 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
2874 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
2875 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
2876 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
2877 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
2878 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
2879 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
2880 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
2881 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
2882 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
2883 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
2884 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
2885 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
2886 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
2887 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
2888 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
2889 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
2890 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
2891 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
2892 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
2893 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
2894 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
2895 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
2896 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
2897 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
2898 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
2899 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
2900 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
2901 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
2902 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
2903 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
2904 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
2905 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
2906 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
2907 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
2908 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
2909 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
2910 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
2911 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
2912 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
2913 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
2914 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
2915 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
2916 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
2917 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
2918 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
2919 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
2920 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
2921 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
2922 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
2923 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
2924 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
2925 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
2926 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
2927 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
2928 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
2929 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
2930 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
2931 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
2932 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
2933 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
2934 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
2935 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
2936 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
2937 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
2938 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
2939 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
2940 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
2941 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
2942 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
2943 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
2944 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
2945 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
2946 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
2947 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
2948 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
2949 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
2950 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
2951 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
2952 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
2953 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
2954 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
2955 D3D12_MESSAGE_ID_END_EVENT = 1015,
2956 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
2957 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
2958 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
2959 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
2960 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
2961 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
2962 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
2963 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
2964 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
2965 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
2966 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
2967 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
2968 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
2969 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
2970 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
2971 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
2972 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
2973 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
2974 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
2975 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
2976 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
2977 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
2978 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
2979 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
2980 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
2981 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
2982 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
2983 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
2984 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
2985 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
2986 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
2987 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
2988 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
2989 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
2990 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
2991 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
2992 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
2993 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
2994 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
2995 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
2996 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
2997 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
2998 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
2999 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
3000 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
3001 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
3002 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
3003 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
3004 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
3005 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
3006 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
3007 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
3008 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
3009 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
3010 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
3011 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
3012 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
3013 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
3014 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
3015 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
3016 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
3017 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
3018 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
3019 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
3020 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
3021 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
3022 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
3023 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
3024 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
3025 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
3026 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
3027 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
3028 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
3029 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
3030 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
3031 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
3032 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
3033 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
3034 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
3035 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
3036 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
3037 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
3038 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
3039 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
3040 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
3041 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
3042 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
3043 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
3044 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
3045 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
3046 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
3047 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
3048 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
3049 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
3050 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
3051 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
3052 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
3053 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
3054 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
3055 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
3056 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
3057 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
3058 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
3059 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
3060 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
3061 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
3062 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
3063 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
3064 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
3065 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
3066 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
3067 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
3068 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
3069 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
3070 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
3071 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
3072 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
3073 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
3074 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
3075 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
3076 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
3077 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
3078 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
3079 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
3080 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
3081 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
3082 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
3083 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
3084 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
3085 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
3086 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
3087 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
3088 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
3089 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
3090 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
3091 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
3092 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
3093 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
3094 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
3095 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
3096 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
3097 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
3098 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
3099 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
3100 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
3101 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
3102 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
3103 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
3104 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
3105 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
3106 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
3107 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
3108 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
3109 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
3110 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
3111 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
3112 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
3113 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
3114 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
3115 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
3116 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
3117 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
3118 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
3119 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
3120 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
3121 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
3122 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
3123 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
3124 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
3125 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
3126 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
3127 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
3128 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
3129 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
3130 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
3131 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
3132 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
3133 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
3134 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
3135 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
3136 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
3137 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
3138 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
3139 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
3140 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
3141 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
3142 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
3143 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
3144 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
3145 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
3146 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
3147 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
3148 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
3149 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
3150 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
3151 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
3152 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
3153 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
3154 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
3155 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
3156 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
3157 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
3158 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
3159 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
3160 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
3161 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
3162 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
3163 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
3164 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
3165 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
3166 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
3167 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
3168 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
3169 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
3170 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
3171 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
3172 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
3173 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
3174 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
3175 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
3176 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
3177 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
3178 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
3179 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
3180 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
3181 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
3182 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
3183 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
3184 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
3185 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
3186 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
3187 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
3188 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
3189 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
3190 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
3191 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
3192 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
3193 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
3194 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
3195 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
3196 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
3197 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
3198 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
3199 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
3200 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
3201 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
3202 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
3203 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
3204 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
3205 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
3206 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
3207 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
3208 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
3209 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
3210 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
3211 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
3212 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
3213 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
3214 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
3215 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
3216 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
3217 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
3218 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
3219 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
3220 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
3221 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
3222 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
3223 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
3224 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
3225 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
3226 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
3227 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
3228 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
3229 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
3230 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
3231 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
3232 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
3233 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
3234 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
3235 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
3236 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
3237 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
3238 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
3239 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
3240 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
3241 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
3242 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
3243 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
3244 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
3245 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
3246 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
3247 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
3248 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
3249 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
3250 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
3251 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
3252 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
3253 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
3254 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
3255 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
3256 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
3257 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
3258 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
3259 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
3260 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
3261 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
3262 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
3263 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
3264 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
3265 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
3266 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
3267 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
3268 D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
3269 D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
3270 D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
3271 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
3272 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
3273 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
3274 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
3275 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
3276 D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
3277 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
3278 D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
3279 D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
3280 D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
3281 D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
3282 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
3283 D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
3284 D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
3285 D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
3286 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
3287 D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
3288 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
3289 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
3290 D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
3291 D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
3292 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
3293 D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
3294 D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
3295 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
3296 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
3297 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
3298 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
3299 D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
3300 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
3301 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
3302 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
3303 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
3304 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
3305 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
3306 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
3307 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
3308 D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
3309 D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
3310 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
3311 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
3312 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
3313 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
3314 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
3315 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
3316 D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
3317 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
3318 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
3319 D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
3320 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
3321 D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
3322 D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
3323 D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
3324 D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
3325 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
3326 D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
3327 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
3328 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
3329 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
3330 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
3331 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
3332 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
3333 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
3334 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
3335 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
3336 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
3337 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
3338 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
3339 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
3340 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
3341 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
3342 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
3343 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
3344 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
3345 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
3346 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
3347 D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
3348 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
3349 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
3350 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
3351 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
3352 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
3353 D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
3354 D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
3355 D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
3356 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
3357 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
3358 D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
3359 D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
3360 D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
3361 D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
3362 D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
3363 D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
3364 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
3365 D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
3366 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442
3367 } D3D12_MESSAGE_ID;
3368
3369typedef struct D3D12_MESSAGE
3370 {
3371 D3D12_MESSAGE_CATEGORY Category;
3372 D3D12_MESSAGE_SEVERITY Severity;
3373 D3D12_MESSAGE_ID ID;
3374 _Field_size_(DescriptionByteLength) const char *pDescription;
3375 SIZE_T DescriptionByteLength;
3376 } D3D12_MESSAGE;
3377
3378typedef struct D3D12_INFO_QUEUE_FILTER_DESC
3379 {
3380 UINT NumCategories;
3381 _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList;
3382 UINT NumSeverities;
3383 _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList;
3384 UINT NumIDs;
3385 _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList;
3386 } D3D12_INFO_QUEUE_FILTER_DESC;
3387
3388typedef struct D3D12_INFO_QUEUE_FILTER
3389 {
3390 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
3391 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
3392 } D3D12_INFO_QUEUE_FILTER;
3393
3394#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
3395
3396
3397extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_c_ifspec;
3398extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_s_ifspec;
3399
3400#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__
3401#define __ID3D12InfoQueue_INTERFACE_DEFINED__
3402
3403/* interface ID3D12InfoQueue */
3404/* [unique][local][object][uuid] */
3405
3406
3407EXTERN_C const IID IID_ID3D12InfoQueue;
3408
3409#if defined(__cplusplus) && !defined(CINTERFACE)
3410
3411 MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458")
3412 ID3D12InfoQueue : public IUnknown
3413 {
3414 public:
3415 virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
3416 _In_ UINT64 MessageCountLimit) = 0;
3417
3418 virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
3419
3420 virtual HRESULT STDMETHODCALLTYPE GetMessage(
3421 _In_ UINT64 MessageIndex,
3422 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3423 _Inout_ SIZE_T *pMessageByteLength) = 0;
3424
3425 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
3426
3427 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
3428
3429 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
3430
3431 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
3432
3433 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
3434
3435 virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
3436
3437 virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
3438 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3439
3440 virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
3441 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3442 _Inout_ SIZE_T *pFilterByteLength) = 0;
3443
3444 virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
3445
3446 virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
3447
3448 virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
3449
3450 virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
3451 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3452
3453 virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
3454
3455 virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
3456
3457 virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
3458 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3459
3460 virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
3461 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3462 _Inout_ SIZE_T *pFilterByteLength) = 0;
3463
3464 virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
3465
3466 virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
3467
3468 virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
3469
3470 virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
3471 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3472
3473 virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
3474
3475 virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
3476
3477 virtual HRESULT STDMETHODCALLTYPE AddMessage(
3478 _In_ D3D12_MESSAGE_CATEGORY Category,
3479 _In_ D3D12_MESSAGE_SEVERITY Severity,
3480 _In_ D3D12_MESSAGE_ID ID,
3481 _In_ LPCSTR pDescription) = 0;
3482
3483 virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
3484 _In_ D3D12_MESSAGE_SEVERITY Severity,
3485 _In_ LPCSTR pDescription) = 0;
3486
3487 virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory(
3488 _In_ D3D12_MESSAGE_CATEGORY Category,
3489 _In_ BOOL bEnable) = 0;
3490
3491 virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity(
3492 _In_ D3D12_MESSAGE_SEVERITY Severity,
3493 _In_ BOOL bEnable) = 0;
3494
3495 virtual HRESULT STDMETHODCALLTYPE SetBreakOnID(
3496 _In_ D3D12_MESSAGE_ID ID,
3497 _In_ BOOL bEnable) = 0;
3498
3499 virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory(
3500 _In_ D3D12_MESSAGE_CATEGORY Category) = 0;
3501
3502 virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity(
3503 _In_ D3D12_MESSAGE_SEVERITY Severity) = 0;
3504
3505 virtual BOOL STDMETHODCALLTYPE GetBreakOnID(
3506 _In_ D3D12_MESSAGE_ID ID) = 0;
3507
3508 virtual void STDMETHODCALLTYPE SetMuteDebugOutput(
3509 _In_ BOOL bMute) = 0;
3510
3511 virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0;
3512
3513 };
3514
3515
3516#else /* C style interface */
3517
3518 typedef struct ID3D12InfoQueueVtbl
3519 {
3520 BEGIN_INTERFACE
3521
3522 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3523 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3524 ID3D12InfoQueue * This,
3525 REFIID riid,
3526 _COM_Outptr_ void **ppvObject);
3527
3528 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3529 ULONG ( STDMETHODCALLTYPE *AddRef )(
3530 ID3D12InfoQueue * This);
3531
3532 DECLSPEC_XFGVIRT(IUnknown, Release)
3533 ULONG ( STDMETHODCALLTYPE *Release )(
3534 ID3D12InfoQueue * This);
3535
3536 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3537 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3538 ID3D12InfoQueue * This,
3539 _In_ UINT64 MessageCountLimit);
3540
3541 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3542 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3543 ID3D12InfoQueue * This);
3544
3545 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3546 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3547 ID3D12InfoQueue * This,
3548 _In_ UINT64 MessageIndex,
3549 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3550 _Inout_ SIZE_T *pMessageByteLength);
3551
3552 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3553 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3554 ID3D12InfoQueue * This);
3555
3556 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3557 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3558 ID3D12InfoQueue * This);
3559
3560 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3561 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3562 ID3D12InfoQueue * This);
3563
3564 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3565 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3566 ID3D12InfoQueue * This);
3567
3568 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3569 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3570 ID3D12InfoQueue * This);
3571
3572 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3573 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3574 ID3D12InfoQueue * This);
3575
3576 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3577 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3578 ID3D12InfoQueue * This,
3579 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3580
3581 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3582 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3583 ID3D12InfoQueue * This,
3584 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3585 _Inout_ SIZE_T *pFilterByteLength);
3586
3587 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3588 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3589 ID3D12InfoQueue * This);
3590
3591 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3592 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3593 ID3D12InfoQueue * This);
3594
3595 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3596 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3597 ID3D12InfoQueue * This);
3598
3599 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3600 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3601 ID3D12InfoQueue * This,
3602 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3603
3604 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3605 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3606 ID3D12InfoQueue * This);
3607
3608 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3609 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3610 ID3D12InfoQueue * This);
3611
3612 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3613 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3614 ID3D12InfoQueue * This,
3615 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3616
3617 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3618 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3619 ID3D12InfoQueue * This,
3620 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3621 _Inout_ SIZE_T *pFilterByteLength);
3622
3623 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3624 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3625 ID3D12InfoQueue * This);
3626
3627 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3628 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3629 ID3D12InfoQueue * This);
3630
3631 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3632 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3633 ID3D12InfoQueue * This);
3634
3635 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3636 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3637 ID3D12InfoQueue * This,
3638 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3639
3640 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3641 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3642 ID3D12InfoQueue * This);
3643
3644 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3645 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3646 ID3D12InfoQueue * This);
3647
3648 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3649 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3650 ID3D12InfoQueue * This,
3651 _In_ D3D12_MESSAGE_CATEGORY Category,
3652 _In_ D3D12_MESSAGE_SEVERITY Severity,
3653 _In_ D3D12_MESSAGE_ID ID,
3654 _In_ LPCSTR pDescription);
3655
3656 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3657 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3658 ID3D12InfoQueue * This,
3659 _In_ D3D12_MESSAGE_SEVERITY Severity,
3660 _In_ LPCSTR pDescription);
3661
3662 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3663 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3664 ID3D12InfoQueue * This,
3665 _In_ D3D12_MESSAGE_CATEGORY Category,
3666 _In_ BOOL bEnable);
3667
3668 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3669 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3670 ID3D12InfoQueue * This,
3671 _In_ D3D12_MESSAGE_SEVERITY Severity,
3672 _In_ BOOL bEnable);
3673
3674 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3675 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3676 ID3D12InfoQueue * This,
3677 _In_ D3D12_MESSAGE_ID ID,
3678 _In_ BOOL bEnable);
3679
3680 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3681 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3682 ID3D12InfoQueue * This,
3683 _In_ D3D12_MESSAGE_CATEGORY Category);
3684
3685 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3686 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3687 ID3D12InfoQueue * This,
3688 _In_ D3D12_MESSAGE_SEVERITY Severity);
3689
3690 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3691 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3692 ID3D12InfoQueue * This,
3693 _In_ D3D12_MESSAGE_ID ID);
3694
3695 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3696 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3697 ID3D12InfoQueue * This,
3698 _In_ BOOL bMute);
3699
3700 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3701 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3702 ID3D12InfoQueue * This);
3703
3704 END_INTERFACE
3705 } ID3D12InfoQueueVtbl;
3706
3707 interface ID3D12InfoQueue
3708 {
3709 CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl;
3710 };
3711
3712
3713
3714#ifdef COBJMACROS
3715
3716
3717#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \
3718 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3719
3720#define ID3D12InfoQueue_AddRef(This) \
3721 ( (This)->lpVtbl -> AddRef(This) )
3722
3723#define ID3D12InfoQueue_Release(This) \
3724 ( (This)->lpVtbl -> Release(This) )
3725
3726
3727#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
3728 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3729
3730#define ID3D12InfoQueue_ClearStoredMessages(This) \
3731 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3732
3733#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3734 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3735
3736#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
3737 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3738
3739#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
3740 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3741
3742#define ID3D12InfoQueue_GetNumStoredMessages(This) \
3743 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3744
3745#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3746 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3747
3748#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
3749 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3750
3751#define ID3D12InfoQueue_GetMessageCountLimit(This) \
3752 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3753
3754#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \
3755 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3756
3757#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
3758 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3759
3760#define ID3D12InfoQueue_ClearStorageFilter(This) \
3761 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3762
3763#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \
3764 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3765
3766#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \
3767 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3768
3769#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \
3770 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3771
3772#define ID3D12InfoQueue_PopStorageFilter(This) \
3773 ( (This)->lpVtbl -> PopStorageFilter(This) )
3774
3775#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \
3776 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3777
3778#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
3779 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3780
3781#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3782 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3783
3784#define ID3D12InfoQueue_ClearRetrievalFilter(This) \
3785 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3786
3787#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \
3788 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3789
3790#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \
3791 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3792
3793#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \
3794 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3795
3796#define ID3D12InfoQueue_PopRetrievalFilter(This) \
3797 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3798
3799#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \
3800 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3801
3802#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
3803 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3804
3805#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
3806 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3807
3808#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \
3809 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3810
3811#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \
3812 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3813
3814#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \
3815 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3816
3817#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \
3818 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3819
3820#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \
3821 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3822
3823#define ID3D12InfoQueue_GetBreakOnID(This,ID) \
3824 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3825
3826#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \
3827 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3828
3829#define ID3D12InfoQueue_GetMuteDebugOutput(This) \
3830 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3831
3832#endif /* COBJMACROS */
3833
3834
3835#endif /* C style interface */
3836
3837
3838
3839
3840#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */
3841
3842
3843/* interface __MIDL_itf_d3d12sdklayers_0000_0019 */
3844/* [local] */
3845
3846typedef
3847enum D3D12_MESSAGE_CALLBACK_FLAGS
3848 {
3849 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0,
3850 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x1
3851 } D3D12_MESSAGE_CALLBACK_FLAGS;
3852
3853DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)
3854typedef void ( __stdcall *D3D12MessageFunc )(
3855 D3D12_MESSAGE_CATEGORY Category,
3856 D3D12_MESSAGE_SEVERITY Severity,
3857 D3D12_MESSAGE_ID ID,
3858 LPCSTR pDescription,
3859 void *pContext);
3860
3861
3862
3863extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_c_ifspec;
3864extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_s_ifspec;
3865
3866#ifndef __ID3D12InfoQueue1_INTERFACE_DEFINED__
3867#define __ID3D12InfoQueue1_INTERFACE_DEFINED__
3868
3869/* interface ID3D12InfoQueue1 */
3870/* [unique][local][object][uuid] */
3871
3872
3873EXTERN_C const IID IID_ID3D12InfoQueue1;
3874
3875#if defined(__cplusplus) && !defined(CINTERFACE)
3876
3877 MIDL_INTERFACE("2852dd88-b484-4c0c-b6b1-67168500e600")
3878 ID3D12InfoQueue1 : public ID3D12InfoQueue
3879 {
3880 public:
3881 virtual HRESULT STDMETHODCALLTYPE RegisterMessageCallback(
3882 _In_ D3D12MessageFunc CallbackFunc,
3883 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3884 _Inout_ void *pContext,
3885 _Inout_ DWORD *pCallbackCookie) = 0;
3886
3887 virtual HRESULT STDMETHODCALLTYPE UnregisterMessageCallback(
3888 _In_ DWORD CallbackCookie) = 0;
3889
3890 };
3891
3892
3893#else /* C style interface */
3894
3895 typedef struct ID3D12InfoQueue1Vtbl
3896 {
3897 BEGIN_INTERFACE
3898
3899 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3900 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3901 ID3D12InfoQueue1 * This,
3902 REFIID riid,
3903 _COM_Outptr_ void **ppvObject);
3904
3905 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3906 ULONG ( STDMETHODCALLTYPE *AddRef )(
3907 ID3D12InfoQueue1 * This);
3908
3909 DECLSPEC_XFGVIRT(IUnknown, Release)
3910 ULONG ( STDMETHODCALLTYPE *Release )(
3911 ID3D12InfoQueue1 * This);
3912
3913 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3914 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3915 ID3D12InfoQueue1 * This,
3916 _In_ UINT64 MessageCountLimit);
3917
3918 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3919 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3920 ID3D12InfoQueue1 * This);
3921
3922 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3923 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3924 ID3D12InfoQueue1 * This,
3925 _In_ UINT64 MessageIndex,
3926 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3927 _Inout_ SIZE_T *pMessageByteLength);
3928
3929 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3930 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3931 ID3D12InfoQueue1 * This);
3932
3933 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3934 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3935 ID3D12InfoQueue1 * This);
3936
3937 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3938 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3939 ID3D12InfoQueue1 * This);
3940
3941 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3942 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3943 ID3D12InfoQueue1 * This);
3944
3945 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3946 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3947 ID3D12InfoQueue1 * This);
3948
3949 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3950 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3951 ID3D12InfoQueue1 * This);
3952
3953 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3954 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3955 ID3D12InfoQueue1 * This,
3956 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3957
3958 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3959 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3960 ID3D12InfoQueue1 * This,
3961 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3962 _Inout_ SIZE_T *pFilterByteLength);
3963
3964 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3965 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3966 ID3D12InfoQueue1 * This);
3967
3968 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3969 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3970 ID3D12InfoQueue1 * This);
3971
3972 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3973 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3974 ID3D12InfoQueue1 * This);
3975
3976 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3977 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3978 ID3D12InfoQueue1 * This,
3979 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3980
3981 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3982 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3983 ID3D12InfoQueue1 * This);
3984
3985 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3986 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3987 ID3D12InfoQueue1 * This);
3988
3989 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3990 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3991 ID3D12InfoQueue1 * This,
3992 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3993
3994 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3995 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3996 ID3D12InfoQueue1 * This,
3997 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3998 _Inout_ SIZE_T *pFilterByteLength);
3999
4000 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
4001 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
4002 ID3D12InfoQueue1 * This);
4003
4004 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
4005 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
4006 ID3D12InfoQueue1 * This);
4007
4008 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
4009 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
4010 ID3D12InfoQueue1 * This);
4011
4012 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
4013 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
4014 ID3D12InfoQueue1 * This,
4015 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
4016
4017 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
4018 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
4019 ID3D12InfoQueue1 * This);
4020
4021 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
4022 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
4023 ID3D12InfoQueue1 * This);
4024
4025 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
4026 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
4027 ID3D12InfoQueue1 * This,
4028 _In_ D3D12_MESSAGE_CATEGORY Category,
4029 _In_ D3D12_MESSAGE_SEVERITY Severity,
4030 _In_ D3D12_MESSAGE_ID ID,
4031 _In_ LPCSTR pDescription);
4032
4033 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
4034 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
4035 ID3D12InfoQueue1 * This,
4036 _In_ D3D12_MESSAGE_SEVERITY Severity,
4037 _In_ LPCSTR pDescription);
4038
4039 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
4040 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
4041 ID3D12InfoQueue1 * This,
4042 _In_ D3D12_MESSAGE_CATEGORY Category,
4043 _In_ BOOL bEnable);
4044
4045 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
4046 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
4047 ID3D12InfoQueue1 * This,
4048 _In_ D3D12_MESSAGE_SEVERITY Severity,
4049 _In_ BOOL bEnable);
4050
4051 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
4052 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
4053 ID3D12InfoQueue1 * This,
4054 _In_ D3D12_MESSAGE_ID ID,
4055 _In_ BOOL bEnable);
4056
4057 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
4058 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
4059 ID3D12InfoQueue1 * This,
4060 _In_ D3D12_MESSAGE_CATEGORY Category);
4061
4062 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
4063 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
4064 ID3D12InfoQueue1 * This,
4065 _In_ D3D12_MESSAGE_SEVERITY Severity);
4066
4067 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
4068 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
4069 ID3D12InfoQueue1 * This,
4070 _In_ D3D12_MESSAGE_ID ID);
4071
4072 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
4073 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
4074 ID3D12InfoQueue1 * This,
4075 _In_ BOOL bMute);
4076
4077 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
4078 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
4079 ID3D12InfoQueue1 * This);
4080
4081 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, RegisterMessageCallback)
4082 HRESULT ( STDMETHODCALLTYPE *RegisterMessageCallback )(
4083 ID3D12InfoQueue1 * This,
4084 _In_ D3D12MessageFunc CallbackFunc,
4085 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
4086 _Inout_ void *pContext,
4087 _Inout_ DWORD *pCallbackCookie);
4088
4089 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, UnregisterMessageCallback)
4090 HRESULT ( STDMETHODCALLTYPE *UnregisterMessageCallback )(
4091 ID3D12InfoQueue1 * This,
4092 _In_ DWORD CallbackCookie);
4093
4094 END_INTERFACE
4095 } ID3D12InfoQueue1Vtbl;
4096
4097 interface ID3D12InfoQueue1
4098 {
4099 CONST_VTBL struct ID3D12InfoQueue1Vtbl *lpVtbl;
4100 };
4101
4102
4103
4104#ifdef COBJMACROS
4105
4106
4107#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject) \
4108 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4109
4110#define ID3D12InfoQueue1_AddRef(This) \
4111 ( (This)->lpVtbl -> AddRef(This) )
4112
4113#define ID3D12InfoQueue1_Release(This) \
4114 ( (This)->lpVtbl -> Release(This) )
4115
4116
4117#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit) \
4118 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
4119
4120#define ID3D12InfoQueue1_ClearStoredMessages(This) \
4121 ( (This)->lpVtbl -> ClearStoredMessages(This) )
4122
4123#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
4124 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
4125
4126#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This) \
4127 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
4128
4129#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This) \
4130 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
4131
4132#define ID3D12InfoQueue1_GetNumStoredMessages(This) \
4133 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
4134
4135#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
4136 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
4137
4138#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This) \
4139 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
4140
4141#define ID3D12InfoQueue1_GetMessageCountLimit(This) \
4142 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
4143
4144#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter) \
4145 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
4146
4147#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength) \
4148 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
4149
4150#define ID3D12InfoQueue1_ClearStorageFilter(This) \
4151 ( (This)->lpVtbl -> ClearStorageFilter(This) )
4152
4153#define ID3D12InfoQueue1_PushEmptyStorageFilter(This) \
4154 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
4155
4156#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This) \
4157 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
4158
4159#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter) \
4160 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
4161
4162#define ID3D12InfoQueue1_PopStorageFilter(This) \
4163 ( (This)->lpVtbl -> PopStorageFilter(This) )
4164
4165#define ID3D12InfoQueue1_GetStorageFilterStackSize(This) \
4166 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
4167
4168#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter) \
4169 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
4170
4171#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
4172 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
4173
4174#define ID3D12InfoQueue1_ClearRetrievalFilter(This) \
4175 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
4176
4177#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This) \
4178 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
4179
4180#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This) \
4181 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
4182
4183#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter) \
4184 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
4185
4186#define ID3D12InfoQueue1_PopRetrievalFilter(This) \
4187 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
4188
4189#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This) \
4190 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
4191
4192#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription) \
4193 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
4194
4195#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription) \
4196 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
4197
4198#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable) \
4199 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
4200
4201#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable) \
4202 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
4203
4204#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable) \
4205 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
4206
4207#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category) \
4208 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
4209
4210#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity) \
4211 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
4212
4213#define ID3D12InfoQueue1_GetBreakOnID(This,ID) \
4214 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
4215
4216#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute) \
4217 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
4218
4219#define ID3D12InfoQueue1_GetMuteDebugOutput(This) \
4220 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
4221
4222
4223#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) \
4224 ( (This)->lpVtbl -> RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) )
4225
4226#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie) \
4227 ( (This)->lpVtbl -> UnregisterMessageCallback(This,CallbackCookie) )
4228
4229#endif /* COBJMACROS */
4230
4231
4232#endif /* C style interface */
4233
4234
4235
4236
4237#endif /* __ID3D12InfoQueue1_INTERFACE_DEFINED__ */
4238
4239
4240/* interface __MIDL_itf_d3d12sdklayers_0000_0020 */
4241/* [local] */
4242
4243#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
4244#pragma endregion
4245DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);
4246DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);
4247DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);
4248DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);
4249DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);
4250DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);
4251DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);
4252DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);
4253DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);
4254DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);
4255DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);
4256DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);
4257DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);
4258DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);
4259DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);
4260DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);
4261DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);
4262DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);
4263DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);
4264DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);
4265
4266
4267extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_c_ifspec;
4268extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_s_ifspec;
4269
4270/* Additional Prototypes for ALL interfaces */
4271
4272/* end of Additional Prototypes */
4273
4274#ifdef __cplusplus
4275}
4276#endif
4277
4278#endif
4279
4280
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.idl
new file mode 100644
index 0000000..082565d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12sdklayers.idl
@@ -0,0 +1,1860 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "d3d12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region App Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17//==================================================================================================================================
18//
19// Debugging Layer
20//
21//==================================================================================================================================
22
23[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
24interface ID3D12Debug
25 : IUnknown
26{
27 void EnableDebugLayer();
28}
29
30typedef enum D3D12_GPU_BASED_VALIDATION_FLAGS
31{
32 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0x00,
33 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x01,
34
35} D3D12_GPU_BASED_VALIDATION_FLAGS;
36cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)")
37
38
39[uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304), object, local, pointer_default(unique)]
40interface ID3D12Debug1
41 : IUnknown
42{
43 void EnableDebugLayer();
44 void SetEnableGPUBasedValidation(BOOL Enable);
45 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
46}
47
48[uuid(93a665c4-a3b2-4e5d-b692-a26ae14e3374), object, local, pointer_default(unique)]
49interface ID3D12Debug2
50 : IUnknown
51{
52 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
53}
54
55[uuid(5cf4e58f-f671-4ff1-a542-3686e3d153d1), object, local, pointer_default(unique)]
56interface ID3D12Debug3
57 : ID3D12Debug
58{
59 void SetEnableGPUBasedValidation(BOOL Enable);
60 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
61 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
62}
63
64[uuid(014b816e-9ec5-4a2f-a845-ffbe441ce13a), object, local, pointer_default(unique)]
65interface ID3D12Debug4
66 : ID3D12Debug3
67{
68 void DisableDebugLayer();
69}
70
71[uuid(548d6b12-09fa-40e0-9069-5dcd589a52c9), object, local, pointer_default(unique)]
72interface ID3D12Debug5
73 : ID3D12Debug4
74{
75 void SetEnableAutoName(BOOL Enable);
76}
77
78[uuid(82a816d6-5d01-4157-97d0-4975463fd1ed), object, local, pointer_default(unique)]
79interface ID3D12Debug6
80 : ID3D12Debug5
81{
82 void SetForceLegacyBarrierValidation(BOOL Enable);
83}
84
85cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
86
87typedef enum D3D12_RLDO_FLAGS
88{
89 D3D12_RLDO_NONE = 0x0,
90 D3D12_RLDO_SUMMARY = 0x1,
91 D3D12_RLDO_DETAIL = 0x2,
92 D3D12_RLDO_IGNORE_INTERNAL = 0x4,
93
94} D3D12_RLDO_FLAGS;
95
96cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
97
98typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
99{
100 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
101 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
102 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
103 D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE
104} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
105
106typedef enum D3D12_DEBUG_FEATURE
107{
108 D3D12_DEBUG_FEATURE_NONE = 0x00,
109 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
110 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
111 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
112 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
113} D3D12_DEBUG_FEATURE;
114
115cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
116
117typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
118{
119 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
120 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
121 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
122 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
123 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
124} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
125
126typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
127{
128 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
129 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
130 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
131 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
132 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
133} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
134
135cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
136
137typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
138{
139 UINT MaxMessagesPerCommandList;
140 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
141 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
142} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
143
144typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
145{
146 FLOAT SlowdownFactor;
147} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
148
149typedef enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
150{
151 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED,
152 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED,
153 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE,
154 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT =
155 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
156} D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
157
158[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
159interface ID3D12DebugDevice1
160 : IUnknown
161{
162 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
163 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
164 HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
165}
166
167[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
168interface ID3D12DebugDevice
169 : IUnknown
170{
171 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
172 D3D12_DEBUG_FEATURE GetFeatureMask();
173 HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
174}
175
176[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
177interface ID3D12DebugDevice2
178 : ID3D12DebugDevice
179{
180 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
181 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
182}
183
184cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
185
186
187[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
188interface ID3D12DebugCommandQueue
189 : IUnknown
190{
191 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
192// TODO: Stale BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
193};
194
195[ uuid( 16be35a2-bfd6-49f2-bcae-eaae4aff862d ), object, local, pointer_default( unique ) ]
196interface ID3D12DebugCommandQueue1
197 : ID3D12DebugCommandQueue
198{
199 void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
200 void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
201};
202
203typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
204{
205 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
206} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
207
208typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
209{
210 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
211} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
212
213[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
214interface ID3D12DebugCommandList1
215 : IUnknown
216{
217 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
218 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
219 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
220};
221
222[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
223interface ID3D12DebugCommandList
224 : IUnknown
225{
226 BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
227 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
228 D3D12_DEBUG_FEATURE GetFeatureMask();
229};
230
231[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
232interface ID3D12DebugCommandList2
233 : ID3D12DebugCommandList
234{
235 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
236 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
237};
238
239[ uuid(197d5e15-4d37-4d34-af78-724cd70fdb1f), object, local, pointer_default( unique ) ]
240interface ID3D12DebugCommandList3
241 : ID3D12DebugCommandList2
242{
243 void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
244 void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
245};
246
247[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
248interface ID3D12SharingContract
249 : IUnknown
250{
251 void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
252 void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
253 void BeginCapturableWork([annotation("_In_")] REFGUID guid);
254 void EndCapturableWork([annotation("_In_")] REFGUID guid);
255};
256
257[uuid(86ca3b85-49ad-4b6e-aed5-eddb18540f41), object, local, pointer_default(unique)]
258interface ID3D12ManualWriteTrackingResource
259 : IUnknown
260{
261 void TrackWrite(
262 UINT Subresource,
263 [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange);
264};
265
266
267//==================================================================================================================================
268//
269// Info Queue
270//
271//==================================================================================================================================
272typedef enum D3D12_MESSAGE_CATEGORY {
273 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
274 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
275 D3D12_MESSAGE_CATEGORY_INITIALIZATION,
276 D3D12_MESSAGE_CATEGORY_CLEANUP,
277 D3D12_MESSAGE_CATEGORY_COMPILATION,
278 D3D12_MESSAGE_CATEGORY_STATE_CREATION,
279 D3D12_MESSAGE_CATEGORY_STATE_SETTING,
280 D3D12_MESSAGE_CATEGORY_STATE_GETTING,
281 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
282 D3D12_MESSAGE_CATEGORY_EXECUTION,
283 D3D12_MESSAGE_CATEGORY_SHADER,
284} D3D12_MESSAGE_CATEGORY;
285
286typedef enum D3D12_MESSAGE_SEVERITY {
287 D3D12_MESSAGE_SEVERITY_CORRUPTION,
288 D3D12_MESSAGE_SEVERITY_ERROR,
289 D3D12_MESSAGE_SEVERITY_WARNING,
290 D3D12_MESSAGE_SEVERITY_INFO,
291 D3D12_MESSAGE_SEVERITY_MESSAGE
292} D3D12_MESSAGE_SEVERITY;
293
294// Unique ID for every error
295// CAUTION: New enum values should be appended to the list only. Inserting
296// new enum values into the middle of the list results in changing the numeric
297// values of some ID's from one SDK release to the next. This in-turn breaks
298// PIX and customer tools/filters.
299typedef enum D3D12_MESSAGE_ID {
300 D3D12_MESSAGE_ID_UNKNOWN = 0,
301
302 //--------------------------------------------------------------------------
303 // Messages Used by Core
304 // Message IDs generated from core are at the beginning
305 // since the core changes less frequently than the debug layer.
306
307 // End of Messages used by Core
308 // ------------------------------------------------------------------------
309 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
310 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
311 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
312 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
313 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
314 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
315 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
316 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
317 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
318 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
319 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
320 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
321 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
322 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
323 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
324 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
325 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
326 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
327 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
328
329 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
330 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
331 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
332 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
333
334 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
335 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
336 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
337 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
338 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
339 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
340 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
341
342 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
343 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
344 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
345 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
346 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
347 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
348 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
349 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
350
351 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
352 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
353 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
354 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
355 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
356
357 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
358 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
359 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
360 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
361 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
362 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
363 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
364 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
365 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
366 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
367 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
368 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
369 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
370 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
371
372 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
373 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
374 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
375
376 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
377 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
378 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
379
380 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
381 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
382 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
383 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
384 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
385 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
386 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
387 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
388 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
389 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
390 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
391 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
392 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
393 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
394 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
395 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
396 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
397 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
398
399 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
400 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
401 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
402
403 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
404 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
405 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
406 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
407
408 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
409 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
410 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
411 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
412 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
413 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
414 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
415 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
416 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
417 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
418
419 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
420 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
421 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
422 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
423 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
424 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
425 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
426
427 D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
428 D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
429 D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
430
431 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
432
433 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
434 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
435 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
436 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
437 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
438 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
439 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
440 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
441 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
442 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
443 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
444 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
445 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
446 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
447
448 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
449 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
450 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
451
452 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
453
454 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
455 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
456 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
457
458 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
459 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
460 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
461 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
462 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
463
464 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
465 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
466 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
467 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
468
469 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
470 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
471 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
472 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
473
474 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
475 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
476 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
477 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
478
479 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
480
481 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
482
483 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
484 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
485 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
486
487 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
488 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
489 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
490 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
491 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
492 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
493 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
494
495 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
496 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
497 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
498 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
499 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
500 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
501 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
502 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
503
504 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
505
506 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
507
508 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
509 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
510 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
511 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
512 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
513 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
514 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
515
516 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
517 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
518 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
519 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
520 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
521 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
522 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
523
524 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
525 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
526
527 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
528 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
529
530 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
531 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
532
533 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
534 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
535 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
536 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
537 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
538 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
539 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
540 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
541 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
542 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
543 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
544 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
545 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
546 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
547 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
548 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
549 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
550 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
551 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
552 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
553 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
554 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
555 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
556 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
557 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
558 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
559 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
560 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
561 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
562 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
563 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
564
565 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
566 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
567 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
568 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
569 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
570 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
571 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
572 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
573 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
574 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
575 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
576 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
577
578 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
579 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
580 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
581 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
582 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
583 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
584 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
585 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
586 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
587 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
588 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
589 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
590
591 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
592 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
593 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
594 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
595 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
596 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
597 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
598 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
599 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
600 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
601 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
602 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
603
604 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
605 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
606 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
607 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
608 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
609 // This was shipped, but is no longer used. Do not reuse.
610 //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
611 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
612 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
613 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
614 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
615 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
616 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
617 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
618 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
619 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
620 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
621 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
622 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
623 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
624 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
625 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
626 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
627 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
628 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
629 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
630 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
631 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
632 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
633 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
634 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
635 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
636 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
637 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
638 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
639 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
640 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
641 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
642 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
643 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
644 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
645 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
646 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
647 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
648 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
649 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
650 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
651 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
652 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
653 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
654 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
655 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
656 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
657 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
658 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
659 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
660 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
661 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
662 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
663 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
664 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
665 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
666 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
667 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
668 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
669 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
670 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
671 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
672 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
673 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
674 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
675 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
676 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
677 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
678 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
679 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
680 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
681 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
682 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
683 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
684 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
685 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
686 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
687 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
688 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
689 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
690 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
691 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
692 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
693 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
694 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
695 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
696 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
697 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
698 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
699 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
700 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
701 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
702 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
703 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
704 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
705 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
706 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
707 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
708 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
709 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
710 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
711 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
712 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
713 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
714 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
715 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
716 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
717 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
718 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
719 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
720 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
721 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
722 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
723 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
724 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
725 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
726 // This was shipped, but is no longer used. Do not reuse.
727 //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
728 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
729 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
730 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
731 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
732 // Note: These are the same as the above two, with the original (incorrect) name
733 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
734 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
735 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
736 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
737 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
738 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
739 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
740
741 // These values shipped, but are no longer used. Do not reuse.
742 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
743 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
744 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
745 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
746 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
747 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
748 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
749 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
750 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
751 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
752 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
753 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
754 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
755 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
756 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
757 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
758 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
759 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
760 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
761 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
762 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
763 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
764 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
765 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
766 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
767 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
768 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
769 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
770 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
771 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
772 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
773 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
774 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
775 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
776 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
777 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
778 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
779 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
780 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
781 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
782 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
783 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
784 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
785 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
786 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
787 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
788 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
789 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
790 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
791 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
792 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
793 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
794 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
795 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
796 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
797 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
798 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
799 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
800 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
801 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
802 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
803 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
804
805 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
806 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
807 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
808 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
809
810 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
811 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
812 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
813
814 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
815 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
816 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
817 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
818 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
819 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
820 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
821 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
822 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
823 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
824 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
825 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
826 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
827 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
828 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
829
830 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
831 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
832
833 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
834 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
835 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
836 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
837 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
838 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
839 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
840 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
841 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
842 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
843
844 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
845 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
846 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
847 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
848 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
849 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
850 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
851 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
852 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
853 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
854
855 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
856 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
857
858 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
859
860 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
861
862 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
863
864 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
865
866 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
867 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
868 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
869 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
870
871 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
872 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
873
874 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
875
876 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
877 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
878 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
879 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
880 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
881 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
882 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
883 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
884
885 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
886 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
887 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
888 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
889
890 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
891 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
892 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
893 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
894
895 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
896 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
897 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
898
899 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
900
901 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
902
903 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
904
905 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
906
907 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
908
909 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
910
911 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
912
913 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
914
915 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
916 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
917 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
918 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
919 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
920 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
921 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
922
923 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
924 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
925 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
926 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
927 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
928
929 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
930
931 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
932
933 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
934 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
935 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
936 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
937 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
938 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
939 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
940 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
941 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
942 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
943 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
944 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
945 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
946
947 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
948
949 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
950
951 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
952 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
953 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
954 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
955
956 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
957 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
958 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
959
960 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
961
962 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
963
964 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
965
966 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
967 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
968 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
969 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
970
971 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
972 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
973
974 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
975
976 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
977 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
978 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
979
980 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
981 D3D12_MESSAGE_ID_END_EVENT = 1015,
982
983 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
984
985 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
986
987 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
988 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
989 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
990 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
991 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
992
993 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
994
995 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
996 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
997
998 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
999 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
1000 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
1001 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
1002 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
1003 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
1004 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
1005 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
1006 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
1007 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
1008 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
1009 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
1010 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
1011 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
1012 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
1013
1014 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
1015
1016 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
1017
1018 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
1019
1020 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
1021
1022 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
1023
1024 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
1025
1026 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
1027
1028 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
1029
1030 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
1031
1032 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
1033
1034 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
1035 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
1036 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
1037 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
1038 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
1039 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
1040 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
1041 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
1042 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
1043 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
1044 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
1045 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
1046 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
1047 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
1048 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
1049
1050 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
1051
1052 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
1053
1054 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
1055 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
1056 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
1057 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
1058 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
1059 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
1060 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
1061 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
1062 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
1063 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
1064
1065 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
1066
1067 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
1068
1069 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
1070 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
1071 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
1072
1073 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
1074 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
1075 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
1076
1077 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
1078 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
1079 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
1080 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
1081
1082 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
1083 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
1084 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
1085 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
1086
1087 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
1088 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
1089 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
1090
1091 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
1092 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
1093
1094 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
1095 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
1096 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
1097 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
1098
1099 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
1100 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
1101 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
1102
1103 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
1104
1105 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
1106 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
1107 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
1108
1109 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
1110
1111 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
1112 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
1113
1114 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
1115
1116 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
1117
1118 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
1119 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
1120 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
1121 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
1122 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
1123 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
1124 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
1125
1126 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
1127 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
1128 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
1129 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
1130
1131 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
1132
1133 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
1134 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
1135
1136 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
1137 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
1138 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
1139
1140 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
1141 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
1142 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
1143 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
1144
1145 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
1146
1147 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
1148 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
1149 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
1150 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
1151 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
1152 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
1153 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
1154 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
1155 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
1156 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
1157 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
1158 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
1159 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
1160 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
1161 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
1162 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
1163
1164 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
1165 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
1166
1167 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
1168
1169 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
1170
1171 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
1172
1173 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
1174 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
1175 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
1176 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
1177 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
1178
1179 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
1180 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
1181 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
1182 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
1183
1184 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
1185 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
1186 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
1187
1188 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
1189
1190 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
1191 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
1192 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
1193 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
1194 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
1195 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
1196
1197 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
1198 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
1199 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
1200
1201 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
1202 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
1203 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
1204
1205 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
1206 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
1207 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
1208
1209 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
1210 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
1211 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
1212
1213 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
1214 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
1215 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
1216 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
1217 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
1218 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
1219 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
1220 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
1221 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
1222 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
1223 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
1224 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
1225 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
1226
1227 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
1228 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
1229 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
1230 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
1231 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
1232 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
1233 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
1234 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
1235 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
1236
1237 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
1238 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
1239
1240 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
1241 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
1242
1243 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
1244
1245 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
1246 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
1247
1248 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
1249 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
1250 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
1251 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
1252
1253 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
1254 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
1255 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
1256
1257 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
1258 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
1259 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
1260 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
1261 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
1262
1263 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
1264
1265 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
1266 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
1267 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
1268 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
1269 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
1270 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
1271 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
1272 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
1273 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
1274 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
1275 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
1276 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
1277
1278 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
1279
1280 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
1281 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
1282
1283 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
1284
1285 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
1286
1287 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
1288 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
1289 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
1290 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
1291 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
1292 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
1293
1294 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
1295
1296
1297 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
1298 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
1299 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
1300 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
1301 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
1302 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
1303 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
1304 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
1305 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
1306 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
1307
1308 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
1309 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
1310 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
1311
1312 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
1313 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
1314 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
1315
1316 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
1317
1318 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
1319 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
1320
1321 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
1322 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
1323 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
1324
1325 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
1326
1327 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
1328 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
1329
1330 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
1331 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
1332 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
1333
1334 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
1335 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
1336 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
1337
1338 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
1339 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
1340 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
1341 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
1342
1343 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
1344 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
1345 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
1346 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
1347 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
1348 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
1349
1350 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
1351 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
1352 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
1353 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
1354 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
1355 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
1356 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
1357
1358 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
1359 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
1360 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
1361 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
1362 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
1363 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
1364 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
1365 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
1366 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
1367 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
1368 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
1369 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
1370 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
1371 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
1372 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
1373 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
1374 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
1375 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
1376 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
1377 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
1378 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
1379 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
1380 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
1381 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
1382 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
1383 D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
1384 D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
1385 D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
1386
1387 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
1388 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
1389 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
1390 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
1391 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
1392 D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
1393 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
1394
1395 D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
1396
1397 D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
1398
1399 D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
1400
1401 D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
1402
1403 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
1404
1405 D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
1406
1407 D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
1408
1409 D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
1410
1411 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
1412
1413 D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
1414
1415 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
1416 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
1417
1418 D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
1419
1420 D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
1421 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
1422
1423 D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
1424
1425 D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
1426
1427 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
1428
1429 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
1430
1431 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
1432 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
1433
1434 D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
1435
1436 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
1437 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
1438 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
1439 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
1440
1441 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
1442 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
1443 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
1444 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
1445
1446 D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
1447
1448 D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
1449
1450 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
1451 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
1452 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
1453 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
1454 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
1455 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
1456
1457 D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
1458 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
1459
1460 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
1461 D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
1462
1463 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
1464
1465 D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
1466 D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
1467
1468 D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
1469 D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
1470
1471 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
1472
1473 D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
1474
1475 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
1476 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
1477 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
1478 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
1479 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
1480 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
1481 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
1482 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
1483 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
1484 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
1485 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
1486 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
1487 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
1488 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
1489 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
1490 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
1491 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
1492 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
1493 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
1494 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
1495 D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
1496 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
1497 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
1498 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
1499 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
1500 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
1501 D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
1502 D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
1503 D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
1504 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
1505 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
1506 D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
1507 D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
1508 D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
1509 D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
1510 D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
1511 D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
1512 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
1513 D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
1514 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442, // This must be the last entry in the enum.
1515} D3D12_MESSAGE_ID;
1516
1517typedef struct D3D12_MESSAGE
1518{
1519 D3D12_MESSAGE_CATEGORY Category;
1520 D3D12_MESSAGE_SEVERITY Severity;
1521 D3D12_MESSAGE_ID ID;
1522 [annotation("_Field_size_(DescriptionByteLength)")] const char* pDescription;
1523 SIZE_T DescriptionByteLength;
1524} D3D12_MESSAGE;
1525
1526typedef struct D3D12_INFO_QUEUE_FILTER_DESC
1527{
1528 UINT NumCategories;
1529 [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
1530 UINT NumSeverities;
1531 [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
1532 UINT NumIDs;
1533 [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID* pIDList;
1534} D3D12_INFO_QUEUE_FILTER_DESC;
1535
1536// To use, memset to 0, then fill in what you need.
1537typedef struct D3D12_INFO_QUEUE_FILTER
1538{
1539 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
1540 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
1541} D3D12_INFO_QUEUE_FILTER;
1542
1543//=============================================================================
1544// ID3D12InfoQueue
1545//
1546// Logs D3D12 Messages.
1547// This interface can be queried from ID3D12Device, as long as the device
1548// was created with the debug layer.
1549//
1550//
1551cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
1552[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
1553interface ID3D12InfoQueue
1554 : IUnknown
1555{
1556 //=========================================================================
1557 // Methods for configuring how much data is stored in the queue.
1558
1559 // SetMessageCountLimit()
1560 // This sets how many messages are stored. When the queue is full,
1561 // new messages coming in push old messages out.
1562 // Passing -1 to SetMessageCountLimit means the queue has
1563 // unlimited size (go until out of memory or ClearStoredMessages()).
1564 // The default message count size is
1565 // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
1566 // Returns S_OK or E_INVALIDARG.
1567 HRESULT SetMessageCountLimit([annotation("_In_")] UINT64 MessageCountLimit);
1568
1569 // ClearStoredMessages
1570 void ClearStoredMessages();
1571
1572 //=========================================================================
1573 // Methods for retrieving data or statistics from the queue.
1574
1575 // GetMessage()
1576 // Retrieves messages, one at a time, from the queue which pass any
1577 // retrieval filter currently defined. If there is no retrieval filter,
1578 // all messages can be retrieved.
1579 // The MessageIndex parameter is a 0 based index into the results passing
1580 // the filter. The number of results is returned by
1581 // GetNumStoredMessagesAllowedByRetrievalFilter().
1582 //
1583 // Note this does not remove the message from the queue.
1584 //
1585 // pMessageByteLength inputs the size of the buffer passed in via
1586 // pMessage, and outputs the size of the message. pMessage can be NULL
1587 // when the size of the required buffer is being queried (return S_FALSE).
1588 //
1589 // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
1590 // it includes extra memory after the D3D12_MESSAGE for storing the string
1591 // description, which is pointed to from within D3D12_MESSAGE. Therefore
1592 // applications should check the size needed for pMessage as described above.
1593 //
1594 // Watch out for thread safety when making consecutive calls first to
1595 // determine the buffer size required and then to pass in the buffer and
1596 // retrieve the message, and also between calling
1597 // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
1598 // the results via GetMessagE().
1599 //
1600 // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
1601 HRESULT GetMessage(
1602 [annotation("_In_")] UINT64 MessageIndex,
1603 [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
1604 [annotation("_Inout_")] SIZE_T* pMessageByteLength);
1605
1606 // GetNumMessagesAllowedByStorageFilter()
1607 // Returns how many messages sent to the queue passed
1608 // whatever storage filter was active upon receipt of
1609 // the message.
1610 // This can be a larger value than the message count limit,
1611 // returned by GetMessageCountLimit(), since old messages are discarded
1612 // when the queue is full to prevent overflow.
1613 UINT64 GetNumMessagesAllowedByStorageFilter();
1614
1615 // GetNumMessagesDeniedByStorageFilter()
1616 UINT64 GetNumMessagesDeniedByStorageFilter();
1617
1618 // GetNumStoredMessages()
1619 // Returns how many messages are currently stored in the queue.
1620 UINT64 GetNumStoredMessages();
1621
1622 // GetNumStoredMessagesAllowedByRetrievalFilter()
1623 // Returns how many messages that are currently in the queue
1624 // pass any retrieval filter that is currently set.
1625 // The MessageIndex parameter to GetMessage() indexes
1626 // an array of this many results.
1627 UINT64 GetNumStoredMessagesAllowedByRetrievalFilter();
1628
1629 // GetNumMessagesDiscardedByMessageCountLimit()
1630 UINT64 GetNumMessagesDiscardedByMessageCountLimit();
1631
1632 // GetMessageCountLimit
1633 // This is how many messages can be stored in the queue.
1634 // When the queue is full, new messages coming in push old messages out.
1635 // -1 means there is no limit.
1636 UINT64 GetMessageCountLimit();
1637
1638 //=========================================================================
1639 // Methods for filtering what gets stored in the queue
1640
1641 // AddStorageFilterEntries()
1642 // Adds to the existing entries at top of stack
1643 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1644 HRESULT AddStorageFilterEntries(
1645 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1646
1647 // GetStorageFilter()
1648 // Gets all entries at top of stack.
1649 // The application must allocate the output buffer. The size required can be
1650 // queried by passing null for pFilter and looking at the returned
1651 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1652 // pointers - these will point to locations within the same
1653 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1654 // data. So the application needs to only allocate/free the memory for pFilter.
1655 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1656 HRESULT GetStorageFilter(
1657 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1658 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1659
1660 // ClearStorageFilter()
1661 // Clears filter at the top of the stack (if there is one)
1662 void ClearStorageFilter();
1663
1664 // PushEmptyStorageFilter()
1665 // Push an empty storage filter on the stack to allow local filtering changes.
1666 // For convenience, this is automatically called by SetStorageFilter()
1667 // if the stack is empty. Thus if the stack is not needed, filters can be
1668 // defined without ever bothering to push or pop.
1669 // Returns S_OK or E_OUTOFMEMORY
1670 HRESULT PushEmptyStorageFilter();
1671
1672 // PushCopyOfStorageFilter()
1673 // Push a copy of the current filter so that local modifications can be made
1674 // starting from what currently exists.
1675 // Returns S_OK or E_OUTOFMEMORY
1676 HRESULT PushCopyOfStorageFilter();
1677
1678 // PushStorageFilter()
1679 // Push a filter passed as a parameter onto the stack. This is
1680 // just a helper for calling PushEmptyStorageFilter() followed
1681 // by AddStorageFilterEntries()
1682 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1683 HRESULT PushStorageFilter(
1684 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1685
1686 // PopStorageFilter()
1687 // Pop the current storage filter off the stack (if there is one)
1688 void PopStorageFilter();
1689
1690 // GetStorageFilterStackSize()
1691 UINT GetStorageFilterStackSize();
1692
1693 //=========================================================================
1694 // Methods for filtering what gets read out of the queue by GetMessage().
1695
1696 // AddRetrievalFilterEntries()
1697 // Adds to the existing entries at top of stack
1698 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1699 HRESULT AddRetrievalFilterEntries(
1700 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1701
1702 // GetRetrievalFilter()
1703 // Gets all entries at top of stack.
1704 // The application must allocate the output buffer. The size required can be
1705 // queried by passing null for pFilter and looking at the returned
1706 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1707 // pointers - these will point to locations within the same
1708 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1709 // data. So the application needs to only allocate/free the memory for pFilter.
1710 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1711 HRESULT GetRetrievalFilter(
1712 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1713 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1714
1715 // ClearRetrievalFilter()
1716 // Clears filter at the top of the stack (if there is one)
1717 void ClearRetrievalFilter();
1718
1719 // PushEmptyRetrievalFilter()
1720 // Push an empty storage filter on the stack to allow local filtering changes.
1721 // For convenience, this is automatically called by SetRetrievalFilter()
1722 // if the stack is empty. Thus if the stack is not needed, filters can be
1723 // defined without ever bothering to push or pop.
1724 // Returns S_OK or E_OUTOFMEMORY
1725 HRESULT PushEmptyRetrievalFilter();
1726
1727 // PushCopyOfRetrievalFilter()
1728 // Push a copy of the current filter so that local modifications can be made
1729 // starting from what currently exists.
1730 // Returns S_OK or E_OUTOFMEMORY
1731 HRESULT PushCopyOfRetrievalFilter();
1732
1733 // PushRetrievalFilter()
1734 // Push a filter passed as a parameter onto the stack. This is
1735 // just a helper for calling PushEmptyRetrievalFilter() followed
1736 // by AddRetrievalFilterEntries()
1737 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1738 HRESULT PushRetrievalFilter(
1739 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1740
1741 // PopRetrievalFilter()
1742 // Pop the current storage filter off the stack (if there is one)
1743 void PopRetrievalFilter();
1744
1745 // GetRetrievalFilterStackSize()
1746 UINT GetRetrievalFilterStackSize();
1747
1748 //=========================================================================
1749 // Methods for adding entries to the queue.
1750
1751 // AddMessage()
1752 // This is used by D3D12 components to log messages. Nothing stops
1753 // applications from calling this, but it isn’t particularly useful.
1754 // If an application wishes to insert custom strings into the queue,
1755 // AddApplicationMessage() below is suggested. See below.
1756 //
1757 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1758 HRESULT AddMessage(
1759 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1760 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1761 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1762 [annotation("_In_")] LPCSTR pDescription);
1763
1764 // AddApplicationMessage()
1765 // This is a convenience for applications that want
1766 // to insert strings of their own into the queue, perhaps to log issues
1767 // of its own, or to mark out points in time in the queue. This
1768 // has the same effect as calling AddMessage() above with the
1769 // following settings:
1770 // Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
1771 // Severity = <app selects from D3D12_MESSAGE_SEVERITY>
1772 // ID = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
1773 // pDescription = <application provided string>
1774 //
1775 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1776 HRESULT AddApplicationMessage(
1777 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1778 [annotation("_In_")] LPCSTR pDescription);
1779
1780 //=========================================================================
1781 // Methods for breaking on errors that pass the storage filter.
1782 HRESULT SetBreakOnCategory(
1783 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1784 [annotation("_In_")] BOOL bEnable);
1785 HRESULT SetBreakOnSeverity(
1786 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1787 [annotation("_In_")] BOOL bEnable);
1788 HRESULT SetBreakOnID(
1789 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1790 [annotation("_In_")] BOOL bEnable);
1791
1792 BOOL GetBreakOnCategory(
1793 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category);
1794 BOOL GetBreakOnSeverity(
1795 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity);
1796 BOOL GetBreakOnID(
1797 [annotation("_In_")] D3D12_MESSAGE_ID ID);
1798
1799 //=========================================================================
1800 // Methods for globally muting debug spte from the InfoQueue
1801 void SetMuteDebugOutput(
1802 [annotation("_In_")] BOOL bMute);
1803 BOOL GetMuteDebugOutput();
1804};
1805
1806typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
1807{
1808 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
1809 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
1810
1811} D3D12_MESSAGE_CALLBACK_FLAGS;
1812
1813cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
1814
1815typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
1816 D3D12_MESSAGE_SEVERITY Severity,
1817 D3D12_MESSAGE_ID ID,
1818 LPCSTR pDescription,
1819 void* pContext);
1820
1821[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
1822interface ID3D12InfoQueue1
1823 : ID3D12InfoQueue
1824{
1825 HRESULT RegisterMessageCallback(
1826 [annotation("_In_")] D3D12MessageFunc CallbackFunc,
1827 [annotation("_In_")] D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
1828 [annotation("_Inout_")] void* pContext,
1829 [annotation("_Inout_")] DWORD *pCallbackCookie);
1830
1831 HRESULT UnregisterMessageCallback(
1832 [annotation("_In_")] DWORD CallbackCookie);
1833};
1834
1835
1836
1837cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1838#pragma endregion
1839
1840
1841cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
1842cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
1843cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
1844cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
1845cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
1846cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
1847cpp_quote( "DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);" )
1848cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
1849cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
1850cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
1851cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
1852cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);" )
1853cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
1854cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
1855cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
1856cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);" )
1857cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
1858cpp_quote( "DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);" )
1859cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
1860cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h
new file mode 100644
index 0000000..56455b5
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12shader.h
@@ -0,0 +1,495 @@
1//////////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6// File: D3D12Shader.h
7// Content: D3D12 Shader Types and APIs
8//
9//////////////////////////////////////////////////////////////////////////////
10
11#ifndef __D3D12SHADER_H__
12#define __D3D12SHADER_H__
13
14#include "d3dcommon.h"
15
16typedef enum D3D12_SHADER_VERSION_TYPE
17{
18 D3D12_SHVER_PIXEL_SHADER = 0,
19 D3D12_SHVER_VERTEX_SHADER = 1,
20 D3D12_SHVER_GEOMETRY_SHADER = 2,
21
22 // D3D11 Shaders
23 D3D12_SHVER_HULL_SHADER = 3,
24 D3D12_SHVER_DOMAIN_SHADER = 4,
25 D3D12_SHVER_COMPUTE_SHADER = 5,
26
27 // D3D12 Shaders
28 D3D12_SHVER_LIBRARY = 6,
29
30 D3D12_SHVER_RAY_GENERATION_SHADER = 7,
31 D3D12_SHVER_INTERSECTION_SHADER = 8,
32 D3D12_SHVER_ANY_HIT_SHADER = 9,
33 D3D12_SHVER_CLOSEST_HIT_SHADER = 10,
34 D3D12_SHVER_MISS_SHADER = 11,
35 D3D12_SHVER_CALLABLE_SHADER = 12,
36
37 D3D12_SHVER_MESH_SHADER = 13,
38 D3D12_SHVER_AMPLIFICATION_SHADER = 14,
39
40 D3D12_SHVER_NODE_SHADER = 15,
41
42 D3D12_SHVER_RESERVED0 = 0xFFF0,
43} D3D12_SHADER_VERSION_TYPE;
44
45#define D3D12_SHVER_GET_TYPE(_Version) \
46 (((_Version) >> 16) & 0xffff)
47#define D3D12_SHVER_GET_MAJOR(_Version) \
48 (((_Version) >> 4) & 0xf)
49#define D3D12_SHVER_GET_MINOR(_Version) \
50 (((_Version) >> 0) & 0xf)
51
52// Slot ID for library function return
53#define D3D_RETURN_PARAMETER_INDEX (-1)
54
55typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
56
57typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
58
59
60typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
61{
62 LPCSTR SemanticName; // Name of the semantic
63 UINT SemanticIndex; // Index of the semantic
64 UINT Register; // Number of member variables
65 D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
66 D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.)
67 BYTE Mask; // Mask to indicate which components of the register
68 // are used (combination of D3D10_COMPONENT_MASK values)
69 BYTE ReadWriteMask; // Mask to indicate whether a given component is
70 // never written (if this is an output signature) or
71 // always read (if this is an input signature).
72 // (combination of D3D_MASK_* values)
73 UINT Stream; // Stream index
74 D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision
75} D3D12_SIGNATURE_PARAMETER_DESC;
76
77typedef struct _D3D12_SHADER_BUFFER_DESC
78{
79 LPCSTR Name; // Name of the constant buffer
80 D3D_CBUFFER_TYPE Type; // Indicates type of buffer content
81 UINT Variables; // Number of member variables
82 UINT Size; // Size of CB (in bytes)
83 UINT uFlags; // Buffer description flags
84} D3D12_SHADER_BUFFER_DESC;
85
86typedef struct _D3D12_SHADER_VARIABLE_DESC
87{
88 LPCSTR Name; // Name of the variable
89 UINT StartOffset; // Offset in constant buffer's backing store
90 UINT Size; // Size of variable (in bytes)
91 UINT uFlags; // Variable flags
92 LPVOID DefaultValue; // Raw pointer to default value
93 UINT StartTexture; // First texture index (or -1 if no textures used)
94 UINT TextureSize; // Number of texture slots possibly used.
95 UINT StartSampler; // First sampler index (or -1 if no textures used)
96 UINT SamplerSize; // Number of sampler slots possibly used.
97} D3D12_SHADER_VARIABLE_DESC;
98
99typedef struct _D3D12_SHADER_TYPE_DESC
100{
101 D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
102 D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
103 UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
104 UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
105 UINT Elements; // Number of elements (0 if not an array)
106 UINT Members; // Number of members (0 if not a structure)
107 UINT Offset; // Offset from the start of structure (0 if not a structure member)
108 LPCSTR Name; // Name of type, can be NULL
109} D3D12_SHADER_TYPE_DESC;
110
111typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
112
113typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
114
115typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;
116
117typedef struct _D3D12_SHADER_DESC
118{
119 UINT Version; // Shader version
120 LPCSTR Creator; // Creator string
121 UINT Flags; // Shader compilation/parse flags
122
123 UINT ConstantBuffers; // Number of constant buffers
124 UINT BoundResources; // Number of bound resources
125 UINT InputParameters; // Number of parameters in the input signature
126 UINT OutputParameters; // Number of parameters in the output signature
127
128 UINT InstructionCount; // Number of emitted instructions
129 UINT TempRegisterCount; // Number of temporary registers used
130 UINT TempArrayCount; // Number of temporary arrays used
131 UINT DefCount; // Number of constant defines
132 UINT DclCount; // Number of declarations (input + output)
133 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
134 UINT TextureLoadInstructions; // Number of texture load instructions
135 UINT TextureCompInstructions; // Number of texture comparison instructions
136 UINT TextureBiasInstructions; // Number of texture bias instructions
137 UINT TextureGradientInstructions; // Number of texture gradient instructions
138 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
139 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
140 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
141 UINT StaticFlowControlCount; // Number of static flow control instructions used
142 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
143 UINT MacroInstructionCount; // Number of macro instructions used
144 UINT ArrayInstructionCount; // Number of array instructions used
145 UINT CutInstructionCount; // Number of cut instructions used
146 UINT EmitInstructionCount; // Number of emit instructions used
147 D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology
148 UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count
149 D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive
150 UINT PatchConstantParameters; // Number of parameters in the patch constant signature
151 UINT cGSInstanceCount; // Number of Geometry shader instances
152 UINT cControlPoints; // Number of control points in the HS->DS stage
153 D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator
154 D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator
155 D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline)
156 // instruction counts
157 UINT cBarrierInstructions; // Number of barrier instructions in a compute shader
158 UINT cInterlockedInstructions; // Number of interlocked instructions
159 UINT cTextureStoreInstructions; // Number of texture writes
160} D3D12_SHADER_DESC;
161
162typedef struct _D3D12_SHADER_INPUT_BIND_DESC
163{
164 LPCSTR Name; // Name of the resource
165 D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
166 UINT BindPoint; // Starting bind point
167 UINT BindCount; // Number of contiguous bind points (for arrays)
168
169 UINT uFlags; // Input binding flags
170 D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
171 D3D_SRV_DIMENSION Dimension; // Dimension (if texture)
172 UINT NumSamples; // Number of samples (0 if not MS texture)
173 UINT Space; // Register space
174 UINT uID; // Range ID in the bytecode
175} D3D12_SHADER_INPUT_BIND_DESC;
176
177#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001
178#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002
179#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004
180#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008
181#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010
182#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020
183#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040
184#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080
185#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100
186#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200
187#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400
188#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800
189#define D3D_SHADER_REQUIRES_ROVS 0x00001000
190#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000
191#define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000
192#define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000
193#define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000
194#define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000
195#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000
196#define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000
197#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000
198#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000
199#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000
200#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000
201#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000
202#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000
203#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
204#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
205#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
206#define D3D_SHADER_REQUIRES_ADVANCED_TEXTURE_OPS 0x20000000
207#define D3D_SHADER_REQUIRES_WRITEABLE_MSAA_TEXTURES 0x40000000
208#define D3D_SHADER_REQUIRES_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
209#define D3D_SHADER_REQUIRES_EXTENDED_COMMAND_INFO 0x100000000ull
210
211
212typedef struct _D3D12_LIBRARY_DESC
213{
214 LPCSTR Creator; // The name of the originator of the library.
215 UINT Flags; // Compilation flags.
216 UINT FunctionCount; // Number of functions exported from the library.
217} D3D12_LIBRARY_DESC;
218
219typedef struct _D3D12_FUNCTION_DESC
220{
221 UINT Version; // Shader version
222 LPCSTR Creator; // Creator string
223 UINT Flags; // Shader compilation/parse flags
224
225 UINT ConstantBuffers; // Number of constant buffers
226 UINT BoundResources; // Number of bound resources
227
228 UINT InstructionCount; // Number of emitted instructions
229 UINT TempRegisterCount; // Number of temporary registers used
230 UINT TempArrayCount; // Number of temporary arrays used
231 UINT DefCount; // Number of constant defines
232 UINT DclCount; // Number of declarations (input + output)
233 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
234 UINT TextureLoadInstructions; // Number of texture load instructions
235 UINT TextureCompInstructions; // Number of texture comparison instructions
236 UINT TextureBiasInstructions; // Number of texture bias instructions
237 UINT TextureGradientInstructions; // Number of texture gradient instructions
238 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
239 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
240 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
241 UINT StaticFlowControlCount; // Number of static flow control instructions used
242 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
243 UINT MacroInstructionCount; // Number of macro instructions used
244 UINT ArrayInstructionCount; // Number of array instructions used
245 UINT MovInstructionCount; // Number of mov instructions used
246 UINT MovcInstructionCount; // Number of movc instructions used
247 UINT ConversionInstructionCount; // Number of type conversion instructions used
248 UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used
249 D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code
250 UINT64 RequiredFeatureFlags; // Required feature flags
251
252 LPCSTR Name; // Function name
253 INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return)
254 BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine
255 BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob
256 BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob
257} D3D12_FUNCTION_DESC;
258
259typedef struct _D3D12_PARAMETER_DESC
260{
261 LPCSTR Name; // Parameter name.
262 LPCSTR SemanticName; // Parameter semantic name (+index).
263 D3D_SHADER_VARIABLE_TYPE Type; // Element type.
264 D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix.
265 UINT Rows; // Rows are for matrix parameters.
266 UINT Columns; // Components or Columns in matrix.
267 D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode.
268 D3D_PARAMETER_FLAGS Flags; // Parameter modifiers.
269
270 UINT FirstInRegister; // The first input register for this parameter.
271 UINT FirstInComponent; // The first input register component for this parameter.
272 UINT FirstOutRegister; // The first output register for this parameter.
273 UINT FirstOutComponent; // The first output register component for this parameter.
274} D3D12_PARAMETER_DESC;
275
276
277//////////////////////////////////////////////////////////////////////////////
278// Interfaces ////////////////////////////////////////////////////////////////
279//////////////////////////////////////////////////////////////////////////////
280
281typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
282typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;
283
284typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
285typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;
286
287typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
288typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;
289
290typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
291typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;
292
293typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
294typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;
295
296typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
297typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;
298
299typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
300typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;
301
302
303// {E913C351-783D-48CA-A1D1-4F306284AD56}
304interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
305DEFINE_GUID(IID_ID3D12ShaderReflectionType,
3060xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);
307
308#undef INTERFACE
309#define INTERFACE ID3D12ShaderReflectionType
310
311DECLARE_INTERFACE(ID3D12ShaderReflectionType)
312{
313 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE;
314
315 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE;
316 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE;
317 STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE;
318
319 STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
320 STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE;
321 STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE;
322 STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE;
323 STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE;
324 STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
325 STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE;
326};
327
328// {8337A8A6-A216-444A-B2F4-314733A73AEA}
329interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable;
330DEFINE_GUID(IID_ID3D12ShaderReflectionVariable,
3310x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea);
332
333#undef INTERFACE
334#define INTERFACE ID3D12ShaderReflectionVariable
335
336DECLARE_INTERFACE(ID3D12ShaderReflectionVariable)
337{
338 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE;
339
340 STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE;
341 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE;
342
343 STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE;
344};
345
346// {C59598B4-48B3-4869-B9B1-B1618B14A8B7}
347interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer;
348DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer,
3490xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7);
350
351#undef INTERFACE
352#define INTERFACE ID3D12ShaderReflectionConstantBuffer
353
354DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer)
355{
356 STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE;
357
358 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE;
359 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
360};
361
362// The ID3D12ShaderReflection IID may change from SDK version to SDK version
363// if the reflection API changes. This prevents new code with the new API
364// from working with an old binary. Recompiling with the new header
365// will pick up the new IID.
366
367// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}
368interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection;
369DEFINE_GUID(IID_ID3D12ShaderReflection,
3700x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e);
371
372#undef INTERFACE
373#define INTERFACE ID3D12ShaderReflection
374
375DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown)
376{
377 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid,
378 _Out_ LPVOID *ppv) PURE;
379 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
380 STDMETHOD_(ULONG, Release)(THIS) PURE;
381
382 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE;
383
384 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE;
385 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
386
387 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
388 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
389
390 STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
391 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
392 STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
393 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
394 STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex,
395 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
396
397 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
398
399 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
400 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
401
402 STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE;
403 STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE;
404 STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE;
405 STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE;
406
407 STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE;
408 STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE;
409
410 STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE;
411 STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE;
412
413 STDMETHOD_(UINT, GetThreadGroupSize)(THIS_
414 _Out_opt_ UINT* pSizeX,
415 _Out_opt_ UINT* pSizeY,
416 _Out_opt_ UINT* pSizeZ) PURE;
417
418 STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE;
419};
420
421// {8E349D19-54DB-4A56-9DC9-119D87BDB804}
422interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection;
423DEFINE_GUID(IID_ID3D12LibraryReflection,
4240x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4);
425
426#undef INTERFACE
427#define INTERFACE ID3D12LibraryReflection
428
429DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown)
430{
431 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE;
432 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
433 STDMETHOD_(ULONG, Release)(THIS) PURE;
434
435 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE;
436
437 STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE;
438};
439
440// {1108795C-2772-4BA9-B2A8-D464DC7E2799}
441interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection;
442DEFINE_GUID(IID_ID3D12FunctionReflection,
4430x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99);
444
445#undef INTERFACE
446#define INTERFACE ID3D12FunctionReflection
447
448DECLARE_INTERFACE(ID3D12FunctionReflection)
449{
450 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE;
451
452 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE;
453 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
454
455 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
456 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
457
458 STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
459
460 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
461 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
462
463 // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value.
464 STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE;
465};
466
467// {EC25F42D-7006-4F2B-B33E-02CC3375733F}
468interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection;
469DEFINE_GUID(IID_ID3D12FunctionParameterReflection,
4700xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f);
471
472#undef INTERFACE
473#define INTERFACE ID3D12FunctionParameterReflection
474
475DECLARE_INTERFACE(ID3D12FunctionParameterReflection)
476{
477 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE;
478};
479
480
481//////////////////////////////////////////////////////////////////////////////
482// APIs //////////////////////////////////////////////////////////////////////
483//////////////////////////////////////////////////////////////////////////////
484
485#ifdef __cplusplus
486extern "C" {
487#endif //__cplusplus
488
489#ifdef __cplusplus
490}
491#endif //__cplusplus
492
493#endif //__D3D12SHADER_H__
494
495
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h
new file mode 100644
index 0000000..843e78d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.h
@@ -0,0 +1,10726 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12video_h__
39#define __d3d12video_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
56#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
57typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
58
59#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12VideoDevice_FWD_DEFINED__
63#define __ID3D12VideoDevice_FWD_DEFINED__
64typedef interface ID3D12VideoDevice ID3D12VideoDevice;
65
66#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
70#define __ID3D12VideoDecoder_FWD_DEFINED__
71typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
72
73#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
77#define __ID3D12VideoProcessor_FWD_DEFINED__
78typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
79
80#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
84#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
85typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
86
87#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
91#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
92typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
93
94#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
98#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
99typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
100
101#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
105#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
106typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
107
108#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
112#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
113typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
114
115#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
119#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
120typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
121
122#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
126#define __ID3D12VideoDevice1_FWD_DEFINED__
127typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
128
129#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
133#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
134typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
135
136#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
140#define __ID3D12VideoDecoder1_FWD_DEFINED__
141typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
142
143#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
147#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
148typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
149
150#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
154#define __ID3D12VideoProcessor1_FWD_DEFINED__
155typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
156
157#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
161#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
162typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
163
164#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
168#define __ID3D12VideoDevice2_FWD_DEFINED__
169typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
170
171#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
175#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
176typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
177
178#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
182#define __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
183typedef interface ID3D12VideoDecodeCommandList3 ID3D12VideoDecodeCommandList3;
184
185#endif /* __ID3D12VideoDecodeCommandList3_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
189#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
190typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
191
192#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12VideoProcessCommandList3_FWD_DEFINED__
196#define __ID3D12VideoProcessCommandList3_FWD_DEFINED__
197typedef interface ID3D12VideoProcessCommandList3 ID3D12VideoProcessCommandList3;
198
199#endif /* __ID3D12VideoProcessCommandList3_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
203#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
204typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
205
206#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
210#define __ID3D12VideoEncoder_FWD_DEFINED__
211typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
212
213#endif /* __ID3D12VideoEncoder_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
217#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
218typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
219
220#endif /* __ID3D12VideoEncoderHeap_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
224#define __ID3D12VideoDevice3_FWD_DEFINED__
225typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
226
227#endif /* __ID3D12VideoDevice3_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
231#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
232typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
233
234#endif /* __ID3D12VideoEncodeCommandList2_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
238#define __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
239typedef interface ID3D12VideoEncodeCommandList3 ID3D12VideoEncodeCommandList3;
240
241#endif /* __ID3D12VideoEncodeCommandList3_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12VideoEncoderHeap1_FWD_DEFINED__
245#define __ID3D12VideoEncoderHeap1_FWD_DEFINED__
246typedef interface ID3D12VideoEncoderHeap1 ID3D12VideoEncoderHeap1;
247
248#endif /* __ID3D12VideoEncoderHeap1_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12VideoDevice4_FWD_DEFINED__
252#define __ID3D12VideoDevice4_FWD_DEFINED__
253typedef interface ID3D12VideoDevice4 ID3D12VideoDevice4;
254
255#endif /* __ID3D12VideoDevice4_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
259#define __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
260typedef interface ID3D12VideoEncodeCommandList4 ID3D12VideoEncodeCommandList4;
261
262#endif /* __ID3D12VideoEncodeCommandList4_FWD_DEFINED__ */
263
264
265/* header files for imported files */
266#include "oaidl.h"
267#include "ocidl.h"
268#include "dxgicommon.h"
269#include "d3d12.h"
270
271#ifdef __cplusplus
272extern "C"{
273#endif
274
275
276/* interface __MIDL_itf_d3d12video_0000_0000 */
277/* [local] */
278
279#include <winapifamily.h>
280#pragma region App Family
281#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
282typedef
283enum D3D12_VIDEO_FIELD_TYPE
284 {
285 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
286 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
287 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
288 } D3D12_VIDEO_FIELD_TYPE;
289
290typedef
291enum D3D12_VIDEO_FRAME_STEREO_FORMAT
292 {
293 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
294 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
295 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
296 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
297 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
298 } D3D12_VIDEO_FRAME_STEREO_FORMAT;
299
300typedef struct D3D12_VIDEO_FORMAT
301 {
302 DXGI_FORMAT Format;
303 DXGI_COLOR_SPACE_TYPE ColorSpace;
304 } D3D12_VIDEO_FORMAT;
305
306typedef struct D3D12_VIDEO_SAMPLE
307 {
308 UINT Width;
309 UINT Height;
310 D3D12_VIDEO_FORMAT Format;
311 } D3D12_VIDEO_SAMPLE;
312
313typedef
314enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
315 {
316 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
317 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
318 } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
319
320typedef
321enum D3D12_FEATURE_VIDEO
322 {
323 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
324 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
325 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
326 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
327 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
328 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
329 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
330 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
331 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
332 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
333 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
334 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
335 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
336 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
337 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
338 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
339 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
340 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
341 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
342 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
343 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
344 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
345 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
346 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
347 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
348 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
349 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
350 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
351 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
352 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
353 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
354 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
355 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
356 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
357 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
358 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
359 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
360 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
361 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
362 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
363 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
364 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
365 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
366 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
367 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
368 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
369 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
370 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
371 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
372 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57
373 } D3D12_FEATURE_VIDEO;
374
375typedef
376enum D3D12_BITSTREAM_ENCRYPTION_TYPE
377 {
378 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
379 } D3D12_BITSTREAM_ENCRYPTION_TYPE;
380
381typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
382 {
383 GUID DecodeProfile;
384 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
385 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
386 } D3D12_VIDEO_DECODE_CONFIGURATION;
387
388typedef struct D3D12_VIDEO_DECODER_DESC
389 {
390 UINT NodeMask;
391 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
392 } D3D12_VIDEO_DECODER_DESC;
393
394typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
395 {
396 UINT NodeMask;
397 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
398 UINT DecodeWidth;
399 UINT DecodeHeight;
400 DXGI_FORMAT Format;
401 DXGI_RATIONAL FrameRate;
402 UINT BitRate;
403 UINT MaxDecodePictureBufferCount;
404 } D3D12_VIDEO_DECODER_HEAP_DESC;
405
406typedef struct D3D12_VIDEO_SIZE_RANGE
407 {
408 UINT MaxWidth;
409 UINT MaxHeight;
410 UINT MinWidth;
411 UINT MinHeight;
412 } D3D12_VIDEO_SIZE_RANGE;
413
414typedef
415enum D3D12_VIDEO_PROCESS_FILTER
416 {
417 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
418 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
419 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
420 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
421 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
422 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
423 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
424 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
425 } D3D12_VIDEO_PROCESS_FILTER;
426
427typedef
428enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
429 {
430 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
431 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
432 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
433 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
434 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
435 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
436 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
437 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
438 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
439 } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
440
441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )
442typedef
443enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
444 {
445 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
446 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
447 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
448 } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
449
450DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )
451typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
452 {
453 BOOL Enable;
454 FLOAT Alpha;
455 } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
456
457typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
458 {
459 BOOL Enable;
460 FLOAT Lower;
461 FLOAT Upper;
462 } D3D12_VIDEO_PROCESS_LUMA_KEY;
463
464typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
465 {
466 DXGI_FORMAT Format;
467 DXGI_COLOR_SPACE_TYPE ColorSpace;
468 DXGI_RATIONAL SourceAspectRatio;
469 DXGI_RATIONAL DestinationAspectRatio;
470 DXGI_RATIONAL FrameRate;
471 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
472 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
473 BOOL EnableOrientation;
474 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
475 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
476 D3D12_VIDEO_FIELD_TYPE FieldType;
477 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
478 BOOL EnableAlphaBlending;
479 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
480 UINT NumPastFrames;
481 UINT NumFutureFrames;
482 BOOL EnableAutoProcessing;
483 } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
484
485typedef
486enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
487 {
488 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
489 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
490 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
491 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
492 } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
493
494typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
495 {
496 DXGI_FORMAT Format;
497 DXGI_COLOR_SPACE_TYPE ColorSpace;
498 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
499 UINT AlphaFillModeSourceStreamIndex;
500 FLOAT BackgroundColor[ 4 ];
501 DXGI_RATIONAL FrameRate;
502 BOOL EnableStereo;
503 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
504
505
506
507extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
508extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
509
510#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
511#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
512
513/* interface ID3D12VideoDecoderHeap */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
522 ID3D12VideoDecoderHeap : public ID3D12Pageable
523 {
524 public:
525#if defined(_MSC_VER) || !defined(_WIN32)
526 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
527#else
528 virtual D3D12_VIDEO_DECODER_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
529 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal) = 0;
530#endif
531
532 };
533
534
535#else /* C style interface */
536
537 typedef struct ID3D12VideoDecoderHeapVtbl
538 {
539 BEGIN_INTERFACE
540
541 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
542 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
543 ID3D12VideoDecoderHeap * This,
544 REFIID riid,
545 _COM_Outptr_ void **ppvObject);
546
547 DECLSPEC_XFGVIRT(IUnknown, AddRef)
548 ULONG ( STDMETHODCALLTYPE *AddRef )(
549 ID3D12VideoDecoderHeap * This);
550
551 DECLSPEC_XFGVIRT(IUnknown, Release)
552 ULONG ( STDMETHODCALLTYPE *Release )(
553 ID3D12VideoDecoderHeap * This);
554
555 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
556 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
557 ID3D12VideoDecoderHeap * This,
558 _In_ REFGUID guid,
559 _Inout_ UINT *pDataSize,
560 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
561
562 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
563 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
564 ID3D12VideoDecoderHeap * This,
565 _In_ REFGUID guid,
566 _In_ UINT DataSize,
567 _In_reads_bytes_opt_( DataSize ) const void *pData);
568
569 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
570 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
571 ID3D12VideoDecoderHeap * This,
572 _In_ REFGUID guid,
573 _In_opt_ const IUnknown *pData);
574
575 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
576 HRESULT ( STDMETHODCALLTYPE *SetName )(
577 ID3D12VideoDecoderHeap * This,
578 _In_z_ LPCWSTR Name);
579
580 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
581 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
582 ID3D12VideoDecoderHeap * This,
583 REFIID riid,
584 _COM_Outptr_opt_ void **ppvDevice);
585
586 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
587#if !defined(_WIN32)
588 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
589 ID3D12VideoDecoderHeap * This);
590
591#else
592 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
593 ID3D12VideoDecoderHeap * This,
594 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
595
596#endif
597
598 END_INTERFACE
599 } ID3D12VideoDecoderHeapVtbl;
600
601 interface ID3D12VideoDecoderHeap
602 {
603 CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
604 };
605
606
607
608#ifdef COBJMACROS
609
610
611#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
612 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
613
614#define ID3D12VideoDecoderHeap_AddRef(This) \
615 ( (This)->lpVtbl -> AddRef(This) )
616
617#define ID3D12VideoDecoderHeap_Release(This) \
618 ( (This)->lpVtbl -> Release(This) )
619
620
621#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
622 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
623
624#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
625 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
626
627#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
628 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
629
630#define ID3D12VideoDecoderHeap_SetName(This,Name) \
631 ( (This)->lpVtbl -> SetName(This,Name) )
632
633
634#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
635 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
636
637
638#if !defined(_WIN32)
639
640#define ID3D12VideoDecoderHeap_GetDesc(This) \
641 ( (This)->lpVtbl -> GetDesc(This) )
642#else
643#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
644 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
645#endif
646
647#endif /* COBJMACROS */
648
649
650#endif /* C style interface */
651
652
653
654
655#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
656
657
658#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
659#define __ID3D12VideoDevice_INTERFACE_DEFINED__
660
661/* interface ID3D12VideoDevice */
662/* [unique][local][object][uuid] */
663
664
665EXTERN_C const IID IID_ID3D12VideoDevice;
666
667#if defined(__cplusplus) && !defined(CINTERFACE)
668
669 MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
670 ID3D12VideoDevice : public IUnknown
671 {
672 public:
673 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
674 D3D12_FEATURE_VIDEO FeatureVideo,
675 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
676 UINT FeatureSupportDataSize) = 0;
677
678 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
679 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
680 _In_ REFIID riid,
681 _COM_Outptr_ void **ppVideoDecoder) = 0;
682
683 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
684 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
685 _In_ REFIID riid,
686 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
687
688 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
689 UINT NodeMask,
690 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
691 UINT NumInputStreamDescs,
692 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
693 _In_ REFIID riid,
694 _COM_Outptr_ void **ppVideoProcessor) = 0;
695
696 };
697
698
699#else /* C style interface */
700
701 typedef struct ID3D12VideoDeviceVtbl
702 {
703 BEGIN_INTERFACE
704
705 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
706 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
707 ID3D12VideoDevice * This,
708 REFIID riid,
709 _COM_Outptr_ void **ppvObject);
710
711 DECLSPEC_XFGVIRT(IUnknown, AddRef)
712 ULONG ( STDMETHODCALLTYPE *AddRef )(
713 ID3D12VideoDevice * This);
714
715 DECLSPEC_XFGVIRT(IUnknown, Release)
716 ULONG ( STDMETHODCALLTYPE *Release )(
717 ID3D12VideoDevice * This);
718
719 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
720 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
721 ID3D12VideoDevice * This,
722 D3D12_FEATURE_VIDEO FeatureVideo,
723 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
724 UINT FeatureSupportDataSize);
725
726 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
727 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
728 ID3D12VideoDevice * This,
729 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
730 _In_ REFIID riid,
731 _COM_Outptr_ void **ppVideoDecoder);
732
733 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
734 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
735 ID3D12VideoDevice * This,
736 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
737 _In_ REFIID riid,
738 _COM_Outptr_ void **ppVideoDecoderHeap);
739
740 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
741 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
742 ID3D12VideoDevice * This,
743 UINT NodeMask,
744 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
745 UINT NumInputStreamDescs,
746 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
747 _In_ REFIID riid,
748 _COM_Outptr_ void **ppVideoProcessor);
749
750 END_INTERFACE
751 } ID3D12VideoDeviceVtbl;
752
753 interface ID3D12VideoDevice
754 {
755 CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
756 };
757
758
759
760#ifdef COBJMACROS
761
762
763#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
764 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
765
766#define ID3D12VideoDevice_AddRef(This) \
767 ( (This)->lpVtbl -> AddRef(This) )
768
769#define ID3D12VideoDevice_Release(This) \
770 ( (This)->lpVtbl -> Release(This) )
771
772
773#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
774 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
775
776#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
777 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
778
779#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
780 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
781
782#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
783 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
784
785#endif /* COBJMACROS */
786
787
788#endif /* C style interface */
789
790
791
792
793#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
794
795
796#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
797#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
798
799/* interface ID3D12VideoDecoder */
800/* [unique][local][object][uuid] */
801
802
803EXTERN_C const IID IID_ID3D12VideoDecoder;
804
805#if defined(__cplusplus) && !defined(CINTERFACE)
806
807 MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
808 ID3D12VideoDecoder : public ID3D12Pageable
809 {
810 public:
811#if defined(_MSC_VER) || !defined(_WIN32)
812 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
813#else
814 virtual D3D12_VIDEO_DECODER_DESC *STDMETHODCALLTYPE GetDesc(
815 D3D12_VIDEO_DECODER_DESC * RetVal) = 0;
816#endif
817
818 };
819
820
821#else /* C style interface */
822
823 typedef struct ID3D12VideoDecoderVtbl
824 {
825 BEGIN_INTERFACE
826
827 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
828 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
829 ID3D12VideoDecoder * This,
830 REFIID riid,
831 _COM_Outptr_ void **ppvObject);
832
833 DECLSPEC_XFGVIRT(IUnknown, AddRef)
834 ULONG ( STDMETHODCALLTYPE *AddRef )(
835 ID3D12VideoDecoder * This);
836
837 DECLSPEC_XFGVIRT(IUnknown, Release)
838 ULONG ( STDMETHODCALLTYPE *Release )(
839 ID3D12VideoDecoder * This);
840
841 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
842 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
843 ID3D12VideoDecoder * This,
844 _In_ REFGUID guid,
845 _Inout_ UINT *pDataSize,
846 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
847
848 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
849 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
850 ID3D12VideoDecoder * This,
851 _In_ REFGUID guid,
852 _In_ UINT DataSize,
853 _In_reads_bytes_opt_( DataSize ) const void *pData);
854
855 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
856 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
857 ID3D12VideoDecoder * This,
858 _In_ REFGUID guid,
859 _In_opt_ const IUnknown *pData);
860
861 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
862 HRESULT ( STDMETHODCALLTYPE *SetName )(
863 ID3D12VideoDecoder * This,
864 _In_z_ LPCWSTR Name);
865
866 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
867 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
868 ID3D12VideoDecoder * This,
869 REFIID riid,
870 _COM_Outptr_opt_ void **ppvDevice);
871
872 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
873#if !defined(_WIN32)
874 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
875 ID3D12VideoDecoder * This);
876
877#else
878 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
879 ID3D12VideoDecoder * This,
880 D3D12_VIDEO_DECODER_DESC * RetVal);
881
882#endif
883
884 END_INTERFACE
885 } ID3D12VideoDecoderVtbl;
886
887 interface ID3D12VideoDecoder
888 {
889 CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
890 };
891
892
893
894#ifdef COBJMACROS
895
896
897#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
898 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
899
900#define ID3D12VideoDecoder_AddRef(This) \
901 ( (This)->lpVtbl -> AddRef(This) )
902
903#define ID3D12VideoDecoder_Release(This) \
904 ( (This)->lpVtbl -> Release(This) )
905
906
907#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
908 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
909
910#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
911 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
912
913#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
914 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
915
916#define ID3D12VideoDecoder_SetName(This,Name) \
917 ( (This)->lpVtbl -> SetName(This,Name) )
918
919
920#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
921 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
922
923
924#if !defined(_WIN32)
925
926#define ID3D12VideoDecoder_GetDesc(This) \
927 ( (This)->lpVtbl -> GetDesc(This) )
928#else
929#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
930 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
931#endif
932
933#endif /* COBJMACROS */
934
935
936#endif /* C style interface */
937
938
939
940
941#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
942
943
944/* interface __MIDL_itf_d3d12video_0000_0003 */
945/* [local] */
946
947typedef
948enum D3D12_VIDEO_DECODE_TIER
949 {
950 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
951 D3D12_VIDEO_DECODE_TIER_1 = 1,
952 D3D12_VIDEO_DECODE_TIER_2 = 2,
953 D3D12_VIDEO_DECODE_TIER_3 = 3
954 } D3D12_VIDEO_DECODE_TIER;
955
956typedef
957enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
958 {
959 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
960 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
961 } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
962
963DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )
964typedef
965enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
966 {
967 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
968 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
969 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
970 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
971 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
972 } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
973
974DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )
975typedef
976enum D3D12_VIDEO_DECODE_STATUS
977 {
978 D3D12_VIDEO_DECODE_STATUS_OK = 0,
979 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
980 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
981 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
982 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
983 } D3D12_VIDEO_DECODE_STATUS;
984
985typedef
986enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
987 {
988 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
989 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
990 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
991 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3
992 } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
993
994typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
995 {
996 UINT NodeIndex;
997 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
998 UINT Width;
999 UINT Height;
1000 DXGI_FORMAT DecodeFormat;
1001 DXGI_RATIONAL FrameRate;
1002 UINT BitRate;
1003 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
1004 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
1005 D3D12_VIDEO_DECODE_TIER DecodeTier;
1006 } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
1007
1008typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
1009 {
1010 UINT NodeIndex;
1011 UINT ProfileCount;
1012 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
1013
1014typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
1015 {
1016 UINT NodeIndex;
1017 UINT ProfileCount;
1018 _Field_size_full_(ProfileCount) GUID *pProfiles;
1019 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
1020
1021typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
1022 {
1023 UINT NodeIndex;
1024 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1025 UINT FormatCount;
1026 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
1027
1028typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
1029 {
1030 UINT NodeIndex;
1031 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1032 UINT FormatCount;
1033 _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
1034 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
1035
1036typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
1037 {
1038 BOOL IOCoherent;
1039 } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
1040
1041typedef
1042enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
1043 {
1044 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
1045 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
1046 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
1047 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
1048 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
1049 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
1050 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
1051 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
1052
1053typedef
1054enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
1055 {
1056 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
1057 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
1058 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
1059 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
1060 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
1061 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
1062 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
1063 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
1064 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
1065
1066DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )
1067typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
1068 {
1069 UINT NodeIndex;
1070 GUID DecodeProfile;
1071 UINT Width;
1072 UINT Height;
1073 DXGI_FORMAT DecodeFormat;
1074 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
1075 UINT BinCount;
1076 UINT CounterBitDepth;
1077 } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
1078
1079typedef
1080enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
1081 {
1082 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
1083 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
1084 } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
1085
1086DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )
1087typedef
1088enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
1089 {
1090 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
1091 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
1092 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
1093 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4
1094 } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
1095
1096DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )
1097typedef struct D3D12_VIDEO_SCALE_SUPPORT
1098 {
1099 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
1100 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
1101 } D3D12_VIDEO_SCALE_SUPPORT;
1102
1103typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
1104 {
1105 UINT NodeIndex;
1106 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1107 D3D12_VIDEO_SAMPLE DecodeSample;
1108 D3D12_VIDEO_FORMAT OutputFormat;
1109 DXGI_RATIONAL FrameRate;
1110 UINT BitRate;
1111 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
1112 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1113 } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
1114
1115typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
1116 {
1117 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
1118 UINT64 MemoryPoolL0Size;
1119 UINT64 MemoryPoolL1Size;
1120 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
1121
1122typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
1123 {
1124 UINT NodeMask;
1125 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
1126 UINT NumInputStreamDescs;
1127 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
1128 UINT64 MemoryPoolL0Size;
1129 UINT64 MemoryPoolL1Size;
1130 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
1131
1132typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
1133 {
1134 UINT64 Status;
1135 UINT64 NumMacroblocksAffected;
1136 DXGI_RATIONAL FrameRate;
1137 UINT BitRate;
1138 } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
1139
1140typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
1141 {
1142 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
1143 UINT Size;
1144 _Field_size_bytes_full_(Size) void *pData;
1145 } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
1146
1147typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
1148 {
1149 UINT NumTexture2Ds;
1150 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
1151 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
1152 _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
1153 } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
1154
1155typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1156 {
1157 ID3D12Resource *pBuffer;
1158 UINT64 Offset;
1159 UINT64 Size;
1160 } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1161
1162typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
1163 {
1164 BOOL Enable;
1165 ID3D12Resource *pReferenceTexture2D;
1166 UINT ReferenceSubresource;
1167 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1168 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1169 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
1170
1171typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
1172 {
1173 UINT NumFrameArguments;
1174 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
1175 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
1176 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
1177 ID3D12VideoDecoderHeap *pHeap;
1178 } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
1179
1180typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
1181 {
1182 ID3D12Resource *pOutputTexture2D;
1183 UINT OutputSubresource;
1184 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
1185 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
1186
1187
1188
1189extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1190extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
1191
1192#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
1193#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
1194
1195/* interface ID3D12VideoProcessor */
1196/* [unique][local][object][uuid] */
1197
1198
1199EXTERN_C const IID IID_ID3D12VideoProcessor;
1200
1201#if defined(__cplusplus) && !defined(CINTERFACE)
1202
1203 MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
1204 ID3D12VideoProcessor : public ID3D12Pageable
1205 {
1206 public:
1207 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
1208
1209 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
1210
1211 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
1212 UINT NumInputStreamDescs,
1213 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
1214
1215#if defined(_MSC_VER) || !defined(_WIN32)
1216 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
1217#else
1218 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *STDMETHODCALLTYPE GetOutputStreamDesc(
1219 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal) = 0;
1220#endif
1221
1222 };
1223
1224
1225#else /* C style interface */
1226
1227 typedef struct ID3D12VideoProcessorVtbl
1228 {
1229 BEGIN_INTERFACE
1230
1231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1233 ID3D12VideoProcessor * This,
1234 REFIID riid,
1235 _COM_Outptr_ void **ppvObject);
1236
1237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1238 ULONG ( STDMETHODCALLTYPE *AddRef )(
1239 ID3D12VideoProcessor * This);
1240
1241 DECLSPEC_XFGVIRT(IUnknown, Release)
1242 ULONG ( STDMETHODCALLTYPE *Release )(
1243 ID3D12VideoProcessor * This);
1244
1245 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1246 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1247 ID3D12VideoProcessor * This,
1248 _In_ REFGUID guid,
1249 _Inout_ UINT *pDataSize,
1250 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1251
1252 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1253 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1254 ID3D12VideoProcessor * This,
1255 _In_ REFGUID guid,
1256 _In_ UINT DataSize,
1257 _In_reads_bytes_opt_( DataSize ) const void *pData);
1258
1259 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1260 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1261 ID3D12VideoProcessor * This,
1262 _In_ REFGUID guid,
1263 _In_opt_ const IUnknown *pData);
1264
1265 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1266 HRESULT ( STDMETHODCALLTYPE *SetName )(
1267 ID3D12VideoProcessor * This,
1268 _In_z_ LPCWSTR Name);
1269
1270 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1271 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1272 ID3D12VideoProcessor * This,
1273 REFIID riid,
1274 _COM_Outptr_opt_ void **ppvDevice);
1275
1276 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
1277 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
1278 ID3D12VideoProcessor * This);
1279
1280 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
1281 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
1282 ID3D12VideoProcessor * This);
1283
1284 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
1285 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
1286 ID3D12VideoProcessor * This,
1287 UINT NumInputStreamDescs,
1288 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
1289
1290 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
1291#if !defined(_WIN32)
1292 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1293 ID3D12VideoProcessor * This);
1294
1295#else
1296 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1297 ID3D12VideoProcessor * This,
1298 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
1299
1300#endif
1301
1302 END_INTERFACE
1303 } ID3D12VideoProcessorVtbl;
1304
1305 interface ID3D12VideoProcessor
1306 {
1307 CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
1308 };
1309
1310
1311
1312#ifdef COBJMACROS
1313
1314
1315#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
1316 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1317
1318#define ID3D12VideoProcessor_AddRef(This) \
1319 ( (This)->lpVtbl -> AddRef(This) )
1320
1321#define ID3D12VideoProcessor_Release(This) \
1322 ( (This)->lpVtbl -> Release(This) )
1323
1324
1325#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
1326 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1327
1328#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
1329 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1330
1331#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
1332 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1333
1334#define ID3D12VideoProcessor_SetName(This,Name) \
1335 ( (This)->lpVtbl -> SetName(This,Name) )
1336
1337
1338#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
1339 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1340
1341
1342
1343#define ID3D12VideoProcessor_GetNodeMask(This) \
1344 ( (This)->lpVtbl -> GetNodeMask(This) )
1345
1346#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
1347 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
1348
1349#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
1350 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
1351#if !defined(_WIN32)
1352
1353#define ID3D12VideoProcessor_GetOutputStreamDesc(This) \
1354 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
1355#else
1356#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
1357 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
1358#endif
1359
1360#endif /* COBJMACROS */
1361
1362
1363#endif /* C style interface */
1364
1365
1366
1367
1368#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1369
1370
1371/* interface __MIDL_itf_d3d12video_0000_0004 */
1372/* [local] */
1373
1374typedef
1375enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
1376 {
1377 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
1378 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1379 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1380 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1381 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1382 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1383 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1384 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1385 } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1386
1387DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )
1388typedef
1389enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
1390 {
1391 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
1392 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1393 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1394 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1395 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1396 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1397 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1398 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1399 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1400 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1401 } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1402
1403DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )
1404typedef
1405enum D3D12_VIDEO_PROCESS_ORIENTATION
1406 {
1407 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1408 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1409 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1410 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1411 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1412 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1413 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1414 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1415 } D3D12_VIDEO_PROCESS_ORIENTATION;
1416
1417typedef
1418enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
1419 {
1420 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
1421 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1422 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1423 } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1424
1425DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )
1426typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
1427 {
1428 INT Minimum;
1429 INT Maximum;
1430 INT Default;
1431 FLOAT Multiplier;
1432 } D3D12_VIDEO_PROCESS_FILTER_RANGE;
1433
1434typedef
1435enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
1436 {
1437 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
1438 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1439 } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1440
1441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )
1442typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
1443 {
1444 UINT NodeIndex;
1445 D3D12_VIDEO_SAMPLE InputSample;
1446 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1447 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1448 DXGI_RATIONAL InputFrameRate;
1449 D3D12_VIDEO_FORMAT OutputFormat;
1450 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1451 DXGI_RATIONAL OutputFrameRate;
1452 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1453 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1454 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1455 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1456 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1457 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1458 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
1459 } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1460
1461typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
1462 {
1463 UINT NodeIndex;
1464 UINT MaxInputStreams;
1465 } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
1466
1467typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
1468 {
1469 UINT NodeIndex;
1470 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
1471 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
1472 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1473 DXGI_RATIONAL InputFrameRate;
1474 DXGI_RATIONAL OutputFrameRate;
1475 BOOL EnableAutoProcessing;
1476 UINT PastFrames;
1477 UINT FutureFrames;
1478 } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
1479
1480typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
1481 {
1482 UINT NumPastFrames;
1483 ID3D12Resource **ppPastFrames;
1484 UINT *pPastSubresources;
1485 UINT NumFutureFrames;
1486 ID3D12Resource **ppFutureFrames;
1487 UINT *pFutureSubresources;
1488 } D3D12_VIDEO_PROCESS_REFERENCE_SET;
1489
1490typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
1491 {
1492 D3D12_RECT SourceRectangle;
1493 D3D12_RECT DestinationRectangle;
1494 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1495 } D3D12_VIDEO_PROCESS_TRANSFORM;
1496
1497typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1498 {
1499 UINT OutputIndex;
1500 UINT InputFrameOrField;
1501 } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1502
1503typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
1504 {
1505 ID3D12Resource *pTexture2D;
1506 UINT Subresource;
1507 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1508 } D3D12_VIDEO_PROCESS_INPUT_STREAM;
1509
1510typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
1511 {
1512 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
1513 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1514 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1515 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1516 INT FilterLevels[ 32 ];
1517 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1518 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1519
1520typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1521 {
1522 ID3D12Resource *pTexture2D;
1523 UINT Subresource;
1524 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1525
1526typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
1527 {
1528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
1529 D3D12_RECT TargetRectangle;
1530 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1531
1532
1533
1534extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1535extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
1536
1537#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1538#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1539
1540/* interface ID3D12VideoDecodeCommandList */
1541/* [unique][local][object][uuid] */
1542
1543
1544EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
1545
1546#if defined(__cplusplus) && !defined(CINTERFACE)
1547
1548 MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
1549 ID3D12VideoDecodeCommandList : public ID3D12CommandList
1550 {
1551 public:
1552 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1553
1554 virtual HRESULT STDMETHODCALLTYPE Reset(
1555 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1556
1557 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1558
1559 virtual void STDMETHODCALLTYPE ResourceBarrier(
1560 _In_ UINT NumBarriers,
1561 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1562
1563 virtual void STDMETHODCALLTYPE DiscardResource(
1564 _In_ ID3D12Resource *pResource,
1565 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1566
1567 virtual void STDMETHODCALLTYPE BeginQuery(
1568 _In_ ID3D12QueryHeap *pQueryHeap,
1569 _In_ D3D12_QUERY_TYPE Type,
1570 _In_ UINT Index) = 0;
1571
1572 virtual void STDMETHODCALLTYPE EndQuery(
1573 _In_ ID3D12QueryHeap *pQueryHeap,
1574 _In_ D3D12_QUERY_TYPE Type,
1575 _In_ UINT Index) = 0;
1576
1577 virtual void STDMETHODCALLTYPE ResolveQueryData(
1578 _In_ ID3D12QueryHeap *pQueryHeap,
1579 _In_ D3D12_QUERY_TYPE Type,
1580 _In_ UINT StartIndex,
1581 _In_ UINT NumQueries,
1582 _In_ ID3D12Resource *pDestinationBuffer,
1583 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1584
1585 virtual void STDMETHODCALLTYPE SetPredication(
1586 _In_opt_ ID3D12Resource *pBuffer,
1587 _In_ UINT64 AlignedBufferOffset,
1588 _In_ D3D12_PREDICATION_OP Operation) = 0;
1589
1590 virtual void STDMETHODCALLTYPE SetMarker(
1591 UINT Metadata,
1592 _In_reads_bytes_opt_(Size) const void *pData,
1593 UINT Size) = 0;
1594
1595 virtual void STDMETHODCALLTYPE BeginEvent(
1596 UINT Metadata,
1597 _In_reads_bytes_opt_(Size) const void *pData,
1598 UINT Size) = 0;
1599
1600 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1601
1602 virtual void STDMETHODCALLTYPE DecodeFrame(
1603 _In_ ID3D12VideoDecoder *pDecoder,
1604 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1605 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1606
1607 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1608 UINT Count,
1609 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1610 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1611
1612 };
1613
1614
1615#else /* C style interface */
1616
1617 typedef struct ID3D12VideoDecodeCommandListVtbl
1618 {
1619 BEGIN_INTERFACE
1620
1621 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1622 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1623 ID3D12VideoDecodeCommandList * This,
1624 REFIID riid,
1625 _COM_Outptr_ void **ppvObject);
1626
1627 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1628 ULONG ( STDMETHODCALLTYPE *AddRef )(
1629 ID3D12VideoDecodeCommandList * This);
1630
1631 DECLSPEC_XFGVIRT(IUnknown, Release)
1632 ULONG ( STDMETHODCALLTYPE *Release )(
1633 ID3D12VideoDecodeCommandList * This);
1634
1635 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1636 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1637 ID3D12VideoDecodeCommandList * This,
1638 _In_ REFGUID guid,
1639 _Inout_ UINT *pDataSize,
1640 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1641
1642 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1643 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1644 ID3D12VideoDecodeCommandList * This,
1645 _In_ REFGUID guid,
1646 _In_ UINT DataSize,
1647 _In_reads_bytes_opt_( DataSize ) const void *pData);
1648
1649 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1650 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1651 ID3D12VideoDecodeCommandList * This,
1652 _In_ REFGUID guid,
1653 _In_opt_ const IUnknown *pData);
1654
1655 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1656 HRESULT ( STDMETHODCALLTYPE *SetName )(
1657 ID3D12VideoDecodeCommandList * This,
1658 _In_z_ LPCWSTR Name);
1659
1660 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1661 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1662 ID3D12VideoDecodeCommandList * This,
1663 REFIID riid,
1664 _COM_Outptr_opt_ void **ppvDevice);
1665
1666 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1667 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1668 ID3D12VideoDecodeCommandList * This);
1669
1670 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
1671 HRESULT ( STDMETHODCALLTYPE *Close )(
1672 ID3D12VideoDecodeCommandList * This);
1673
1674 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
1675 HRESULT ( STDMETHODCALLTYPE *Reset )(
1676 ID3D12VideoDecodeCommandList * This,
1677 _In_ ID3D12CommandAllocator *pAllocator);
1678
1679 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
1680 void ( STDMETHODCALLTYPE *ClearState )(
1681 ID3D12VideoDecodeCommandList * This);
1682
1683 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
1684 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1685 ID3D12VideoDecodeCommandList * This,
1686 _In_ UINT NumBarriers,
1687 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1688
1689 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
1690 void ( STDMETHODCALLTYPE *DiscardResource )(
1691 ID3D12VideoDecodeCommandList * This,
1692 _In_ ID3D12Resource *pResource,
1693 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1694
1695 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
1696 void ( STDMETHODCALLTYPE *BeginQuery )(
1697 ID3D12VideoDecodeCommandList * This,
1698 _In_ ID3D12QueryHeap *pQueryHeap,
1699 _In_ D3D12_QUERY_TYPE Type,
1700 _In_ UINT Index);
1701
1702 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
1703 void ( STDMETHODCALLTYPE *EndQuery )(
1704 ID3D12VideoDecodeCommandList * This,
1705 _In_ ID3D12QueryHeap *pQueryHeap,
1706 _In_ D3D12_QUERY_TYPE Type,
1707 _In_ UINT Index);
1708
1709 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
1710 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1711 ID3D12VideoDecodeCommandList * This,
1712 _In_ ID3D12QueryHeap *pQueryHeap,
1713 _In_ D3D12_QUERY_TYPE Type,
1714 _In_ UINT StartIndex,
1715 _In_ UINT NumQueries,
1716 _In_ ID3D12Resource *pDestinationBuffer,
1717 _In_ UINT64 AlignedDestinationBufferOffset);
1718
1719 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
1720 void ( STDMETHODCALLTYPE *SetPredication )(
1721 ID3D12VideoDecodeCommandList * This,
1722 _In_opt_ ID3D12Resource *pBuffer,
1723 _In_ UINT64 AlignedBufferOffset,
1724 _In_ D3D12_PREDICATION_OP Operation);
1725
1726 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
1727 void ( STDMETHODCALLTYPE *SetMarker )(
1728 ID3D12VideoDecodeCommandList * This,
1729 UINT Metadata,
1730 _In_reads_bytes_opt_(Size) const void *pData,
1731 UINT Size);
1732
1733 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
1734 void ( STDMETHODCALLTYPE *BeginEvent )(
1735 ID3D12VideoDecodeCommandList * This,
1736 UINT Metadata,
1737 _In_reads_bytes_opt_(Size) const void *pData,
1738 UINT Size);
1739
1740 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
1741 void ( STDMETHODCALLTYPE *EndEvent )(
1742 ID3D12VideoDecodeCommandList * This);
1743
1744 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
1745 void ( STDMETHODCALLTYPE *DecodeFrame )(
1746 ID3D12VideoDecodeCommandList * This,
1747 _In_ ID3D12VideoDecoder *pDecoder,
1748 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1749 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
1750
1751 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
1752 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1753 ID3D12VideoDecodeCommandList * This,
1754 UINT Count,
1755 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1756 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1757
1758 END_INTERFACE
1759 } ID3D12VideoDecodeCommandListVtbl;
1760
1761 interface ID3D12VideoDecodeCommandList
1762 {
1763 CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
1764 };
1765
1766
1767
1768#ifdef COBJMACROS
1769
1770
1771#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
1772 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1773
1774#define ID3D12VideoDecodeCommandList_AddRef(This) \
1775 ( (This)->lpVtbl -> AddRef(This) )
1776
1777#define ID3D12VideoDecodeCommandList_Release(This) \
1778 ( (This)->lpVtbl -> Release(This) )
1779
1780
1781#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1782 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1783
1784#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
1785 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1786
1787#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
1788 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1789
1790#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
1791 ( (This)->lpVtbl -> SetName(This,Name) )
1792
1793
1794#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
1795 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1796
1797
1798#define ID3D12VideoDecodeCommandList_GetType(This) \
1799 ( (This)->lpVtbl -> GetType(This) )
1800
1801
1802#define ID3D12VideoDecodeCommandList_Close(This) \
1803 ( (This)->lpVtbl -> Close(This) )
1804
1805#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
1806 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1807
1808#define ID3D12VideoDecodeCommandList_ClearState(This) \
1809 ( (This)->lpVtbl -> ClearState(This) )
1810
1811#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1812 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1813
1814#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
1815 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1816
1817#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1818 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1819
1820#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1821 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1822
1823#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1824 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
1825
1826#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
1827 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
1828
1829#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
1830 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
1831
1832#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
1833 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
1834
1835#define ID3D12VideoDecodeCommandList_EndEvent(This) \
1836 ( (This)->lpVtbl -> EndEvent(This) )
1837
1838#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
1839 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
1840
1841#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
1842 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
1843
1844#endif /* COBJMACROS */
1845
1846
1847#endif /* C style interface */
1848
1849
1850
1851
1852#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1853
1854
1855#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1856#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1857
1858/* interface ID3D12VideoProcessCommandList */
1859/* [unique][local][object][uuid] */
1860
1861
1862EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
1863
1864#if defined(__cplusplus) && !defined(CINTERFACE)
1865
1866 MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
1867 ID3D12VideoProcessCommandList : public ID3D12CommandList
1868 {
1869 public:
1870 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1871
1872 virtual HRESULT STDMETHODCALLTYPE Reset(
1873 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1874
1875 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1876
1877 virtual void STDMETHODCALLTYPE ResourceBarrier(
1878 _In_ UINT NumBarriers,
1879 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1880
1881 virtual void STDMETHODCALLTYPE DiscardResource(
1882 _In_ ID3D12Resource *pResource,
1883 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1884
1885 virtual void STDMETHODCALLTYPE BeginQuery(
1886 _In_ ID3D12QueryHeap *pQueryHeap,
1887 _In_ D3D12_QUERY_TYPE Type,
1888 _In_ UINT Index) = 0;
1889
1890 virtual void STDMETHODCALLTYPE EndQuery(
1891 _In_ ID3D12QueryHeap *pQueryHeap,
1892 _In_ D3D12_QUERY_TYPE Type,
1893 _In_ UINT Index) = 0;
1894
1895 virtual void STDMETHODCALLTYPE ResolveQueryData(
1896 _In_ ID3D12QueryHeap *pQueryHeap,
1897 _In_ D3D12_QUERY_TYPE Type,
1898 _In_ UINT StartIndex,
1899 _In_ UINT NumQueries,
1900 _In_ ID3D12Resource *pDestinationBuffer,
1901 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1902
1903 virtual void STDMETHODCALLTYPE SetPredication(
1904 _In_opt_ ID3D12Resource *pBuffer,
1905 _In_ UINT64 AlignedBufferOffset,
1906 _In_ D3D12_PREDICATION_OP Operation) = 0;
1907
1908 virtual void STDMETHODCALLTYPE SetMarker(
1909 UINT Metadata,
1910 _In_reads_bytes_opt_(Size) const void *pData,
1911 UINT Size) = 0;
1912
1913 virtual void STDMETHODCALLTYPE BeginEvent(
1914 UINT Metadata,
1915 _In_reads_bytes_opt_(Size) const void *pData,
1916 UINT Size) = 0;
1917
1918 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1919
1920 virtual void STDMETHODCALLTYPE ProcessFrames(
1921 _In_ ID3D12VideoProcessor *pVideoProcessor,
1922 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1923 UINT NumInputStreams,
1924 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1925
1926 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1927 UINT Count,
1928 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1929 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1930
1931 };
1932
1933
1934#else /* C style interface */
1935
1936 typedef struct ID3D12VideoProcessCommandListVtbl
1937 {
1938 BEGIN_INTERFACE
1939
1940 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1941 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1942 ID3D12VideoProcessCommandList * This,
1943 REFIID riid,
1944 _COM_Outptr_ void **ppvObject);
1945
1946 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1947 ULONG ( STDMETHODCALLTYPE *AddRef )(
1948 ID3D12VideoProcessCommandList * This);
1949
1950 DECLSPEC_XFGVIRT(IUnknown, Release)
1951 ULONG ( STDMETHODCALLTYPE *Release )(
1952 ID3D12VideoProcessCommandList * This);
1953
1954 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1955 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1956 ID3D12VideoProcessCommandList * This,
1957 _In_ REFGUID guid,
1958 _Inout_ UINT *pDataSize,
1959 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1960
1961 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1962 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1963 ID3D12VideoProcessCommandList * This,
1964 _In_ REFGUID guid,
1965 _In_ UINT DataSize,
1966 _In_reads_bytes_opt_( DataSize ) const void *pData);
1967
1968 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1969 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1970 ID3D12VideoProcessCommandList * This,
1971 _In_ REFGUID guid,
1972 _In_opt_ const IUnknown *pData);
1973
1974 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1975 HRESULT ( STDMETHODCALLTYPE *SetName )(
1976 ID3D12VideoProcessCommandList * This,
1977 _In_z_ LPCWSTR Name);
1978
1979 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1980 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1981 ID3D12VideoProcessCommandList * This,
1982 REFIID riid,
1983 _COM_Outptr_opt_ void **ppvDevice);
1984
1985 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1986 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1987 ID3D12VideoProcessCommandList * This);
1988
1989 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
1990 HRESULT ( STDMETHODCALLTYPE *Close )(
1991 ID3D12VideoProcessCommandList * This);
1992
1993 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
1994 HRESULT ( STDMETHODCALLTYPE *Reset )(
1995 ID3D12VideoProcessCommandList * This,
1996 _In_ ID3D12CommandAllocator *pAllocator);
1997
1998 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
1999 void ( STDMETHODCALLTYPE *ClearState )(
2000 ID3D12VideoProcessCommandList * This);
2001
2002 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2003 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2004 ID3D12VideoProcessCommandList * This,
2005 _In_ UINT NumBarriers,
2006 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2007
2008 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2009 void ( STDMETHODCALLTYPE *DiscardResource )(
2010 ID3D12VideoProcessCommandList * This,
2011 _In_ ID3D12Resource *pResource,
2012 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2013
2014 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2015 void ( STDMETHODCALLTYPE *BeginQuery )(
2016 ID3D12VideoProcessCommandList * This,
2017 _In_ ID3D12QueryHeap *pQueryHeap,
2018 _In_ D3D12_QUERY_TYPE Type,
2019 _In_ UINT Index);
2020
2021 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2022 void ( STDMETHODCALLTYPE *EndQuery )(
2023 ID3D12VideoProcessCommandList * This,
2024 _In_ ID3D12QueryHeap *pQueryHeap,
2025 _In_ D3D12_QUERY_TYPE Type,
2026 _In_ UINT Index);
2027
2028 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2029 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2030 ID3D12VideoProcessCommandList * This,
2031 _In_ ID3D12QueryHeap *pQueryHeap,
2032 _In_ D3D12_QUERY_TYPE Type,
2033 _In_ UINT StartIndex,
2034 _In_ UINT NumQueries,
2035 _In_ ID3D12Resource *pDestinationBuffer,
2036 _In_ UINT64 AlignedDestinationBufferOffset);
2037
2038 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2039 void ( STDMETHODCALLTYPE *SetPredication )(
2040 ID3D12VideoProcessCommandList * This,
2041 _In_opt_ ID3D12Resource *pBuffer,
2042 _In_ UINT64 AlignedBufferOffset,
2043 _In_ D3D12_PREDICATION_OP Operation);
2044
2045 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2046 void ( STDMETHODCALLTYPE *SetMarker )(
2047 ID3D12VideoProcessCommandList * This,
2048 UINT Metadata,
2049 _In_reads_bytes_opt_(Size) const void *pData,
2050 UINT Size);
2051
2052 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2053 void ( STDMETHODCALLTYPE *BeginEvent )(
2054 ID3D12VideoProcessCommandList * This,
2055 UINT Metadata,
2056 _In_reads_bytes_opt_(Size) const void *pData,
2057 UINT Size);
2058
2059 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2060 void ( STDMETHODCALLTYPE *EndEvent )(
2061 ID3D12VideoProcessCommandList * This);
2062
2063 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2064 void ( STDMETHODCALLTYPE *ProcessFrames )(
2065 ID3D12VideoProcessCommandList * This,
2066 _In_ ID3D12VideoProcessor *pVideoProcessor,
2067 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2068 UINT NumInputStreams,
2069 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2070
2071 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2072 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2073 ID3D12VideoProcessCommandList * This,
2074 UINT Count,
2075 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2076 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2077
2078 END_INTERFACE
2079 } ID3D12VideoProcessCommandListVtbl;
2080
2081 interface ID3D12VideoProcessCommandList
2082 {
2083 CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12VideoProcessCommandList_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12VideoProcessCommandList_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
2102 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2103
2104#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
2105 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2106
2107#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
2108 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2109
2110#define ID3D12VideoProcessCommandList_SetName(This,Name) \
2111 ( (This)->lpVtbl -> SetName(This,Name) )
2112
2113
2114#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
2115 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2116
2117
2118#define ID3D12VideoProcessCommandList_GetType(This) \
2119 ( (This)->lpVtbl -> GetType(This) )
2120
2121
2122#define ID3D12VideoProcessCommandList_Close(This) \
2123 ( (This)->lpVtbl -> Close(This) )
2124
2125#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
2126 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2127
2128#define ID3D12VideoProcessCommandList_ClearState(This) \
2129 ( (This)->lpVtbl -> ClearState(This) )
2130
2131#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
2132 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2133
2134#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
2135 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2136
2137#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
2138 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2139
2140#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
2141 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2142
2143#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2144 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2145
2146#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2147 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2148
2149#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
2150 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2151
2152#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
2153 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2154
2155#define ID3D12VideoProcessCommandList_EndEvent(This) \
2156 ( (This)->lpVtbl -> EndEvent(This) )
2157
2158#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2159 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2160
2161#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
2162 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2163
2164#endif /* COBJMACROS */
2165
2166
2167#endif /* C style interface */
2168
2169
2170
2171
2172#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
2173
2174
2175/* interface __MIDL_itf_d3d12video_0000_0006 */
2176/* [local] */
2177
2178typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2179 {
2180 UINT64 Offset;
2181 ID3D12Resource *pBuffer;
2182 } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2183
2184typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
2185 {
2186 BOOL Enable;
2187 ID3D12Resource *pReferenceTexture2D;
2188 UINT ReferenceSubresource;
2189 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
2190 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
2191 UINT OutputWidth;
2192 UINT OutputHeight;
2193 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
2194
2195typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
2196 {
2197 ID3D12Resource *pOutputTexture2D;
2198 UINT OutputSubresource;
2199 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
2200 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
2201 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
2202
2203
2204
2205extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2206extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
2207
2208#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2209#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2210
2211/* interface ID3D12VideoDecodeCommandList1 */
2212/* [unique][local][object][uuid] */
2213
2214
2215EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
2216
2217#if defined(__cplusplus) && !defined(CINTERFACE)
2218
2219 MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
2220 ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
2221 {
2222 public:
2223 virtual void STDMETHODCALLTYPE DecodeFrame1(
2224 _In_ ID3D12VideoDecoder *pDecoder,
2225 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2226 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
2227
2228 };
2229
2230
2231#else /* C style interface */
2232
2233 typedef struct ID3D12VideoDecodeCommandList1Vtbl
2234 {
2235 BEGIN_INTERFACE
2236
2237 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2238 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2239 ID3D12VideoDecodeCommandList1 * This,
2240 REFIID riid,
2241 _COM_Outptr_ void **ppvObject);
2242
2243 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2244 ULONG ( STDMETHODCALLTYPE *AddRef )(
2245 ID3D12VideoDecodeCommandList1 * This);
2246
2247 DECLSPEC_XFGVIRT(IUnknown, Release)
2248 ULONG ( STDMETHODCALLTYPE *Release )(
2249 ID3D12VideoDecodeCommandList1 * This);
2250
2251 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2252 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2253 ID3D12VideoDecodeCommandList1 * This,
2254 _In_ REFGUID guid,
2255 _Inout_ UINT *pDataSize,
2256 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2257
2258 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2259 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2260 ID3D12VideoDecodeCommandList1 * This,
2261 _In_ REFGUID guid,
2262 _In_ UINT DataSize,
2263 _In_reads_bytes_opt_( DataSize ) const void *pData);
2264
2265 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2266 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2267 ID3D12VideoDecodeCommandList1 * This,
2268 _In_ REFGUID guid,
2269 _In_opt_ const IUnknown *pData);
2270
2271 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2272 HRESULT ( STDMETHODCALLTYPE *SetName )(
2273 ID3D12VideoDecodeCommandList1 * This,
2274 _In_z_ LPCWSTR Name);
2275
2276 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2277 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2278 ID3D12VideoDecodeCommandList1 * This,
2279 REFIID riid,
2280 _COM_Outptr_opt_ void **ppvDevice);
2281
2282 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2283 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2284 ID3D12VideoDecodeCommandList1 * This);
2285
2286 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
2287 HRESULT ( STDMETHODCALLTYPE *Close )(
2288 ID3D12VideoDecodeCommandList1 * This);
2289
2290 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
2291 HRESULT ( STDMETHODCALLTYPE *Reset )(
2292 ID3D12VideoDecodeCommandList1 * This,
2293 _In_ ID3D12CommandAllocator *pAllocator);
2294
2295 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
2296 void ( STDMETHODCALLTYPE *ClearState )(
2297 ID3D12VideoDecodeCommandList1 * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
2300 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2301 ID3D12VideoDecodeCommandList1 * This,
2302 _In_ UINT NumBarriers,
2303 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2304
2305 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
2306 void ( STDMETHODCALLTYPE *DiscardResource )(
2307 ID3D12VideoDecodeCommandList1 * This,
2308 _In_ ID3D12Resource *pResource,
2309 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2310
2311 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
2312 void ( STDMETHODCALLTYPE *BeginQuery )(
2313 ID3D12VideoDecodeCommandList1 * This,
2314 _In_ ID3D12QueryHeap *pQueryHeap,
2315 _In_ D3D12_QUERY_TYPE Type,
2316 _In_ UINT Index);
2317
2318 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
2319 void ( STDMETHODCALLTYPE *EndQuery )(
2320 ID3D12VideoDecodeCommandList1 * This,
2321 _In_ ID3D12QueryHeap *pQueryHeap,
2322 _In_ D3D12_QUERY_TYPE Type,
2323 _In_ UINT Index);
2324
2325 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
2326 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2327 ID3D12VideoDecodeCommandList1 * This,
2328 _In_ ID3D12QueryHeap *pQueryHeap,
2329 _In_ D3D12_QUERY_TYPE Type,
2330 _In_ UINT StartIndex,
2331 _In_ UINT NumQueries,
2332 _In_ ID3D12Resource *pDestinationBuffer,
2333 _In_ UINT64 AlignedDestinationBufferOffset);
2334
2335 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
2336 void ( STDMETHODCALLTYPE *SetPredication )(
2337 ID3D12VideoDecodeCommandList1 * This,
2338 _In_opt_ ID3D12Resource *pBuffer,
2339 _In_ UINT64 AlignedBufferOffset,
2340 _In_ D3D12_PREDICATION_OP Operation);
2341
2342 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
2343 void ( STDMETHODCALLTYPE *SetMarker )(
2344 ID3D12VideoDecodeCommandList1 * This,
2345 UINT Metadata,
2346 _In_reads_bytes_opt_(Size) const void *pData,
2347 UINT Size);
2348
2349 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
2350 void ( STDMETHODCALLTYPE *BeginEvent )(
2351 ID3D12VideoDecodeCommandList1 * This,
2352 UINT Metadata,
2353 _In_reads_bytes_opt_(Size) const void *pData,
2354 UINT Size);
2355
2356 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
2357 void ( STDMETHODCALLTYPE *EndEvent )(
2358 ID3D12VideoDecodeCommandList1 * This);
2359
2360 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
2361 void ( STDMETHODCALLTYPE *DecodeFrame )(
2362 ID3D12VideoDecodeCommandList1 * This,
2363 _In_ ID3D12VideoDecoder *pDecoder,
2364 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2365 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2366
2367 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
2368 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2369 ID3D12VideoDecodeCommandList1 * This,
2370 UINT Count,
2371 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2372 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2373
2374 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
2375 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
2376 ID3D12VideoDecodeCommandList1 * This,
2377 _In_ ID3D12VideoDecoder *pDecoder,
2378 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2379 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2380
2381 END_INTERFACE
2382 } ID3D12VideoDecodeCommandList1Vtbl;
2383
2384 interface ID3D12VideoDecodeCommandList1
2385 {
2386 CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
2387 };
2388
2389
2390
2391#ifdef COBJMACROS
2392
2393
2394#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
2395 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2396
2397#define ID3D12VideoDecodeCommandList1_AddRef(This) \
2398 ( (This)->lpVtbl -> AddRef(This) )
2399
2400#define ID3D12VideoDecodeCommandList1_Release(This) \
2401 ( (This)->lpVtbl -> Release(This) )
2402
2403
2404#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2405 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2406
2407#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2408 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2409
2410#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
2411 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2412
2413#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
2414 ( (This)->lpVtbl -> SetName(This,Name) )
2415
2416
2417#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
2418 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2419
2420
2421#define ID3D12VideoDecodeCommandList1_GetType(This) \
2422 ( (This)->lpVtbl -> GetType(This) )
2423
2424
2425#define ID3D12VideoDecodeCommandList1_Close(This) \
2426 ( (This)->lpVtbl -> Close(This) )
2427
2428#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
2429 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2430
2431#define ID3D12VideoDecodeCommandList1_ClearState(This) \
2432 ( (This)->lpVtbl -> ClearState(This) )
2433
2434#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2435 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2436
2437#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
2438 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2439
2440#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2441 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2442
2443#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2444 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2445
2446#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2447 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2448
2449#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2450 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2451
2452#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
2453 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2454
2455#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
2456 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2457
2458#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
2459 ( (This)->lpVtbl -> EndEvent(This) )
2460
2461#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
2462 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
2463
2464#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2465 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2466
2467
2468#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
2469 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
2470
2471#endif /* COBJMACROS */
2472
2473
2474#endif /* C style interface */
2475
2476
2477
2478
2479#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2480
2481
2482/* interface __MIDL_itf_d3d12video_0000_0007 */
2483/* [local] */
2484
2485typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
2486 {
2487 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
2488 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
2489 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
2490 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
2491 INT FilterLevels[ 32 ];
2492 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
2493 D3D12_VIDEO_FIELD_TYPE FieldType;
2494 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
2495
2496
2497
2498extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2499extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
2500
2501#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2502#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2503
2504/* interface ID3D12VideoProcessCommandList1 */
2505/* [unique][local][object][uuid] */
2506
2507
2508EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
2509
2510#if defined(__cplusplus) && !defined(CINTERFACE)
2511
2512 MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
2513 ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
2514 {
2515 public:
2516 virtual void STDMETHODCALLTYPE ProcessFrames1(
2517 _In_ ID3D12VideoProcessor *pVideoProcessor,
2518 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2519 UINT NumInputStreams,
2520 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
2521
2522 };
2523
2524
2525#else /* C style interface */
2526
2527 typedef struct ID3D12VideoProcessCommandList1Vtbl
2528 {
2529 BEGIN_INTERFACE
2530
2531 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2532 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2533 ID3D12VideoProcessCommandList1 * This,
2534 REFIID riid,
2535 _COM_Outptr_ void **ppvObject);
2536
2537 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2538 ULONG ( STDMETHODCALLTYPE *AddRef )(
2539 ID3D12VideoProcessCommandList1 * This);
2540
2541 DECLSPEC_XFGVIRT(IUnknown, Release)
2542 ULONG ( STDMETHODCALLTYPE *Release )(
2543 ID3D12VideoProcessCommandList1 * This);
2544
2545 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2546 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2547 ID3D12VideoProcessCommandList1 * This,
2548 _In_ REFGUID guid,
2549 _Inout_ UINT *pDataSize,
2550 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2551
2552 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2553 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2554 ID3D12VideoProcessCommandList1 * This,
2555 _In_ REFGUID guid,
2556 _In_ UINT DataSize,
2557 _In_reads_bytes_opt_( DataSize ) const void *pData);
2558
2559 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2560 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2561 ID3D12VideoProcessCommandList1 * This,
2562 _In_ REFGUID guid,
2563 _In_opt_ const IUnknown *pData);
2564
2565 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2566 HRESULT ( STDMETHODCALLTYPE *SetName )(
2567 ID3D12VideoProcessCommandList1 * This,
2568 _In_z_ LPCWSTR Name);
2569
2570 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2571 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2572 ID3D12VideoProcessCommandList1 * This,
2573 REFIID riid,
2574 _COM_Outptr_opt_ void **ppvDevice);
2575
2576 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2577 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2578 ID3D12VideoProcessCommandList1 * This);
2579
2580 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
2581 HRESULT ( STDMETHODCALLTYPE *Close )(
2582 ID3D12VideoProcessCommandList1 * This);
2583
2584 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
2585 HRESULT ( STDMETHODCALLTYPE *Reset )(
2586 ID3D12VideoProcessCommandList1 * This,
2587 _In_ ID3D12CommandAllocator *pAllocator);
2588
2589 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
2590 void ( STDMETHODCALLTYPE *ClearState )(
2591 ID3D12VideoProcessCommandList1 * This);
2592
2593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2594 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2595 ID3D12VideoProcessCommandList1 * This,
2596 _In_ UINT NumBarriers,
2597 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2598
2599 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2600 void ( STDMETHODCALLTYPE *DiscardResource )(
2601 ID3D12VideoProcessCommandList1 * This,
2602 _In_ ID3D12Resource *pResource,
2603 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2604
2605 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2606 void ( STDMETHODCALLTYPE *BeginQuery )(
2607 ID3D12VideoProcessCommandList1 * This,
2608 _In_ ID3D12QueryHeap *pQueryHeap,
2609 _In_ D3D12_QUERY_TYPE Type,
2610 _In_ UINT Index);
2611
2612 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2613 void ( STDMETHODCALLTYPE *EndQuery )(
2614 ID3D12VideoProcessCommandList1 * This,
2615 _In_ ID3D12QueryHeap *pQueryHeap,
2616 _In_ D3D12_QUERY_TYPE Type,
2617 _In_ UINT Index);
2618
2619 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2620 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2621 ID3D12VideoProcessCommandList1 * This,
2622 _In_ ID3D12QueryHeap *pQueryHeap,
2623 _In_ D3D12_QUERY_TYPE Type,
2624 _In_ UINT StartIndex,
2625 _In_ UINT NumQueries,
2626 _In_ ID3D12Resource *pDestinationBuffer,
2627 _In_ UINT64 AlignedDestinationBufferOffset);
2628
2629 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2630 void ( STDMETHODCALLTYPE *SetPredication )(
2631 ID3D12VideoProcessCommandList1 * This,
2632 _In_opt_ ID3D12Resource *pBuffer,
2633 _In_ UINT64 AlignedBufferOffset,
2634 _In_ D3D12_PREDICATION_OP Operation);
2635
2636 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2637 void ( STDMETHODCALLTYPE *SetMarker )(
2638 ID3D12VideoProcessCommandList1 * This,
2639 UINT Metadata,
2640 _In_reads_bytes_opt_(Size) const void *pData,
2641 UINT Size);
2642
2643 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2644 void ( STDMETHODCALLTYPE *BeginEvent )(
2645 ID3D12VideoProcessCommandList1 * This,
2646 UINT Metadata,
2647 _In_reads_bytes_opt_(Size) const void *pData,
2648 UINT Size);
2649
2650 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2651 void ( STDMETHODCALLTYPE *EndEvent )(
2652 ID3D12VideoProcessCommandList1 * This);
2653
2654 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2655 void ( STDMETHODCALLTYPE *ProcessFrames )(
2656 ID3D12VideoProcessCommandList1 * This,
2657 _In_ ID3D12VideoProcessor *pVideoProcessor,
2658 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2659 UINT NumInputStreams,
2660 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2661
2662 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2663 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2664 ID3D12VideoProcessCommandList1 * This,
2665 UINT Count,
2666 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2667 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2668
2669 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
2670 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
2671 ID3D12VideoProcessCommandList1 * This,
2672 _In_ ID3D12VideoProcessor *pVideoProcessor,
2673 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2674 UINT NumInputStreams,
2675 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
2676
2677 END_INTERFACE
2678 } ID3D12VideoProcessCommandList1Vtbl;
2679
2680 interface ID3D12VideoProcessCommandList1
2681 {
2682 CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
2683 };
2684
2685
2686
2687#ifdef COBJMACROS
2688
2689
2690#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
2691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2692
2693#define ID3D12VideoProcessCommandList1_AddRef(This) \
2694 ( (This)->lpVtbl -> AddRef(This) )
2695
2696#define ID3D12VideoProcessCommandList1_Release(This) \
2697 ( (This)->lpVtbl -> Release(This) )
2698
2699
2700#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2701 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2702
2703#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2704 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2705
2706#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
2707 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2708
2709#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
2710 ( (This)->lpVtbl -> SetName(This,Name) )
2711
2712
2713#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
2714 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2715
2716
2717#define ID3D12VideoProcessCommandList1_GetType(This) \
2718 ( (This)->lpVtbl -> GetType(This) )
2719
2720
2721#define ID3D12VideoProcessCommandList1_Close(This) \
2722 ( (This)->lpVtbl -> Close(This) )
2723
2724#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
2725 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2726
2727#define ID3D12VideoProcessCommandList1_ClearState(This) \
2728 ( (This)->lpVtbl -> ClearState(This) )
2729
2730#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2731 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2732
2733#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
2734 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2735
2736#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2737 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2738
2739#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2740 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2741
2742#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2743 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2744
2745#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2746 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2747
2748#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
2749 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2750
2751#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
2752 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2753
2754#define ID3D12VideoProcessCommandList1_EndEvent(This) \
2755 ( (This)->lpVtbl -> EndEvent(This) )
2756
2757#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2758 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2759
2760#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2761 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2762
2763
2764#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2765 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2766
2767#endif /* COBJMACROS */
2768
2769
2770#endif /* C style interface */
2771
2772
2773
2774
2775#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
2776
2777
2778/* interface __MIDL_itf_d3d12video_0000_0008 */
2779/* [local] */
2780
2781typedef
2782enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
2783 {
2784 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2785 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2786 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2787
2788typedef
2789enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
2790 {
2791 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2792 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
2793 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
2794 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2795
2796DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )
2797typedef
2798enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
2799 {
2800 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2801 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2802
2803typedef
2804enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
2805 {
2806 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2807 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
2808 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2809
2810DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )
2811typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
2812 {
2813 UINT NodeIndex;
2814 BOOL VideoDecodeSupport;
2815 BOOL VideoProcessSupport;
2816 BOOL VideoEncodeSupport;
2817 } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2818
2819typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
2820 {
2821 UINT NodeIndex;
2822 DXGI_FORMAT InputFormat;
2823 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2824 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2825 D3D12_VIDEO_SIZE_RANGE SizeRange;
2826 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2827
2828typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
2829 {
2830 UINT NodeIndex;
2831 DXGI_FORMAT InputFormat;
2832 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2833 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2834 D3D12_VIDEO_SIZE_RANGE SizeRange;
2835 BOOL Protected;
2836 UINT64 MotionVectorHeapMemoryPoolL0Size;
2837 UINT64 MotionVectorHeapMemoryPoolL1Size;
2838 UINT64 MotionEstimatorMemoryPoolL0Size;
2839 UINT64 MotionEstimatorMemoryPoolL1Size;
2840 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
2841
2842typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
2843 {
2844 UINT NodeMask;
2845 DXGI_FORMAT InputFormat;
2846 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2847 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2848 D3D12_VIDEO_SIZE_RANGE SizeRange;
2849 } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2850
2851
2852
2853extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2854extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
2855
2856#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2857#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2858
2859/* interface ID3D12VideoMotionEstimator */
2860/* [unique][local][object][uuid] */
2861
2862
2863EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
2864
2865#if defined(__cplusplus) && !defined(CINTERFACE)
2866
2867 MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
2868 ID3D12VideoMotionEstimator : public ID3D12Pageable
2869 {
2870 public:
2871#if defined(_MSC_VER) || !defined(_WIN32)
2872 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2873#else
2874 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC *STDMETHODCALLTYPE GetDesc(
2875 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal) = 0;
2876#endif
2877
2878 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2879 REFIID riid,
2880 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2881
2882 };
2883
2884
2885#else /* C style interface */
2886
2887 typedef struct ID3D12VideoMotionEstimatorVtbl
2888 {
2889 BEGIN_INTERFACE
2890
2891 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2892 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2893 ID3D12VideoMotionEstimator * This,
2894 REFIID riid,
2895 _COM_Outptr_ void **ppvObject);
2896
2897 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2898 ULONG ( STDMETHODCALLTYPE *AddRef )(
2899 ID3D12VideoMotionEstimator * This);
2900
2901 DECLSPEC_XFGVIRT(IUnknown, Release)
2902 ULONG ( STDMETHODCALLTYPE *Release )(
2903 ID3D12VideoMotionEstimator * This);
2904
2905 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2906 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2907 ID3D12VideoMotionEstimator * This,
2908 _In_ REFGUID guid,
2909 _Inout_ UINT *pDataSize,
2910 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2911
2912 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2913 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2914 ID3D12VideoMotionEstimator * This,
2915 _In_ REFGUID guid,
2916 _In_ UINT DataSize,
2917 _In_reads_bytes_opt_( DataSize ) const void *pData);
2918
2919 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2920 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2921 ID3D12VideoMotionEstimator * This,
2922 _In_ REFGUID guid,
2923 _In_opt_ const IUnknown *pData);
2924
2925 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2926 HRESULT ( STDMETHODCALLTYPE *SetName )(
2927 ID3D12VideoMotionEstimator * This,
2928 _In_z_ LPCWSTR Name);
2929
2930 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2931 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2932 ID3D12VideoMotionEstimator * This,
2933 REFIID riid,
2934 _COM_Outptr_opt_ void **ppvDevice);
2935
2936 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
2937#if !defined(_WIN32)
2938 D3D12_VIDEO_MOTION_ESTIMATOR_DESC ( STDMETHODCALLTYPE *GetDesc )(
2939 ID3D12VideoMotionEstimator * This);
2940
2941#else
2942 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
2943 ID3D12VideoMotionEstimator * This,
2944 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
2945
2946#endif
2947
2948 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
2949 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2950 ID3D12VideoMotionEstimator * This,
2951 REFIID riid,
2952 _COM_Outptr_opt_ void **ppProtectedSession);
2953
2954 END_INTERFACE
2955 } ID3D12VideoMotionEstimatorVtbl;
2956
2957 interface ID3D12VideoMotionEstimator
2958 {
2959 CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
2960 };
2961
2962
2963
2964#ifdef COBJMACROS
2965
2966
2967#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
2968 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2969
2970#define ID3D12VideoMotionEstimator_AddRef(This) \
2971 ( (This)->lpVtbl -> AddRef(This) )
2972
2973#define ID3D12VideoMotionEstimator_Release(This) \
2974 ( (This)->lpVtbl -> Release(This) )
2975
2976
2977#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
2978 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2979
2980#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
2981 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2982
2983#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
2984 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2985
2986#define ID3D12VideoMotionEstimator_SetName(This,Name) \
2987 ( (This)->lpVtbl -> SetName(This,Name) )
2988
2989
2990#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
2991 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2992
2993
2994#if !defined(_WIN32)
2995
2996#define ID3D12VideoMotionEstimator_GetDesc(This) \
2997 ( (This)->lpVtbl -> GetDesc(This) )
2998#else
2999#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
3000 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3001#endif
3002
3003#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3004 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3005
3006#endif /* COBJMACROS */
3007
3008
3009#endif /* C style interface */
3010
3011
3012
3013
3014#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
3015
3016
3017/* interface __MIDL_itf_d3d12video_0000_0009 */
3018/* [local] */
3019
3020typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
3021 {
3022 UINT NodeMask;
3023 DXGI_FORMAT InputFormat;
3024 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
3025 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
3026 D3D12_VIDEO_SIZE_RANGE SizeRange;
3027 } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
3028
3029
3030
3031extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
3032extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
3033
3034#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3035#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3036
3037/* interface ID3D12VideoMotionVectorHeap */
3038/* [unique][local][object][uuid] */
3039
3040
3041EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
3042
3043#if defined(__cplusplus) && !defined(CINTERFACE)
3044
3045 MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
3046 ID3D12VideoMotionVectorHeap : public ID3D12Pageable
3047 {
3048 public:
3049#if defined(_MSC_VER) || !defined(_WIN32)
3050 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
3051#else
3052 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
3053 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal) = 0;
3054#endif
3055
3056 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3057 REFIID riid,
3058 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3059
3060 };
3061
3062
3063#else /* C style interface */
3064
3065 typedef struct ID3D12VideoMotionVectorHeapVtbl
3066 {
3067 BEGIN_INTERFACE
3068
3069 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3070 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3071 ID3D12VideoMotionVectorHeap * This,
3072 REFIID riid,
3073 _COM_Outptr_ void **ppvObject);
3074
3075 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3076 ULONG ( STDMETHODCALLTYPE *AddRef )(
3077 ID3D12VideoMotionVectorHeap * This);
3078
3079 DECLSPEC_XFGVIRT(IUnknown, Release)
3080 ULONG ( STDMETHODCALLTYPE *Release )(
3081 ID3D12VideoMotionVectorHeap * This);
3082
3083 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3084 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3085 ID3D12VideoMotionVectorHeap * This,
3086 _In_ REFGUID guid,
3087 _Inout_ UINT *pDataSize,
3088 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3089
3090 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3091 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3092 ID3D12VideoMotionVectorHeap * This,
3093 _In_ REFGUID guid,
3094 _In_ UINT DataSize,
3095 _In_reads_bytes_opt_( DataSize ) const void *pData);
3096
3097 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3098 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3099 ID3D12VideoMotionVectorHeap * This,
3100 _In_ REFGUID guid,
3101 _In_opt_ const IUnknown *pData);
3102
3103 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3104 HRESULT ( STDMETHODCALLTYPE *SetName )(
3105 ID3D12VideoMotionVectorHeap * This,
3106 _In_z_ LPCWSTR Name);
3107
3108 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3109 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3110 ID3D12VideoMotionVectorHeap * This,
3111 REFIID riid,
3112 _COM_Outptr_opt_ void **ppvDevice);
3113
3114 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
3115#if !defined(_WIN32)
3116 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
3117 ID3D12VideoMotionVectorHeap * This);
3118
3119#else
3120 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
3121 ID3D12VideoMotionVectorHeap * This,
3122 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
3123
3124#endif
3125
3126 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
3127 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3128 ID3D12VideoMotionVectorHeap * This,
3129 REFIID riid,
3130 _COM_Outptr_opt_ void **ppProtectedSession);
3131
3132 END_INTERFACE
3133 } ID3D12VideoMotionVectorHeapVtbl;
3134
3135 interface ID3D12VideoMotionVectorHeap
3136 {
3137 CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
3138 };
3139
3140
3141
3142#ifdef COBJMACROS
3143
3144
3145#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
3146 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3147
3148#define ID3D12VideoMotionVectorHeap_AddRef(This) \
3149 ( (This)->lpVtbl -> AddRef(This) )
3150
3151#define ID3D12VideoMotionVectorHeap_Release(This) \
3152 ( (This)->lpVtbl -> Release(This) )
3153
3154
3155#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
3156 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3157
3158#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
3159 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3160
3161#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
3162 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3163
3164#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
3165 ( (This)->lpVtbl -> SetName(This,Name) )
3166
3167
3168#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
3169 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3170
3171
3172#if !defined(_WIN32)
3173
3174#define ID3D12VideoMotionVectorHeap_GetDesc(This) \
3175 ( (This)->lpVtbl -> GetDesc(This) )
3176#else
3177#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
3178 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3179#endif
3180
3181#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3182 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3183
3184#endif /* COBJMACROS */
3185
3186
3187#endif /* C style interface */
3188
3189
3190
3191
3192#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
3193
3194
3195#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
3196#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
3197
3198/* interface ID3D12VideoDevice1 */
3199/* [unique][local][object][uuid] */
3200
3201
3202EXTERN_C const IID IID_ID3D12VideoDevice1;
3203
3204#if defined(__cplusplus) && !defined(CINTERFACE)
3205
3206 MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
3207 ID3D12VideoDevice1 : public ID3D12VideoDevice
3208 {
3209 public:
3210 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
3211 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3212 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3213 _In_ REFIID riid,
3214 _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
3215
3216 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
3217 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3218 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3219 _In_ REFIID riid,
3220 _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
3221
3222 };
3223
3224
3225#else /* C style interface */
3226
3227 typedef struct ID3D12VideoDevice1Vtbl
3228 {
3229 BEGIN_INTERFACE
3230
3231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3233 ID3D12VideoDevice1 * This,
3234 REFIID riid,
3235 _COM_Outptr_ void **ppvObject);
3236
3237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3238 ULONG ( STDMETHODCALLTYPE *AddRef )(
3239 ID3D12VideoDevice1 * This);
3240
3241 DECLSPEC_XFGVIRT(IUnknown, Release)
3242 ULONG ( STDMETHODCALLTYPE *Release )(
3243 ID3D12VideoDevice1 * This);
3244
3245 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
3246 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
3247 ID3D12VideoDevice1 * This,
3248 D3D12_FEATURE_VIDEO FeatureVideo,
3249 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
3250 UINT FeatureSupportDataSize);
3251
3252 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
3253 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
3254 ID3D12VideoDevice1 * This,
3255 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
3256 _In_ REFIID riid,
3257 _COM_Outptr_ void **ppVideoDecoder);
3258
3259 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
3260 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
3261 ID3D12VideoDevice1 * This,
3262 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
3263 _In_ REFIID riid,
3264 _COM_Outptr_ void **ppVideoDecoderHeap);
3265
3266 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
3267 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
3268 ID3D12VideoDevice1 * This,
3269 UINT NodeMask,
3270 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
3271 UINT NumInputStreamDescs,
3272 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
3273 _In_ REFIID riid,
3274 _COM_Outptr_ void **ppVideoProcessor);
3275
3276 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
3277 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
3278 ID3D12VideoDevice1 * This,
3279 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3280 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3281 _In_ REFIID riid,
3282 _COM_Outptr_ void **ppVideoMotionEstimator);
3283
3284 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
3285 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
3286 ID3D12VideoDevice1 * This,
3287 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3288 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3289 _In_ REFIID riid,
3290 _COM_Outptr_ void **ppVideoMotionVectorHeap);
3291
3292 END_INTERFACE
3293 } ID3D12VideoDevice1Vtbl;
3294
3295 interface ID3D12VideoDevice1
3296 {
3297 CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
3298 };
3299
3300
3301
3302#ifdef COBJMACROS
3303
3304
3305#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
3306 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3307
3308#define ID3D12VideoDevice1_AddRef(This) \
3309 ( (This)->lpVtbl -> AddRef(This) )
3310
3311#define ID3D12VideoDevice1_Release(This) \
3312 ( (This)->lpVtbl -> Release(This) )
3313
3314
3315#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
3316 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
3317
3318#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
3319 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
3320
3321#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
3322 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
3323
3324#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
3325 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
3326
3327
3328#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
3329 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
3330
3331#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
3332 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
3333
3334#endif /* COBJMACROS */
3335
3336
3337#endif /* C style interface */
3338
3339
3340
3341
3342#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
3343
3344
3345/* interface __MIDL_itf_d3d12video_0000_0011 */
3346/* [local] */
3347
3348typedef struct D3D12_RESOURCE_COORDINATE
3349 {
3350 UINT64 X;
3351 UINT Y;
3352 UINT Z;
3353 UINT SubresourceIndex;
3354 } D3D12_RESOURCE_COORDINATE;
3355
3356typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3357 {
3358 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3359 } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3360
3361typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
3362 {
3363 ID3D12Resource *pInputTexture2D;
3364 UINT InputSubresourceIndex;
3365 ID3D12Resource *pReferenceTexture2D;
3366 UINT ReferenceSubresourceIndex;
3367 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
3368 } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
3369
3370typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
3371 {
3372 ID3D12Resource *pMotionVectorTexture2D;
3373 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
3374 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
3375
3376typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
3377 {
3378 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3379 UINT PixelWidth;
3380 UINT PixelHeight;
3381 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
3382
3383
3384
3385extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3386extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
3387
3388#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3389#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3390
3391/* interface ID3D12VideoEncodeCommandList */
3392/* [unique][local][object][uuid] */
3393
3394
3395EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
3396
3397#if defined(__cplusplus) && !defined(CINTERFACE)
3398
3399 MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
3400 ID3D12VideoEncodeCommandList : public ID3D12CommandList
3401 {
3402 public:
3403 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
3404
3405 virtual HRESULT STDMETHODCALLTYPE Reset(
3406 _In_ ID3D12CommandAllocator *pAllocator) = 0;
3407
3408 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
3409
3410 virtual void STDMETHODCALLTYPE ResourceBarrier(
3411 _In_ UINT NumBarriers,
3412 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3413
3414 virtual void STDMETHODCALLTYPE DiscardResource(
3415 _In_ ID3D12Resource *pResource,
3416 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3417
3418 virtual void STDMETHODCALLTYPE BeginQuery(
3419 _In_ ID3D12QueryHeap *pQueryHeap,
3420 _In_ D3D12_QUERY_TYPE Type,
3421 _In_ UINT Index) = 0;
3422
3423 virtual void STDMETHODCALLTYPE EndQuery(
3424 _In_ ID3D12QueryHeap *pQueryHeap,
3425 _In_ D3D12_QUERY_TYPE Type,
3426 _In_ UINT Index) = 0;
3427
3428 virtual void STDMETHODCALLTYPE ResolveQueryData(
3429 _In_ ID3D12QueryHeap *pQueryHeap,
3430 _In_ D3D12_QUERY_TYPE Type,
3431 _In_ UINT StartIndex,
3432 _In_ UINT NumQueries,
3433 _In_ ID3D12Resource *pDestinationBuffer,
3434 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3435
3436 virtual void STDMETHODCALLTYPE SetPredication(
3437 _In_opt_ ID3D12Resource *pBuffer,
3438 _In_ UINT64 AlignedBufferOffset,
3439 _In_ D3D12_PREDICATION_OP Operation) = 0;
3440
3441 virtual void STDMETHODCALLTYPE SetMarker(
3442 UINT Metadata,
3443 _In_reads_bytes_opt_(Size) const void *pData,
3444 UINT Size) = 0;
3445
3446 virtual void STDMETHODCALLTYPE BeginEvent(
3447 UINT Metadata,
3448 _In_reads_bytes_opt_(Size) const void *pData,
3449 UINT Size) = 0;
3450
3451 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
3452
3453 virtual void STDMETHODCALLTYPE EstimateMotion(
3454 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3455 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3456 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
3457
3458 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
3459 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3460 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
3461
3462 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
3463 UINT Count,
3464 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3465 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
3466
3467 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
3468 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
3469
3470 };
3471
3472
3473#else /* C style interface */
3474
3475 typedef struct ID3D12VideoEncodeCommandListVtbl
3476 {
3477 BEGIN_INTERFACE
3478
3479 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3480 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3481 ID3D12VideoEncodeCommandList * This,
3482 REFIID riid,
3483 _COM_Outptr_ void **ppvObject);
3484
3485 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3486 ULONG ( STDMETHODCALLTYPE *AddRef )(
3487 ID3D12VideoEncodeCommandList * This);
3488
3489 DECLSPEC_XFGVIRT(IUnknown, Release)
3490 ULONG ( STDMETHODCALLTYPE *Release )(
3491 ID3D12VideoEncodeCommandList * This);
3492
3493 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3494 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3495 ID3D12VideoEncodeCommandList * This,
3496 _In_ REFGUID guid,
3497 _Inout_ UINT *pDataSize,
3498 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3499
3500 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3501 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3502 ID3D12VideoEncodeCommandList * This,
3503 _In_ REFGUID guid,
3504 _In_ UINT DataSize,
3505 _In_reads_bytes_opt_( DataSize ) const void *pData);
3506
3507 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3508 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3509 ID3D12VideoEncodeCommandList * This,
3510 _In_ REFGUID guid,
3511 _In_opt_ const IUnknown *pData);
3512
3513 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3514 HRESULT ( STDMETHODCALLTYPE *SetName )(
3515 ID3D12VideoEncodeCommandList * This,
3516 _In_z_ LPCWSTR Name);
3517
3518 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3519 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3520 ID3D12VideoEncodeCommandList * This,
3521 REFIID riid,
3522 _COM_Outptr_opt_ void **ppvDevice);
3523
3524 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
3525 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
3526 ID3D12VideoEncodeCommandList * This);
3527
3528 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
3529 HRESULT ( STDMETHODCALLTYPE *Close )(
3530 ID3D12VideoEncodeCommandList * This);
3531
3532 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
3533 HRESULT ( STDMETHODCALLTYPE *Reset )(
3534 ID3D12VideoEncodeCommandList * This,
3535 _In_ ID3D12CommandAllocator *pAllocator);
3536
3537 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
3538 void ( STDMETHODCALLTYPE *ClearState )(
3539 ID3D12VideoEncodeCommandList * This);
3540
3541 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
3542 void ( STDMETHODCALLTYPE *ResourceBarrier )(
3543 ID3D12VideoEncodeCommandList * This,
3544 _In_ UINT NumBarriers,
3545 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3546
3547 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
3548 void ( STDMETHODCALLTYPE *DiscardResource )(
3549 ID3D12VideoEncodeCommandList * This,
3550 _In_ ID3D12Resource *pResource,
3551 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
3552
3553 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
3554 void ( STDMETHODCALLTYPE *BeginQuery )(
3555 ID3D12VideoEncodeCommandList * This,
3556 _In_ ID3D12QueryHeap *pQueryHeap,
3557 _In_ D3D12_QUERY_TYPE Type,
3558 _In_ UINT Index);
3559
3560 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
3561 void ( STDMETHODCALLTYPE *EndQuery )(
3562 ID3D12VideoEncodeCommandList * This,
3563 _In_ ID3D12QueryHeap *pQueryHeap,
3564 _In_ D3D12_QUERY_TYPE Type,
3565 _In_ UINT Index);
3566
3567 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
3568 void ( STDMETHODCALLTYPE *ResolveQueryData )(
3569 ID3D12VideoEncodeCommandList * This,
3570 _In_ ID3D12QueryHeap *pQueryHeap,
3571 _In_ D3D12_QUERY_TYPE Type,
3572 _In_ UINT StartIndex,
3573 _In_ UINT NumQueries,
3574 _In_ ID3D12Resource *pDestinationBuffer,
3575 _In_ UINT64 AlignedDestinationBufferOffset);
3576
3577 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
3578 void ( STDMETHODCALLTYPE *SetPredication )(
3579 ID3D12VideoEncodeCommandList * This,
3580 _In_opt_ ID3D12Resource *pBuffer,
3581 _In_ UINT64 AlignedBufferOffset,
3582 _In_ D3D12_PREDICATION_OP Operation);
3583
3584 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
3585 void ( STDMETHODCALLTYPE *SetMarker )(
3586 ID3D12VideoEncodeCommandList * This,
3587 UINT Metadata,
3588 _In_reads_bytes_opt_(Size) const void *pData,
3589 UINT Size);
3590
3591 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
3592 void ( STDMETHODCALLTYPE *BeginEvent )(
3593 ID3D12VideoEncodeCommandList * This,
3594 UINT Metadata,
3595 _In_reads_bytes_opt_(Size) const void *pData,
3596 UINT Size);
3597
3598 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
3599 void ( STDMETHODCALLTYPE *EndEvent )(
3600 ID3D12VideoEncodeCommandList * This);
3601
3602 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
3603 void ( STDMETHODCALLTYPE *EstimateMotion )(
3604 ID3D12VideoEncodeCommandList * This,
3605 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3606 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3607 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
3608
3609 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
3610 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
3611 ID3D12VideoEncodeCommandList * This,
3612 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3613 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
3614
3615 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
3616 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
3617 ID3D12VideoEncodeCommandList * This,
3618 UINT Count,
3619 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3620 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
3621
3622 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
3623 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
3624 ID3D12VideoEncodeCommandList * This,
3625 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
3626
3627 END_INTERFACE
3628 } ID3D12VideoEncodeCommandListVtbl;
3629
3630 interface ID3D12VideoEncodeCommandList
3631 {
3632 CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
3633 };
3634
3635
3636
3637#ifdef COBJMACROS
3638
3639
3640#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
3641 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3642
3643#define ID3D12VideoEncodeCommandList_AddRef(This) \
3644 ( (This)->lpVtbl -> AddRef(This) )
3645
3646#define ID3D12VideoEncodeCommandList_Release(This) \
3647 ( (This)->lpVtbl -> Release(This) )
3648
3649
3650#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
3651 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3652
3653#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
3654 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3655
3656#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
3657 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3658
3659#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
3660 ( (This)->lpVtbl -> SetName(This,Name) )
3661
3662
3663#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
3664 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3665
3666
3667#define ID3D12VideoEncodeCommandList_GetType(This) \
3668 ( (This)->lpVtbl -> GetType(This) )
3669
3670
3671#define ID3D12VideoEncodeCommandList_Close(This) \
3672 ( (This)->lpVtbl -> Close(This) )
3673
3674#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
3675 ( (This)->lpVtbl -> Reset(This,pAllocator) )
3676
3677#define ID3D12VideoEncodeCommandList_ClearState(This) \
3678 ( (This)->lpVtbl -> ClearState(This) )
3679
3680#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
3681 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
3682
3683#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
3684 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
3685
3686#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
3687 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
3688
3689#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
3690 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
3691
3692#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
3693 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
3694
3695#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
3696 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
3697
3698#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
3699 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
3700
3701#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
3702 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
3703
3704#define ID3D12VideoEncodeCommandList_EndEvent(This) \
3705 ( (This)->lpVtbl -> EndEvent(This) )
3706
3707#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
3708 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
3709
3710#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
3711 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
3712
3713#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
3714 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
3715
3716#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
3717 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
3718
3719#endif /* COBJMACROS */
3720
3721
3722#endif /* C style interface */
3723
3724
3725
3726
3727#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
3728
3729
3730/* interface __MIDL_itf_d3d12video_0000_0012 */
3731/* [local] */
3732
3733typedef
3734enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
3735 {
3736 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
3737 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
3738 } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
3739
3740DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )
3741typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
3742 {
3743 UINT NodeIndex;
3744 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
3745 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3746 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
3747
3748typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
3749 {
3750 UINT NodeIndex;
3751 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3752 } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
3753
3754typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
3755 {
3756 UINT NodeIndex;
3757 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3758 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
3759
3760typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
3761 {
3762 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
3763 BOOL Protected;
3764 UINT64 MemoryPoolL0Size;
3765 UINT64 MemoryPoolL1Size;
3766 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
3767
3768typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
3769 {
3770 UINT NodeMask;
3771 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
3772 UINT NumInputStreamDescs;
3773 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
3774 BOOL Protected;
3775 UINT64 MemoryPoolL0Size;
3776 UINT64 MemoryPoolL1Size;
3777 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
3778
3779typedef
3780enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
3781 {
3782 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
3783 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3784 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3785 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
3786 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
3787 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
3788 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
3789 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
3790
3791typedef
3792enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
3793 {
3794 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
3795 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
3796 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
3797 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
3798 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
3799 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
3800 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
3801 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
3802 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
3803 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
3804 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
3805 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
3806
3807typedef
3808enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
3809 {
3810 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
3811 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
3812 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
3813 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
3814
3815DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )
3816typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3817 {
3818 UINT NodeIndex;
3819 UINT CommandCount;
3820 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3821
3822typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
3823 {
3824 GUID CommandId;
3825 LPCWSTR Name;
3826 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
3827 } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
3828
3829typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
3830 {
3831 UINT NodeIndex;
3832 UINT CommandCount;
3833 _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
3834 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
3835
3836typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
3837 {
3838 GUID CommandId;
3839 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3840 UINT ParameterCount;
3841 UINT ParameterPacking;
3842 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
3843
3844typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
3845 {
3846 LPCWSTR Name;
3847 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
3848 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
3849 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
3850
3851typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
3852 {
3853 GUID CommandId;
3854 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3855 UINT ParameterCount;
3856 _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
3857 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
3858
3859typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
3860 {
3861 UINT NodeIndex;
3862 GUID CommandId;
3863 _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
3864 SIZE_T InputDataSizeInBytes;
3865 _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
3866 SIZE_T OutputDataSizeInBytes;
3867 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
3868
3869typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
3870 {
3871 UINT NodeIndex;
3872 GUID CommandId;
3873 _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
3874 SIZE_T CreationParametersSizeInBytes;
3875 UINT64 MemoryPoolL0Size;
3876 UINT64 MemoryPoolL1Size;
3877 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
3878
3879typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3880 {
3881 UINT NodeMask;
3882 GUID CommandId;
3883 } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3884
3885
3886
3887extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3888extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
3889
3890#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3891#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3892
3893/* interface ID3D12VideoDecoder1 */
3894/* [unique][local][object][uuid] */
3895
3896
3897EXTERN_C const IID IID_ID3D12VideoDecoder1;
3898
3899#if defined(__cplusplus) && !defined(CINTERFACE)
3900
3901 MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
3902 ID3D12VideoDecoder1 : public ID3D12VideoDecoder
3903 {
3904 public:
3905 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3906 REFIID riid,
3907 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3908
3909 };
3910
3911
3912#else /* C style interface */
3913
3914 typedef struct ID3D12VideoDecoder1Vtbl
3915 {
3916 BEGIN_INTERFACE
3917
3918 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3919 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3920 ID3D12VideoDecoder1 * This,
3921 REFIID riid,
3922 _COM_Outptr_ void **ppvObject);
3923
3924 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3925 ULONG ( STDMETHODCALLTYPE *AddRef )(
3926 ID3D12VideoDecoder1 * This);
3927
3928 DECLSPEC_XFGVIRT(IUnknown, Release)
3929 ULONG ( STDMETHODCALLTYPE *Release )(
3930 ID3D12VideoDecoder1 * This);
3931
3932 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3933 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3934 ID3D12VideoDecoder1 * This,
3935 _In_ REFGUID guid,
3936 _Inout_ UINT *pDataSize,
3937 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3938
3939 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3940 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3941 ID3D12VideoDecoder1 * This,
3942 _In_ REFGUID guid,
3943 _In_ UINT DataSize,
3944 _In_reads_bytes_opt_( DataSize ) const void *pData);
3945
3946 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3947 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3948 ID3D12VideoDecoder1 * This,
3949 _In_ REFGUID guid,
3950 _In_opt_ const IUnknown *pData);
3951
3952 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3953 HRESULT ( STDMETHODCALLTYPE *SetName )(
3954 ID3D12VideoDecoder1 * This,
3955 _In_z_ LPCWSTR Name);
3956
3957 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3958 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3959 ID3D12VideoDecoder1 * This,
3960 REFIID riid,
3961 _COM_Outptr_opt_ void **ppvDevice);
3962
3963 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
3964#if !defined(_WIN32)
3965 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
3966 ID3D12VideoDecoder1 * This);
3967
3968#else
3969 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
3970 ID3D12VideoDecoder1 * This,
3971 D3D12_VIDEO_DECODER_DESC * RetVal);
3972
3973#endif
3974
3975 DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
3976 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3977 ID3D12VideoDecoder1 * This,
3978 REFIID riid,
3979 _COM_Outptr_opt_ void **ppProtectedSession);
3980
3981 END_INTERFACE
3982 } ID3D12VideoDecoder1Vtbl;
3983
3984 interface ID3D12VideoDecoder1
3985 {
3986 CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
3987 };
3988
3989
3990
3991#ifdef COBJMACROS
3992
3993
3994#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
3995 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3996
3997#define ID3D12VideoDecoder1_AddRef(This) \
3998 ( (This)->lpVtbl -> AddRef(This) )
3999
4000#define ID3D12VideoDecoder1_Release(This) \
4001 ( (This)->lpVtbl -> Release(This) )
4002
4003
4004#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
4005 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4006
4007#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
4008 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4009
4010#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
4011 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4012
4013#define ID3D12VideoDecoder1_SetName(This,Name) \
4014 ( (This)->lpVtbl -> SetName(This,Name) )
4015
4016
4017#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
4018 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4019
4020
4021#if !defined(_WIN32)
4022
4023#define ID3D12VideoDecoder1_GetDesc(This) \
4024 ( (This)->lpVtbl -> GetDesc(This) )
4025#else
4026#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
4027 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4028#endif
4029
4030
4031#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4032 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4033
4034#endif /* COBJMACROS */
4035
4036
4037#endif /* C style interface */
4038
4039
4040
4041
4042#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
4043
4044
4045#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4046#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4047
4048/* interface ID3D12VideoDecoderHeap1 */
4049/* [unique][local][object][uuid] */
4050
4051
4052EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
4053
4054#if defined(__cplusplus) && !defined(CINTERFACE)
4055
4056 MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
4057 ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
4058 {
4059 public:
4060 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4061 REFIID riid,
4062 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4063
4064 };
4065
4066
4067#else /* C style interface */
4068
4069 typedef struct ID3D12VideoDecoderHeap1Vtbl
4070 {
4071 BEGIN_INTERFACE
4072
4073 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4074 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4075 ID3D12VideoDecoderHeap1 * This,
4076 REFIID riid,
4077 _COM_Outptr_ void **ppvObject);
4078
4079 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4080 ULONG ( STDMETHODCALLTYPE *AddRef )(
4081 ID3D12VideoDecoderHeap1 * This);
4082
4083 DECLSPEC_XFGVIRT(IUnknown, Release)
4084 ULONG ( STDMETHODCALLTYPE *Release )(
4085 ID3D12VideoDecoderHeap1 * This);
4086
4087 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4088 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4089 ID3D12VideoDecoderHeap1 * This,
4090 _In_ REFGUID guid,
4091 _Inout_ UINT *pDataSize,
4092 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4093
4094 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4095 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4096 ID3D12VideoDecoderHeap1 * This,
4097 _In_ REFGUID guid,
4098 _In_ UINT DataSize,
4099 _In_reads_bytes_opt_( DataSize ) const void *pData);
4100
4101 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4102 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4103 ID3D12VideoDecoderHeap1 * This,
4104 _In_ REFGUID guid,
4105 _In_opt_ const IUnknown *pData);
4106
4107 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4108 HRESULT ( STDMETHODCALLTYPE *SetName )(
4109 ID3D12VideoDecoderHeap1 * This,
4110 _In_z_ LPCWSTR Name);
4111
4112 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4113 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4114 ID3D12VideoDecoderHeap1 * This,
4115 REFIID riid,
4116 _COM_Outptr_opt_ void **ppvDevice);
4117
4118 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
4119#if !defined(_WIN32)
4120 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4121 ID3D12VideoDecoderHeap1 * This);
4122
4123#else
4124 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4125 ID3D12VideoDecoderHeap1 * This,
4126 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
4127
4128#endif
4129
4130 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
4131 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4132 ID3D12VideoDecoderHeap1 * This,
4133 REFIID riid,
4134 _COM_Outptr_opt_ void **ppProtectedSession);
4135
4136 END_INTERFACE
4137 } ID3D12VideoDecoderHeap1Vtbl;
4138
4139 interface ID3D12VideoDecoderHeap1
4140 {
4141 CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
4142 };
4143
4144
4145
4146#ifdef COBJMACROS
4147
4148
4149#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
4150 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4151
4152#define ID3D12VideoDecoderHeap1_AddRef(This) \
4153 ( (This)->lpVtbl -> AddRef(This) )
4154
4155#define ID3D12VideoDecoderHeap1_Release(This) \
4156 ( (This)->lpVtbl -> Release(This) )
4157
4158
4159#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
4160 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4161
4162#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
4163 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4164
4165#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
4166 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4167
4168#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
4169 ( (This)->lpVtbl -> SetName(This,Name) )
4170
4171
4172#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
4173 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4174
4175
4176#if !defined(_WIN32)
4177
4178#define ID3D12VideoDecoderHeap1_GetDesc(This) \
4179 ( (This)->lpVtbl -> GetDesc(This) )
4180#else
4181#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
4182 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4183#endif
4184
4185
4186#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4187 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4188
4189#endif /* COBJMACROS */
4190
4191
4192#endif /* C style interface */
4193
4194
4195
4196
4197#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
4198
4199
4200#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4201#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4202
4203/* interface ID3D12VideoProcessor1 */
4204/* [unique][local][object][uuid] */
4205
4206
4207EXTERN_C const IID IID_ID3D12VideoProcessor1;
4208
4209#if defined(__cplusplus) && !defined(CINTERFACE)
4210
4211 MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
4212 ID3D12VideoProcessor1 : public ID3D12VideoProcessor
4213 {
4214 public:
4215 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4216 REFIID riid,
4217 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4218
4219 };
4220
4221
4222#else /* C style interface */
4223
4224 typedef struct ID3D12VideoProcessor1Vtbl
4225 {
4226 BEGIN_INTERFACE
4227
4228 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4229 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4230 ID3D12VideoProcessor1 * This,
4231 REFIID riid,
4232 _COM_Outptr_ void **ppvObject);
4233
4234 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4235 ULONG ( STDMETHODCALLTYPE *AddRef )(
4236 ID3D12VideoProcessor1 * This);
4237
4238 DECLSPEC_XFGVIRT(IUnknown, Release)
4239 ULONG ( STDMETHODCALLTYPE *Release )(
4240 ID3D12VideoProcessor1 * This);
4241
4242 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4243 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4244 ID3D12VideoProcessor1 * This,
4245 _In_ REFGUID guid,
4246 _Inout_ UINT *pDataSize,
4247 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4248
4249 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4250 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4251 ID3D12VideoProcessor1 * This,
4252 _In_ REFGUID guid,
4253 _In_ UINT DataSize,
4254 _In_reads_bytes_opt_( DataSize ) const void *pData);
4255
4256 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4257 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4258 ID3D12VideoProcessor1 * This,
4259 _In_ REFGUID guid,
4260 _In_opt_ const IUnknown *pData);
4261
4262 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4263 HRESULT ( STDMETHODCALLTYPE *SetName )(
4264 ID3D12VideoProcessor1 * This,
4265 _In_z_ LPCWSTR Name);
4266
4267 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4268 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4269 ID3D12VideoProcessor1 * This,
4270 REFIID riid,
4271 _COM_Outptr_opt_ void **ppvDevice);
4272
4273 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
4274 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
4275 ID3D12VideoProcessor1 * This);
4276
4277 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
4278 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
4279 ID3D12VideoProcessor1 * This);
4280
4281 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
4282 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
4283 ID3D12VideoProcessor1 * This,
4284 UINT NumInputStreamDescs,
4285 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
4286
4287 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
4288#if !defined(_WIN32)
4289 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4290 ID3D12VideoProcessor1 * This);
4291
4292#else
4293 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4294 ID3D12VideoProcessor1 * This,
4295 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
4296
4297#endif
4298
4299 DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
4300 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4301 ID3D12VideoProcessor1 * This,
4302 REFIID riid,
4303 _COM_Outptr_opt_ void **ppProtectedSession);
4304
4305 END_INTERFACE
4306 } ID3D12VideoProcessor1Vtbl;
4307
4308 interface ID3D12VideoProcessor1
4309 {
4310 CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
4311 };
4312
4313
4314
4315#ifdef COBJMACROS
4316
4317
4318#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
4319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4320
4321#define ID3D12VideoProcessor1_AddRef(This) \
4322 ( (This)->lpVtbl -> AddRef(This) )
4323
4324#define ID3D12VideoProcessor1_Release(This) \
4325 ( (This)->lpVtbl -> Release(This) )
4326
4327
4328#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
4329 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4330
4331#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
4332 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4333
4334#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
4335 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4336
4337#define ID3D12VideoProcessor1_SetName(This,Name) \
4338 ( (This)->lpVtbl -> SetName(This,Name) )
4339
4340
4341#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
4342 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4343
4344
4345
4346#define ID3D12VideoProcessor1_GetNodeMask(This) \
4347 ( (This)->lpVtbl -> GetNodeMask(This) )
4348
4349#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
4350 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
4351
4352#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
4353 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
4354#if !defined(_WIN32)
4355
4356#define ID3D12VideoProcessor1_GetOutputStreamDesc(This) \
4357 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
4358#else
4359#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
4360 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
4361#endif
4362
4363
4364#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4365 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4366
4367#endif /* COBJMACROS */
4368
4369
4370#endif /* C style interface */
4371
4372
4373
4374
4375#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
4376
4377
4378#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4379#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4380
4381/* interface ID3D12VideoExtensionCommand */
4382/* [unique][local][object][uuid] */
4383
4384
4385EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
4386
4387#if defined(__cplusplus) && !defined(CINTERFACE)
4388
4389 MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
4390 ID3D12VideoExtensionCommand : public ID3D12Pageable
4391 {
4392 public:
4393#if defined(_MSC_VER) || !defined(_WIN32)
4394 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4395#else
4396 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC *STDMETHODCALLTYPE GetDesc(
4397 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal) = 0;
4398#endif
4399
4400 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4401 REFIID riid,
4402 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4403
4404 };
4405
4406
4407#else /* C style interface */
4408
4409 typedef struct ID3D12VideoExtensionCommandVtbl
4410 {
4411 BEGIN_INTERFACE
4412
4413 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4414 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4415 ID3D12VideoExtensionCommand * This,
4416 REFIID riid,
4417 _COM_Outptr_ void **ppvObject);
4418
4419 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4420 ULONG ( STDMETHODCALLTYPE *AddRef )(
4421 ID3D12VideoExtensionCommand * This);
4422
4423 DECLSPEC_XFGVIRT(IUnknown, Release)
4424 ULONG ( STDMETHODCALLTYPE *Release )(
4425 ID3D12VideoExtensionCommand * This);
4426
4427 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4428 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4429 ID3D12VideoExtensionCommand * This,
4430 _In_ REFGUID guid,
4431 _Inout_ UINT *pDataSize,
4432 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4433
4434 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4435 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4436 ID3D12VideoExtensionCommand * This,
4437 _In_ REFGUID guid,
4438 _In_ UINT DataSize,
4439 _In_reads_bytes_opt_( DataSize ) const void *pData);
4440
4441 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4442 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4443 ID3D12VideoExtensionCommand * This,
4444 _In_ REFGUID guid,
4445 _In_opt_ const IUnknown *pData);
4446
4447 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4448 HRESULT ( STDMETHODCALLTYPE *SetName )(
4449 ID3D12VideoExtensionCommand * This,
4450 _In_z_ LPCWSTR Name);
4451
4452 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4453 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4454 ID3D12VideoExtensionCommand * This,
4455 REFIID riid,
4456 _COM_Outptr_opt_ void **ppvDevice);
4457
4458 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
4459#if !defined(_WIN32)
4460 D3D12_VIDEO_EXTENSION_COMMAND_DESC ( STDMETHODCALLTYPE *GetDesc )(
4461 ID3D12VideoExtensionCommand * This);
4462
4463#else
4464 D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
4465 ID3D12VideoExtensionCommand * This,
4466 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
4467
4468#endif
4469
4470 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
4471 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4472 ID3D12VideoExtensionCommand * This,
4473 REFIID riid,
4474 _COM_Outptr_opt_ void **ppProtectedSession);
4475
4476 END_INTERFACE
4477 } ID3D12VideoExtensionCommandVtbl;
4478
4479 interface ID3D12VideoExtensionCommand
4480 {
4481 CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
4482 };
4483
4484
4485
4486#ifdef COBJMACROS
4487
4488
4489#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
4490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4491
4492#define ID3D12VideoExtensionCommand_AddRef(This) \
4493 ( (This)->lpVtbl -> AddRef(This) )
4494
4495#define ID3D12VideoExtensionCommand_Release(This) \
4496 ( (This)->lpVtbl -> Release(This) )
4497
4498
4499#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
4500 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4501
4502#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
4503 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4504
4505#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
4506 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4507
4508#define ID3D12VideoExtensionCommand_SetName(This,Name) \
4509 ( (This)->lpVtbl -> SetName(This,Name) )
4510
4511
4512#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
4513 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4514
4515
4516#if !defined(_WIN32)
4517
4518#define ID3D12VideoExtensionCommand_GetDesc(This) \
4519 ( (This)->lpVtbl -> GetDesc(This) )
4520#else
4521#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
4522 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4523#endif
4524
4525#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4526 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4527
4528#endif /* COBJMACROS */
4529
4530
4531#endif /* C style interface */
4532
4533
4534
4535
4536#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
4537
4538
4539#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
4540#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
4541
4542/* interface ID3D12VideoDevice2 */
4543/* [unique][local][object][uuid] */
4544
4545
4546EXTERN_C const IID IID_ID3D12VideoDevice2;
4547
4548#if defined(__cplusplus) && !defined(CINTERFACE)
4549
4550 MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
4551 ID3D12VideoDevice2 : public ID3D12VideoDevice1
4552 {
4553 public:
4554 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
4555 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4556 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4557 _In_ REFIID riid,
4558 _COM_Outptr_ void **ppVideoDecoder) = 0;
4559
4560 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
4561 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4562 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4563 _In_ REFIID riid,
4564 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
4565
4566 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
4567 UINT NodeMask,
4568 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4569 UINT NumInputStreamDescs,
4570 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4571 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4572 _In_ REFIID riid,
4573 _COM_Outptr_ void **ppVideoProcessor) = 0;
4574
4575 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
4576 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4577 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4578 SIZE_T CreationParametersDataSizeInBytes,
4579 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4580 _In_ REFIID riid,
4581 _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
4582
4583 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
4584 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4585 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4586 SIZE_T ExecutionParametersSizeInBytes,
4587 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4588 SIZE_T OutputDataSizeInBytes) = 0;
4589
4590 };
4591
4592
4593#else /* C style interface */
4594
4595 typedef struct ID3D12VideoDevice2Vtbl
4596 {
4597 BEGIN_INTERFACE
4598
4599 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4600 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4601 ID3D12VideoDevice2 * This,
4602 REFIID riid,
4603 _COM_Outptr_ void **ppvObject);
4604
4605 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4606 ULONG ( STDMETHODCALLTYPE *AddRef )(
4607 ID3D12VideoDevice2 * This);
4608
4609 DECLSPEC_XFGVIRT(IUnknown, Release)
4610 ULONG ( STDMETHODCALLTYPE *Release )(
4611 ID3D12VideoDevice2 * This);
4612
4613 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
4614 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
4615 ID3D12VideoDevice2 * This,
4616 D3D12_FEATURE_VIDEO FeatureVideo,
4617 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
4618 UINT FeatureSupportDataSize);
4619
4620 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
4621 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
4622 ID3D12VideoDevice2 * This,
4623 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4624 _In_ REFIID riid,
4625 _COM_Outptr_ void **ppVideoDecoder);
4626
4627 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
4628 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
4629 ID3D12VideoDevice2 * This,
4630 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4631 _In_ REFIID riid,
4632 _COM_Outptr_ void **ppVideoDecoderHeap);
4633
4634 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
4635 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
4636 ID3D12VideoDevice2 * This,
4637 UINT NodeMask,
4638 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4639 UINT NumInputStreamDescs,
4640 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4641 _In_ REFIID riid,
4642 _COM_Outptr_ void **ppVideoProcessor);
4643
4644 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
4645 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
4646 ID3D12VideoDevice2 * This,
4647 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
4648 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4649 _In_ REFIID riid,
4650 _COM_Outptr_ void **ppVideoMotionEstimator);
4651
4652 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
4653 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
4654 ID3D12VideoDevice2 * This,
4655 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
4656 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4657 _In_ REFIID riid,
4658 _COM_Outptr_ void **ppVideoMotionVectorHeap);
4659
4660 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
4661 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
4662 ID3D12VideoDevice2 * This,
4663 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4664 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4665 _In_ REFIID riid,
4666 _COM_Outptr_ void **ppVideoDecoder);
4667
4668 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
4669 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
4670 ID3D12VideoDevice2 * This,
4671 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4672 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4673 _In_ REFIID riid,
4674 _COM_Outptr_ void **ppVideoDecoderHeap);
4675
4676 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
4677 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
4678 ID3D12VideoDevice2 * This,
4679 UINT NodeMask,
4680 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4681 UINT NumInputStreamDescs,
4682 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4683 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4684 _In_ REFIID riid,
4685 _COM_Outptr_ void **ppVideoProcessor);
4686
4687 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
4688 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
4689 ID3D12VideoDevice2 * This,
4690 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4691 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4692 SIZE_T CreationParametersDataSizeInBytes,
4693 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4694 _In_ REFIID riid,
4695 _COM_Outptr_ void **ppVideoExtensionCommand);
4696
4697 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
4698 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4699 ID3D12VideoDevice2 * This,
4700 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4701 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4702 SIZE_T ExecutionParametersSizeInBytes,
4703 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4704 SIZE_T OutputDataSizeInBytes);
4705
4706 END_INTERFACE
4707 } ID3D12VideoDevice2Vtbl;
4708
4709 interface ID3D12VideoDevice2
4710 {
4711 CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
4712 };
4713
4714
4715
4716#ifdef COBJMACROS
4717
4718
4719#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
4720 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4721
4722#define ID3D12VideoDevice2_AddRef(This) \
4723 ( (This)->lpVtbl -> AddRef(This) )
4724
4725#define ID3D12VideoDevice2_Release(This) \
4726 ( (This)->lpVtbl -> Release(This) )
4727
4728
4729#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
4730 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
4731
4732#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
4733 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
4734
4735#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
4736 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
4737
4738#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
4739 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
4740
4741
4742#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
4743 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
4744
4745#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
4746 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
4747
4748
4749#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
4750 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
4751
4752#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
4753 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
4754
4755#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
4756 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
4757
4758#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
4759 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
4760
4761#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
4762 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
4763
4764#endif /* COBJMACROS */
4765
4766
4767#endif /* C style interface */
4768
4769
4770
4771
4772#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
4773
4774
4775#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4776#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4777
4778/* interface ID3D12VideoDecodeCommandList2 */
4779/* [unique][local][object][uuid] */
4780
4781
4782EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
4783
4784#if defined(__cplusplus) && !defined(CINTERFACE)
4785
4786 MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
4787 ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
4788 {
4789 public:
4790 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4791 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4792
4793 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4794 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4795 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4796 SIZE_T InitializationParametersSizeInBytes) = 0;
4797
4798 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4799 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4800 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4801 SIZE_T ExecutionParametersSizeInBytes) = 0;
4802
4803 };
4804
4805
4806#else /* C style interface */
4807
4808 typedef struct ID3D12VideoDecodeCommandList2Vtbl
4809 {
4810 BEGIN_INTERFACE
4811
4812 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4813 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4814 ID3D12VideoDecodeCommandList2 * This,
4815 REFIID riid,
4816 _COM_Outptr_ void **ppvObject);
4817
4818 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4819 ULONG ( STDMETHODCALLTYPE *AddRef )(
4820 ID3D12VideoDecodeCommandList2 * This);
4821
4822 DECLSPEC_XFGVIRT(IUnknown, Release)
4823 ULONG ( STDMETHODCALLTYPE *Release )(
4824 ID3D12VideoDecodeCommandList2 * This);
4825
4826 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4827 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4828 ID3D12VideoDecodeCommandList2 * This,
4829 _In_ REFGUID guid,
4830 _Inout_ UINT *pDataSize,
4831 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4832
4833 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4834 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4835 ID3D12VideoDecodeCommandList2 * This,
4836 _In_ REFGUID guid,
4837 _In_ UINT DataSize,
4838 _In_reads_bytes_opt_( DataSize ) const void *pData);
4839
4840 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4841 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4842 ID3D12VideoDecodeCommandList2 * This,
4843 _In_ REFGUID guid,
4844 _In_opt_ const IUnknown *pData);
4845
4846 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4847 HRESULT ( STDMETHODCALLTYPE *SetName )(
4848 ID3D12VideoDecodeCommandList2 * This,
4849 _In_z_ LPCWSTR Name);
4850
4851 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4852 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4853 ID3D12VideoDecodeCommandList2 * This,
4854 REFIID riid,
4855 _COM_Outptr_opt_ void **ppvDevice);
4856
4857 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4858 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4859 ID3D12VideoDecodeCommandList2 * This);
4860
4861 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
4862 HRESULT ( STDMETHODCALLTYPE *Close )(
4863 ID3D12VideoDecodeCommandList2 * This);
4864
4865 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
4866 HRESULT ( STDMETHODCALLTYPE *Reset )(
4867 ID3D12VideoDecodeCommandList2 * This,
4868 _In_ ID3D12CommandAllocator *pAllocator);
4869
4870 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
4871 void ( STDMETHODCALLTYPE *ClearState )(
4872 ID3D12VideoDecodeCommandList2 * This);
4873
4874 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
4875 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4876 ID3D12VideoDecodeCommandList2 * This,
4877 _In_ UINT NumBarriers,
4878 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4879
4880 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
4881 void ( STDMETHODCALLTYPE *DiscardResource )(
4882 ID3D12VideoDecodeCommandList2 * This,
4883 _In_ ID3D12Resource *pResource,
4884 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4885
4886 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
4887 void ( STDMETHODCALLTYPE *BeginQuery )(
4888 ID3D12VideoDecodeCommandList2 * This,
4889 _In_ ID3D12QueryHeap *pQueryHeap,
4890 _In_ D3D12_QUERY_TYPE Type,
4891 _In_ UINT Index);
4892
4893 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
4894 void ( STDMETHODCALLTYPE *EndQuery )(
4895 ID3D12VideoDecodeCommandList2 * This,
4896 _In_ ID3D12QueryHeap *pQueryHeap,
4897 _In_ D3D12_QUERY_TYPE Type,
4898 _In_ UINT Index);
4899
4900 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
4901 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4902 ID3D12VideoDecodeCommandList2 * This,
4903 _In_ ID3D12QueryHeap *pQueryHeap,
4904 _In_ D3D12_QUERY_TYPE Type,
4905 _In_ UINT StartIndex,
4906 _In_ UINT NumQueries,
4907 _In_ ID3D12Resource *pDestinationBuffer,
4908 _In_ UINT64 AlignedDestinationBufferOffset);
4909
4910 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
4911 void ( STDMETHODCALLTYPE *SetPredication )(
4912 ID3D12VideoDecodeCommandList2 * This,
4913 _In_opt_ ID3D12Resource *pBuffer,
4914 _In_ UINT64 AlignedBufferOffset,
4915 _In_ D3D12_PREDICATION_OP Operation);
4916
4917 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
4918 void ( STDMETHODCALLTYPE *SetMarker )(
4919 ID3D12VideoDecodeCommandList2 * This,
4920 UINT Metadata,
4921 _In_reads_bytes_opt_(Size) const void *pData,
4922 UINT Size);
4923
4924 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
4925 void ( STDMETHODCALLTYPE *BeginEvent )(
4926 ID3D12VideoDecodeCommandList2 * This,
4927 UINT Metadata,
4928 _In_reads_bytes_opt_(Size) const void *pData,
4929 UINT Size);
4930
4931 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
4932 void ( STDMETHODCALLTYPE *EndEvent )(
4933 ID3D12VideoDecodeCommandList2 * This);
4934
4935 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
4936 void ( STDMETHODCALLTYPE *DecodeFrame )(
4937 ID3D12VideoDecodeCommandList2 * This,
4938 _In_ ID3D12VideoDecoder *pDecoder,
4939 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
4940 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4941
4942 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
4943 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
4944 ID3D12VideoDecodeCommandList2 * This,
4945 UINT Count,
4946 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
4947 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
4948
4949 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
4950 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
4951 ID3D12VideoDecodeCommandList2 * This,
4952 _In_ ID3D12VideoDecoder *pDecoder,
4953 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
4954 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4955
4956 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
4957 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
4958 ID3D12VideoDecodeCommandList2 * This,
4959 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
4960
4961 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
4962 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
4963 ID3D12VideoDecodeCommandList2 * This,
4964 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4965 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4966 SIZE_T InitializationParametersSizeInBytes);
4967
4968 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
4969 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4970 ID3D12VideoDecodeCommandList2 * This,
4971 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4972 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4973 SIZE_T ExecutionParametersSizeInBytes);
4974
4975 END_INTERFACE
4976 } ID3D12VideoDecodeCommandList2Vtbl;
4977
4978 interface ID3D12VideoDecodeCommandList2
4979 {
4980 CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
4981 };
4982
4983
4984
4985#ifdef COBJMACROS
4986
4987
4988#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
4989 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4990
4991#define ID3D12VideoDecodeCommandList2_AddRef(This) \
4992 ( (This)->lpVtbl -> AddRef(This) )
4993
4994#define ID3D12VideoDecodeCommandList2_Release(This) \
4995 ( (This)->lpVtbl -> Release(This) )
4996
4997
4998#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
4999 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5000
5001#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5002 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5003
5004#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
5005 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5006
5007#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
5008 ( (This)->lpVtbl -> SetName(This,Name) )
5009
5010
5011#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
5012 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5013
5014
5015#define ID3D12VideoDecodeCommandList2_GetType(This) \
5016 ( (This)->lpVtbl -> GetType(This) )
5017
5018
5019#define ID3D12VideoDecodeCommandList2_Close(This) \
5020 ( (This)->lpVtbl -> Close(This) )
5021
5022#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
5023 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5024
5025#define ID3D12VideoDecodeCommandList2_ClearState(This) \
5026 ( (This)->lpVtbl -> ClearState(This) )
5027
5028#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5029 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5030
5031#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
5032 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5033
5034#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5035 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5036
5037#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5038 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5039
5040#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5041 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5042
5043#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5044 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5045
5046#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
5047 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5048
5049#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
5050 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5051
5052#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
5053 ( (This)->lpVtbl -> EndEvent(This) )
5054
5055#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5056 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5057
5058#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5059 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5060
5061
5062#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5063 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5064
5065
5066#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5067 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5068
5069#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5070 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5071
5072#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5073 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5074
5075#endif /* COBJMACROS */
5076
5077
5078#endif /* C style interface */
5079
5080
5081
5082
5083#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
5084
5085
5086#ifndef __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5087#define __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5088
5089/* interface ID3D12VideoDecodeCommandList3 */
5090/* [unique][local][object][uuid] */
5091
5092
5093EXTERN_C const IID IID_ID3D12VideoDecodeCommandList3;
5094
5095#if defined(__cplusplus) && !defined(CINTERFACE)
5096
5097 MIDL_INTERFACE("2aee8c37-9562-42da-8abf-61efeb2e4513")
5098 ID3D12VideoDecodeCommandList3 : public ID3D12VideoDecodeCommandList2
5099 {
5100 public:
5101 virtual void STDMETHODCALLTYPE Barrier(
5102 UINT32 NumBarrierGroups,
5103 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5104
5105 };
5106
5107
5108#else /* C style interface */
5109
5110 typedef struct ID3D12VideoDecodeCommandList3Vtbl
5111 {
5112 BEGIN_INTERFACE
5113
5114 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5115 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5116 ID3D12VideoDecodeCommandList3 * This,
5117 REFIID riid,
5118 _COM_Outptr_ void **ppvObject);
5119
5120 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5121 ULONG ( STDMETHODCALLTYPE *AddRef )(
5122 ID3D12VideoDecodeCommandList3 * This);
5123
5124 DECLSPEC_XFGVIRT(IUnknown, Release)
5125 ULONG ( STDMETHODCALLTYPE *Release )(
5126 ID3D12VideoDecodeCommandList3 * This);
5127
5128 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5129 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5130 ID3D12VideoDecodeCommandList3 * This,
5131 _In_ REFGUID guid,
5132 _Inout_ UINT *pDataSize,
5133 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5134
5135 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5136 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5137 ID3D12VideoDecodeCommandList3 * This,
5138 _In_ REFGUID guid,
5139 _In_ UINT DataSize,
5140 _In_reads_bytes_opt_( DataSize ) const void *pData);
5141
5142 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5143 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5144 ID3D12VideoDecodeCommandList3 * This,
5145 _In_ REFGUID guid,
5146 _In_opt_ const IUnknown *pData);
5147
5148 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5149 HRESULT ( STDMETHODCALLTYPE *SetName )(
5150 ID3D12VideoDecodeCommandList3 * This,
5151 _In_z_ LPCWSTR Name);
5152
5153 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5154 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5155 ID3D12VideoDecodeCommandList3 * This,
5156 REFIID riid,
5157 _COM_Outptr_opt_ void **ppvDevice);
5158
5159 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5160 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5161 ID3D12VideoDecodeCommandList3 * This);
5162
5163 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
5164 HRESULT ( STDMETHODCALLTYPE *Close )(
5165 ID3D12VideoDecodeCommandList3 * This);
5166
5167 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
5168 HRESULT ( STDMETHODCALLTYPE *Reset )(
5169 ID3D12VideoDecodeCommandList3 * This,
5170 _In_ ID3D12CommandAllocator *pAllocator);
5171
5172 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
5173 void ( STDMETHODCALLTYPE *ClearState )(
5174 ID3D12VideoDecodeCommandList3 * This);
5175
5176 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
5177 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5178 ID3D12VideoDecodeCommandList3 * This,
5179 _In_ UINT NumBarriers,
5180 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5181
5182 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
5183 void ( STDMETHODCALLTYPE *DiscardResource )(
5184 ID3D12VideoDecodeCommandList3 * This,
5185 _In_ ID3D12Resource *pResource,
5186 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5187
5188 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
5189 void ( STDMETHODCALLTYPE *BeginQuery )(
5190 ID3D12VideoDecodeCommandList3 * This,
5191 _In_ ID3D12QueryHeap *pQueryHeap,
5192 _In_ D3D12_QUERY_TYPE Type,
5193 _In_ UINT Index);
5194
5195 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
5196 void ( STDMETHODCALLTYPE *EndQuery )(
5197 ID3D12VideoDecodeCommandList3 * This,
5198 _In_ ID3D12QueryHeap *pQueryHeap,
5199 _In_ D3D12_QUERY_TYPE Type,
5200 _In_ UINT Index);
5201
5202 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
5203 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5204 ID3D12VideoDecodeCommandList3 * This,
5205 _In_ ID3D12QueryHeap *pQueryHeap,
5206 _In_ D3D12_QUERY_TYPE Type,
5207 _In_ UINT StartIndex,
5208 _In_ UINT NumQueries,
5209 _In_ ID3D12Resource *pDestinationBuffer,
5210 _In_ UINT64 AlignedDestinationBufferOffset);
5211
5212 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
5213 void ( STDMETHODCALLTYPE *SetPredication )(
5214 ID3D12VideoDecodeCommandList3 * This,
5215 _In_opt_ ID3D12Resource *pBuffer,
5216 _In_ UINT64 AlignedBufferOffset,
5217 _In_ D3D12_PREDICATION_OP Operation);
5218
5219 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
5220 void ( STDMETHODCALLTYPE *SetMarker )(
5221 ID3D12VideoDecodeCommandList3 * This,
5222 UINT Metadata,
5223 _In_reads_bytes_opt_(Size) const void *pData,
5224 UINT Size);
5225
5226 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
5227 void ( STDMETHODCALLTYPE *BeginEvent )(
5228 ID3D12VideoDecodeCommandList3 * This,
5229 UINT Metadata,
5230 _In_reads_bytes_opt_(Size) const void *pData,
5231 UINT Size);
5232
5233 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
5234 void ( STDMETHODCALLTYPE *EndEvent )(
5235 ID3D12VideoDecodeCommandList3 * This);
5236
5237 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
5238 void ( STDMETHODCALLTYPE *DecodeFrame )(
5239 ID3D12VideoDecodeCommandList3 * This,
5240 _In_ ID3D12VideoDecoder *pDecoder,
5241 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5242 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5243
5244 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
5245 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5246 ID3D12VideoDecodeCommandList3 * This,
5247 UINT Count,
5248 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5249 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5250
5251 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
5252 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
5253 ID3D12VideoDecodeCommandList3 * This,
5254 _In_ ID3D12VideoDecoder *pDecoder,
5255 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
5256 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5257
5258 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
5259 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5260 ID3D12VideoDecodeCommandList3 * This,
5261 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5262
5263 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
5264 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5265 ID3D12VideoDecodeCommandList3 * This,
5266 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5267 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5268 SIZE_T InitializationParametersSizeInBytes);
5269
5270 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
5271 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5272 ID3D12VideoDecodeCommandList3 * This,
5273 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5274 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5275 SIZE_T ExecutionParametersSizeInBytes);
5276
5277 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList3, Barrier)
5278 void ( STDMETHODCALLTYPE *Barrier )(
5279 ID3D12VideoDecodeCommandList3 * This,
5280 UINT32 NumBarrierGroups,
5281 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5282
5283 END_INTERFACE
5284 } ID3D12VideoDecodeCommandList3Vtbl;
5285
5286 interface ID3D12VideoDecodeCommandList3
5287 {
5288 CONST_VTBL struct ID3D12VideoDecodeCommandList3Vtbl *lpVtbl;
5289 };
5290
5291
5292
5293#ifdef COBJMACROS
5294
5295
5296#define ID3D12VideoDecodeCommandList3_QueryInterface(This,riid,ppvObject) \
5297 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5298
5299#define ID3D12VideoDecodeCommandList3_AddRef(This) \
5300 ( (This)->lpVtbl -> AddRef(This) )
5301
5302#define ID3D12VideoDecodeCommandList3_Release(This) \
5303 ( (This)->lpVtbl -> Release(This) )
5304
5305
5306#define ID3D12VideoDecodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5307 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5308
5309#define ID3D12VideoDecodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5310 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5311
5312#define ID3D12VideoDecodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
5313 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5314
5315#define ID3D12VideoDecodeCommandList3_SetName(This,Name) \
5316 ( (This)->lpVtbl -> SetName(This,Name) )
5317
5318
5319#define ID3D12VideoDecodeCommandList3_GetDevice(This,riid,ppvDevice) \
5320 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5321
5322
5323#define ID3D12VideoDecodeCommandList3_GetType(This) \
5324 ( (This)->lpVtbl -> GetType(This) )
5325
5326
5327#define ID3D12VideoDecodeCommandList3_Close(This) \
5328 ( (This)->lpVtbl -> Close(This) )
5329
5330#define ID3D12VideoDecodeCommandList3_Reset(This,pAllocator) \
5331 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5332
5333#define ID3D12VideoDecodeCommandList3_ClearState(This) \
5334 ( (This)->lpVtbl -> ClearState(This) )
5335
5336#define ID3D12VideoDecodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5337 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5338
5339#define ID3D12VideoDecodeCommandList3_DiscardResource(This,pResource,pRegion) \
5340 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5341
5342#define ID3D12VideoDecodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5343 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5344
5345#define ID3D12VideoDecodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5346 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5347
5348#define ID3D12VideoDecodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5349 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5350
5351#define ID3D12VideoDecodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5352 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5353
5354#define ID3D12VideoDecodeCommandList3_SetMarker(This,Metadata,pData,Size) \
5355 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5356
5357#define ID3D12VideoDecodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
5358 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5359
5360#define ID3D12VideoDecodeCommandList3_EndEvent(This) \
5361 ( (This)->lpVtbl -> EndEvent(This) )
5362
5363#define ID3D12VideoDecodeCommandList3_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5364 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5365
5366#define ID3D12VideoDecodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5367 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5368
5369
5370#define ID3D12VideoDecodeCommandList3_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5371 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5372
5373
5374#define ID3D12VideoDecodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
5375 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5376
5377#define ID3D12VideoDecodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5378 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5379
5380#define ID3D12VideoDecodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5381 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5382
5383
5384#define ID3D12VideoDecodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
5385 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
5386
5387#endif /* COBJMACROS */
5388
5389
5390#endif /* C style interface */
5391
5392
5393
5394
5395#endif /* __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__ */
5396
5397
5398#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5399#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5400
5401/* interface ID3D12VideoProcessCommandList2 */
5402/* [unique][local][object][uuid] */
5403
5404
5405EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
5406
5407#if defined(__cplusplus) && !defined(CINTERFACE)
5408
5409 MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
5410 ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
5411 {
5412 public:
5413 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
5414 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
5415
5416 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
5417 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5418 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5419 SIZE_T InitializationParametersSizeInBytes) = 0;
5420
5421 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
5422 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5423 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5424 SIZE_T ExecutionParametersSizeInBytes) = 0;
5425
5426 };
5427
5428
5429#else /* C style interface */
5430
5431 typedef struct ID3D12VideoProcessCommandList2Vtbl
5432 {
5433 BEGIN_INTERFACE
5434
5435 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5436 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5437 ID3D12VideoProcessCommandList2 * This,
5438 REFIID riid,
5439 _COM_Outptr_ void **ppvObject);
5440
5441 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5442 ULONG ( STDMETHODCALLTYPE *AddRef )(
5443 ID3D12VideoProcessCommandList2 * This);
5444
5445 DECLSPEC_XFGVIRT(IUnknown, Release)
5446 ULONG ( STDMETHODCALLTYPE *Release )(
5447 ID3D12VideoProcessCommandList2 * This);
5448
5449 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5450 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5451 ID3D12VideoProcessCommandList2 * This,
5452 _In_ REFGUID guid,
5453 _Inout_ UINT *pDataSize,
5454 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5455
5456 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5457 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5458 ID3D12VideoProcessCommandList2 * This,
5459 _In_ REFGUID guid,
5460 _In_ UINT DataSize,
5461 _In_reads_bytes_opt_( DataSize ) const void *pData);
5462
5463 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5464 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5465 ID3D12VideoProcessCommandList2 * This,
5466 _In_ REFGUID guid,
5467 _In_opt_ const IUnknown *pData);
5468
5469 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5470 HRESULT ( STDMETHODCALLTYPE *SetName )(
5471 ID3D12VideoProcessCommandList2 * This,
5472 _In_z_ LPCWSTR Name);
5473
5474 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5475 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5476 ID3D12VideoProcessCommandList2 * This,
5477 REFIID riid,
5478 _COM_Outptr_opt_ void **ppvDevice);
5479
5480 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5481 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5482 ID3D12VideoProcessCommandList2 * This);
5483
5484 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5485 HRESULT ( STDMETHODCALLTYPE *Close )(
5486 ID3D12VideoProcessCommandList2 * This);
5487
5488 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5489 HRESULT ( STDMETHODCALLTYPE *Reset )(
5490 ID3D12VideoProcessCommandList2 * This,
5491 _In_ ID3D12CommandAllocator *pAllocator);
5492
5493 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5494 void ( STDMETHODCALLTYPE *ClearState )(
5495 ID3D12VideoProcessCommandList2 * This);
5496
5497 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5498 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5499 ID3D12VideoProcessCommandList2 * This,
5500 _In_ UINT NumBarriers,
5501 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5502
5503 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5504 void ( STDMETHODCALLTYPE *DiscardResource )(
5505 ID3D12VideoProcessCommandList2 * This,
5506 _In_ ID3D12Resource *pResource,
5507 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5508
5509 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5510 void ( STDMETHODCALLTYPE *BeginQuery )(
5511 ID3D12VideoProcessCommandList2 * This,
5512 _In_ ID3D12QueryHeap *pQueryHeap,
5513 _In_ D3D12_QUERY_TYPE Type,
5514 _In_ UINT Index);
5515
5516 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5517 void ( STDMETHODCALLTYPE *EndQuery )(
5518 ID3D12VideoProcessCommandList2 * This,
5519 _In_ ID3D12QueryHeap *pQueryHeap,
5520 _In_ D3D12_QUERY_TYPE Type,
5521 _In_ UINT Index);
5522
5523 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5524 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5525 ID3D12VideoProcessCommandList2 * This,
5526 _In_ ID3D12QueryHeap *pQueryHeap,
5527 _In_ D3D12_QUERY_TYPE Type,
5528 _In_ UINT StartIndex,
5529 _In_ UINT NumQueries,
5530 _In_ ID3D12Resource *pDestinationBuffer,
5531 _In_ UINT64 AlignedDestinationBufferOffset);
5532
5533 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5534 void ( STDMETHODCALLTYPE *SetPredication )(
5535 ID3D12VideoProcessCommandList2 * This,
5536 _In_opt_ ID3D12Resource *pBuffer,
5537 _In_ UINT64 AlignedBufferOffset,
5538 _In_ D3D12_PREDICATION_OP Operation);
5539
5540 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5541 void ( STDMETHODCALLTYPE *SetMarker )(
5542 ID3D12VideoProcessCommandList2 * This,
5543 UINT Metadata,
5544 _In_reads_bytes_opt_(Size) const void *pData,
5545 UINT Size);
5546
5547 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5548 void ( STDMETHODCALLTYPE *BeginEvent )(
5549 ID3D12VideoProcessCommandList2 * This,
5550 UINT Metadata,
5551 _In_reads_bytes_opt_(Size) const void *pData,
5552 UINT Size);
5553
5554 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5555 void ( STDMETHODCALLTYPE *EndEvent )(
5556 ID3D12VideoProcessCommandList2 * This);
5557
5558 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5559 void ( STDMETHODCALLTYPE *ProcessFrames )(
5560 ID3D12VideoProcessCommandList2 * This,
5561 _In_ ID3D12VideoProcessor *pVideoProcessor,
5562 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5563 UINT NumInputStreams,
5564 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5565
5566 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5567 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5568 ID3D12VideoProcessCommandList2 * This,
5569 UINT Count,
5570 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5571 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5572
5573 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5574 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5575 ID3D12VideoProcessCommandList2 * This,
5576 _In_ ID3D12VideoProcessor *pVideoProcessor,
5577 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5578 UINT NumInputStreams,
5579 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5580
5581 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5582 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5583 ID3D12VideoProcessCommandList2 * This,
5584 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5585
5586 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5587 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5588 ID3D12VideoProcessCommandList2 * This,
5589 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5590 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5591 SIZE_T InitializationParametersSizeInBytes);
5592
5593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5594 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5595 ID3D12VideoProcessCommandList2 * This,
5596 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5597 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5598 SIZE_T ExecutionParametersSizeInBytes);
5599
5600 END_INTERFACE
5601 } ID3D12VideoProcessCommandList2Vtbl;
5602
5603 interface ID3D12VideoProcessCommandList2
5604 {
5605 CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
5606 };
5607
5608
5609
5610#ifdef COBJMACROS
5611
5612
5613#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
5614 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5615
5616#define ID3D12VideoProcessCommandList2_AddRef(This) \
5617 ( (This)->lpVtbl -> AddRef(This) )
5618
5619#define ID3D12VideoProcessCommandList2_Release(This) \
5620 ( (This)->lpVtbl -> Release(This) )
5621
5622
5623#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
5624 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5625
5626#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5627 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5628
5629#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
5630 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5631
5632#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
5633 ( (This)->lpVtbl -> SetName(This,Name) )
5634
5635
5636#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
5637 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5638
5639
5640#define ID3D12VideoProcessCommandList2_GetType(This) \
5641 ( (This)->lpVtbl -> GetType(This) )
5642
5643
5644#define ID3D12VideoProcessCommandList2_Close(This) \
5645 ( (This)->lpVtbl -> Close(This) )
5646
5647#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
5648 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5649
5650#define ID3D12VideoProcessCommandList2_ClearState(This) \
5651 ( (This)->lpVtbl -> ClearState(This) )
5652
5653#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5654 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5655
5656#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
5657 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5658
5659#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5660 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5661
5662#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5663 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5664
5665#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5666 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5667
5668#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5669 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5670
5671#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
5672 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5673
5674#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
5675 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5676
5677#define ID3D12VideoProcessCommandList2_EndEvent(This) \
5678 ( (This)->lpVtbl -> EndEvent(This) )
5679
5680#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5681 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5682
5683#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5684 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5685
5686
5687#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5688 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5689
5690
5691#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5692 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5693
5694#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5695 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5696
5697#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5698 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5699
5700#endif /* COBJMACROS */
5701
5702
5703#endif /* C style interface */
5704
5705
5706
5707
5708#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
5709
5710
5711#ifndef __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5712#define __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5713
5714/* interface ID3D12VideoProcessCommandList3 */
5715/* [unique][local][object][uuid] */
5716
5717
5718EXTERN_C const IID IID_ID3D12VideoProcessCommandList3;
5719
5720#if defined(__cplusplus) && !defined(CINTERFACE)
5721
5722 MIDL_INTERFACE("1a0a4ca4-9f08-40ce-9558-b411fd2666ff")
5723 ID3D12VideoProcessCommandList3 : public ID3D12VideoProcessCommandList2
5724 {
5725 public:
5726 virtual void STDMETHODCALLTYPE Barrier(
5727 UINT32 NumBarrierGroups,
5728 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5729
5730 };
5731
5732
5733#else /* C style interface */
5734
5735 typedef struct ID3D12VideoProcessCommandList3Vtbl
5736 {
5737 BEGIN_INTERFACE
5738
5739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5741 ID3D12VideoProcessCommandList3 * This,
5742 REFIID riid,
5743 _COM_Outptr_ void **ppvObject);
5744
5745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5746 ULONG ( STDMETHODCALLTYPE *AddRef )(
5747 ID3D12VideoProcessCommandList3 * This);
5748
5749 DECLSPEC_XFGVIRT(IUnknown, Release)
5750 ULONG ( STDMETHODCALLTYPE *Release )(
5751 ID3D12VideoProcessCommandList3 * This);
5752
5753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5755 ID3D12VideoProcessCommandList3 * This,
5756 _In_ REFGUID guid,
5757 _Inout_ UINT *pDataSize,
5758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5759
5760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5762 ID3D12VideoProcessCommandList3 * This,
5763 _In_ REFGUID guid,
5764 _In_ UINT DataSize,
5765 _In_reads_bytes_opt_( DataSize ) const void *pData);
5766
5767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5769 ID3D12VideoProcessCommandList3 * This,
5770 _In_ REFGUID guid,
5771 _In_opt_ const IUnknown *pData);
5772
5773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5774 HRESULT ( STDMETHODCALLTYPE *SetName )(
5775 ID3D12VideoProcessCommandList3 * This,
5776 _In_z_ LPCWSTR Name);
5777
5778 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5779 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5780 ID3D12VideoProcessCommandList3 * This,
5781 REFIID riid,
5782 _COM_Outptr_opt_ void **ppvDevice);
5783
5784 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5785 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5786 ID3D12VideoProcessCommandList3 * This);
5787
5788 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5789 HRESULT ( STDMETHODCALLTYPE *Close )(
5790 ID3D12VideoProcessCommandList3 * This);
5791
5792 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5793 HRESULT ( STDMETHODCALLTYPE *Reset )(
5794 ID3D12VideoProcessCommandList3 * This,
5795 _In_ ID3D12CommandAllocator *pAllocator);
5796
5797 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5798 void ( STDMETHODCALLTYPE *ClearState )(
5799 ID3D12VideoProcessCommandList3 * This);
5800
5801 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5802 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5803 ID3D12VideoProcessCommandList3 * This,
5804 _In_ UINT NumBarriers,
5805 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5806
5807 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5808 void ( STDMETHODCALLTYPE *DiscardResource )(
5809 ID3D12VideoProcessCommandList3 * This,
5810 _In_ ID3D12Resource *pResource,
5811 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5812
5813 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5814 void ( STDMETHODCALLTYPE *BeginQuery )(
5815 ID3D12VideoProcessCommandList3 * This,
5816 _In_ ID3D12QueryHeap *pQueryHeap,
5817 _In_ D3D12_QUERY_TYPE Type,
5818 _In_ UINT Index);
5819
5820 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5821 void ( STDMETHODCALLTYPE *EndQuery )(
5822 ID3D12VideoProcessCommandList3 * This,
5823 _In_ ID3D12QueryHeap *pQueryHeap,
5824 _In_ D3D12_QUERY_TYPE Type,
5825 _In_ UINT Index);
5826
5827 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5828 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5829 ID3D12VideoProcessCommandList3 * This,
5830 _In_ ID3D12QueryHeap *pQueryHeap,
5831 _In_ D3D12_QUERY_TYPE Type,
5832 _In_ UINT StartIndex,
5833 _In_ UINT NumQueries,
5834 _In_ ID3D12Resource *pDestinationBuffer,
5835 _In_ UINT64 AlignedDestinationBufferOffset);
5836
5837 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5838 void ( STDMETHODCALLTYPE *SetPredication )(
5839 ID3D12VideoProcessCommandList3 * This,
5840 _In_opt_ ID3D12Resource *pBuffer,
5841 _In_ UINT64 AlignedBufferOffset,
5842 _In_ D3D12_PREDICATION_OP Operation);
5843
5844 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5845 void ( STDMETHODCALLTYPE *SetMarker )(
5846 ID3D12VideoProcessCommandList3 * This,
5847 UINT Metadata,
5848 _In_reads_bytes_opt_(Size) const void *pData,
5849 UINT Size);
5850
5851 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5852 void ( STDMETHODCALLTYPE *BeginEvent )(
5853 ID3D12VideoProcessCommandList3 * This,
5854 UINT Metadata,
5855 _In_reads_bytes_opt_(Size) const void *pData,
5856 UINT Size);
5857
5858 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5859 void ( STDMETHODCALLTYPE *EndEvent )(
5860 ID3D12VideoProcessCommandList3 * This);
5861
5862 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5863 void ( STDMETHODCALLTYPE *ProcessFrames )(
5864 ID3D12VideoProcessCommandList3 * This,
5865 _In_ ID3D12VideoProcessor *pVideoProcessor,
5866 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5867 UINT NumInputStreams,
5868 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5869
5870 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5871 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5872 ID3D12VideoProcessCommandList3 * This,
5873 UINT Count,
5874 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5875 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5876
5877 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5878 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5879 ID3D12VideoProcessCommandList3 * This,
5880 _In_ ID3D12VideoProcessor *pVideoProcessor,
5881 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5882 UINT NumInputStreams,
5883 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5884
5885 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5886 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5887 ID3D12VideoProcessCommandList3 * This,
5888 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5889
5890 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5891 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5892 ID3D12VideoProcessCommandList3 * This,
5893 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5894 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5895 SIZE_T InitializationParametersSizeInBytes);
5896
5897 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5898 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5899 ID3D12VideoProcessCommandList3 * This,
5900 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5901 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5902 SIZE_T ExecutionParametersSizeInBytes);
5903
5904 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList3, Barrier)
5905 void ( STDMETHODCALLTYPE *Barrier )(
5906 ID3D12VideoProcessCommandList3 * This,
5907 UINT32 NumBarrierGroups,
5908 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5909
5910 END_INTERFACE
5911 } ID3D12VideoProcessCommandList3Vtbl;
5912
5913 interface ID3D12VideoProcessCommandList3
5914 {
5915 CONST_VTBL struct ID3D12VideoProcessCommandList3Vtbl *lpVtbl;
5916 };
5917
5918
5919
5920#ifdef COBJMACROS
5921
5922
5923#define ID3D12VideoProcessCommandList3_QueryInterface(This,riid,ppvObject) \
5924 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5925
5926#define ID3D12VideoProcessCommandList3_AddRef(This) \
5927 ( (This)->lpVtbl -> AddRef(This) )
5928
5929#define ID3D12VideoProcessCommandList3_Release(This) \
5930 ( (This)->lpVtbl -> Release(This) )
5931
5932
5933#define ID3D12VideoProcessCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5934 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5935
5936#define ID3D12VideoProcessCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5937 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5938
5939#define ID3D12VideoProcessCommandList3_SetPrivateDataInterface(This,guid,pData) \
5940 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5941
5942#define ID3D12VideoProcessCommandList3_SetName(This,Name) \
5943 ( (This)->lpVtbl -> SetName(This,Name) )
5944
5945
5946#define ID3D12VideoProcessCommandList3_GetDevice(This,riid,ppvDevice) \
5947 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5948
5949
5950#define ID3D12VideoProcessCommandList3_GetType(This) \
5951 ( (This)->lpVtbl -> GetType(This) )
5952
5953
5954#define ID3D12VideoProcessCommandList3_Close(This) \
5955 ( (This)->lpVtbl -> Close(This) )
5956
5957#define ID3D12VideoProcessCommandList3_Reset(This,pAllocator) \
5958 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5959
5960#define ID3D12VideoProcessCommandList3_ClearState(This) \
5961 ( (This)->lpVtbl -> ClearState(This) )
5962
5963#define ID3D12VideoProcessCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5964 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5965
5966#define ID3D12VideoProcessCommandList3_DiscardResource(This,pResource,pRegion) \
5967 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5968
5969#define ID3D12VideoProcessCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5970 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5971
5972#define ID3D12VideoProcessCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5973 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5974
5975#define ID3D12VideoProcessCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5976 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5977
5978#define ID3D12VideoProcessCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5979 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5980
5981#define ID3D12VideoProcessCommandList3_SetMarker(This,Metadata,pData,Size) \
5982 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5983
5984#define ID3D12VideoProcessCommandList3_BeginEvent(This,Metadata,pData,Size) \
5985 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5986
5987#define ID3D12VideoProcessCommandList3_EndEvent(This) \
5988 ( (This)->lpVtbl -> EndEvent(This) )
5989
5990#define ID3D12VideoProcessCommandList3_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5991 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5992
5993#define ID3D12VideoProcessCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5994 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5995
5996
5997#define ID3D12VideoProcessCommandList3_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5998 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5999
6000
6001#define ID3D12VideoProcessCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
6002 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6003
6004#define ID3D12VideoProcessCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6005 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6006
6007#define ID3D12VideoProcessCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6008 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6009
6010
6011#define ID3D12VideoProcessCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
6012 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
6013
6014#endif /* COBJMACROS */
6015
6016
6017#endif /* C style interface */
6018
6019
6020
6021
6022#endif /* __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__ */
6023
6024
6025#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6026#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6027
6028/* interface ID3D12VideoEncodeCommandList1 */
6029/* [unique][local][object][uuid] */
6030
6031
6032EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
6033
6034#if defined(__cplusplus) && !defined(CINTERFACE)
6035
6036 MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
6037 ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
6038 {
6039 public:
6040 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
6041 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6042 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6043 SIZE_T InitializationParametersSizeInBytes) = 0;
6044
6045 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
6046 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6047 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6048 SIZE_T ExecutionParametersSizeInBytes) = 0;
6049
6050 };
6051
6052
6053#else /* C style interface */
6054
6055 typedef struct ID3D12VideoEncodeCommandList1Vtbl
6056 {
6057 BEGIN_INTERFACE
6058
6059 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6060 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6061 ID3D12VideoEncodeCommandList1 * This,
6062 REFIID riid,
6063 _COM_Outptr_ void **ppvObject);
6064
6065 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6066 ULONG ( STDMETHODCALLTYPE *AddRef )(
6067 ID3D12VideoEncodeCommandList1 * This);
6068
6069 DECLSPEC_XFGVIRT(IUnknown, Release)
6070 ULONG ( STDMETHODCALLTYPE *Release )(
6071 ID3D12VideoEncodeCommandList1 * This);
6072
6073 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6074 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6075 ID3D12VideoEncodeCommandList1 * This,
6076 _In_ REFGUID guid,
6077 _Inout_ UINT *pDataSize,
6078 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6079
6080 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6081 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6082 ID3D12VideoEncodeCommandList1 * This,
6083 _In_ REFGUID guid,
6084 _In_ UINT DataSize,
6085 _In_reads_bytes_opt_( DataSize ) const void *pData);
6086
6087 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6088 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6089 ID3D12VideoEncodeCommandList1 * This,
6090 _In_ REFGUID guid,
6091 _In_opt_ const IUnknown *pData);
6092
6093 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6094 HRESULT ( STDMETHODCALLTYPE *SetName )(
6095 ID3D12VideoEncodeCommandList1 * This,
6096 _In_z_ LPCWSTR Name);
6097
6098 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6099 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6100 ID3D12VideoEncodeCommandList1 * This,
6101 REFIID riid,
6102 _COM_Outptr_opt_ void **ppvDevice);
6103
6104 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6105 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6106 ID3D12VideoEncodeCommandList1 * This);
6107
6108 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
6109 HRESULT ( STDMETHODCALLTYPE *Close )(
6110 ID3D12VideoEncodeCommandList1 * This);
6111
6112 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
6113 HRESULT ( STDMETHODCALLTYPE *Reset )(
6114 ID3D12VideoEncodeCommandList1 * This,
6115 _In_ ID3D12CommandAllocator *pAllocator);
6116
6117 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
6118 void ( STDMETHODCALLTYPE *ClearState )(
6119 ID3D12VideoEncodeCommandList1 * This);
6120
6121 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
6122 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6123 ID3D12VideoEncodeCommandList1 * This,
6124 _In_ UINT NumBarriers,
6125 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6126
6127 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
6128 void ( STDMETHODCALLTYPE *DiscardResource )(
6129 ID3D12VideoEncodeCommandList1 * This,
6130 _In_ ID3D12Resource *pResource,
6131 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6132
6133 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
6134 void ( STDMETHODCALLTYPE *BeginQuery )(
6135 ID3D12VideoEncodeCommandList1 * This,
6136 _In_ ID3D12QueryHeap *pQueryHeap,
6137 _In_ D3D12_QUERY_TYPE Type,
6138 _In_ UINT Index);
6139
6140 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
6141 void ( STDMETHODCALLTYPE *EndQuery )(
6142 ID3D12VideoEncodeCommandList1 * This,
6143 _In_ ID3D12QueryHeap *pQueryHeap,
6144 _In_ D3D12_QUERY_TYPE Type,
6145 _In_ UINT Index);
6146
6147 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
6148 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6149 ID3D12VideoEncodeCommandList1 * This,
6150 _In_ ID3D12QueryHeap *pQueryHeap,
6151 _In_ D3D12_QUERY_TYPE Type,
6152 _In_ UINT StartIndex,
6153 _In_ UINT NumQueries,
6154 _In_ ID3D12Resource *pDestinationBuffer,
6155 _In_ UINT64 AlignedDestinationBufferOffset);
6156
6157 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
6158 void ( STDMETHODCALLTYPE *SetPredication )(
6159 ID3D12VideoEncodeCommandList1 * This,
6160 _In_opt_ ID3D12Resource *pBuffer,
6161 _In_ UINT64 AlignedBufferOffset,
6162 _In_ D3D12_PREDICATION_OP Operation);
6163
6164 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
6165 void ( STDMETHODCALLTYPE *SetMarker )(
6166 ID3D12VideoEncodeCommandList1 * This,
6167 UINT Metadata,
6168 _In_reads_bytes_opt_(Size) const void *pData,
6169 UINT Size);
6170
6171 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
6172 void ( STDMETHODCALLTYPE *BeginEvent )(
6173 ID3D12VideoEncodeCommandList1 * This,
6174 UINT Metadata,
6175 _In_reads_bytes_opt_(Size) const void *pData,
6176 UINT Size);
6177
6178 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
6179 void ( STDMETHODCALLTYPE *EndEvent )(
6180 ID3D12VideoEncodeCommandList1 * This);
6181
6182 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
6183 void ( STDMETHODCALLTYPE *EstimateMotion )(
6184 ID3D12VideoEncodeCommandList1 * This,
6185 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
6186 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
6187 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
6188
6189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
6190 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
6191 ID3D12VideoEncodeCommandList1 * This,
6192 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
6193 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
6194
6195 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
6196 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
6197 ID3D12VideoEncodeCommandList1 * This,
6198 UINT Count,
6199 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
6200 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
6201
6202 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
6203 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
6204 ID3D12VideoEncodeCommandList1 * This,
6205 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
6206
6207 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
6208 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
6209 ID3D12VideoEncodeCommandList1 * This,
6210 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6211 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6212 SIZE_T InitializationParametersSizeInBytes);
6213
6214 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
6215 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
6216 ID3D12VideoEncodeCommandList1 * This,
6217 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6218 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6219 SIZE_T ExecutionParametersSizeInBytes);
6220
6221 END_INTERFACE
6222 } ID3D12VideoEncodeCommandList1Vtbl;
6223
6224 interface ID3D12VideoEncodeCommandList1
6225 {
6226 CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
6227 };
6228
6229
6230
6231#ifdef COBJMACROS
6232
6233
6234#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
6235 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6236
6237#define ID3D12VideoEncodeCommandList1_AddRef(This) \
6238 ( (This)->lpVtbl -> AddRef(This) )
6239
6240#define ID3D12VideoEncodeCommandList1_Release(This) \
6241 ( (This)->lpVtbl -> Release(This) )
6242
6243
6244#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
6245 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6246
6247#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
6248 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6249
6250#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
6251 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6252
6253#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
6254 ( (This)->lpVtbl -> SetName(This,Name) )
6255
6256
6257#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
6258 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6259
6260
6261#define ID3D12VideoEncodeCommandList1_GetType(This) \
6262 ( (This)->lpVtbl -> GetType(This) )
6263
6264
6265#define ID3D12VideoEncodeCommandList1_Close(This) \
6266 ( (This)->lpVtbl -> Close(This) )
6267
6268#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
6269 ( (This)->lpVtbl -> Reset(This,pAllocator) )
6270
6271#define ID3D12VideoEncodeCommandList1_ClearState(This) \
6272 ( (This)->lpVtbl -> ClearState(This) )
6273
6274#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
6275 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
6276
6277#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
6278 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
6279
6280#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
6281 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
6282
6283#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
6284 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
6285
6286#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
6287 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
6288
6289#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
6290 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
6291
6292#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
6293 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
6294
6295#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
6296 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
6297
6298#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
6299 ( (This)->lpVtbl -> EndEvent(This) )
6300
6301#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
6302 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
6303
6304#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
6305 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
6306
6307#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
6308 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
6309
6310#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
6311 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6312
6313
6314#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6315 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6316
6317#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6318 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6319
6320#endif /* COBJMACROS */
6321
6322
6323#endif /* C style interface */
6324
6325
6326
6327
6328#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
6329
6330
6331/* interface __MIDL_itf_d3d12video_0000_0022 */
6332/* [local] */
6333
6334DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
6335DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
6336DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6337DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
6338DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
6339DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
6340DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6341DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6342DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
6343DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
6344DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
6345DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
6346DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);
6347DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);
6348DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);
6349DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);
6350DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);
6351DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);
6352DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);
6353DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);
6354DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);
6355DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);
6356DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
6357DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
6358DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
6359DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
6360DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
6361DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
6362DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
6363DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
6364DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4);
6365DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
6366DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
6367DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
6368DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
6369DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
6370DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
6371typedef
6372enum D3D12_VIDEO_ENCODER_AV1_PROFILE
6373 {
6374 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
6375 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
6376 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2
6377 } D3D12_VIDEO_ENCODER_AV1_PROFILE;
6378
6379typedef
6380enum D3D12_VIDEO_ENCODER_AV1_LEVELS
6381 {
6382 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
6383 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
6384 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
6385 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
6386 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
6387 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
6388 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
6389 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
6390 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
6391 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
6392 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
6393 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
6394 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
6395 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
6396 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
6397 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
6398 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
6399 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
6400 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
6401 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
6402 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
6403 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
6404 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
6405 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23
6406 } D3D12_VIDEO_ENCODER_AV1_LEVELS;
6407
6408typedef
6409enum D3D12_VIDEO_ENCODER_AV1_TIER
6410 {
6411 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
6412 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1
6413 } D3D12_VIDEO_ENCODER_AV1_TIER;
6414
6415typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
6416 {
6417 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
6418 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
6419 } D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
6420
6421typedef
6422enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
6423 {
6424 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0,
6425 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
6426 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
6427 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
6428 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
6429 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
6430 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
6431 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
6432 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
6433 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
6434 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
6435 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
6436 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
6437 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
6438 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
6439 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
6440 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
6441 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
6442 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
6443 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
6444 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
6445 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
6446 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
6447 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
6448 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
6449 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
6450 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000
6451 } D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
6452
6453DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
6454typedef
6455enum D3D12_VIDEO_ENCODER_AV1_TX_MODE
6456 {
6457 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
6458 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
6459 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2
6460 } D3D12_VIDEO_ENCODER_AV1_TX_MODE;
6461
6462typedef
6463enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS
6464 {
6465 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0,
6466 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 ) ,
6467 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST ) ,
6468 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT )
6469 } D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
6470
6471DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
6472typedef
6473enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS
6474 {
6475 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
6476 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
6477 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
6478 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
6479 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4
6480 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
6481
6482typedef
6483enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS
6484 {
6485 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0,
6486 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP ) ,
6487 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH ) ,
6488 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP ) ,
6489 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR ) ,
6490 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE )
6491 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
6492
6493DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
6494typedef
6495enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE
6496 {
6497 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
6498 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
6499 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
6500 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
6501 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4
6502 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
6503
6504typedef
6505enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE
6506 {
6507 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
6508 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
6509 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
6510 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
6511 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
6512 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
6513 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
6514 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
6515 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8
6516 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
6517
6518typedef
6519enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
6520 {
6521 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
6522 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED ) ,
6523 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q ) ,
6524 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V ) ,
6525 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H ) ,
6526 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U ) ,
6527 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V ) ,
6528 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME ) ,
6529 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP ) ,
6530 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV )
6531 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
6532
6533DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
6534typedef
6535enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE
6536 {
6537 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
6538 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
6539 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
6540 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3
6541 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
6542
6543typedef
6544enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE
6545 {
6546 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
6547 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
6548 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
6549 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
6550 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4
6551 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
6552
6553typedef
6554enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS
6555 {
6556 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0,
6557 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
6558 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
6559 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
6560 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8
6561 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
6562
6563DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
6564typedef
6565enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
6566 {
6567 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
6568 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
6569 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
6570 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3
6571 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
6572
6573typedef
6574enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS
6575 {
6576 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0,
6577 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY ) ,
6578 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION ) ,
6579 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM ) ,
6580 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE )
6581 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
6582
6583DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
6584typedef
6585enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS
6586 {
6587 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
6588 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
6589 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
6590 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
6591 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
6592 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
6593 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
6594 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
6595 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
6596 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100
6597 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
6598
6599DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
6600typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
6601 {
6602 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
6603 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
6604 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
6605 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[ 3 ][ 3 ];
6606 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
6607 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[ 4 ];
6608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
6609 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
6610 UINT MaxTemporalLayers;
6611 UINT MaxSpatialLayers;
6612 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
6613
6614typedef
6615enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
6616 {
6617 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
6618 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
6619 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
6620 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3
6621 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
6622
6623typedef
6624enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS
6625 {
6626 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0,
6627 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME ) ,
6628 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME ) ,
6629 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME ) ,
6630 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME )
6631 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
6632
6633DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
6634typedef
6635enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
6636 {
6637 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
6638 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1
6639 } D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
6640
6641typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT
6642 {
6643 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
6644 UINT MaxUniqueReferencesPerFrame;
6645 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
6646 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
6647 } D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
6648
6649typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION
6650 {
6651 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
6652 UINT OrderHintBitsMinus1;
6653 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
6654
6655typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
6656 {
6657 UINT IntraDistance;
6658 UINT InterFramePeriod;
6659 } D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
6660
6661typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
6662 {
6663 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
6664 INT TransformationMatrix[ 8 ];
6665 BOOL InvalidAffineSet;
6666 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
6667
6668typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
6669 {
6670 UINT ReconstructedPictureResourceIndex;
6671 UINT TemporalLayerIndexPlus1;
6672 UINT SpatialLayerIndexPlus1;
6673 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
6675 UINT OrderHint;
6676 UINT PictureIndex;
6677 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
6678
6679typedef
6680enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
6681 {
6682 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0,
6683 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
6684 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
6685 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
6686 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
6687 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
6688 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
6689 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
6690 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
6691 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
6692 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
6693 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
6694 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
6695 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
6696 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
6697 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000
6698 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
6699
6700DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
6701typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
6702 {
6703 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[ 3 ];
6704 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[ 3 ];
6705 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
6706
6707typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
6708 {
6709 UINT64 EnabledFeatures;
6710 INT64 FeatureValue[ 8 ];
6711 } D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
6712
6713typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
6714 {
6715 UINT64 UpdateMap;
6716 UINT64 TemporalUpdate;
6717 UINT64 UpdateData;
6718 UINT64 NumSegments;
6719 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[ 8 ];
6720 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
6721
6722typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
6723 {
6724 UINT SegmentsMapByteSize;
6725 UINT8 *pSegmentsMap;
6726 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
6727
6728typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
6729 {
6730 UINT64 LoopFilterLevel[ 2 ];
6731 UINT64 LoopFilterLevelU;
6732 UINT64 LoopFilterLevelV;
6733 UINT64 LoopFilterSharpnessLevel;
6734 UINT64 LoopFilterDeltaEnabled;
6735 UINT64 UpdateRefDelta;
6736 INT64 RefDeltas[ 8 ];
6737 UINT64 UpdateModeDelta;
6738 INT64 ModeDeltas[ 2 ];
6739 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
6740
6741typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
6742 {
6743 UINT64 DeltaLFPresent;
6744 UINT64 DeltaLFMulti;
6745 UINT64 DeltaLFRes;
6746 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
6747
6748typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
6749 {
6750 UINT64 BaseQIndex;
6751 INT64 YDCDeltaQ;
6752 INT64 UDCDeltaQ;
6753 INT64 UACDeltaQ;
6754 INT64 VDCDeltaQ;
6755 INT64 VACDeltaQ;
6756 UINT64 UsingQMatrix;
6757 UINT64 QMY;
6758 UINT64 QMU;
6759 UINT64 QMV;
6760 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
6761
6762typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
6763 {
6764 UINT64 DeltaQPresent;
6765 UINT64 DeltaQRes;
6766 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
6767
6768typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
6769 {
6770 UINT64 CdefBits;
6771 UINT64 CdefDampingMinus3;
6772 UINT64 CdefYPriStrength[ 8 ];
6773 UINT64 CdefUVPriStrength[ 8 ];
6774 UINT64 CdefYSecStrength[ 8 ];
6775 UINT64 CdefUVSecStrength[ 8 ];
6776 } D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
6777
6778typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
6779 {
6780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
6781 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6782 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
6783 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
6784 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
6785 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
6786 UINT SuperResDenominator;
6787 UINT OrderHint;
6788 UINT PictureIndex;
6789 UINT TemporalLayerIndexPlus1;
6790 UINT SpatialLayerIndexPlus1;
6791 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[ 8 ];
6792 UINT ReferenceIndices[ 7 ];
6793 UINT PrimaryRefFrame;
6794 UINT RefreshFrameFlags;
6795 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6796 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6797 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6798 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6799 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6800 UINT QPMapValuesCount;
6801 _Field_size_full_(QPMapValuesCount) INT16 *pRateControlQPMap;
6802 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
6803 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
6804 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
6805
6806typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
6807 {
6808 UINT64 RowCount;
6809 UINT64 ColCount;
6810 UINT64 RowHeights[ 64 ];
6811 UINT64 ColWidths[ 64 ];
6812 UINT64 ContextUpdateTileId;
6813 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
6814
6815typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
6816 {
6817 UINT64 CompoundPredictionType;
6818 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6819 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6820 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6821 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6822 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6823 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
6824 UINT64 PrimaryRefFrame;
6825 UINT64 ReferenceIndices[ 7 ];
6826 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
6827
6828typedef
6829enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
6830 {
6831 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
6832 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
6833 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
6834 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
6835 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4
6836 } D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
6837
6838typedef
6839enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
6840 {
6841 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0,
6842 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
6843 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
6844 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
6845 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
6846 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
6847 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
6848 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
6849 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
6850 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100
6851 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
6852
6853DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)
6854typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP
6855 {
6856 UINT ConstantQP_FullIntracodedFrame;
6857 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6858 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6859 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
6860
6861typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1
6862 {
6863 UINT ConstantQP_FullIntracodedFrame;
6864 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6865 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6866 UINT QualityVsSpeed;
6867 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
6868
6869typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR
6870 {
6871 UINT InitialQP;
6872 UINT MinQP;
6873 UINT MaxQP;
6874 UINT64 MaxFrameBitSize;
6875 UINT64 TargetBitRate;
6876 UINT64 VBVCapacity;
6877 UINT64 InitialVBVFullness;
6878 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
6879
6880typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1
6881 {
6882 UINT InitialQP;
6883 UINT MinQP;
6884 UINT MaxQP;
6885 UINT64 MaxFrameBitSize;
6886 UINT64 TargetBitRate;
6887 UINT64 VBVCapacity;
6888 UINT64 InitialVBVFullness;
6889 UINT QualityVsSpeed;
6890 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
6891
6892typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR
6893 {
6894 UINT InitialQP;
6895 UINT MinQP;
6896 UINT MaxQP;
6897 UINT64 MaxFrameBitSize;
6898 UINT64 TargetAvgBitRate;
6899 UINT64 PeakBitRate;
6900 UINT64 VBVCapacity;
6901 UINT64 InitialVBVFullness;
6902 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
6903
6904typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1
6905 {
6906 UINT InitialQP;
6907 UINT MinQP;
6908 UINT MaxQP;
6909 UINT64 MaxFrameBitSize;
6910 UINT64 TargetAvgBitRate;
6911 UINT64 PeakBitRate;
6912 UINT64 VBVCapacity;
6913 UINT64 InitialVBVFullness;
6914 UINT QualityVsSpeed;
6915 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
6916
6917typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR
6918 {
6919 UINT InitialQP;
6920 UINT MinQP;
6921 UINT MaxQP;
6922 UINT64 MaxFrameBitSize;
6923 UINT64 TargetAvgBitRate;
6924 UINT64 PeakBitRate;
6925 UINT ConstantQualityTarget;
6926 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
6927
6928typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
6929 {
6930 UINT InitialQP;
6931 UINT MinQP;
6932 UINT MaxQP;
6933 UINT64 MaxFrameBitSize;
6934 UINT64 TargetAvgBitRate;
6935 UINT64 PeakBitRate;
6936 UINT ConstantQualityTarget;
6937 UINT64 VBVCapacity;
6938 UINT64 InitialVBVFullness;
6939 UINT QualityVsSpeed;
6940 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
6941
6942typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP
6943 {
6944 UINT QualityVsSpeed;
6945 } D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
6946
6947typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
6948 {
6949 UINT DataSize;
6950 union
6951 {
6952 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP *pConfiguration_CQP;
6953 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR *pConfiguration_CBR;
6954 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR *pConfiguration_VBR;
6955 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR *pConfiguration_QVBR;
6956 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 *pConfiguration_CQP1;
6957 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 *pConfiguration_CBR1;
6958 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 *pConfiguration_VBR1;
6959 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1 *pConfiguration_QVBR1;
6960 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP *pConfiguration_AbsoluteQPMap;
6961 } ;
6962 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
6963
6964typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL
6965 {
6966 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
6967 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
6968 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
6969 DXGI_RATIONAL TargetFrameRate;
6970 } D3D12_VIDEO_ENCODER_RATE_CONTROL;
6971
6972typedef
6973enum D3D12_VIDEO_ENCODER_CODEC
6974 {
6975 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
6976 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
6977 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2
6978 } D3D12_VIDEO_ENCODER_CODEC;
6979
6980typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
6981 {
6982 UINT NodeIndex;
6983 D3D12_VIDEO_ENCODER_CODEC Codec;
6984 BOOL IsSupported;
6985 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
6986
6987typedef
6988enum D3D12_VIDEO_ENCODER_PROFILE_H264
6989 {
6990 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
6991 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
6992 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2
6993 } D3D12_VIDEO_ENCODER_PROFILE_H264;
6994
6995typedef
6996enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
6997 {
6998 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
6999 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
7000 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
7001 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
7002 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
7003 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
7004 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
7005 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
7006 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8
7007 } D3D12_VIDEO_ENCODER_PROFILE_HEVC;
7008
7009typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
7010 {
7011 UINT DataSize;
7012 union
7013 {
7014 D3D12_VIDEO_ENCODER_PROFILE_H264 *pH264Profile;
7015 D3D12_VIDEO_ENCODER_PROFILE_HEVC *pHEVCProfile;
7016 D3D12_VIDEO_ENCODER_AV1_PROFILE *pAV1Profile;
7017 } ;
7018 } D3D12_VIDEO_ENCODER_PROFILE_DESC;
7019
7020typedef
7021enum D3D12_VIDEO_ENCODER_LEVELS_H264
7022 {
7023 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
7024 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
7025 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
7026 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
7027 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
7028 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
7029 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
7030 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
7031 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
7032 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
7033 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
7034 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
7035 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
7036 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
7037 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
7038 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
7039 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
7040 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
7041 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
7042 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19
7043 } D3D12_VIDEO_ENCODER_LEVELS_H264;
7044
7045typedef
7046enum D3D12_VIDEO_ENCODER_TIER_HEVC
7047 {
7048 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
7049 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1
7050 } D3D12_VIDEO_ENCODER_TIER_HEVC;
7051
7052typedef
7053enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
7054 {
7055 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
7056 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
7057 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
7058 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
7059 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
7060 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
7061 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
7062 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
7063 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
7064 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
7065 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
7066 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
7067 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12
7068 } D3D12_VIDEO_ENCODER_LEVELS_HEVC;
7069
7070typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
7071 {
7072 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
7073 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
7074 } D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
7075
7076typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
7077 {
7078 UINT DataSize;
7079 union
7080 {
7081 D3D12_VIDEO_ENCODER_LEVELS_H264 *pH264LevelSetting;
7082 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC *pHEVCLevelSetting;
7083 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS *pAV1LevelSetting;
7084 } ;
7085 } D3D12_VIDEO_ENCODER_LEVEL_SETTING;
7086
7087typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
7088 {
7089 UINT NodeIndex;
7090 D3D12_VIDEO_ENCODER_CODEC Codec;
7091 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7092 BOOL IsSupported;
7093 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel;
7094 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel;
7095 } D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
7096
7097typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
7098 {
7099 UINT Width;
7100 UINT Height;
7101 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
7102
7103typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
7104 {
7105 UINT WidthRatio;
7106 UINT HeightRatio;
7107 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
7108
7109typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
7110 {
7111 UINT NodeIndex;
7112 D3D12_VIDEO_ENCODER_CODEC Codec;
7113 UINT ResolutionRatiosCount;
7114 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
7115
7116typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
7117 {
7118 UINT NodeIndex;
7119 D3D12_VIDEO_ENCODER_CODEC Codec;
7120 UINT ResolutionRatiosCount;
7121 BOOL IsSupported;
7122 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported;
7123 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported;
7124 UINT ResolutionWidthMultipleRequirement;
7125 UINT ResolutionHeightMultipleRequirement;
7126 _Field_size_full_(ResolutionRatiosCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC *pResolutionRatios;
7127 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
7128
7129typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
7130 {
7131 UINT NodeIndex;
7132 D3D12_VIDEO_ENCODER_CODEC Codec;
7133 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7134 DXGI_FORMAT Format;
7135 BOOL IsSupported;
7136 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
7137
7138typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
7139 {
7140 UINT NodeIndex;
7141 D3D12_VIDEO_ENCODER_CODEC Codec;
7142 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;
7143 BOOL IsSupported;
7144 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
7145
7146typedef
7147enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
7148 {
7149 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
7150 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1
7151 } D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7152
7153typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE
7154 {
7155 UINT NodeIndex;
7156 D3D12_VIDEO_ENCODER_CODEC Codec;
7157 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7158 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7159 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;
7160 BOOL IsSupported;
7161 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7162
7163typedef
7164enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7165 {
7166 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
7167 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
7168 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
7169 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
7170 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
7171 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
7172 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
7173 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7
7174 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7175
7176typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7177 {
7178 UINT NodeIndex;
7179 D3D12_VIDEO_ENCODER_CODEC Codec;
7180 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7181 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7182 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7183 BOOL IsSupported;
7184 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7185
7186typedef
7187enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
7188 {
7189 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0,
7190 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
7191 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
7192 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
7193 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
7194 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
7195 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
7196 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
7197 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80
7198 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
7199
7200DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)
7201typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7202 {
7203 BOOL Use128SuperBlocks;
7204 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
7205 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
7206 UINT MinTileRows;
7207 UINT MaxTileRows;
7208 UINT MinTileCols;
7209 UINT MaxTileCols;
7210 UINT MinTileWidth;
7211 UINT MaxTileWidth;
7212 UINT MinTileArea;
7213 UINT MaxTileArea;
7214 UINT TileSizeBytesMinus1;
7215 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7216
7217typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7218 {
7219 UINT DataSize;
7220 union
7221 {
7222 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT *pAV1Support;
7223 } ;
7224 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7225
7226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
7227 {
7228 UINT NodeIndex;
7229 D3D12_VIDEO_ENCODER_CODEC Codec;
7230 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7231 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7232 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7233 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution;
7234 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport;
7235 BOOL IsSupported;
7236 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
7237
7238typedef
7239enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
7240 {
7241 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0,
7242 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
7243 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
7244 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
7245 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8
7246 } D3D12_VIDEO_ENCODER_HEAP_FLAGS;
7247
7248DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)
7249typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
7250 {
7251 UINT NodeMask;
7252 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
7253 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7254 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7255 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
7256 UINT ResolutionsListCount;
7257 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7258 } D3D12_VIDEO_ENCODER_HEAP_DESC;
7259
7260typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE
7261 {
7262 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc;
7263 BOOL IsSupported;
7264 UINT64 MemoryPoolL0Size;
7265 UINT64 MemoryPoolL1Size;
7266 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
7267
7268typedef
7269enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
7270 {
7271 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0,
7272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
7273 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7274 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
7275 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
7276 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
7277 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
7278 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
7279 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80
7280 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
7281
7282DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)
7283typedef
7284enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES
7285 {
7286 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
7287 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
7288 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
7289 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
7290 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
7291 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
7292 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6
7293 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
7294
7295typedef
7296enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS
7297 {
7298 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0,
7299 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED ) ,
7300 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES ) ,
7301 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS ) ,
7302 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING ) ,
7303 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES ) ,
7304 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES ) ,
7305 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING )
7306 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
7307
7308DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)
7309typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264
7310 {
7311 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
7312 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
7313 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
7314
7315typedef
7316enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
7317 {
7318 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0,
7319 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
7320 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7321 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
7322 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
7323 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
7324 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
7325 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
7326 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
7327 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
7328 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
7329 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
7330 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
7331 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
7332 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
7333 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
7334 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
7335 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
7336 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
7337 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
7338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
7339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
7340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
7341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
7342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
7343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
7344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
7345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
7346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
7347 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
7348 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
7349 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
7350 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000
7351 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
7352
7353DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)
7354typedef
7355enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE
7356 {
7357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
7358 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
7359 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
7360 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3
7361 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
7362
7363typedef
7364enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE
7365 {
7366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
7367 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
7368 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
7369 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3
7370 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
7371
7372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC
7373 {
7374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7375 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7376 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7377 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7378 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7379 UCHAR max_transform_hierarchy_depth_inter;
7380 UCHAR max_transform_hierarchy_depth_intra;
7381 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
7382
7383typedef
7384enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
7385 {
7386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0,
7387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
7388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2
7389 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
7390
7391DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
7392typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
7393 {
7394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7399 UCHAR max_transform_hierarchy_depth_inter;
7400 UCHAR max_transform_hierarchy_depth_intra;
7401 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
7402 UINT allowed_log2_sao_offset_scale_luma_values;
7403 UINT allowed_log2_sao_offset_scale_chroma_values;
7404 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
7405 UINT allowed_chroma_qp_offset_list_len_minus1_values;
7406 UINT allowed_cb_qp_offset_list_values[ 6 ];
7407 UINT allowed_cr_qp_offset_list_values[ 6 ];
7408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
7409 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
7410
7411typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7412 {
7413 UINT DataSize;
7414 union
7415 {
7416 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
7417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
7418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 *pHEVCSupport1;
7419 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT *pAV1Support;
7420 } ;
7421 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7422
7423typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7424 {
7425 UINT NodeIndex;
7426 D3D12_VIDEO_ENCODER_CODEC Codec;
7427 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7428 BOOL IsSupported;
7429 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;
7430 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7431
7432typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264
7433 {
7434 UINT MaxL0ReferencesForP;
7435 UINT MaxL0ReferencesForB;
7436 UINT MaxL1ReferencesForB;
7437 UINT MaxLongTermReferences;
7438 UINT MaxDPBCapacity;
7439 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
7440
7441typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC
7442 {
7443 UINT MaxL0ReferencesForP;
7444 UINT MaxL0ReferencesForB;
7445 UINT MaxL1ReferencesForB;
7446 UINT MaxLongTermReferences;
7447 UINT MaxDPBCapacity;
7448 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
7449
7450typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7451 {
7452 UINT DataSize;
7453 union
7454 {
7455 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 *pH264Support;
7456 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC *pHEVCSupport;
7457 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT *pAV1Support;
7458 } ;
7459 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7460
7461typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7462 {
7463 UINT NodeIndex;
7464 D3D12_VIDEO_ENCODER_CODEC Codec;
7465 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7466 BOOL IsSupported;
7467 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;
7468 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7469
7470typedef
7471enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
7472 {
7473 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0,
7474 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
7475 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
7476 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
7477 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
7478 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
7479 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
7480 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
7481 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
7482 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
7483 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
7484 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
7485 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
7486 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
7487 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
7488 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
7489 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
7490 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
7491 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
7492 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
7493 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
7494 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
7495 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
7496 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
7497 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000
7498 } D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
7499
7500DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)
7501typedef
7502enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
7503 {
7504 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0,
7505 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
7506 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
7507 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
7508 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
7509 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
7510
7511DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)
7512typedef
7513enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES
7514 {
7515 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
7516 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
7517 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2
7518 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
7519
7520typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
7521 {
7522 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
7523 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
7524 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
7525 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
7526
7527typedef
7528enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
7529 {
7530 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0,
7531 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
7532 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
7533 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
7534 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
7535 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
7536 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
7537 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
7538 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
7539 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
7540 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
7541 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
7542 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
7543 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
7544 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
7545 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
7546 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
7547 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000
7548 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
7549
7550DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)
7551typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
7552 {
7553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
7554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7557 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7558 UCHAR max_transform_hierarchy_depth_inter;
7559 UCHAR max_transform_hierarchy_depth_intra;
7560 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
7561
7562typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
7563 {
7564 UINT DataSize;
7565 union
7566 {
7567 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 *pH264Config;
7568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC *pHEVCConfig;
7569 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION *pAV1Config;
7570 } ;
7571 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
7572
7573typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
7574 {
7575 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
7576 UINT IntraRefreshDuration;
7577 } D3D12_VIDEO_ENCODER_INTRA_REFRESH;
7578
7579typedef
7580enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
7581 {
7582 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
7583 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
7584 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
7585 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
7586 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4
7587 } D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
7588
7589typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
7590 {
7591 UINT MaxSubregionsNumber;
7592 UINT MaxIntraRefreshFrameDuration;
7593 UINT SubregionBlockPixelsSize;
7594 UINT QPMapRegionPixelsSize;
7595 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
7596
7597typedef
7598enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
7599 {
7600 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0,
7601 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
7602 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
7603 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
7604 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
7605 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
7606 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
7607 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
7608 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
7609 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
7610 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
7611 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
7612 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
7613 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
7614 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000
7615 } D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
7616
7617DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)
7618typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
7619 {
7620 UINT GOPLength;
7621 UINT PPicturePeriod;
7622 UCHAR pic_order_cnt_type;
7623 UCHAR log2_max_frame_num_minus4;
7624 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7625 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
7626
7627typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
7628 {
7629 UINT GOPLength;
7630 UINT PPicturePeriod;
7631 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7632 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
7633
7634typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
7635 {
7636 UINT DataSize;
7637 union
7638 {
7639 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 *pH264GroupOfPictures;
7640 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC *pHEVCGroupOfPictures;
7641 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE *pAV1SequenceStructure;
7642 } ;
7643 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
7644
7645typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
7646 {
7647 UINT NodeIndex;
7648 D3D12_VIDEO_ENCODER_CODEC Codec;
7649 DXGI_FORMAT InputFormat;
7650 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7651 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7652 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7653 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7654 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7655 UINT ResolutionsListCount;
7656 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7657 UINT MaxReferenceFramesInDPB;
7658 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7659 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7660 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7661 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7662 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7663 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
7664
7665typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
7666 {
7667 union
7668 {
7669 UINT MaxBytesPerSlice;
7670 UINT NumberOfCodingUnitsPerSlice;
7671 UINT NumberOfRowsPerSlice;
7672 UINT NumberOfSlicesPerFrame;
7673 } ;
7674 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
7675
7676typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
7677 {
7678 UINT DataSize;
7679 union
7680 {
7681 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_H264;
7682 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_HEVC;
7683 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES *pTilesPartition_AV1;
7684 } ;
7685 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
7686
7687typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
7688 {
7689 UINT NodeIndex;
7690 D3D12_VIDEO_ENCODER_CODEC Codec;
7691 DXGI_FORMAT InputFormat;
7692 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7693 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7694 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7695 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7696 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7697 UINT ResolutionsListCount;
7698 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7699 UINT MaxReferenceFramesInDPB;
7700 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7701 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7702 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7703 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7704 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7705 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
7706 UINT MaxQualityVsSpeed;
7707 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
7708
7709typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
7710 {
7711 UINT NodeIndex;
7712 D3D12_VIDEO_ENCODER_CODEC Codec;
7713 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7714 DXGI_FORMAT InputFormat;
7715 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
7716 BOOL IsSupported;
7717 UINT CompressedBitstreamBufferAccessAlignment;
7718 UINT EncoderMetadataBufferAccessAlignment;
7719 UINT MaxEncoderOutputMetadataBufferSize;
7720 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
7721
7722typedef
7723enum D3D12_VIDEO_ENCODER_FLAGS
7724 {
7725 D3D12_VIDEO_ENCODER_FLAG_NONE = 0
7726 } D3D12_VIDEO_ENCODER_FLAGS;
7727
7728DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)
7729typedef struct D3D12_VIDEO_ENCODER_DESC
7730 {
7731 UINT NodeMask;
7732 D3D12_VIDEO_ENCODER_FLAGS Flags;
7733 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7734 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7735 DXGI_FORMAT InputFormat;
7736 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7737 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
7738 } D3D12_VIDEO_ENCODER_DESC;
7739
7740
7741
7742extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_c_ifspec;
7743extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_s_ifspec;
7744
7745#ifndef __ID3D12VideoEncoder_INTERFACE_DEFINED__
7746#define __ID3D12VideoEncoder_INTERFACE_DEFINED__
7747
7748/* interface ID3D12VideoEncoder */
7749/* [unique][local][object][uuid] */
7750
7751
7752EXTERN_C const IID IID_ID3D12VideoEncoder;
7753
7754#if defined(__cplusplus) && !defined(CINTERFACE)
7755
7756 MIDL_INTERFACE("2E0D212D-8DF9-44A6-A770-BB289B182737")
7757 ID3D12VideoEncoder : public ID3D12Pageable
7758 {
7759 public:
7760 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7761
7762 virtual D3D12_VIDEO_ENCODER_FLAGS STDMETHODCALLTYPE GetEncoderFlags( void) = 0;
7763
7764 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7765
7766 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7767 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7768
7769 virtual HRESULT STDMETHODCALLTYPE GetCodecConfiguration(
7770 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig) = 0;
7771
7772 virtual DXGI_FORMAT STDMETHODCALLTYPE GetInputFormat( void) = 0;
7773
7774 virtual D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE STDMETHODCALLTYPE GetMaxMotionEstimationPrecision( void) = 0;
7775
7776 };
7777
7778
7779#else /* C style interface */
7780
7781 typedef struct ID3D12VideoEncoderVtbl
7782 {
7783 BEGIN_INTERFACE
7784
7785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7787 ID3D12VideoEncoder * This,
7788 REFIID riid,
7789 _COM_Outptr_ void **ppvObject);
7790
7791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7792 ULONG ( STDMETHODCALLTYPE *AddRef )(
7793 ID3D12VideoEncoder * This);
7794
7795 DECLSPEC_XFGVIRT(IUnknown, Release)
7796 ULONG ( STDMETHODCALLTYPE *Release )(
7797 ID3D12VideoEncoder * This);
7798
7799 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7800 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7801 ID3D12VideoEncoder * This,
7802 _In_ REFGUID guid,
7803 _Inout_ UINT *pDataSize,
7804 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7805
7806 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7807 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7808 ID3D12VideoEncoder * This,
7809 _In_ REFGUID guid,
7810 _In_ UINT DataSize,
7811 _In_reads_bytes_opt_( DataSize ) const void *pData);
7812
7813 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7814 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7815 ID3D12VideoEncoder * This,
7816 _In_ REFGUID guid,
7817 _In_opt_ const IUnknown *pData);
7818
7819 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7820 HRESULT ( STDMETHODCALLTYPE *SetName )(
7821 ID3D12VideoEncoder * This,
7822 _In_z_ LPCWSTR Name);
7823
7824 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7825 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7826 ID3D12VideoEncoder * This,
7827 REFIID riid,
7828 _COM_Outptr_opt_ void **ppvDevice);
7829
7830 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetNodeMask)
7831 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
7832 ID3D12VideoEncoder * This);
7833
7834 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetEncoderFlags)
7835 D3D12_VIDEO_ENCODER_FLAGS ( STDMETHODCALLTYPE *GetEncoderFlags )(
7836 ID3D12VideoEncoder * This);
7837
7838 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodec)
7839 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
7840 ID3D12VideoEncoder * This);
7841
7842 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecProfile)
7843 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
7844 ID3D12VideoEncoder * This,
7845 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
7846
7847 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecConfiguration)
7848 HRESULT ( STDMETHODCALLTYPE *GetCodecConfiguration )(
7849 ID3D12VideoEncoder * This,
7850 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
7851
7852 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetInputFormat)
7853 DXGI_FORMAT ( STDMETHODCALLTYPE *GetInputFormat )(
7854 ID3D12VideoEncoder * This);
7855
7856 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetMaxMotionEstimationPrecision)
7857 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE ( STDMETHODCALLTYPE *GetMaxMotionEstimationPrecision )(
7858 ID3D12VideoEncoder * This);
7859
7860 END_INTERFACE
7861 } ID3D12VideoEncoderVtbl;
7862
7863 interface ID3D12VideoEncoder
7864 {
7865 CONST_VTBL struct ID3D12VideoEncoderVtbl *lpVtbl;
7866 };
7867
7868
7869
7870#ifdef COBJMACROS
7871
7872
7873#define ID3D12VideoEncoder_QueryInterface(This,riid,ppvObject) \
7874 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7875
7876#define ID3D12VideoEncoder_AddRef(This) \
7877 ( (This)->lpVtbl -> AddRef(This) )
7878
7879#define ID3D12VideoEncoder_Release(This) \
7880 ( (This)->lpVtbl -> Release(This) )
7881
7882
7883#define ID3D12VideoEncoder_GetPrivateData(This,guid,pDataSize,pData) \
7884 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7885
7886#define ID3D12VideoEncoder_SetPrivateData(This,guid,DataSize,pData) \
7887 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7888
7889#define ID3D12VideoEncoder_SetPrivateDataInterface(This,guid,pData) \
7890 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7891
7892#define ID3D12VideoEncoder_SetName(This,Name) \
7893 ( (This)->lpVtbl -> SetName(This,Name) )
7894
7895
7896#define ID3D12VideoEncoder_GetDevice(This,riid,ppvDevice) \
7897 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7898
7899
7900
7901#define ID3D12VideoEncoder_GetNodeMask(This) \
7902 ( (This)->lpVtbl -> GetNodeMask(This) )
7903
7904#define ID3D12VideoEncoder_GetEncoderFlags(This) \
7905 ( (This)->lpVtbl -> GetEncoderFlags(This) )
7906
7907#define ID3D12VideoEncoder_GetCodec(This) \
7908 ( (This)->lpVtbl -> GetCodec(This) )
7909
7910#define ID3D12VideoEncoder_GetCodecProfile(This,dstProfile) \
7911 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
7912
7913#define ID3D12VideoEncoder_GetCodecConfiguration(This,dstCodecConfig) \
7914 ( (This)->lpVtbl -> GetCodecConfiguration(This,dstCodecConfig) )
7915
7916#define ID3D12VideoEncoder_GetInputFormat(This) \
7917 ( (This)->lpVtbl -> GetInputFormat(This) )
7918
7919#define ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(This) \
7920 ( (This)->lpVtbl -> GetMaxMotionEstimationPrecision(This) )
7921
7922#endif /* COBJMACROS */
7923
7924
7925#endif /* C style interface */
7926
7927
7928
7929
7930#endif /* __ID3D12VideoEncoder_INTERFACE_DEFINED__ */
7931
7932
7933#ifndef __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7934#define __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7935
7936/* interface ID3D12VideoEncoderHeap */
7937/* [unique][local][object][uuid] */
7938
7939
7940EXTERN_C const IID IID_ID3D12VideoEncoderHeap;
7941
7942#if defined(__cplusplus) && !defined(CINTERFACE)
7943
7944 MIDL_INTERFACE("22B35D96-876A-44C0-B25E-FB8C9C7F1C4A")
7945 ID3D12VideoEncoderHeap : public ID3D12Pageable
7946 {
7947 public:
7948 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7949
7950 virtual D3D12_VIDEO_ENCODER_HEAP_FLAGS STDMETHODCALLTYPE GetEncoderHeapFlags( void) = 0;
7951
7952 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7953
7954 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7955 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7956
7957 virtual HRESULT STDMETHODCALLTYPE GetCodecLevel(
7958 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel) = 0;
7959
7960 virtual UINT STDMETHODCALLTYPE GetResolutionListCount( void) = 0;
7961
7962 virtual HRESULT STDMETHODCALLTYPE GetResolutionList(
7963 const UINT ResolutionsListCount,
7964 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList) = 0;
7965
7966 };
7967
7968
7969#else /* C style interface */
7970
7971 typedef struct ID3D12VideoEncoderHeapVtbl
7972 {
7973 BEGIN_INTERFACE
7974
7975 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7976 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7977 ID3D12VideoEncoderHeap * This,
7978 REFIID riid,
7979 _COM_Outptr_ void **ppvObject);
7980
7981 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7982 ULONG ( STDMETHODCALLTYPE *AddRef )(
7983 ID3D12VideoEncoderHeap * This);
7984
7985 DECLSPEC_XFGVIRT(IUnknown, Release)
7986 ULONG ( STDMETHODCALLTYPE *Release )(
7987 ID3D12VideoEncoderHeap * This);
7988
7989 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7990 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7991 ID3D12VideoEncoderHeap * This,
7992 _In_ REFGUID guid,
7993 _Inout_ UINT *pDataSize,
7994 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7995
7996 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7997 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7998 ID3D12VideoEncoderHeap * This,
7999 _In_ REFGUID guid,
8000 _In_ UINT DataSize,
8001 _In_reads_bytes_opt_( DataSize ) const void *pData);
8002
8003 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8004 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8005 ID3D12VideoEncoderHeap * This,
8006 _In_ REFGUID guid,
8007 _In_opt_ const IUnknown *pData);
8008
8009 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8010 HRESULT ( STDMETHODCALLTYPE *SetName )(
8011 ID3D12VideoEncoderHeap * This,
8012 _In_z_ LPCWSTR Name);
8013
8014 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8015 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8016 ID3D12VideoEncoderHeap * This,
8017 REFIID riid,
8018 _COM_Outptr_opt_ void **ppvDevice);
8019
8020 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
8021 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
8022 ID3D12VideoEncoderHeap * This);
8023
8024 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
8025 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
8026 ID3D12VideoEncoderHeap * This);
8027
8028 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
8029 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
8030 ID3D12VideoEncoderHeap * This);
8031
8032 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
8033 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
8034 ID3D12VideoEncoderHeap * This,
8035 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
8036
8037 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
8038 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
8039 ID3D12VideoEncoderHeap * This,
8040 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
8041
8042 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
8043 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
8044 ID3D12VideoEncoderHeap * This);
8045
8046 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
8047 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
8048 ID3D12VideoEncoderHeap * This,
8049 const UINT ResolutionsListCount,
8050 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
8051
8052 END_INTERFACE
8053 } ID3D12VideoEncoderHeapVtbl;
8054
8055 interface ID3D12VideoEncoderHeap
8056 {
8057 CONST_VTBL struct ID3D12VideoEncoderHeapVtbl *lpVtbl;
8058 };
8059
8060
8061
8062#ifdef COBJMACROS
8063
8064
8065#define ID3D12VideoEncoderHeap_QueryInterface(This,riid,ppvObject) \
8066 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8067
8068#define ID3D12VideoEncoderHeap_AddRef(This) \
8069 ( (This)->lpVtbl -> AddRef(This) )
8070
8071#define ID3D12VideoEncoderHeap_Release(This) \
8072 ( (This)->lpVtbl -> Release(This) )
8073
8074
8075#define ID3D12VideoEncoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
8076 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8077
8078#define ID3D12VideoEncoderHeap_SetPrivateData(This,guid,DataSize,pData) \
8079 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8080
8081#define ID3D12VideoEncoderHeap_SetPrivateDataInterface(This,guid,pData) \
8082 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8083
8084#define ID3D12VideoEncoderHeap_SetName(This,Name) \
8085 ( (This)->lpVtbl -> SetName(This,Name) )
8086
8087
8088#define ID3D12VideoEncoderHeap_GetDevice(This,riid,ppvDevice) \
8089 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8090
8091
8092
8093#define ID3D12VideoEncoderHeap_GetNodeMask(This) \
8094 ( (This)->lpVtbl -> GetNodeMask(This) )
8095
8096#define ID3D12VideoEncoderHeap_GetEncoderHeapFlags(This) \
8097 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
8098
8099#define ID3D12VideoEncoderHeap_GetCodec(This) \
8100 ( (This)->lpVtbl -> GetCodec(This) )
8101
8102#define ID3D12VideoEncoderHeap_GetCodecProfile(This,dstProfile) \
8103 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
8104
8105#define ID3D12VideoEncoderHeap_GetCodecLevel(This,dstLevel) \
8106 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
8107
8108#define ID3D12VideoEncoderHeap_GetResolutionListCount(This) \
8109 ( (This)->lpVtbl -> GetResolutionListCount(This) )
8110
8111#define ID3D12VideoEncoderHeap_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
8112 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
8113
8114#endif /* COBJMACROS */
8115
8116
8117#endif /* C style interface */
8118
8119
8120
8121
8122#endif /* __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__ */
8123
8124
8125#ifndef __ID3D12VideoDevice3_INTERFACE_DEFINED__
8126#define __ID3D12VideoDevice3_INTERFACE_DEFINED__
8127
8128/* interface ID3D12VideoDevice3 */
8129/* [unique][local][object][uuid] */
8130
8131
8132EXTERN_C const IID IID_ID3D12VideoDevice3;
8133
8134#if defined(__cplusplus) && !defined(CINTERFACE)
8135
8136 MIDL_INTERFACE("4243ADB4-3A32-4666-973C-0CCC5625DC44")
8137 ID3D12VideoDevice3 : public ID3D12VideoDevice2
8138 {
8139 public:
8140 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoder(
8141 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8142 _In_ REFIID riid,
8143 _COM_Outptr_ void **ppVideoEncoder) = 0;
8144
8145 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap(
8146 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8147 _In_ REFIID riid,
8148 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
8149
8150 };
8151
8152
8153#else /* C style interface */
8154
8155 typedef struct ID3D12VideoDevice3Vtbl
8156 {
8157 BEGIN_INTERFACE
8158
8159 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8160 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8161 ID3D12VideoDevice3 * This,
8162 REFIID riid,
8163 _COM_Outptr_ void **ppvObject);
8164
8165 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8166 ULONG ( STDMETHODCALLTYPE *AddRef )(
8167 ID3D12VideoDevice3 * This);
8168
8169 DECLSPEC_XFGVIRT(IUnknown, Release)
8170 ULONG ( STDMETHODCALLTYPE *Release )(
8171 ID3D12VideoDevice3 * This);
8172
8173 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
8174 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
8175 ID3D12VideoDevice3 * This,
8176 D3D12_FEATURE_VIDEO FeatureVideo,
8177 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8178 UINT FeatureSupportDataSize);
8179
8180 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
8181 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
8182 ID3D12VideoDevice3 * This,
8183 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8184 _In_ REFIID riid,
8185 _COM_Outptr_ void **ppVideoDecoder);
8186
8187 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
8188 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
8189 ID3D12VideoDevice3 * This,
8190 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8191 _In_ REFIID riid,
8192 _COM_Outptr_ void **ppVideoDecoderHeap);
8193
8194 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
8195 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
8196 ID3D12VideoDevice3 * This,
8197 UINT NodeMask,
8198 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8199 UINT NumInputStreamDescs,
8200 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8201 _In_ REFIID riid,
8202 _COM_Outptr_ void **ppVideoProcessor);
8203
8204 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
8205 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
8206 ID3D12VideoDevice3 * This,
8207 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
8208 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8209 _In_ REFIID riid,
8210 _COM_Outptr_ void **ppVideoMotionEstimator);
8211
8212 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
8213 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
8214 ID3D12VideoDevice3 * This,
8215 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
8216 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8217 _In_ REFIID riid,
8218 _COM_Outptr_ void **ppVideoMotionVectorHeap);
8219
8220 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
8221 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
8222 ID3D12VideoDevice3 * This,
8223 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8224 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8225 _In_ REFIID riid,
8226 _COM_Outptr_ void **ppVideoDecoder);
8227
8228 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
8229 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
8230 ID3D12VideoDevice3 * This,
8231 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8232 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8233 _In_ REFIID riid,
8234 _COM_Outptr_ void **ppVideoDecoderHeap);
8235
8236 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
8237 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
8238 ID3D12VideoDevice3 * This,
8239 UINT NodeMask,
8240 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8241 UINT NumInputStreamDescs,
8242 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8243 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8244 _In_ REFIID riid,
8245 _COM_Outptr_ void **ppVideoProcessor);
8246
8247 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
8248 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
8249 ID3D12VideoDevice3 * This,
8250 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
8251 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
8252 SIZE_T CreationParametersDataSizeInBytes,
8253 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8254 _In_ REFIID riid,
8255 _COM_Outptr_ void **ppVideoExtensionCommand);
8256
8257 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
8258 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8259 ID3D12VideoDevice3 * This,
8260 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8261 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8262 SIZE_T ExecutionParametersSizeInBytes,
8263 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
8264 SIZE_T OutputDataSizeInBytes);
8265
8266 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
8267 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
8268 ID3D12VideoDevice3 * This,
8269 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8270 _In_ REFIID riid,
8271 _COM_Outptr_ void **ppVideoEncoder);
8272
8273 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
8274 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
8275 ID3D12VideoDevice3 * This,
8276 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8277 _In_ REFIID riid,
8278 _COM_Outptr_ void **ppVideoEncoderHeap);
8279
8280 END_INTERFACE
8281 } ID3D12VideoDevice3Vtbl;
8282
8283 interface ID3D12VideoDevice3
8284 {
8285 CONST_VTBL struct ID3D12VideoDevice3Vtbl *lpVtbl;
8286 };
8287
8288
8289
8290#ifdef COBJMACROS
8291
8292
8293#define ID3D12VideoDevice3_QueryInterface(This,riid,ppvObject) \
8294 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8295
8296#define ID3D12VideoDevice3_AddRef(This) \
8297 ( (This)->lpVtbl -> AddRef(This) )
8298
8299#define ID3D12VideoDevice3_Release(This) \
8300 ( (This)->lpVtbl -> Release(This) )
8301
8302
8303#define ID3D12VideoDevice3_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
8304 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
8305
8306#define ID3D12VideoDevice3_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
8307 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
8308
8309#define ID3D12VideoDevice3_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
8310 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
8311
8312#define ID3D12VideoDevice3_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
8313 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
8314
8315
8316#define ID3D12VideoDevice3_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
8317 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
8318
8319#define ID3D12VideoDevice3_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
8320 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
8321
8322
8323#define ID3D12VideoDevice3_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
8324 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
8325
8326#define ID3D12VideoDevice3_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
8327 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
8328
8329#define ID3D12VideoDevice3_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
8330 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
8331
8332#define ID3D12VideoDevice3_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
8333 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
8334
8335#define ID3D12VideoDevice3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
8336 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
8337
8338
8339#define ID3D12VideoDevice3_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
8340 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
8341
8342#define ID3D12VideoDevice3_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
8343 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
8344
8345#endif /* COBJMACROS */
8346
8347
8348#endif /* C style interface */
8349
8350
8351
8352
8353#endif /* __ID3D12VideoDevice3_INTERFACE_DEFINED__ */
8354
8355
8356/* interface __MIDL_itf_d3d12video_0000_0025 */
8357/* [local] */
8358
8359typedef
8360enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
8361 {
8362 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
8363 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
8364 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
8365 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3
8366 } D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
8367
8368typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
8369 {
8370 UINT ReconstructedPictureResourceIndex;
8371 BOOL IsLongTermReference;
8372 UINT LongTermPictureIdx;
8373 UINT PictureOrderCountNumber;
8374 UINT FrameDecodingOrderNumber;
8375 UINT TemporalLayerIndex;
8376 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
8377
8378typedef
8379enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
8380 {
8381 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0,
8382 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8383 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2
8384 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
8385
8386DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)
8387typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
8388 {
8389 UCHAR memory_management_control_operation;
8390 UINT difference_of_pic_nums_minus1;
8391 UINT long_term_pic_num;
8392 UINT long_term_frame_idx;
8393 UINT max_long_term_frame_idx_plus1;
8394 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
8395
8396typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
8397 {
8398 UCHAR modification_of_pic_nums_idc;
8399 UINT abs_diff_pic_num_minus1;
8400 UINT long_term_pic_num;
8401 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
8402
8403typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
8404 {
8405 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
8406 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
8407 UINT pic_parameter_set_id;
8408 UINT idr_pic_id;
8409 UINT PictureOrderCountNumber;
8410 UINT FrameDecodingOrderNumber;
8411 UINT TemporalLayerIndex;
8412 UINT List0ReferenceFramesCount;
8413 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8414 UINT List1ReferenceFramesCount;
8415 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8416 UINT ReferenceFramesReconPictureDescriptorsCount;
8417 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
8418 UCHAR adaptive_ref_pic_marking_mode_flag;
8419 UINT RefPicMarkingOperationsCommandsCount;
8420 _Field_size_full_(RefPicMarkingOperationsCommandsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
8421 UINT List0RefPicModificationsCount;
8422 _Field_size_full_(List0RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
8423 UINT List1RefPicModificationsCount;
8424 _Field_size_full_(List1RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
8425 UINT QPMapValuesCount;
8426 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8427 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
8428
8429typedef
8430enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
8431 {
8432 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
8433 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
8434 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
8435 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3
8436 } D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
8437
8438typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
8439 {
8440 UINT ReconstructedPictureResourceIndex;
8441 BOOL IsRefUsedByCurrentPic;
8442 BOOL IsLongTermReference;
8443 UINT PictureOrderCountNumber;
8444 UINT TemporalLayerIndex;
8445 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
8446
8447typedef
8448enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
8449 {
8450 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0,
8451 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8452 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
8453 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
8454 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8
8455 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
8456
8457DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)
8458typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
8459 {
8460 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8461 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8462 UINT slice_pic_parameter_set_id;
8463 UINT PictureOrderCountNumber;
8464 UINT TemporalLayerIndex;
8465 UINT List0ReferenceFramesCount;
8466 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8467 UINT List1ReferenceFramesCount;
8468 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8469 UINT ReferenceFramesReconPictureDescriptorsCount;
8470 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8471 UINT List0RefPicModificationsCount;
8472 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8473 UINT List1RefPicModificationsCount;
8474 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8475 UINT QPMapValuesCount;
8476 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8477 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
8478
8479typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
8480 {
8481 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8482 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8483 UINT slice_pic_parameter_set_id;
8484 UINT PictureOrderCountNumber;
8485 UINT TemporalLayerIndex;
8486 UINT List0ReferenceFramesCount;
8487 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8488 UINT List1ReferenceFramesCount;
8489 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8490 UINT ReferenceFramesReconPictureDescriptorsCount;
8491 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8492 UINT List0RefPicModificationsCount;
8493 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8494 UINT List1RefPicModificationsCount;
8495 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8496 UINT QPMapValuesCount;
8497 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8498 UCHAR diff_cu_chroma_qp_offset_depth;
8499 UCHAR log2_sao_offset_scale_luma;
8500 UCHAR log2_sao_offset_scale_chroma;
8501 UCHAR log2_max_transform_skip_block_size_minus2;
8502 UCHAR chroma_qp_offset_list_len_minus1;
8503 CHAR cb_qp_offset_list[ 6 ];
8504 CHAR cr_qp_offset_list[ 6 ];
8505 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
8506
8507typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
8508 {
8509 UINT DataSize;
8510 union
8511 {
8512 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
8513 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
8514 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 *pHEVCPicData1;
8515 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
8516 } ;
8517 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
8518
8519typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
8520 {
8521 UINT NumTexture2Ds;
8522 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
8523 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
8524 } D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
8525
8526typedef
8527enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
8528 {
8529 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0,
8530 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
8531 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
8532 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
8533 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8
8534 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
8535
8536DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)
8537typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
8538 {
8539 UINT IntraRefreshFrameIndex;
8540 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
8541 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
8542 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
8543 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
8544
8545typedef
8546enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
8547 {
8548 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0,
8549 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
8550 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
8551 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
8552 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
8553 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
8554 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
8555
8556DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)
8557typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
8558 {
8559 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
8560 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
8561 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
8562 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
8563 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
8564 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
8565 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
8566 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
8567
8568typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
8569 {
8570 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
8571 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
8572 ID3D12Resource *pInputFrame;
8573 UINT InputFrameSubresource;
8574 UINT CurrentFrameBitstreamMetadataSize;
8575 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
8576
8577typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
8578 {
8579 ID3D12Resource *pBuffer;
8580 UINT64 FrameStartOffset;
8581 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
8582
8583typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
8584 {
8585 ID3D12Resource *pReconstructedPicture;
8586 UINT ReconstructedPictureSubresource;
8587 } D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
8588
8589typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
8590 {
8591 UINT64 bSize;
8592 UINT64 bStartOffset;
8593 UINT64 bHeaderSize;
8594 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
8595
8596typedef
8597enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
8598 {
8599 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0,
8600 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
8601 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
8602 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
8603 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
8604 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
8605 } D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
8606
8607DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)
8608typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
8609 {
8610 UINT64 AverageQP;
8611 UINT64 IntraCodingUnitsCount;
8612 UINT64 InterCodingUnitsCount;
8613 UINT64 SkipCodingUnitsCount;
8614 UINT64 AverageMotionEstimationXDirection;
8615 UINT64 AverageMotionEstimationYDirection;
8616 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
8617
8618typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
8619 {
8620 UINT64 EncodeErrorFlags;
8621 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
8622 UINT64 EncodedBitstreamWrittenBytesCount;
8623 UINT64 WrittenSubregionsCount;
8624 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
8625
8626typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
8627 {
8628 ID3D12Resource *pBuffer;
8629 UINT64 Offset;
8630 } D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
8631
8632typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
8633 {
8634 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
8635 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
8636 DXGI_FORMAT EncoderInputFormat;
8637 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
8638 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
8639 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
8640
8641typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
8642 {
8643 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
8644 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
8645
8646typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
8647 {
8648 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
8649 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
8650 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
8651 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
8652
8653
8654
8655extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_c_ifspec;
8656extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_s_ifspec;
8657
8658#ifndef __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8659#define __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8660
8661/* interface ID3D12VideoEncodeCommandList2 */
8662/* [unique][local][object][uuid] */
8663
8664
8665EXTERN_C const IID IID_ID3D12VideoEncodeCommandList2;
8666
8667#if defined(__cplusplus) && !defined(CINTERFACE)
8668
8669 MIDL_INTERFACE("895491e2-e701-46a9-9a1f-8d3480ed867a")
8670 ID3D12VideoEncodeCommandList2 : public ID3D12VideoEncodeCommandList1
8671 {
8672 public:
8673 virtual void STDMETHODCALLTYPE EncodeFrame(
8674 _In_ ID3D12VideoEncoder *pEncoder,
8675 _In_ ID3D12VideoEncoderHeap *pHeap,
8676 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8677 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8678
8679 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata(
8680 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8681 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8682
8683 };
8684
8685
8686#else /* C style interface */
8687
8688 typedef struct ID3D12VideoEncodeCommandList2Vtbl
8689 {
8690 BEGIN_INTERFACE
8691
8692 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8693 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8694 ID3D12VideoEncodeCommandList2 * This,
8695 REFIID riid,
8696 _COM_Outptr_ void **ppvObject);
8697
8698 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8699 ULONG ( STDMETHODCALLTYPE *AddRef )(
8700 ID3D12VideoEncodeCommandList2 * This);
8701
8702 DECLSPEC_XFGVIRT(IUnknown, Release)
8703 ULONG ( STDMETHODCALLTYPE *Release )(
8704 ID3D12VideoEncodeCommandList2 * This);
8705
8706 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8707 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8708 ID3D12VideoEncodeCommandList2 * This,
8709 _In_ REFGUID guid,
8710 _Inout_ UINT *pDataSize,
8711 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8712
8713 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8714 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8715 ID3D12VideoEncodeCommandList2 * This,
8716 _In_ REFGUID guid,
8717 _In_ UINT DataSize,
8718 _In_reads_bytes_opt_( DataSize ) const void *pData);
8719
8720 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8721 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8722 ID3D12VideoEncodeCommandList2 * This,
8723 _In_ REFGUID guid,
8724 _In_opt_ const IUnknown *pData);
8725
8726 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8727 HRESULT ( STDMETHODCALLTYPE *SetName )(
8728 ID3D12VideoEncodeCommandList2 * This,
8729 _In_z_ LPCWSTR Name);
8730
8731 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8732 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8733 ID3D12VideoEncodeCommandList2 * This,
8734 REFIID riid,
8735 _COM_Outptr_opt_ void **ppvDevice);
8736
8737 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8738 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8739 ID3D12VideoEncodeCommandList2 * This);
8740
8741 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
8742 HRESULT ( STDMETHODCALLTYPE *Close )(
8743 ID3D12VideoEncodeCommandList2 * This);
8744
8745 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
8746 HRESULT ( STDMETHODCALLTYPE *Reset )(
8747 ID3D12VideoEncodeCommandList2 * This,
8748 _In_ ID3D12CommandAllocator *pAllocator);
8749
8750 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
8751 void ( STDMETHODCALLTYPE *ClearState )(
8752 ID3D12VideoEncodeCommandList2 * This);
8753
8754 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
8755 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8756 ID3D12VideoEncodeCommandList2 * This,
8757 _In_ UINT NumBarriers,
8758 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8759
8760 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
8761 void ( STDMETHODCALLTYPE *DiscardResource )(
8762 ID3D12VideoEncodeCommandList2 * This,
8763 _In_ ID3D12Resource *pResource,
8764 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8765
8766 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
8767 void ( STDMETHODCALLTYPE *BeginQuery )(
8768 ID3D12VideoEncodeCommandList2 * This,
8769 _In_ ID3D12QueryHeap *pQueryHeap,
8770 _In_ D3D12_QUERY_TYPE Type,
8771 _In_ UINT Index);
8772
8773 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
8774 void ( STDMETHODCALLTYPE *EndQuery )(
8775 ID3D12VideoEncodeCommandList2 * This,
8776 _In_ ID3D12QueryHeap *pQueryHeap,
8777 _In_ D3D12_QUERY_TYPE Type,
8778 _In_ UINT Index);
8779
8780 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
8781 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8782 ID3D12VideoEncodeCommandList2 * This,
8783 _In_ ID3D12QueryHeap *pQueryHeap,
8784 _In_ D3D12_QUERY_TYPE Type,
8785 _In_ UINT StartIndex,
8786 _In_ UINT NumQueries,
8787 _In_ ID3D12Resource *pDestinationBuffer,
8788 _In_ UINT64 AlignedDestinationBufferOffset);
8789
8790 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
8791 void ( STDMETHODCALLTYPE *SetPredication )(
8792 ID3D12VideoEncodeCommandList2 * This,
8793 _In_opt_ ID3D12Resource *pBuffer,
8794 _In_ UINT64 AlignedBufferOffset,
8795 _In_ D3D12_PREDICATION_OP Operation);
8796
8797 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
8798 void ( STDMETHODCALLTYPE *SetMarker )(
8799 ID3D12VideoEncodeCommandList2 * This,
8800 UINT Metadata,
8801 _In_reads_bytes_opt_(Size) const void *pData,
8802 UINT Size);
8803
8804 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
8805 void ( STDMETHODCALLTYPE *BeginEvent )(
8806 ID3D12VideoEncodeCommandList2 * This,
8807 UINT Metadata,
8808 _In_reads_bytes_opt_(Size) const void *pData,
8809 UINT Size);
8810
8811 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
8812 void ( STDMETHODCALLTYPE *EndEvent )(
8813 ID3D12VideoEncodeCommandList2 * This);
8814
8815 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
8816 void ( STDMETHODCALLTYPE *EstimateMotion )(
8817 ID3D12VideoEncodeCommandList2 * This,
8818 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
8819 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
8820 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
8821
8822 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
8823 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
8824 ID3D12VideoEncodeCommandList2 * This,
8825 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
8826 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
8827
8828 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
8829 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8830 ID3D12VideoEncodeCommandList2 * This,
8831 UINT Count,
8832 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8833 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8834
8835 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
8836 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
8837 ID3D12VideoEncodeCommandList2 * This,
8838 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
8839
8840 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
8841 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
8842 ID3D12VideoEncodeCommandList2 * This,
8843 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8844 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
8845 SIZE_T InitializationParametersSizeInBytes);
8846
8847 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
8848 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8849 ID3D12VideoEncodeCommandList2 * This,
8850 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8851 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8852 SIZE_T ExecutionParametersSizeInBytes);
8853
8854 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
8855 void ( STDMETHODCALLTYPE *EncodeFrame )(
8856 ID3D12VideoEncodeCommandList2 * This,
8857 _In_ ID3D12VideoEncoder *pEncoder,
8858 _In_ ID3D12VideoEncoderHeap *pHeap,
8859 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8860 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
8861
8862 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
8863 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
8864 ID3D12VideoEncodeCommandList2 * This,
8865 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8866 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
8867
8868 END_INTERFACE
8869 } ID3D12VideoEncodeCommandList2Vtbl;
8870
8871 interface ID3D12VideoEncodeCommandList2
8872 {
8873 CONST_VTBL struct ID3D12VideoEncodeCommandList2Vtbl *lpVtbl;
8874 };
8875
8876
8877
8878#ifdef COBJMACROS
8879
8880
8881#define ID3D12VideoEncodeCommandList2_QueryInterface(This,riid,ppvObject) \
8882 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8883
8884#define ID3D12VideoEncodeCommandList2_AddRef(This) \
8885 ( (This)->lpVtbl -> AddRef(This) )
8886
8887#define ID3D12VideoEncodeCommandList2_Release(This) \
8888 ( (This)->lpVtbl -> Release(This) )
8889
8890
8891#define ID3D12VideoEncodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8892 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8893
8894#define ID3D12VideoEncodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8895 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8896
8897#define ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
8898 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8899
8900#define ID3D12VideoEncodeCommandList2_SetName(This,Name) \
8901 ( (This)->lpVtbl -> SetName(This,Name) )
8902
8903
8904#define ID3D12VideoEncodeCommandList2_GetDevice(This,riid,ppvDevice) \
8905 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8906
8907
8908#define ID3D12VideoEncodeCommandList2_GetType(This) \
8909 ( (This)->lpVtbl -> GetType(This) )
8910
8911
8912#define ID3D12VideoEncodeCommandList2_Close(This) \
8913 ( (This)->lpVtbl -> Close(This) )
8914
8915#define ID3D12VideoEncodeCommandList2_Reset(This,pAllocator) \
8916 ( (This)->lpVtbl -> Reset(This,pAllocator) )
8917
8918#define ID3D12VideoEncodeCommandList2_ClearState(This) \
8919 ( (This)->lpVtbl -> ClearState(This) )
8920
8921#define ID3D12VideoEncodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8922 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8923
8924#define ID3D12VideoEncodeCommandList2_DiscardResource(This,pResource,pRegion) \
8925 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8926
8927#define ID3D12VideoEncodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8928 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8929
8930#define ID3D12VideoEncodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8931 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8932
8933#define ID3D12VideoEncodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8934 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8935
8936#define ID3D12VideoEncodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8937 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8938
8939#define ID3D12VideoEncodeCommandList2_SetMarker(This,Metadata,pData,Size) \
8940 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8941
8942#define ID3D12VideoEncodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
8943 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8944
8945#define ID3D12VideoEncodeCommandList2_EndEvent(This) \
8946 ( (This)->lpVtbl -> EndEvent(This) )
8947
8948#define ID3D12VideoEncodeCommandList2_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
8949 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
8950
8951#define ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
8952 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
8953
8954#define ID3D12VideoEncodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8955 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8956
8957#define ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
8958 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
8959
8960
8961#define ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
8962 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
8963
8964#define ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
8965 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
8966
8967
8968#define ID3D12VideoEncodeCommandList2_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
8969 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
8970
8971#define ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
8972 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
8973
8974#endif /* COBJMACROS */
8975
8976
8977#endif /* C style interface */
8978
8979
8980
8981
8982#endif /* __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__ */
8983
8984
8985#ifndef __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8986#define __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8987
8988/* interface ID3D12VideoEncodeCommandList3 */
8989/* [unique][local][object][uuid] */
8990
8991
8992EXTERN_C const IID IID_ID3D12VideoEncodeCommandList3;
8993
8994#if defined(__cplusplus) && !defined(CINTERFACE)
8995
8996 MIDL_INTERFACE("7f027b22-1515-4e85-aa0d-026486580576")
8997 ID3D12VideoEncodeCommandList3 : public ID3D12VideoEncodeCommandList2
8998 {
8999 public:
9000 virtual void STDMETHODCALLTYPE Barrier(
9001 UINT32 NumBarrierGroups,
9002 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
9003
9004 };
9005
9006
9007#else /* C style interface */
9008
9009 typedef struct ID3D12VideoEncodeCommandList3Vtbl
9010 {
9011 BEGIN_INTERFACE
9012
9013 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9014 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9015 ID3D12VideoEncodeCommandList3 * This,
9016 REFIID riid,
9017 _COM_Outptr_ void **ppvObject);
9018
9019 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9020 ULONG ( STDMETHODCALLTYPE *AddRef )(
9021 ID3D12VideoEncodeCommandList3 * This);
9022
9023 DECLSPEC_XFGVIRT(IUnknown, Release)
9024 ULONG ( STDMETHODCALLTYPE *Release )(
9025 ID3D12VideoEncodeCommandList3 * This);
9026
9027 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9028 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9029 ID3D12VideoEncodeCommandList3 * This,
9030 _In_ REFGUID guid,
9031 _Inout_ UINT *pDataSize,
9032 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9033
9034 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9035 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9036 ID3D12VideoEncodeCommandList3 * This,
9037 _In_ REFGUID guid,
9038 _In_ UINT DataSize,
9039 _In_reads_bytes_opt_( DataSize ) const void *pData);
9040
9041 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9042 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9043 ID3D12VideoEncodeCommandList3 * This,
9044 _In_ REFGUID guid,
9045 _In_opt_ const IUnknown *pData);
9046
9047 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9048 HRESULT ( STDMETHODCALLTYPE *SetName )(
9049 ID3D12VideoEncodeCommandList3 * This,
9050 _In_z_ LPCWSTR Name);
9051
9052 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9053 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9054 ID3D12VideoEncodeCommandList3 * This,
9055 REFIID riid,
9056 _COM_Outptr_opt_ void **ppvDevice);
9057
9058 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
9059 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
9060 ID3D12VideoEncodeCommandList3 * This);
9061
9062 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
9063 HRESULT ( STDMETHODCALLTYPE *Close )(
9064 ID3D12VideoEncodeCommandList3 * This);
9065
9066 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
9067 HRESULT ( STDMETHODCALLTYPE *Reset )(
9068 ID3D12VideoEncodeCommandList3 * This,
9069 _In_ ID3D12CommandAllocator *pAllocator);
9070
9071 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
9072 void ( STDMETHODCALLTYPE *ClearState )(
9073 ID3D12VideoEncodeCommandList3 * This);
9074
9075 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
9076 void ( STDMETHODCALLTYPE *ResourceBarrier )(
9077 ID3D12VideoEncodeCommandList3 * This,
9078 _In_ UINT NumBarriers,
9079 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
9080
9081 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
9082 void ( STDMETHODCALLTYPE *DiscardResource )(
9083 ID3D12VideoEncodeCommandList3 * This,
9084 _In_ ID3D12Resource *pResource,
9085 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
9086
9087 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
9088 void ( STDMETHODCALLTYPE *BeginQuery )(
9089 ID3D12VideoEncodeCommandList3 * This,
9090 _In_ ID3D12QueryHeap *pQueryHeap,
9091 _In_ D3D12_QUERY_TYPE Type,
9092 _In_ UINT Index);
9093
9094 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
9095 void ( STDMETHODCALLTYPE *EndQuery )(
9096 ID3D12VideoEncodeCommandList3 * This,
9097 _In_ ID3D12QueryHeap *pQueryHeap,
9098 _In_ D3D12_QUERY_TYPE Type,
9099 _In_ UINT Index);
9100
9101 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
9102 void ( STDMETHODCALLTYPE *ResolveQueryData )(
9103 ID3D12VideoEncodeCommandList3 * This,
9104 _In_ ID3D12QueryHeap *pQueryHeap,
9105 _In_ D3D12_QUERY_TYPE Type,
9106 _In_ UINT StartIndex,
9107 _In_ UINT NumQueries,
9108 _In_ ID3D12Resource *pDestinationBuffer,
9109 _In_ UINT64 AlignedDestinationBufferOffset);
9110
9111 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
9112 void ( STDMETHODCALLTYPE *SetPredication )(
9113 ID3D12VideoEncodeCommandList3 * This,
9114 _In_opt_ ID3D12Resource *pBuffer,
9115 _In_ UINT64 AlignedBufferOffset,
9116 _In_ D3D12_PREDICATION_OP Operation);
9117
9118 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
9119 void ( STDMETHODCALLTYPE *SetMarker )(
9120 ID3D12VideoEncodeCommandList3 * This,
9121 UINT Metadata,
9122 _In_reads_bytes_opt_(Size) const void *pData,
9123 UINT Size);
9124
9125 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
9126 void ( STDMETHODCALLTYPE *BeginEvent )(
9127 ID3D12VideoEncodeCommandList3 * This,
9128 UINT Metadata,
9129 _In_reads_bytes_opt_(Size) const void *pData,
9130 UINT Size);
9131
9132 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
9133 void ( STDMETHODCALLTYPE *EndEvent )(
9134 ID3D12VideoEncodeCommandList3 * This);
9135
9136 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
9137 void ( STDMETHODCALLTYPE *EstimateMotion )(
9138 ID3D12VideoEncodeCommandList3 * This,
9139 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
9140 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
9141 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
9142
9143 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
9144 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
9145 ID3D12VideoEncodeCommandList3 * This,
9146 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
9147 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
9148
9149 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
9150 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
9151 ID3D12VideoEncodeCommandList3 * This,
9152 UINT Count,
9153 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
9154 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
9155
9156 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
9157 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
9158 ID3D12VideoEncodeCommandList3 * This,
9159 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
9160
9161 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
9162 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
9163 ID3D12VideoEncodeCommandList3 * This,
9164 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9165 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
9166 SIZE_T InitializationParametersSizeInBytes);
9167
9168 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
9169 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9170 ID3D12VideoEncodeCommandList3 * This,
9171 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9172 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9173 SIZE_T ExecutionParametersSizeInBytes);
9174
9175 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
9176 void ( STDMETHODCALLTYPE *EncodeFrame )(
9177 ID3D12VideoEncodeCommandList3 * This,
9178 _In_ ID3D12VideoEncoder *pEncoder,
9179 _In_ ID3D12VideoEncoderHeap *pHeap,
9180 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
9181 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
9182
9183 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
9184 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
9185 ID3D12VideoEncodeCommandList3 * This,
9186 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
9187 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
9188
9189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
9190 void ( STDMETHODCALLTYPE *Barrier )(
9191 ID3D12VideoEncodeCommandList3 * This,
9192 UINT32 NumBarrierGroups,
9193 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
9194
9195 END_INTERFACE
9196 } ID3D12VideoEncodeCommandList3Vtbl;
9197
9198 interface ID3D12VideoEncodeCommandList3
9199 {
9200 CONST_VTBL struct ID3D12VideoEncodeCommandList3Vtbl *lpVtbl;
9201 };
9202
9203
9204
9205#ifdef COBJMACROS
9206
9207
9208#define ID3D12VideoEncodeCommandList3_QueryInterface(This,riid,ppvObject) \
9209 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9210
9211#define ID3D12VideoEncodeCommandList3_AddRef(This) \
9212 ( (This)->lpVtbl -> AddRef(This) )
9213
9214#define ID3D12VideoEncodeCommandList3_Release(This) \
9215 ( (This)->lpVtbl -> Release(This) )
9216
9217
9218#define ID3D12VideoEncodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
9219 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9220
9221#define ID3D12VideoEncodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
9222 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9223
9224#define ID3D12VideoEncodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
9225 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9226
9227#define ID3D12VideoEncodeCommandList3_SetName(This,Name) \
9228 ( (This)->lpVtbl -> SetName(This,Name) )
9229
9230
9231#define ID3D12VideoEncodeCommandList3_GetDevice(This,riid,ppvDevice) \
9232 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9233
9234
9235#define ID3D12VideoEncodeCommandList3_GetType(This) \
9236 ( (This)->lpVtbl -> GetType(This) )
9237
9238
9239#define ID3D12VideoEncodeCommandList3_Close(This) \
9240 ( (This)->lpVtbl -> Close(This) )
9241
9242#define ID3D12VideoEncodeCommandList3_Reset(This,pAllocator) \
9243 ( (This)->lpVtbl -> Reset(This,pAllocator) )
9244
9245#define ID3D12VideoEncodeCommandList3_ClearState(This) \
9246 ( (This)->lpVtbl -> ClearState(This) )
9247
9248#define ID3D12VideoEncodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
9249 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
9250
9251#define ID3D12VideoEncodeCommandList3_DiscardResource(This,pResource,pRegion) \
9252 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
9253
9254#define ID3D12VideoEncodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
9255 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
9256
9257#define ID3D12VideoEncodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
9258 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
9259
9260#define ID3D12VideoEncodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
9261 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
9262
9263#define ID3D12VideoEncodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
9264 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
9265
9266#define ID3D12VideoEncodeCommandList3_SetMarker(This,Metadata,pData,Size) \
9267 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9268
9269#define ID3D12VideoEncodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
9270 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9271
9272#define ID3D12VideoEncodeCommandList3_EndEvent(This) \
9273 ( (This)->lpVtbl -> EndEvent(This) )
9274
9275#define ID3D12VideoEncodeCommandList3_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
9276 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
9277
9278#define ID3D12VideoEncodeCommandList3_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
9279 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
9280
9281#define ID3D12VideoEncodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
9282 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
9283
9284#define ID3D12VideoEncodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
9285 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
9286
9287
9288#define ID3D12VideoEncodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
9289 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
9290
9291#define ID3D12VideoEncodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
9292 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
9293
9294
9295#define ID3D12VideoEncodeCommandList3_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
9296 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
9297
9298#define ID3D12VideoEncodeCommandList3_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
9299 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
9300
9301
9302#define ID3D12VideoEncodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
9303 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
9304
9305#endif /* COBJMACROS */
9306
9307
9308#endif /* C style interface */
9309
9310
9311
9312
9313#endif /* __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__ */
9314
9315
9316/* interface __MIDL_itf_d3d12video_0000_0027 */
9317/* [local] */
9318
9319typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
9320 {
9321 UINT NodeMask;
9322 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
9323 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
9324 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
9325 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
9326 UINT ResolutionsListCount;
9327 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
9328 UINT Pow2DownscaleFactor;
9329 } D3D12_VIDEO_ENCODER_HEAP_DESC1;
9330
9331
9332
9333extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
9334extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_s_ifspec;
9335
9336#ifndef __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9337#define __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9338
9339/* interface ID3D12VideoEncoderHeap1 */
9340/* [unique][local][object][uuid] */
9341
9342
9343EXTERN_C const IID IID_ID3D12VideoEncoderHeap1;
9344
9345#if defined(__cplusplus) && !defined(CINTERFACE)
9346
9347 MIDL_INTERFACE("ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9")
9348 ID3D12VideoEncoderHeap1 : public ID3D12VideoEncoderHeap
9349 {
9350 public:
9351 virtual UINT STDMETHODCALLTYPE GetPow2DownscaleFactor( void) = 0;
9352
9353 };
9354
9355
9356#else /* C style interface */
9357
9358 typedef struct ID3D12VideoEncoderHeap1Vtbl
9359 {
9360 BEGIN_INTERFACE
9361
9362 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9363 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9364 ID3D12VideoEncoderHeap1 * This,
9365 REFIID riid,
9366 _COM_Outptr_ void **ppvObject);
9367
9368 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9369 ULONG ( STDMETHODCALLTYPE *AddRef )(
9370 ID3D12VideoEncoderHeap1 * This);
9371
9372 DECLSPEC_XFGVIRT(IUnknown, Release)
9373 ULONG ( STDMETHODCALLTYPE *Release )(
9374 ID3D12VideoEncoderHeap1 * This);
9375
9376 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9377 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9378 ID3D12VideoEncoderHeap1 * This,
9379 _In_ REFGUID guid,
9380 _Inout_ UINT *pDataSize,
9381 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9382
9383 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9384 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9385 ID3D12VideoEncoderHeap1 * This,
9386 _In_ REFGUID guid,
9387 _In_ UINT DataSize,
9388 _In_reads_bytes_opt_( DataSize ) const void *pData);
9389
9390 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9391 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9392 ID3D12VideoEncoderHeap1 * This,
9393 _In_ REFGUID guid,
9394 _In_opt_ const IUnknown *pData);
9395
9396 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9397 HRESULT ( STDMETHODCALLTYPE *SetName )(
9398 ID3D12VideoEncoderHeap1 * This,
9399 _In_z_ LPCWSTR Name);
9400
9401 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9402 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9403 ID3D12VideoEncoderHeap1 * This,
9404 REFIID riid,
9405 _COM_Outptr_opt_ void **ppvDevice);
9406
9407 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
9408 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
9409 ID3D12VideoEncoderHeap1 * This);
9410
9411 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
9412 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
9413 ID3D12VideoEncoderHeap1 * This);
9414
9415 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
9416 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
9417 ID3D12VideoEncoderHeap1 * This);
9418
9419 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
9420 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
9421 ID3D12VideoEncoderHeap1 * This,
9422 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
9423
9424 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
9425 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
9426 ID3D12VideoEncoderHeap1 * This,
9427 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
9428
9429 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
9430 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
9431 ID3D12VideoEncoderHeap1 * This);
9432
9433 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
9434 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
9435 ID3D12VideoEncoderHeap1 * This,
9436 const UINT ResolutionsListCount,
9437 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
9438
9439 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap1, GetPow2DownscaleFactor)
9440 UINT ( STDMETHODCALLTYPE *GetPow2DownscaleFactor )(
9441 ID3D12VideoEncoderHeap1 * This);
9442
9443 END_INTERFACE
9444 } ID3D12VideoEncoderHeap1Vtbl;
9445
9446 interface ID3D12VideoEncoderHeap1
9447 {
9448 CONST_VTBL struct ID3D12VideoEncoderHeap1Vtbl *lpVtbl;
9449 };
9450
9451
9452
9453#ifdef COBJMACROS
9454
9455
9456#define ID3D12VideoEncoderHeap1_QueryInterface(This,riid,ppvObject) \
9457 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9458
9459#define ID3D12VideoEncoderHeap1_AddRef(This) \
9460 ( (This)->lpVtbl -> AddRef(This) )
9461
9462#define ID3D12VideoEncoderHeap1_Release(This) \
9463 ( (This)->lpVtbl -> Release(This) )
9464
9465
9466#define ID3D12VideoEncoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
9467 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9468
9469#define ID3D12VideoEncoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
9470 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9471
9472#define ID3D12VideoEncoderHeap1_SetPrivateDataInterface(This,guid,pData) \
9473 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9474
9475#define ID3D12VideoEncoderHeap1_SetName(This,Name) \
9476 ( (This)->lpVtbl -> SetName(This,Name) )
9477
9478
9479#define ID3D12VideoEncoderHeap1_GetDevice(This,riid,ppvDevice) \
9480 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9481
9482
9483
9484#define ID3D12VideoEncoderHeap1_GetNodeMask(This) \
9485 ( (This)->lpVtbl -> GetNodeMask(This) )
9486
9487#define ID3D12VideoEncoderHeap1_GetEncoderHeapFlags(This) \
9488 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
9489
9490#define ID3D12VideoEncoderHeap1_GetCodec(This) \
9491 ( (This)->lpVtbl -> GetCodec(This) )
9492
9493#define ID3D12VideoEncoderHeap1_GetCodecProfile(This,dstProfile) \
9494 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
9495
9496#define ID3D12VideoEncoderHeap1_GetCodecLevel(This,dstLevel) \
9497 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
9498
9499#define ID3D12VideoEncoderHeap1_GetResolutionListCount(This) \
9500 ( (This)->lpVtbl -> GetResolutionListCount(This) )
9501
9502#define ID3D12VideoEncoderHeap1_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
9503 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
9504
9505
9506#define ID3D12VideoEncoderHeap1_GetPow2DownscaleFactor(This) \
9507 ( (This)->lpVtbl -> GetPow2DownscaleFactor(This) )
9508
9509#endif /* COBJMACROS */
9510
9511
9512#endif /* C style interface */
9513
9514
9515
9516
9517#endif /* __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__ */
9518
9519
9520#ifndef __ID3D12VideoDevice4_INTERFACE_DEFINED__
9521#define __ID3D12VideoDevice4_INTERFACE_DEFINED__
9522
9523/* interface ID3D12VideoDevice4 */
9524/* [unique][local][object][uuid] */
9525
9526
9527EXTERN_C const IID IID_ID3D12VideoDevice4;
9528
9529#if defined(__cplusplus) && !defined(CINTERFACE)
9530
9531 MIDL_INTERFACE("e59ad09e-f1ae-42bb-8983-9f6e5586c4eb")
9532 ID3D12VideoDevice4 : public ID3D12VideoDevice3
9533 {
9534 public:
9535 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap1(
9536 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9537 _In_ REFIID riid,
9538 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
9539
9540 };
9541
9542
9543#else /* C style interface */
9544
9545 typedef struct ID3D12VideoDevice4Vtbl
9546 {
9547 BEGIN_INTERFACE
9548
9549 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9550 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9551 ID3D12VideoDevice4 * This,
9552 REFIID riid,
9553 _COM_Outptr_ void **ppvObject);
9554
9555 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9556 ULONG ( STDMETHODCALLTYPE *AddRef )(
9557 ID3D12VideoDevice4 * This);
9558
9559 DECLSPEC_XFGVIRT(IUnknown, Release)
9560 ULONG ( STDMETHODCALLTYPE *Release )(
9561 ID3D12VideoDevice4 * This);
9562
9563 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
9564 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9565 ID3D12VideoDevice4 * This,
9566 D3D12_FEATURE_VIDEO FeatureVideo,
9567 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9568 UINT FeatureSupportDataSize);
9569
9570 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
9571 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
9572 ID3D12VideoDevice4 * This,
9573 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9574 _In_ REFIID riid,
9575 _COM_Outptr_ void **ppVideoDecoder);
9576
9577 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
9578 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
9579 ID3D12VideoDevice4 * This,
9580 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9581 _In_ REFIID riid,
9582 _COM_Outptr_ void **ppVideoDecoderHeap);
9583
9584 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
9585 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
9586 ID3D12VideoDevice4 * This,
9587 UINT NodeMask,
9588 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9589 UINT NumInputStreamDescs,
9590 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9591 _In_ REFIID riid,
9592 _COM_Outptr_ void **ppVideoProcessor);
9593
9594 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
9595 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
9596 ID3D12VideoDevice4 * This,
9597 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
9598 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9599 _In_ REFIID riid,
9600 _COM_Outptr_ void **ppVideoMotionEstimator);
9601
9602 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
9603 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
9604 ID3D12VideoDevice4 * This,
9605 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
9606 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9607 _In_ REFIID riid,
9608 _COM_Outptr_ void **ppVideoMotionVectorHeap);
9609
9610 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
9611 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
9612 ID3D12VideoDevice4 * This,
9613 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9614 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9615 _In_ REFIID riid,
9616 _COM_Outptr_ void **ppVideoDecoder);
9617
9618 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
9619 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
9620 ID3D12VideoDevice4 * This,
9621 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9622 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9623 _In_ REFIID riid,
9624 _COM_Outptr_ void **ppVideoDecoderHeap);
9625
9626 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
9627 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
9628 ID3D12VideoDevice4 * This,
9629 UINT NodeMask,
9630 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9631 UINT NumInputStreamDescs,
9632 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9633 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9634 _In_ REFIID riid,
9635 _COM_Outptr_ void **ppVideoProcessor);
9636
9637 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
9638 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
9639 ID3D12VideoDevice4 * This,
9640 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
9641 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
9642 SIZE_T CreationParametersDataSizeInBytes,
9643 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9644 _In_ REFIID riid,
9645 _COM_Outptr_ void **ppVideoExtensionCommand);
9646
9647 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
9648 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9649 ID3D12VideoDevice4 * This,
9650 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9651 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9652 SIZE_T ExecutionParametersSizeInBytes,
9653 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
9654 SIZE_T OutputDataSizeInBytes);
9655
9656 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
9657 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
9658 ID3D12VideoDevice4 * This,
9659 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
9660 _In_ REFIID riid,
9661 _COM_Outptr_ void **ppVideoEncoder);
9662
9663 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
9664 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
9665 ID3D12VideoDevice4 * This,
9666 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
9667 _In_ REFIID riid,
9668 _COM_Outptr_ void **ppVideoEncoderHeap);
9669
9670 DECLSPEC_XFGVIRT(ID3D12VideoDevice4, CreateVideoEncoderHeap1)
9671 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap1 )(
9672 ID3D12VideoDevice4 * This,
9673 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9674 _In_ REFIID riid,
9675 _COM_Outptr_ void **ppVideoEncoderHeap);
9676
9677 END_INTERFACE
9678 } ID3D12VideoDevice4Vtbl;
9679
9680 interface ID3D12VideoDevice4
9681 {
9682 CONST_VTBL struct ID3D12VideoDevice4Vtbl *lpVtbl;
9683 };
9684
9685
9686
9687#ifdef COBJMACROS
9688
9689
9690#define ID3D12VideoDevice4_QueryInterface(This,riid,ppvObject) \
9691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9692
9693#define ID3D12VideoDevice4_AddRef(This) \
9694 ( (This)->lpVtbl -> AddRef(This) )
9695
9696#define ID3D12VideoDevice4_Release(This) \
9697 ( (This)->lpVtbl -> Release(This) )
9698
9699
9700#define ID3D12VideoDevice4_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
9701 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
9702
9703#define ID3D12VideoDevice4_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
9704 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
9705
9706#define ID3D12VideoDevice4_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
9707 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
9708
9709#define ID3D12VideoDevice4_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
9710 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
9711
9712
9713#define ID3D12VideoDevice4_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
9714 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
9715
9716#define ID3D12VideoDevice4_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
9717 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
9718
9719
9720#define ID3D12VideoDevice4_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
9721 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
9722
9723#define ID3D12VideoDevice4_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
9724 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
9725
9726#define ID3D12VideoDevice4_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
9727 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
9728
9729#define ID3D12VideoDevice4_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
9730 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
9731
9732#define ID3D12VideoDevice4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
9733 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
9734
9735
9736#define ID3D12VideoDevice4_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
9737 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
9738
9739#define ID3D12VideoDevice4_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
9740 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
9741
9742
9743#define ID3D12VideoDevice4_CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) \
9744 ( (This)->lpVtbl -> CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) )
9745
9746#endif /* COBJMACROS */
9747
9748
9749#endif /* C style interface */
9750
9751
9752
9753
9754#endif /* __ID3D12VideoDevice4_INTERFACE_DEFINED__ */
9755
9756
9757/* interface __MIDL_itf_d3d12video_0000_0029 */
9758/* [local] */
9759
9760typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1
9761 {
9762 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc;
9763 BOOL IsSupported;
9764 UINT64 MemoryPoolL0Size;
9765 UINT64 MemoryPoolL1Size;
9766 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
9767
9768typedef
9769enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
9770 {
9771 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0,
9772 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
9773 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
9774 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
9775 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
9776 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10
9777 } D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
9778
9779DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )
9780typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
9781 {
9782 UINT NodeIndex;
9783 D3D12_VIDEO_ENCODER_CODEC Codec;
9784 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9785 DXGI_FORMAT InputFormat;
9786 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
9787 BOOL IsSupported;
9788 UINT CompressedBitstreamBufferAccessAlignment;
9789 UINT EncoderMetadataBufferAccessAlignment;
9790 UINT MaxEncoderOutputMetadataBufferSize;
9791 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
9792 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9793 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions;
9794 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions;
9795 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions;
9796 UINT EncoderOutputMetadataFramePSNRComponentsNumber;
9797 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber;
9798 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize;
9799 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
9800
9801typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
9802 {
9803 float PSNRY;
9804 float PSNRU;
9805 float PSNRV;
9806 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
9807
9808typedef
9809enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
9810 {
9811 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
9812 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1
9813 } D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
9814
9815typedef
9816enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
9817 {
9818 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
9819 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1
9820 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
9821
9822typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
9823 {
9824 D3D12_VIDEO_ENCODER_CODEC Codec;
9825 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9826 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9827 DXGI_FORMAT InputFormat;
9828 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9829 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9830 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9831 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9832 } D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
9833
9834typedef
9835enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
9836 {
9837 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
9838 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
9839 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2
9840 } D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
9841
9842typedef
9843enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
9844 {
9845 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
9846 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
9847 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2
9848 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
9849
9850typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
9851 {
9852 UINT NodeIndex;
9853 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9854 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9855 BOOL IsSupported;
9856 UINT MapSourcePreferenceRanking;
9857 UINT BlockSize;
9858 } D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
9859
9860typedef
9861enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
9862 {
9863 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0,
9864 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
9865 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
9866 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4
9867 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
9868
9869DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )
9870typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
9871 {
9872 UINT NodeIndex;
9873 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9874 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9875 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9876 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
9877 UINT MapSourcePreferenceRanking;
9878 } D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
9879
9880typedef
9881enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
9882 {
9883 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
9884 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
9885 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2
9886 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
9887
9888typedef
9889enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS
9890 {
9891 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0,
9892 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL ) ,
9893 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL ) ,
9894 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL )
9895 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
9896
9897DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )
9898typedef
9899enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
9900 {
9901 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0,
9902 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
9903 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
9904 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4
9905 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
9906
9907DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )
9908typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
9909 {
9910 UINT NodeIndex;
9911 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9912 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9913 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9914 BOOL BidirectionalRefFrameEnabled;
9915 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9916 UINT MaxMotionHints;
9917 UINT MinDeviation;
9918 UINT MaxDeviation;
9919 UINT MapSourcePreferenceRanking;
9920 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
9921 } D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
9922
9923typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
9924 {
9925 UINT NodeIndex;
9926 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9927 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
9928 BOOL IsSupported;
9929 UINT64 MaxResolvedBufferAllocationSize;
9930 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
9931
9932typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
9933 {
9934 BOOL Enabled;
9935 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9936 } D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
9937
9938typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
9939 {
9940 UINT MapSourcePreferenceRanking;
9941 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
9942
9943typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
9944 {
9945 BOOL Enabled;
9946 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9947 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9948 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
9949
9950typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
9951 {
9952 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
9953 UINT MapSourcePreferenceRanking;
9954 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
9955
9956typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
9957 {
9958 BOOL Enabled;
9959 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9960 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9961 BOOL BidirectionalRefFrameEnabled;
9962 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
9963
9964typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
9965 {
9966 UINT MaxMotionHints;
9967 UINT MinDeviation;
9968 UINT MaxDeviation;
9969 UINT MapSourcePreferenceRanking;
9970 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
9971 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9972 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
9973
9974typedef
9975enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
9976 {
9977 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0,
9978 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
9979 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
9980 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
9981 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
9982 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
9983 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
9984 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED = ( ( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED ) | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED )
9985 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
9986
9987DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )
9988typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
9989 {
9990 UINT NodeIndex;
9991 D3D12_VIDEO_ENCODER_CODEC Codec;
9992 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9993 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9994 DXGI_FORMAT InputFormat;
9995 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9996 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9997 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9998 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9999 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10000 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10001 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10002 UINT Pow2DownscaleFactor;
10003 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10004 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
10005
10006typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
10007 {
10008 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10009 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
10010
10011typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
10012 {
10013 UINT MaxSubregionsNumber;
10014 UINT MaxIntraRefreshFrameDuration;
10015 UINT SubregionBlockPixelsSize;
10016 UINT QPMapRegionPixelsSize;
10017 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
10018 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
10019 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
10020 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
10021 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
10022
10023typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
10024 {
10025 BOOL Enabled;
10026 UINT Pow2DownscaleFactor;
10027 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
10028
10029typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
10030 {
10031 UINT NodeIndex;
10032 D3D12_VIDEO_ENCODER_CODEC Codec;
10033 DXGI_FORMAT InputFormat;
10034 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10035 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
10036 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
10037 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
10038 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
10039 UINT ResolutionsListCount;
10040 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
10041 UINT MaxReferenceFramesInDPB;
10042 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
10043 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
10044 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
10045 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
10046 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 *pResolutionDependentSupport;
10047 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
10048 UINT MaxQualityVsSpeed;
10049 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10050 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10051 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10052 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
10053 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
10054
10055typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
10056 {
10057 BOOL FullFrameIdentical;
10058 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10059 UINT NumDirtyRects;
10060 _Field_size_full_(NumDirtyRects) RECT *pDirtyRects;
10061 UINT SourceDPBFrameReference;
10062 } D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
10063
10064typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
10065 {
10066 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10067 union
10068 {
10069 ID3D12Resource *pOpaqueLayoutBuffer;
10070 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO *pCPUBuffer;
10071 } ;
10072 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
10073
10074typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
10075 {
10076 ID3D12Resource *pOpaqueQuantizationMap;
10077 } D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
10078
10079typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
10080 {
10081 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
10082 UINT SearchDeviationLimit;
10083 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
10084
10085typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
10086 {
10087 POINT SourcePoint;
10088 RECT DestRect;
10089 } D3D12_VIDEO_ENCODER_MOVE_RECT;
10090
10091typedef
10092enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
10093 {
10094 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0,
10095 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1
10096 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
10097
10098typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
10099 {
10100 UINT NumMoveRegions;
10101 _Field_size_full_(NumMoveRegions) D3D12_VIDEO_ENCODER_MOVE_RECT *pMoveRegions;
10102 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10103 UINT SourceDPBFrameReference;
10104 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10105 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
10106 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
10107
10108typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
10109 {
10110 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10111 union
10112 {
10113 ID3D12Resource *pOpaqueLayoutBuffer;
10114 D3D12_VIDEO_ENCODER_MOVEREGION_INFO *pCPUBuffer;
10115 } ;
10116 } D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
10117
10118typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
10119 {
10120 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
10121 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
10122 UINT slice_pic_parameter_set_id;
10123 UINT PictureOrderCountNumber;
10124 UINT TemporalLayerIndex;
10125 UINT List0ReferenceFramesCount;
10126 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
10127 UINT List1ReferenceFramesCount;
10128 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
10129 UINT ReferenceFramesReconPictureDescriptorsCount;
10130 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
10131 UINT List0RefPicModificationsCount;
10132 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
10133 UINT List1RefPicModificationsCount;
10134 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
10135 UINT QPMapValuesCount;
10136 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
10137 UCHAR diff_cu_chroma_qp_offset_depth;
10138 UCHAR log2_sao_offset_scale_luma;
10139 UCHAR log2_sao_offset_scale_chroma;
10140 UCHAR log2_max_transform_skip_block_size_minus2;
10141 UCHAR chroma_qp_offset_list_len_minus1;
10142 CHAR cb_qp_offset_list[ 6 ];
10143 CHAR cr_qp_offset_list[ 6 ];
10144 UINT num_ref_idx_l0_active_minus1;
10145 UINT num_ref_idx_l1_active_minus1;
10146 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
10147
10148typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
10149 {
10150 UINT DataSize;
10151 union
10152 {
10153 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
10154 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 *pHEVCPicData;
10155 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
10156 } ;
10157 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
10158
10159typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
10160 {
10161 ID3D12Resource *pDownscaledFrame;
10162 UINT64 Subresource;
10163 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
10164 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
10165
10166typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
10167 {
10168 UINT IntraRefreshFrameIndex;
10169 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
10170 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
10171 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
10172 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
10173 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
10174 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
10175 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
10176 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
10177
10178typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
10179 {
10180 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
10181 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
10182 ID3D12Resource *pInputFrame;
10183 UINT InputFrameSubresource;
10184 UINT CurrentFrameBitstreamMetadataSize;
10185 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10186 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
10187
10188typedef
10189enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
10190 {
10191 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
10192 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1
10193 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
10194
10195typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
10196 {
10197 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
10198 UINT ExpectedSubregionCount;
10199 UINT64 *pSubregionBitstreamsBaseOffsets;
10200 ID3D12Resource **ppSubregionBitstreams;
10201 ID3D12Resource **ppSubregionSizes;
10202 ID3D12Resource **ppSubregionOffsets;
10203 ID3D12Fence **ppSubregionFences;
10204 UINT64 *pSubregionFenceValues;
10205 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
10206
10207typedef
10208enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
10209 {
10210 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
10211 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1
10212 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
10213
10214typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
10215 {
10216 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
10217 union
10218 {
10219 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
10220 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
10221 } ;
10222 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
10223
10224typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
10225 {
10226 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
10227 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
10228 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
10229 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
10230 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
10231
10232typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
10233 {
10234 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
10235 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
10236 DXGI_FORMAT EncoderInputFormat;
10237 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
10238 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
10239 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10240 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10241 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
10242
10243typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
10244 {
10245 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
10246 ID3D12Resource *pOutputQPMap;
10247 ID3D12Resource *pOutputSATDMap;
10248 ID3D12Resource *pOutputBitAllocationMap;
10249 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
10250 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
10251 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
10252
10253typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
10254 {
10255 ID3D12Resource *pQuantizationMap;
10256 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
10257
10258typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
10259 {
10260 BOOL FullFrameIdentical;
10261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10262 ID3D12Resource *pDirtyRegionsMap;
10263 UINT SourceDPBFrameReference;
10264 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
10265
10266typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
10267 {
10268 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10269 UINT NumHintsPerPixel;
10270 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMaps;
10271 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsSubresources;
10272 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMapsMetadata;
10273 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsMetadataSubresources;
10274 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10275 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
10276 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
10277
10278typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
10279 {
10280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
10281 union
10282 {
10283 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
10284 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
10285 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
10286 } ;
10287 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
10288
10289typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
10290 {
10291 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
10292 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
10293 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
10294
10295typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
10296 {
10297 ID3D12Resource *pOpaqueLayoutBuffer;
10298 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
10299
10300
10301
10302extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_c_ifspec;
10303extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_s_ifspec;
10304
10305#ifndef __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10306#define __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10307
10308/* interface ID3D12VideoEncodeCommandList4 */
10309/* [unique][local][object][uuid] */
10310
10311
10312EXTERN_C const IID IID_ID3D12VideoEncodeCommandList4;
10313
10314#if defined(__cplusplus) && !defined(CINTERFACE)
10315
10316 MIDL_INTERFACE("69aeb5b7-55f2-4012-8b73-3a88d65a204c")
10317 ID3D12VideoEncodeCommandList4 : public ID3D12VideoEncodeCommandList3
10318 {
10319 public:
10320 virtual void STDMETHODCALLTYPE EncodeFrame1(
10321 _In_ ID3D12VideoEncoder *pEncoder,
10322 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10323 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10324 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10325
10326 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata1(
10327 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10328 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10329
10330 virtual void STDMETHODCALLTYPE ResolveInputParamLayout(
10331 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10332 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
10333
10334 };
10335
10336
10337#else /* C style interface */
10338
10339 typedef struct ID3D12VideoEncodeCommandList4Vtbl
10340 {
10341 BEGIN_INTERFACE
10342
10343 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10344 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10345 ID3D12VideoEncodeCommandList4 * This,
10346 REFIID riid,
10347 _COM_Outptr_ void **ppvObject);
10348
10349 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10350 ULONG ( STDMETHODCALLTYPE *AddRef )(
10351 ID3D12VideoEncodeCommandList4 * This);
10352
10353 DECLSPEC_XFGVIRT(IUnknown, Release)
10354 ULONG ( STDMETHODCALLTYPE *Release )(
10355 ID3D12VideoEncodeCommandList4 * This);
10356
10357 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10358 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10359 ID3D12VideoEncodeCommandList4 * This,
10360 _In_ REFGUID guid,
10361 _Inout_ UINT *pDataSize,
10362 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10363
10364 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10365 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10366 ID3D12VideoEncodeCommandList4 * This,
10367 _In_ REFGUID guid,
10368 _In_ UINT DataSize,
10369 _In_reads_bytes_opt_( DataSize ) const void *pData);
10370
10371 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10372 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10373 ID3D12VideoEncodeCommandList4 * This,
10374 _In_ REFGUID guid,
10375 _In_opt_ const IUnknown *pData);
10376
10377 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10378 HRESULT ( STDMETHODCALLTYPE *SetName )(
10379 ID3D12VideoEncodeCommandList4 * This,
10380 _In_z_ LPCWSTR Name);
10381
10382 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10383 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10384 ID3D12VideoEncodeCommandList4 * This,
10385 REFIID riid,
10386 _COM_Outptr_opt_ void **ppvDevice);
10387
10388 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
10389 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
10390 ID3D12VideoEncodeCommandList4 * This);
10391
10392 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
10393 HRESULT ( STDMETHODCALLTYPE *Close )(
10394 ID3D12VideoEncodeCommandList4 * This);
10395
10396 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
10397 HRESULT ( STDMETHODCALLTYPE *Reset )(
10398 ID3D12VideoEncodeCommandList4 * This,
10399 _In_ ID3D12CommandAllocator *pAllocator);
10400
10401 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
10402 void ( STDMETHODCALLTYPE *ClearState )(
10403 ID3D12VideoEncodeCommandList4 * This);
10404
10405 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
10406 void ( STDMETHODCALLTYPE *ResourceBarrier )(
10407 ID3D12VideoEncodeCommandList4 * This,
10408 _In_ UINT NumBarriers,
10409 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
10410
10411 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
10412 void ( STDMETHODCALLTYPE *DiscardResource )(
10413 ID3D12VideoEncodeCommandList4 * This,
10414 _In_ ID3D12Resource *pResource,
10415 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
10416
10417 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
10418 void ( STDMETHODCALLTYPE *BeginQuery )(
10419 ID3D12VideoEncodeCommandList4 * This,
10420 _In_ ID3D12QueryHeap *pQueryHeap,
10421 _In_ D3D12_QUERY_TYPE Type,
10422 _In_ UINT Index);
10423
10424 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
10425 void ( STDMETHODCALLTYPE *EndQuery )(
10426 ID3D12VideoEncodeCommandList4 * This,
10427 _In_ ID3D12QueryHeap *pQueryHeap,
10428 _In_ D3D12_QUERY_TYPE Type,
10429 _In_ UINT Index);
10430
10431 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
10432 void ( STDMETHODCALLTYPE *ResolveQueryData )(
10433 ID3D12VideoEncodeCommandList4 * This,
10434 _In_ ID3D12QueryHeap *pQueryHeap,
10435 _In_ D3D12_QUERY_TYPE Type,
10436 _In_ UINT StartIndex,
10437 _In_ UINT NumQueries,
10438 _In_ ID3D12Resource *pDestinationBuffer,
10439 _In_ UINT64 AlignedDestinationBufferOffset);
10440
10441 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
10442 void ( STDMETHODCALLTYPE *SetPredication )(
10443 ID3D12VideoEncodeCommandList4 * This,
10444 _In_opt_ ID3D12Resource *pBuffer,
10445 _In_ UINT64 AlignedBufferOffset,
10446 _In_ D3D12_PREDICATION_OP Operation);
10447
10448 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
10449 void ( STDMETHODCALLTYPE *SetMarker )(
10450 ID3D12VideoEncodeCommandList4 * This,
10451 UINT Metadata,
10452 _In_reads_bytes_opt_(Size) const void *pData,
10453 UINT Size);
10454
10455 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
10456 void ( STDMETHODCALLTYPE *BeginEvent )(
10457 ID3D12VideoEncodeCommandList4 * This,
10458 UINT Metadata,
10459 _In_reads_bytes_opt_(Size) const void *pData,
10460 UINT Size);
10461
10462 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
10463 void ( STDMETHODCALLTYPE *EndEvent )(
10464 ID3D12VideoEncodeCommandList4 * This);
10465
10466 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
10467 void ( STDMETHODCALLTYPE *EstimateMotion )(
10468 ID3D12VideoEncodeCommandList4 * This,
10469 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
10470 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
10471 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
10472
10473 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
10474 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
10475 ID3D12VideoEncodeCommandList4 * This,
10476 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
10477 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
10478
10479 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
10480 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
10481 ID3D12VideoEncodeCommandList4 * This,
10482 UINT Count,
10483 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
10484 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
10485
10486 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
10487 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
10488 ID3D12VideoEncodeCommandList4 * This,
10489 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
10490
10491 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
10492 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
10493 ID3D12VideoEncodeCommandList4 * This,
10494 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10495 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
10496 SIZE_T InitializationParametersSizeInBytes);
10497
10498 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
10499 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
10500 ID3D12VideoEncodeCommandList4 * This,
10501 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10502 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
10503 SIZE_T ExecutionParametersSizeInBytes);
10504
10505 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
10506 void ( STDMETHODCALLTYPE *EncodeFrame )(
10507 ID3D12VideoEncodeCommandList4 * This,
10508 _In_ ID3D12VideoEncoder *pEncoder,
10509 _In_ ID3D12VideoEncoderHeap *pHeap,
10510 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
10511 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
10512
10513 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
10514 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
10515 ID3D12VideoEncodeCommandList4 * This,
10516 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
10517 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
10518
10519 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
10520 void ( STDMETHODCALLTYPE *Barrier )(
10521 ID3D12VideoEncodeCommandList4 * This,
10522 UINT32 NumBarrierGroups,
10523 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
10524
10525 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, EncodeFrame1)
10526 void ( STDMETHODCALLTYPE *EncodeFrame1 )(
10527 ID3D12VideoEncodeCommandList4 * This,
10528 _In_ ID3D12VideoEncoder *pEncoder,
10529 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10530 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10531 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments);
10532
10533 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveEncoderOutputMetadata1)
10534 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata1 )(
10535 ID3D12VideoEncodeCommandList4 * This,
10536 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10537 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments);
10538
10539 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveInputParamLayout)
10540 void ( STDMETHODCALLTYPE *ResolveInputParamLayout )(
10541 ID3D12VideoEncodeCommandList4 * This,
10542 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10543 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments);
10544
10545 END_INTERFACE
10546 } ID3D12VideoEncodeCommandList4Vtbl;
10547
10548 interface ID3D12VideoEncodeCommandList4
10549 {
10550 CONST_VTBL struct ID3D12VideoEncodeCommandList4Vtbl *lpVtbl;
10551 };
10552
10553
10554
10555#ifdef COBJMACROS
10556
10557
10558#define ID3D12VideoEncodeCommandList4_QueryInterface(This,riid,ppvObject) \
10559 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10560
10561#define ID3D12VideoEncodeCommandList4_AddRef(This) \
10562 ( (This)->lpVtbl -> AddRef(This) )
10563
10564#define ID3D12VideoEncodeCommandList4_Release(This) \
10565 ( (This)->lpVtbl -> Release(This) )
10566
10567
10568#define ID3D12VideoEncodeCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
10569 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10570
10571#define ID3D12VideoEncodeCommandList4_SetPrivateData(This,guid,DataSize,pData) \
10572 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10573
10574#define ID3D12VideoEncodeCommandList4_SetPrivateDataInterface(This,guid,pData) \
10575 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10576
10577#define ID3D12VideoEncodeCommandList4_SetName(This,Name) \
10578 ( (This)->lpVtbl -> SetName(This,Name) )
10579
10580
10581#define ID3D12VideoEncodeCommandList4_GetDevice(This,riid,ppvDevice) \
10582 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10583
10584
10585#define ID3D12VideoEncodeCommandList4_GetType(This) \
10586 ( (This)->lpVtbl -> GetType(This) )
10587
10588
10589#define ID3D12VideoEncodeCommandList4_Close(This) \
10590 ( (This)->lpVtbl -> Close(This) )
10591
10592#define ID3D12VideoEncodeCommandList4_Reset(This,pAllocator) \
10593 ( (This)->lpVtbl -> Reset(This,pAllocator) )
10594
10595#define ID3D12VideoEncodeCommandList4_ClearState(This) \
10596 ( (This)->lpVtbl -> ClearState(This) )
10597
10598#define ID3D12VideoEncodeCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
10599 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
10600
10601#define ID3D12VideoEncodeCommandList4_DiscardResource(This,pResource,pRegion) \
10602 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
10603
10604#define ID3D12VideoEncodeCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
10605 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
10606
10607#define ID3D12VideoEncodeCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
10608 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
10609
10610#define ID3D12VideoEncodeCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
10611 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
10612
10613#define ID3D12VideoEncodeCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
10614 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
10615
10616#define ID3D12VideoEncodeCommandList4_SetMarker(This,Metadata,pData,Size) \
10617 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
10618
10619#define ID3D12VideoEncodeCommandList4_BeginEvent(This,Metadata,pData,Size) \
10620 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
10621
10622#define ID3D12VideoEncodeCommandList4_EndEvent(This) \
10623 ( (This)->lpVtbl -> EndEvent(This) )
10624
10625#define ID3D12VideoEncodeCommandList4_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
10626 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
10627
10628#define ID3D12VideoEncodeCommandList4_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
10629 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
10630
10631#define ID3D12VideoEncodeCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
10632 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
10633
10634#define ID3D12VideoEncodeCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
10635 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
10636
10637
10638#define ID3D12VideoEncodeCommandList4_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
10639 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
10640
10641#define ID3D12VideoEncodeCommandList4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
10642 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
10643
10644
10645#define ID3D12VideoEncodeCommandList4_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10646 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10647
10648#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
10649 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
10650
10651
10652#define ID3D12VideoEncodeCommandList4_Barrier(This,NumBarrierGroups,pBarrierGroups) \
10653 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
10654
10655
10656#define ID3D12VideoEncodeCommandList4_EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10657 ( (This)->lpVtbl -> EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10658
10659#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) \
10660 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) )
10661
10662#define ID3D12VideoEncodeCommandList4_ResolveInputParamLayout(This,pInputArguments,pOutputArguments) \
10663 ( (This)->lpVtbl -> ResolveInputParamLayout(This,pInputArguments,pOutputArguments) )
10664
10665#endif /* COBJMACROS */
10666
10667
10668#endif /* C style interface */
10669
10670
10671
10672
10673#endif /* __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__ */
10674
10675
10676/* interface __MIDL_itf_d3d12video_0000_0030 */
10677/* [local] */
10678
10679#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
10680#pragma endregion
10681DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
10682DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
10683DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
10684DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
10685DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
10686DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
10687DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
10688DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
10689DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
10690DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
10691DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
10692DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
10693DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
10694DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
10695DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
10696DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
10697DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
10698DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
10699DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
10700DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
10701DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
10702DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
10703DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
10704DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
10705DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
10706DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
10707DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
10708DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
10709DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
10710DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
10711
10712
10713extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_c_ifspec;
10714extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_s_ifspec;
10715
10716/* Additional Prototypes for ALL interfaces */
10717
10718/* end of Additional Prototypes */
10719
10720#ifdef __cplusplus
10721}
10722#endif
10723
10724#endif
10725
10726
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl
new file mode 100644
index 0000000..b2c930b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3d12video.idl
@@ -0,0 +1,3818 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18typedef enum D3D12_VIDEO_FIELD_TYPE
19{
20 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
21 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
22 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2,
23} D3D12_VIDEO_FIELD_TYPE;
24
25typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT
26{
27 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
28 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
29 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
30 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
31 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4,
32} D3D12_VIDEO_FRAME_STEREO_FORMAT;
33
34typedef struct D3D12_VIDEO_FORMAT
35{
36 DXGI_FORMAT Format;
37 DXGI_COLOR_SPACE_TYPE ColorSpace;
38} D3D12_VIDEO_FORMAT;
39
40typedef struct D3D12_VIDEO_SAMPLE
41{
42 UINT Width;
43 UINT Height;
44 D3D12_VIDEO_FORMAT Format;
45} D3D12_VIDEO_SAMPLE;
46
47typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
48{
49 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
50 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1,
51} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
52
53typedef enum D3D12_FEATURE_VIDEO
54{
55 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
56 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
57 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
58 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
59 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
60 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
61 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
62 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
63 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
64 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
65 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
66 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
67 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
68 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
69 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
70 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
71 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
72 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
73 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
74 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
75 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
76 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
77 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
78 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
79 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
80 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
81 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
82 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
83 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
84 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
85 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
86 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
87 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
88 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
89 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
90 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
91 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
92 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
93 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
94 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
95 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
96 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
97 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
98 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
99 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
100 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
101 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
102 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
103 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
104 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57,
105
106} D3D12_FEATURE_VIDEO;
107
108typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
109{
110 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
111} D3D12_BITSTREAM_ENCRYPTION_TYPE;
112
113typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
114{
115 GUID DecodeProfile;
116 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
117 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
118} D3D12_VIDEO_DECODE_CONFIGURATION;
119
120typedef struct D3D12_VIDEO_DECODER_DESC
121{
122 UINT NodeMask;
123 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
124} D3D12_VIDEO_DECODER_DESC;
125
126typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
127{
128 UINT NodeMask;
129 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
130 UINT DecodeWidth;
131 UINT DecodeHeight;
132 DXGI_FORMAT Format;
133 DXGI_RATIONAL FrameRate;
134 UINT BitRate;
135 UINT MaxDecodePictureBufferCount;
136} D3D12_VIDEO_DECODER_HEAP_DESC;
137
138typedef struct D3D12_VIDEO_SIZE_RANGE
139{
140 UINT MaxWidth;
141 UINT MaxHeight;
142 UINT MinWidth;
143 UINT MinHeight;
144} D3D12_VIDEO_SIZE_RANGE;
145
146typedef enum D3D12_VIDEO_PROCESS_FILTER
147{
148 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
149 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
150 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
151 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
152 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
153 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
154 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
155 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
156} D3D12_VIDEO_PROCESS_FILTER;
157
158typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
159{
160 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
161 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
162 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
163 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
164 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
165 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
166 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
167 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
168 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
169
170} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
171cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )")
172
173typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
174{
175 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
176 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
177 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
178
179} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
180cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )")
181
182typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
183{
184 BOOL Enable;
185 FLOAT Alpha;
186} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
187
188typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
189{
190 BOOL Enable;
191 FLOAT Lower;
192 FLOAT Upper;
193} D3D12_VIDEO_PROCESS_LUMA_KEY;
194
195typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
196{
197 DXGI_FORMAT Format;
198 DXGI_COLOR_SPACE_TYPE ColorSpace;
199 DXGI_RATIONAL SourceAspectRatio;
200 DXGI_RATIONAL DestinationAspectRatio;
201 DXGI_RATIONAL FrameRate;
202 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
203 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
204 BOOL EnableOrientation;
205 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
206 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
207 D3D12_VIDEO_FIELD_TYPE FieldType;
208 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
209 BOOL EnableAlphaBlending;
210 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
211 UINT NumPastFrames;
212 UINT NumFutureFrames;
213 BOOL EnableAutoProcessing;
214} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
215
216typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
217{
218 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
219 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
220 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
221 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
222} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
223
224typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
225{
226 DXGI_FORMAT Format;
227 DXGI_COLOR_SPACE_TYPE ColorSpace;
228 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
229 UINT AlphaFillModeSourceStreamIndex;
230 FLOAT BackgroundColor[4];
231 DXGI_RATIONAL FrameRate;
232 BOOL EnableStereo;
233} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
234
235[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
236interface ID3D12VideoDecoderHeap
237 : ID3D12Pageable
238{
239 D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
240}
241
242[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
243interface ID3D12VideoDevice
244 : IUnknown
245{
246 HRESULT CheckFeatureSupport(
247 D3D12_FEATURE_VIDEO FeatureVideo,
248 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
249 UINT FeatureSupportDataSize
250 );
251
252 HRESULT CreateVideoDecoder(
253 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
254 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder,
255 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
256 );
257
258 HRESULT CreateVideoDecoderHeap(
259 [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
260 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap,
261 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
262 );
263
264 HRESULT CreateVideoProcessor(
265 UINT NodeMask,
266 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
267 UINT NumInputStreamDescs,
268 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
269 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor,
270 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
271 );
272}
273
274[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
275interface ID3D12VideoDecoder
276 : ID3D12Pageable
277{
278 D3D12_VIDEO_DECODER_DESC GetDesc();
279}
280
281typedef enum D3D12_VIDEO_DECODE_TIER
282{
283 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
284 D3D12_VIDEO_DECODE_TIER_1 = 1,
285 D3D12_VIDEO_DECODE_TIER_2 = 2,
286 D3D12_VIDEO_DECODE_TIER_3 = 3,
287} D3D12_VIDEO_DECODE_TIER;
288
289typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
290{
291 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
292 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
293
294} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
295cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )")
296
297typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
298{
299 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
300 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
301 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
302 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
303 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8,
304
305} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
306cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )")
307
308typedef enum D3D12_VIDEO_DECODE_STATUS
309{
310 D3D12_VIDEO_DECODE_STATUS_OK = 0,
311 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
312 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
313 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
314 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
315} D3D12_VIDEO_DECODE_STATUS;
316
317typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
318{
319 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
320 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
321 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
322 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3,
323} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
324
325typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
326{
327 UINT NodeIndex; // input
328 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
329 UINT Width; // input
330 UINT Height; // input
331 DXGI_FORMAT DecodeFormat; // input
332 DXGI_RATIONAL FrameRate; // input
333 UINT BitRate; // input
334 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags; // output
335 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
336 D3D12_VIDEO_DECODE_TIER DecodeTier; // output
337} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
338
339typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
340{
341 UINT NodeIndex; // input
342 UINT ProfileCount; // output
343} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
344
345typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
346{
347 UINT NodeIndex; // input
348 UINT ProfileCount; // input
349 [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles; // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
350} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
351
352typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
353{
354 UINT NodeIndex; // input
355 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
356 UINT FormatCount; // output
357} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
358
359typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
360{
361 UINT NodeIndex; // input
362 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
363 UINT FormatCount; // input
364 [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats; // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport.
365} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
366
367typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
368{
369 BOOL IOCoherent;
370} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
371
372typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
373{
374 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
375 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
376 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
377
378 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
379 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
380 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
381
382 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
383} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
384
385typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
386{
387 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
388
389 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
390 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U),
391 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
392
393 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
394 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G),
395 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
396
397 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
398} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
399cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )")
400
401typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
402{
403 UINT NodeIndex; // in
404 GUID DecodeProfile; // in
405 UINT Width; // in
406 UINT Height; // in
407 DXGI_FORMAT DecodeFormat; // in
408 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components; // out
409 UINT BinCount; // out
410 UINT CounterBitDepth; // out
411} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
412
413typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
414{
415 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
416 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
417
418} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
419cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )")
420
421typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
422{
423 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
424 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
425 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
426 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4,
427
428} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
429cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )")
430
431typedef struct D3D12_VIDEO_SCALE_SUPPORT
432{
433 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
434 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
435} D3D12_VIDEO_SCALE_SUPPORT;
436
437typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
438{
439 UINT NodeIndex; // input
440 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
441 D3D12_VIDEO_SAMPLE DecodeSample; // input
442 D3D12_VIDEO_FORMAT OutputFormat; // input
443 DXGI_RATIONAL FrameRate; // input
444 UINT BitRate; // input
445 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags; // output
446 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
447} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
448
449typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
450{
451 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
452 UINT64 MemoryPoolL0Size; // output
453 UINT64 MemoryPoolL1Size; // output
454} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
455
456typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
457{
458 UINT NodeMask;
459 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
460 UINT NumInputStreamDescs; // input
461 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
462 UINT64 MemoryPoolL0Size; // output
463 UINT64 MemoryPoolL1Size; // output
464} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
465
466typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
467{
468 UINT64 Status; // see D3D12_VIDEO_DECODE_STATUS
469 UINT64 NumMacroblocksAffected;
470 DXGI_RATIONAL FrameRate;
471 UINT BitRate;
472} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
473
474typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
475{
476 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
477 UINT Size;
478 [annotation("_Field_size_bytes_full_(Size)")] void *pData;
479} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
480
481typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
482{
483 UINT NumTexture2Ds;
484 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
485 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
486 [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
487} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
488
489typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
490{
491 ID3D12Resource* pBuffer;
492 UINT64 Offset;
493 UINT64 Size;
494} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
495
496typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
497{
498 BOOL Enable;
499 ID3D12Resource* pReferenceTexture2D;
500 UINT ReferenceSubresource;
501 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
502 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
503} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
504
505typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
506{
507 UINT NumFrameArguments;
508 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
509 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
510 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
511 ID3D12VideoDecoderHeap *pHeap;
512} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
513
514typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
515{
516 ID3D12Resource* pOutputTexture2D;
517 UINT OutputSubresource;
518 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
519} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
520
521[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
522interface ID3D12VideoProcessor
523 : ID3D12Pageable
524{
525 UINT GetNodeMask();
526 UINT GetNumInputStreamDescs();
527 HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
529}
530
531typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
532{
533 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
534 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
535 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
536 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
537 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
538 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
539 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
540 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
541
542} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
543cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )")
544
545typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
546{
547 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
548 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
549 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
550 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
551 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
552 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
553 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
554 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
555 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
556 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
557
558} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
559cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )")
560
561typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
562{
563 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
564 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
565 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
566 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
567 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
568 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
569 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
570 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
571} D3D12_VIDEO_PROCESS_ORIENTATION;
572
573typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
574{
575 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
576 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
577 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
578
579} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
580cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )")
581
582typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
583{
584 INT Minimum;
585 INT Maximum;
586 INT Default;
587 FLOAT Multiplier;
588} D3D12_VIDEO_PROCESS_FILTER_RANGE;
589
590typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
591{
592 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
593 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
594
595} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
596cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )")
597
598typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
599{
600 UINT NodeIndex; // input
601 D3D12_VIDEO_SAMPLE InputSample; // input
602 D3D12_VIDEO_FIELD_TYPE InputFieldType; // input
603 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; // input
604 DXGI_RATIONAL InputFrameRate; // input
605 D3D12_VIDEO_FORMAT OutputFormat; // input
606 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; // input
607 DXGI_RATIONAL OutputFrameRate; // input
608 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; // output
609 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
610 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // output
611 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; // output
612 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; // output
613 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; // output
614 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; // output
615} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
616
617typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
618{
619 UINT NodeIndex; // input
620 UINT MaxInputStreams; // output
621} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
622
623typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
624{
625 UINT NodeIndex; // input
626 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; // input
627 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters; // input
628 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // input
629 DXGI_RATIONAL InputFrameRate; // input
630 DXGI_RATIONAL OutputFrameRate; // input
631 BOOL EnableAutoProcessing; // input
632 UINT PastFrames; // output
633 UINT FutureFrames; // output
634} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
635
636typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
637{
638 UINT NumPastFrames;
639 ID3D12Resource **ppPastFrames;
640 UINT *pPastSubresources;
641 UINT NumFutureFrames;
642 ID3D12Resource **ppFutureFrames;
643 UINT *pFutureSubresources;
644} D3D12_VIDEO_PROCESS_REFERENCE_SET;
645
646typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
647{
648 D3D12_RECT SourceRectangle;
649 D3D12_RECT DestinationRectangle;
650 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
651} D3D12_VIDEO_PROCESS_TRANSFORM;
652
653typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
654{
655 UINT OutputIndex;
656 UINT InputFrameOrField;
657} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
658
659typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
660{
661 ID3D12Resource *pTexture2D;
662 UINT Subresource;
663 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
664} D3D12_VIDEO_PROCESS_INPUT_STREAM;
665
666typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
667{
668 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
669 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
670 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
671 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
672 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
673 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
674} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
675
676typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
677{
678 ID3D12Resource* pTexture2D;
679 UINT Subresource;
680} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
681
682typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
683{
684 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
685 D3D12_RECT TargetRectangle;
686} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
687
688[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
689interface ID3D12VideoDecodeCommandList
690 : ID3D12CommandList
691{
692 HRESULT Close();
693
694 HRESULT Reset(
695 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
696 );
697
698 void ClearState();
699
700 void ResourceBarrier(
701 [annotation("_In_")] UINT NumBarriers,
702 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
703 );
704
705 void DiscardResource(
706 [annotation("_In_")] ID3D12Resource* pResource,
707 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
708 );
709
710 void BeginQuery(
711 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
712 [annotation("_In_")] D3D12_QUERY_TYPE Type,
713 [annotation("_In_")] UINT Index
714 );
715
716 void EndQuery(
717 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
718 [annotation("_In_")] D3D12_QUERY_TYPE Type,
719 [annotation("_In_")] UINT Index
720 );
721
722 void ResolveQueryData(
723 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
724 [annotation("_In_")] D3D12_QUERY_TYPE Type,
725 [annotation("_In_")] UINT StartIndex,
726 [annotation("_In_")] UINT NumQueries,
727 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
728 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
729 );
730
731 void SetPredication(
732 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
733 [annotation("_In_")] UINT64 AlignedBufferOffset,
734 [annotation("_In_")] D3D12_PREDICATION_OP Operation
735 );
736
737 void SetMarker(
738 UINT Metadata,
739 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
740 UINT Size);
741
742 void BeginEvent(
743 UINT Metadata,
744 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
745 UINT Size);
746
747 void EndEvent();
748
749 void DecodeFrame(
750 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
751 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
752 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
753 );
754
755 void WriteBufferImmediate(
756 UINT Count,
757 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
758 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
759 );
760}
761
762[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
763interface ID3D12VideoProcessCommandList
764 : ID3D12CommandList
765{
766 HRESULT Close();
767
768 HRESULT Reset(
769 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
770 );
771
772 void ClearState();
773
774 void ResourceBarrier(
775 [annotation("_In_")] UINT NumBarriers,
776 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
777 );
778
779 void DiscardResource(
780 [annotation("_In_")] ID3D12Resource* pResource,
781 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
782 );
783
784 void BeginQuery(
785 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
786 [annotation("_In_")] D3D12_QUERY_TYPE Type,
787 [annotation("_In_")] UINT Index
788 );
789
790 void EndQuery(
791 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
792 [annotation("_In_")] D3D12_QUERY_TYPE Type,
793 [annotation("_In_")] UINT Index
794 );
795
796 void ResolveQueryData(
797 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
798 [annotation("_In_")] D3D12_QUERY_TYPE Type,
799 [annotation("_In_")] UINT StartIndex,
800 [annotation("_In_")] UINT NumQueries,
801 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
802 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
803 );
804
805 void SetPredication(
806 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
807 [annotation("_In_")] UINT64 AlignedBufferOffset,
808 [annotation("_In_")] D3D12_PREDICATION_OP Operation
809 );
810
811 void SetMarker(
812 UINT Metadata,
813 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
814 UINT Size);
815
816 void BeginEvent(
817 UINT Metadata,
818 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
819 UINT Size);
820
821 void EndEvent();
822
823 void ProcessFrames(
824 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
825 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
826 UINT NumInputStreams,
827 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
828 );
829
830 void WriteBufferImmediate(
831 UINT Count,
832 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
833 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
834 );
835}
836
837typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
838{
839 UINT64 Offset;
840 ID3D12Resource* pBuffer;
841} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
842
843typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
844{
845 BOOL Enable;
846 ID3D12Resource* pReferenceTexture2D;
847 UINT ReferenceSubresource;
848 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
849 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
850 UINT OutputWidth;
851 UINT OutputHeight;
852} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
853
854typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
855{
856 ID3D12Resource* pOutputTexture2D;
857 UINT OutputSubresource;
858 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
859 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
860} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
861
862[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
863interface ID3D12VideoDecodeCommandList1
864 : ID3D12VideoDecodeCommandList
865{
866 void DecodeFrame1(
867 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
868 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
869 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
870 );
871}
872
873typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
874{
875 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
876 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
877 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
878 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
879 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
880 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
881 D3D12_VIDEO_FIELD_TYPE FieldType;
882} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
883
884[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
885interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
886{
887 void ProcessFrames1(
888 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
889 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
890 UINT NumInputStreams,
891 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
892 );
893}
894
895typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
896{
897 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
898 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1,
899} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
900
901typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
902{
903 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
904 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
905 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
906
907} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
908cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )" )
909
910typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
911{
912 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0,
913} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
914
915typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
916{
917 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
918 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
919
920} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
921cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )" )
922
923// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
924typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
925{
926 UINT NodeIndex; // input
927 BOOL VideoDecodeSupport; // output
928 BOOL VideoProcessSupport; // output
929 BOOL VideoEncodeSupport; // output
930} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
931
932// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
933typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
934{
935 UINT NodeIndex; // input
936 DXGI_FORMAT InputFormat; // input
937 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags; // output
938 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags; // output
939 D3D12_VIDEO_SIZE_RANGE SizeRange; // output
940} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
941
942// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
943typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
944{
945 UINT NodeIndex; // input
946 DXGI_FORMAT InputFormat; // input
947 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; // input
948 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; // input
949 D3D12_VIDEO_SIZE_RANGE SizeRange; // input
950 BOOL Protected; // input
951 UINT64 MotionVectorHeapMemoryPoolL0Size; // output
952 UINT64 MotionVectorHeapMemoryPoolL1Size; // output
953 UINT64 MotionEstimatorMemoryPoolL0Size; // output
954 UINT64 MotionEstimatorMemoryPoolL1Size; // output
955} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
956
957typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
958{
959 UINT NodeMask;
960 DXGI_FORMAT InputFormat;
961 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
962 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
963 D3D12_VIDEO_SIZE_RANGE SizeRange;
964
965} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
966
967[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
968interface ID3D12VideoMotionEstimator
969 : ID3D12Pageable
970{
971 D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
972
973 HRESULT GetProtectedResourceSession(
974 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
975 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
976}
977
978typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
979{
980 UINT NodeMask;
981 DXGI_FORMAT InputFormat;
982 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
983 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
984 D3D12_VIDEO_SIZE_RANGE SizeRange;
985
986} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
987
988[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
989interface ID3D12VideoMotionVectorHeap
990 : ID3D12Pageable
991{
992 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
993
994 HRESULT GetProtectedResourceSession(
995 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
996 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
997}
998
999[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
1000interface ID3D12VideoDevice1
1001 : ID3D12VideoDevice
1002{
1003 HRESULT CreateVideoMotionEstimator(
1004 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
1005 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1006 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator,
1007 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
1008 );
1009
1010 HRESULT CreateVideoMotionVectorHeap(
1011 [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
1012 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1013 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap,
1014 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
1015 );
1016}
1017
1018typedef struct D3D12_RESOURCE_COORDINATE
1019{
1020 // Coordinate values below index pixels.
1021 UINT64 X; // Used for buffer, 1D, 2D, 3D
1022 UINT Y; // Used for 2D, 3D
1023 UINT Z; // Used for 3D
1024 UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
1025} D3D12_RESOURCE_COORDINATE;
1026
1027typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
1028{
1029 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1030} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
1031
1032typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
1033{
1034 ID3D12Resource* pInputTexture2D;
1035 UINT InputSubresourceIndex;
1036 ID3D12Resource* pReferenceTexture2D;
1037 UINT ReferenceSubresourceIndex;
1038 ID3D12VideoMotionVectorHeap* pHintMotionVectorHeap;
1039} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
1040
1041typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
1042{
1043 ID3D12Resource* pMotionVectorTexture2D;
1044 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
1045} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
1046
1047typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
1048{
1049 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1050 UINT PixelWidth;
1051 UINT PixelHeight;
1052} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
1053
1054[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
1055interface ID3D12VideoEncodeCommandList
1056 : ID3D12CommandList
1057{
1058 HRESULT Close();
1059
1060 HRESULT Reset(
1061 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
1062 );
1063
1064 void ClearState();
1065
1066 void ResourceBarrier(
1067 [annotation("_In_")] UINT NumBarriers,
1068 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
1069 );
1070
1071 void DiscardResource(
1072 [annotation("_In_")] ID3D12Resource* pResource,
1073 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
1074 );
1075
1076 void BeginQuery(
1077 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1078 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1079 [annotation("_In_")] UINT Index
1080 );
1081
1082 void EndQuery(
1083 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1084 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1085 [annotation("_In_")] UINT Index
1086 );
1087
1088 void ResolveQueryData(
1089 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1090 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1091 [annotation("_In_")] UINT StartIndex,
1092 [annotation("_In_")] UINT NumQueries,
1093 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
1094 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
1095 );
1096
1097 void SetPredication(
1098 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
1099 [annotation("_In_")] UINT64 AlignedBufferOffset,
1100 [annotation("_In_")] D3D12_PREDICATION_OP Operation
1101 );
1102
1103 void SetMarker(
1104 UINT Metadata,
1105 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1106 UINT Size);
1107
1108 void BeginEvent(
1109 UINT Metadata,
1110 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1111 UINT Size);
1112
1113 void EndEvent();
1114
1115 void EstimateMotion(
1116 [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
1117 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
1118 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
1119 );
1120
1121 void ResolveMotionVectorHeap(
1122 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
1123 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
1124 );
1125
1126 void WriteBufferImmediate(
1127 UINT Count,
1128 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1129 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
1130 );
1131
1132 void SetProtectedResourceSession(
1133 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1134 );
1135}
1136
1137typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
1138{
1139 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0x0,
1140 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1,
1141
1142} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
1143cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )")
1144
1145// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
1146typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
1147{
1148 UINT NodeIndex; // input
1149 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
1150 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1151} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
1152
1153// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
1154typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
1155{
1156 UINT NodeIndex; // input
1157 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1158} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
1159
1160// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1161typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1162{
1163 UINT NodeIndex; // input
1164 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1165} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
1166
1167//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
1168typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
1169{
1170 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
1171 BOOL Protected; // input
1172 UINT64 MemoryPoolL0Size; // output
1173 UINT64 MemoryPoolL1Size; // output
1174} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
1175
1176// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
1177typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
1178{
1179 UINT NodeMask;
1180 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
1181 UINT NumInputStreamDescs; // input
1182 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
1183 BOOL Protected; // input
1184 UINT64 MemoryPoolL0Size; // output
1185 UINT64 MemoryPoolL1Size; // output
1186} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
1187
1188typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
1189{
1190 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
1191 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
1192 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
1193 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
1194 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
1195 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
1196 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
1197} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
1198
1199typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
1200{
1201 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
1202 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
1203 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
1204 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
1205 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
1206 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
1207 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
1208 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
1209 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
1210 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
1211 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
1212} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
1213
1214typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
1215{
1216 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
1217 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
1218 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
1219} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
1220
1221cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )")
1222
1223typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
1224{
1225 UINT NodeIndex; // in
1226 UINT CommandCount; // out
1227} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
1228
1229typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
1230{
1231 GUID CommandId;
1232 LPCWSTR Name;
1233 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
1234} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
1235
1236typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
1237{
1238 UINT NodeIndex;
1239 UINT CommandCount;
1240 [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
1241} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
1242
1243typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
1244{
1245 GUID CommandId; // in
1246 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1247 UINT ParameterCount; // out
1248 UINT ParameterPacking; // out
1249} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
1250
1251typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
1252{
1253 LPCWSTR Name;
1254 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
1255 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
1256} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
1257
1258typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
1259{
1260 GUID CommandId; // in
1261 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1262 UINT ParameterCount; // in
1263 [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
1264} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
1265
1266typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
1267{
1268 UINT NodeIndex;
1269 GUID CommandId;
1270 [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
1271 SIZE_T InputDataSizeInBytes;
1272 [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
1273 SIZE_T OutputDataSizeInBytes;
1274} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
1275
1276typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
1277{
1278 UINT NodeIndex;
1279 GUID CommandId;
1280 [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
1281 SIZE_T CreationParametersSizeInBytes;
1282 UINT64 MemoryPoolL0Size; // output
1283 UINT64 MemoryPoolL1Size; // output
1284} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
1285
1286typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
1287{
1288 UINT NodeMask;
1289 GUID CommandId;
1290} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
1291
1292[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
1293interface ID3D12VideoDecoder1
1294 : ID3D12VideoDecoder
1295{
1296 HRESULT GetProtectedResourceSession(
1297 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1298 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1299}
1300
1301[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
1302interface ID3D12VideoDecoderHeap1
1303 : ID3D12VideoDecoderHeap
1304{
1305 HRESULT GetProtectedResourceSession(
1306 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1307 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1308}
1309
1310[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
1311interface ID3D12VideoProcessor1
1312 : ID3D12VideoProcessor
1313{
1314 HRESULT GetProtectedResourceSession(
1315 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1316 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1317}
1318
1319[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
1320interface ID3D12VideoExtensionCommand
1321 : ID3D12Pageable
1322{
1323 D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
1324
1325 HRESULT GetProtectedResourceSession(
1326 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1327 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1328}
1329
1330[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
1331interface ID3D12VideoDevice2
1332 : ID3D12VideoDevice1
1333{
1334 HRESULT CreateVideoDecoder1(
1335 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
1336 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1337 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1,
1338 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
1339 );
1340
1341 HRESULT CreateVideoDecoderHeap1(
1342 [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
1343 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1344 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1,
1345 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
1346 );
1347
1348 HRESULT CreateVideoProcessor1(
1349 UINT NodeMask,
1350 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
1351 UINT NumInputStreamDescs,
1352 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
1353 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1354 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1,
1355 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
1356 );
1357
1358 HRESULT CreateVideoExtensionCommand(
1359 [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,
1360 [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters,
1361 SIZE_T CreationParametersDataSizeInBytes,
1362 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
1363 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand,
1364 [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
1365
1366 HRESULT ExecuteExtensionCommand(
1367 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1368 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1369 SIZE_T ExecutionParametersSizeInBytes,
1370 [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
1371 SIZE_T OutputDataSizeInBytes
1372 );
1373}
1374
1375[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
1376interface ID3D12VideoDecodeCommandList2
1377 : ID3D12VideoDecodeCommandList1
1378{
1379 void SetProtectedResourceSession(
1380 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1381 );
1382
1383 void InitializeExtensionCommand(
1384 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1385 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1386 SIZE_T InitializationParametersSizeInBytes);
1387
1388 void ExecuteExtensionCommand(
1389 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1390 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1391 SIZE_T ExecutionParametersSizeInBytes);
1392}
1393
1394[uuid(2aee8c37-9562-42da-8abf-61efeb2e4513), object, local, pointer_default(unique)]
1395interface ID3D12VideoDecodeCommandList3
1396 : ID3D12VideoDecodeCommandList2
1397{
1398 void Barrier(
1399 UINT32 NumBarrierGroups,
1400 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
1401 );
1402}
1403
1404
1405
1406[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
1407interface ID3D12VideoProcessCommandList2
1408 : ID3D12VideoProcessCommandList1
1409{
1410
1411 void SetProtectedResourceSession(
1412 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1413 );
1414
1415 void InitializeExtensionCommand(
1416 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1417 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1418 SIZE_T InitializationParametersSizeInBytes);
1419
1420 void ExecuteExtensionCommand(
1421 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1422 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1423 SIZE_T ExecutionParametersSizeInBytes);
1424}
1425
1426[uuid(1a0a4ca4-9f08-40ce-9558-b411fd2666ff), object, local, pointer_default(unique)]
1427interface ID3D12VideoProcessCommandList3
1428 : ID3D12VideoProcessCommandList2
1429{
1430 void Barrier(
1431 UINT32 NumBarrierGroups,
1432 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
1433 );
1434}
1435
1436
1437
1438[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
1439interface ID3D12VideoEncodeCommandList1
1440 : ID3D12VideoEncodeCommandList
1441{
1442 void InitializeExtensionCommand(
1443 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1444 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1445 SIZE_T InitializationParametersSizeInBytes);
1446
1447 void ExecuteExtensionCommand(
1448 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1449 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1450 SIZE_T ExecutionParametersSizeInBytes);
1451}
1452
1453cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
1454cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
1455cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1456cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
1457cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
1458cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
1459cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1460cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1461cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
1462cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
1463cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
1464cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
1465cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);")
1466cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);")
1467cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);")
1468cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);")
1469cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);")
1470cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);")
1471cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);")
1472cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);")
1473cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);")
1474cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);")
1475cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
1476cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
1477cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
1478cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
1479cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
1480cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
1481cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
1482cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
1483cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4); ")
1484cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd); ")
1485cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97); ")
1486cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d); ")
1487cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac); ")
1488cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21); ")
1489cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);")
1490
1491///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1492// Video Encoder
1493///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1494
1495typedef enum D3D12_VIDEO_ENCODER_AV1_PROFILE
1496{
1497 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
1498 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
1499 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2,
1500} D3D12_VIDEO_ENCODER_AV1_PROFILE;
1501
1502typedef enum D3D12_VIDEO_ENCODER_AV1_LEVELS
1503{ // These values are defined according to the AV1 codec standard spec
1504 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
1505 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
1506 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
1507 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
1508 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
1509 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
1510 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
1511 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
1512 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
1513 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
1514 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
1515 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
1516 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
1517 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
1518 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
1519 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
1520 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
1521 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
1522 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
1523 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
1524 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
1525 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
1526 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
1527 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23,
1528} D3D12_VIDEO_ENCODER_AV1_LEVELS;
1529
1530typedef enum D3D12_VIDEO_ENCODER_AV1_TIER
1531{
1532 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
1533 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1,
1534} D3D12_VIDEO_ENCODER_AV1_TIER;
1535
1536typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
1537{
1538 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
1539 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
1540} D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
1541
1542typedef enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
1543{
1544 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0x0,
1545 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
1546 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
1547 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
1548 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
1549 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
1550 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
1551 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
1552 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
1553 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
1554 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
1555 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
1556 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
1557 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
1558 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
1559 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
1560 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
1561 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
1562 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
1563 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
1564 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
1565 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
1566 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
1567 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
1568 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
1569 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
1570 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000,
1571} D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
1572cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)")
1573
1574typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE {
1575 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
1576 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
1577 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2,
1578} D3D12_VIDEO_ENCODER_AV1_TX_MODE;
1579
1580typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS {
1581 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0x0,
1582 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4),
1583 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST),
1584 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT),
1585} D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
1586cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)")
1587
1588typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS {
1589 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
1590 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
1591 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
1592 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
1593 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4,
1594} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
1595
1596typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS {
1597 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0x0,
1598 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP),
1599 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH),
1600 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP),
1601 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR),
1602 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE),
1603} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
1604cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)")
1605
1606typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE {
1607 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
1608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
1609 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
1610 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
1611 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4,
1612} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
1613
1614typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE {
1615 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
1616 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
1617 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
1618 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
1619 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
1620 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
1621 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
1622 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
1623 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8,
1624} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
1625
1626typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS {
1627 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
1628 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED),
1629 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q),
1630 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V),
1631 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H),
1632 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U),
1633 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V),
1634 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME),
1635 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP),
1636 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV),
1637} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
1638cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)")
1639
1640typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE {
1641 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
1642 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
1643 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
1644 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3,
1645} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
1646
1647typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE {
1648 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
1649 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
1650 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
1651 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
1652 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4,
1653} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
1654
1655typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS {
1656 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0x0,
1657 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
1658 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
1659 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
1660 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8,
1661} D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
1662cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)")
1663
1664typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
1665{
1666 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
1667 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
1668 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
1669 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3,
1670} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
1671
1672typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS {
1673 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0, // None is supported, reference warp motion arguments are ignored and is_global syntax is false for all references
1674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY),
1675 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION),
1676 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM),
1677 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE),
1678} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
1679cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)")
1680
1681typedef enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS {
1682 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
1683 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
1684 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
1685 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
1686 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
1687 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
1688 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
1689 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
1690 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
1691 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100,
1692} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
1693cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)")
1694
1695typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
1696 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
1697 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
1698 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
1699 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[3][3];
1700 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
1701 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4]; // Different for D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE types
1702 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
1703 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
1704 UINT MaxTemporalLayers;
1705 UINT MaxSpatialLayers;
1706} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
1707
1708typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
1709{
1710 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
1711 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
1712 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
1713 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3,
1714} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
1715
1716typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS {
1717 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0x0,
1718 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME),
1719 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME),
1720 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME),
1721 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME),
1722} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
1723cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)")
1724
1725typedef enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
1726{
1727 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
1728 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1,
1729} D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
1730
1731typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT {
1732 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
1733 UINT MaxUniqueReferencesPerFrame;
1734 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
1735 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
1736} D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
1737
1738typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION {
1739 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
1740 UINT OrderHintBitsMinus1;
1741} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
1742
1743typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
1744{
1745 UINT IntraDistance;
1746 UINT InterFramePeriod;
1747} D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
1748
1749typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
1750{
1751 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
1752 INT TransformationMatrix[8];
1753 BOOL InvalidAffineSet; // Valid or invalid on affine set
1754} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
1755
1756typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
1757{
1758 UINT ReconstructedPictureResourceIndex;
1759 UINT TemporalLayerIndexPlus1;
1760 UINT SpatialLayerIndexPlus1;
1761 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
1762 // Only used if supported in D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS, ignored by driver otherwise
1763 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
1764 UINT OrderHint;
1765 UINT PictureIndex;
1766} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
1767
1768typedef enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
1769{
1770 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0x0,
1771 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
1772 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
1773 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
1774 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
1775 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
1776 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
1777 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
1778 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
1779 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
1780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
1781 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
1782 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
1783 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
1784 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
1785 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000,
1786
1787} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
1788cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)")
1789
1790typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
1791 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3];
1792 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3];
1793} D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
1794
1795typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
1796 UINT64 EnabledFeatures; // D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
1797 // For the enabled features in EnabledFeatures, the array below
1798 // is indexed by D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE - 1
1799 INT64 FeatureValue[8];
1800} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
1801
1802typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
1803 UINT64 UpdateMap;
1804 UINT64 TemporalUpdate;
1805 UINT64 UpdateData;
1806 UINT64 NumSegments;
1807 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8];
1808} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
1809
1810typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP {
1811 UINT SegmentsMapByteSize;
1812 UINT8* pSegmentsMap;
1813} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
1814
1815typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
1816 UINT64 LoopFilterLevel[2];
1817 UINT64 LoopFilterLevelU;
1818 UINT64 LoopFilterLevelV;
1819 UINT64 LoopFilterSharpnessLevel;
1820 UINT64 LoopFilterDeltaEnabled;
1821 // loop_filter_delta_update = UpdateRefDelta || UpdateModeDelta
1822 UINT64 UpdateRefDelta;
1823 INT64 RefDeltas[8];
1824 UINT64 UpdateModeDelta;
1825 INT64 ModeDeltas[2];
1826} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
1827
1828typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
1829 UINT64 DeltaLFPresent;
1830 UINT64 DeltaLFMulti;
1831 UINT64 DeltaLFRes;
1832} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
1833
1834typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
1835 UINT64 BaseQIndex;
1836 INT64 YDCDeltaQ;
1837 INT64 UDCDeltaQ;
1838 INT64 UACDeltaQ;
1839 INT64 VDCDeltaQ;
1840 INT64 VACDeltaQ;
1841 UINT64 UsingQMatrix;
1842 UINT64 QMY;
1843 UINT64 QMU;
1844 UINT64 QMV;
1845} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
1846
1847typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
1848 UINT64 DeltaQPresent;
1849 UINT64 DeltaQRes;
1850} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
1851
1852typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
1853 UINT64 CdefBits;
1854 UINT64 CdefDampingMinus3;
1855 UINT64 CdefYPriStrength[8];
1856 UINT64 CdefUVPriStrength[8];
1857 UINT64 CdefYSecStrength[8];
1858 UINT64 CdefUVSecStrength[8];
1859} D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
1860
1861typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
1862{
1863 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
1864 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
1865 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
1866 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
1867 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
1868 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
1869 UINT SuperResDenominator;
1870 UINT OrderHint;
1871 UINT PictureIndex;
1872 UINT TemporalLayerIndexPlus1;
1873 UINT SpatialLayerIndexPlus1;
1874 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8];
1875 UINT ReferenceIndices[7];
1876 UINT PrimaryRefFrame;
1877 UINT RefreshFrameFlags;
1878 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
1879 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
1880 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
1881 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
1882 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
1883 UINT QPMapValuesCount;
1884 [annotation("_Field_size_full_(QPMapValuesCount)")] INT16* pRateControlQPMap;
1885 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
1886 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
1887} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
1888
1889typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
1890{
1891 UINT64 RowCount;
1892 UINT64 ColCount;
1893 UINT64 RowHeights[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS];
1894 UINT64 ColWidths[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS];
1895 UINT64 ContextUpdateTileId;
1896} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
1897
1898typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
1899{
1900 UINT64 CompoundPredictionType; // D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
1901 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
1902 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
1903 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
1904 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
1905 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
1906 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
1907 UINT64 PrimaryRefFrame; // Aligned to 64 for use of post encode metadata with predication
1908 UINT64 ReferenceIndices[7]; // Aligned to 64 for use of post encode metadata with predication
1909} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
1910
1911//
1912// Rate control API
1913//
1914
1915typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
1916{
1917 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
1918 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
1919 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
1920 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
1921 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4,
1922} D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
1923
1924typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
1925{
1926 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0,
1927 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
1928 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
1929 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
1930 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
1931 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
1932 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
1933 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
1934 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
1935 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100,
1936} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
1937cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)")
1938
1939typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP {
1940 UINT ConstantQP_FullIntracodedFrame;
1941 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
1942 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
1943} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
1944
1945typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 {
1946 UINT ConstantQP_FullIntracodedFrame;
1947 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
1948 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
1949 UINT QualityVsSpeed;
1950} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
1951
1952typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR {
1953 UINT InitialQP;
1954 UINT MinQP;
1955 UINT MaxQP;
1956 UINT64 MaxFrameBitSize;
1957 UINT64 TargetBitRate;
1958 UINT64 VBVCapacity;
1959 UINT64 InitialVBVFullness;
1960} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
1961
1962typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 {
1963 UINT InitialQP;
1964 UINT MinQP;
1965 UINT MaxQP;
1966 UINT64 MaxFrameBitSize;
1967 UINT64 TargetBitRate;
1968 UINT64 VBVCapacity;
1969 UINT64 InitialVBVFullness;
1970 UINT QualityVsSpeed;
1971} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
1972
1973typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR {
1974 UINT InitialQP;
1975 UINT MinQP;
1976 UINT MaxQP;
1977 UINT64 MaxFrameBitSize;
1978 UINT64 TargetAvgBitRate;
1979 UINT64 PeakBitRate;
1980 UINT64 VBVCapacity;
1981 UINT64 InitialVBVFullness;
1982} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
1983
1984typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 {
1985 UINT InitialQP;
1986 UINT MinQP;
1987 UINT MaxQP;
1988 UINT64 MaxFrameBitSize;
1989 UINT64 TargetAvgBitRate;
1990 UINT64 PeakBitRate;
1991 UINT64 VBVCapacity;
1992 UINT64 InitialVBVFullness;
1993 UINT QualityVsSpeed;
1994} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
1995
1996typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR {
1997 UINT InitialQP;
1998 UINT MinQP;
1999 UINT MaxQP;
2000 UINT64 MaxFrameBitSize;
2001 UINT64 TargetAvgBitRate;
2002 UINT64 PeakBitRate;
2003 UINT ConstantQualityTarget;
2004} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
2005
2006typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
2007{
2008 UINT InitialQP;
2009 UINT MinQP;
2010 UINT MaxQP;
2011 UINT64 MaxFrameBitSize;
2012 UINT64 TargetAvgBitRate;
2013 UINT64 PeakBitRate;
2014 UINT ConstantQualityTarget;
2015 UINT64 VBVCapacity;
2016 UINT64 InitialVBVFullness;
2017 UINT QualityVsSpeed;
2018} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
2019
2020typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP {
2021 UINT QualityVsSpeed;
2022} D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
2023
2024typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
2025{
2026 UINT DataSize;
2027 union
2028 {
2029 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP* pConfiguration_CQP;
2030 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR* pConfiguration_CBR;
2031 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR* pConfiguration_VBR;
2032 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR* pConfiguration_QVBR;
2033 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1* pConfiguration_CQP1;
2034 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1* pConfiguration_CBR1;
2035 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1* pConfiguration_VBR1;
2036 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1* pConfiguration_QVBR1;
2037 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP* pConfiguration_AbsoluteQPMap;
2038 };
2039} D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
2040
2041typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL {
2042 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
2043 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
2044 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
2045 DXGI_RATIONAL TargetFrameRate;
2046} D3D12_VIDEO_ENCODER_RATE_CONTROL;
2047
2048//
2049// Video Encoder support API
2050//
2051
2052typedef enum D3D12_VIDEO_ENCODER_CODEC
2053{
2054 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
2055 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
2056 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2,
2057} D3D12_VIDEO_ENCODER_CODEC;
2058
2059typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
2060{
2061 UINT NodeIndex; // input
2062 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2063 BOOL IsSupported; // output
2064} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
2065
2066typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264
2067{
2068 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
2069 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
2070 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2,
2071} D3D12_VIDEO_ENCODER_PROFILE_H264;
2072
2073typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
2074{
2075 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
2076 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
2077 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
2078 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
2079 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
2080 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
2081 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
2082 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
2083 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8,
2084} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
2085
2086typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
2087{
2088 UINT DataSize;
2089 union
2090 {
2091 D3D12_VIDEO_ENCODER_PROFILE_H264* pH264Profile;
2092 D3D12_VIDEO_ENCODER_PROFILE_HEVC* pHEVCProfile;
2093 D3D12_VIDEO_ENCODER_AV1_PROFILE* pAV1Profile;
2094 };
2095} D3D12_VIDEO_ENCODER_PROFILE_DESC;
2096
2097typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264
2098{
2099 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
2100 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
2101 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
2102 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
2103 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
2104 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
2105 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
2106 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
2107 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
2108 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
2109 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
2110 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
2111 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
2112 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
2113 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
2114 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
2115 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
2116 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
2117 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
2118 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19,
2119} D3D12_VIDEO_ENCODER_LEVELS_H264;
2120
2121typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC
2122{
2123 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
2124 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1,
2125} D3D12_VIDEO_ENCODER_TIER_HEVC;
2126
2127typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
2128{
2129 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
2130 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
2131 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
2132 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
2133 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
2134 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
2135 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
2136 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
2137 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
2138 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
2139 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
2140 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
2141 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12,
2142} D3D12_VIDEO_ENCODER_LEVELS_HEVC;
2143
2144typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
2145{
2146 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
2147 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
2148} D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
2149
2150typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
2151{
2152 UINT DataSize;
2153 union
2154 {
2155 D3D12_VIDEO_ENCODER_LEVELS_H264* pH264LevelSetting;
2156 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC* pHEVCLevelSetting;
2157 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS* pAV1LevelSetting;
2158 };
2159} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
2160
2161typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
2162{
2163 UINT NodeIndex; // input
2164 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2165 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2166 BOOL IsSupported; // output
2167 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel; // output
2168 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel; // output
2169} D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
2170
2171typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
2172{
2173 UINT Width;
2174 UINT Height;
2175} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
2176
2177typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
2178{
2179 UINT WidthRatio;
2180 UINT HeightRatio;
2181} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
2182
2183typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
2184{
2185 UINT NodeIndex; // input
2186 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2187 UINT ResolutionRatiosCount; // output
2188} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
2189
2190typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
2191{
2192 UINT NodeIndex; // input
2193 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2194 UINT ResolutionRatiosCount; // input
2195 BOOL IsSupported; // output
2196 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported; // output
2197 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported; // output
2198 UINT ResolutionWidthMultipleRequirement; // output
2199 UINT ResolutionHeightMultipleRequirement; // output
2200 [annotation("_Field_size_full_(ResolutionRatiosCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC* pResolutionRatios;
2201} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
2202
2203typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
2204{
2205 UINT NodeIndex; // input
2206 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2207 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2208 DXGI_FORMAT Format; // input
2209 BOOL IsSupported; // output
2210} D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
2211
2212typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
2213{
2214 UINT NodeIndex; // input
2215 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2216 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode; // input
2217 BOOL IsSupported; // output
2218} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
2219
2220typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
2221{
2222 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
2223 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1,
2224} D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
2225
2226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE {
2227 UINT NodeIndex; // input
2228 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2229 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2230 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2231 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode; // input
2232 BOOL IsSupported; // output
2233} D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
2234
2235typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
2236{
2237 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
2238 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
2239 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
2240 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
2241 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
2242 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
2243 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
2244 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7,
2245} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
2246
2247typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
2248{
2249 UINT NodeIndex; // input
2250 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2251 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2252 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2253 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
2254 BOOL IsSupported; // output
2255} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
2256
2257typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
2258{
2259 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0x0,
2260 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
2261 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
2262 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
2263 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
2264 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
2265 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
2266 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
2267 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80,
2268
2269} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
2270cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)")
2271
2272typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
2273{
2274 BOOL Use128SuperBlocks;
2275 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
2276 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
2277 UINT MinTileRows;
2278 UINT MaxTileRows;
2279 UINT MinTileCols;
2280 UINT MaxTileCols;
2281 UINT MinTileWidth;
2282 UINT MaxTileWidth;
2283 UINT MinTileArea;
2284 UINT MaxTileArea;
2285 UINT TileSizeBytesMinus1;
2286} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
2287
2288typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT {
2289 UINT DataSize;
2290 union
2291 {
2292 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT* pAV1Support;
2293 };
2294} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
2295
2296typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
2297{
2298 UINT NodeIndex; // input
2299 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2300 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2301 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2302 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
2303 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution; // input
2304 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport; // input/output
2305 BOOL IsSupported; // output
2306} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
2307
2308typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
2309{
2310 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0,
2311 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
2312 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
2313 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
2314 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8,
2315} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
2316cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)")
2317
2318typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
2319{
2320 UINT NodeMask;
2321 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
2322 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
2323 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
2324 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
2325 UINT ResolutionsListCount;
2326 [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2327} D3D12_VIDEO_ENCODER_HEAP_DESC;
2328
2329typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE {
2330 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc; // input
2331 BOOL IsSupported; // output
2332 UINT64 MemoryPoolL0Size; // output
2333 UINT64 MemoryPoolL1Size; // output
2334} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
2335
2336typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
2337{
2338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0,
2339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
2340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
2341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
2342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
2343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
2344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
2345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
2346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80,
2347} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
2348cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)")
2349
2350typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES {
2351 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
2352 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
2353 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
2354 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
2355 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
2356 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
2357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6,
2358} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
2359
2360typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS {
2361 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0,
2362 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED),
2363 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES),
2364 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS),
2365 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING),
2366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES),
2367 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES),
2368 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING),
2369} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
2370cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)")
2371
2372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 {
2373 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
2374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
2375} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
2376
2377typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
2378{
2379 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0,
2380 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
2381 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
2382 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
2383 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
2384 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
2385 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
2386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
2387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
2388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
2389 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
2390 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
2391 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
2392 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
2393 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
2394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
2395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
2396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
2397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
2398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
2399 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
2400 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
2401 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
2402 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
2403 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
2404 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
2405 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
2406 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
2407 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
2408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
2409 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
2410 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
2411 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000, // 2^31 - 32 bit integer enum type
2412
2413} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
2414cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)")
2415
2416typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE {
2417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
2418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
2419 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
2420 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3,
2421} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
2422
2423typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE {
2424 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
2425 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
2426 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
2427 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3,
2428} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
2429
2430typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC {
2431 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
2432 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2433 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2434 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2435 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2436 UCHAR max_transform_hierarchy_depth_inter;
2437 UCHAR max_transform_hierarchy_depth_intra;
2438} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
2439
2440
2441typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
2442{
2443 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0x0,
2444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
2445 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2,
2446} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
2447cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)")
2448
2449typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
2450 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
2451 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2452 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2453 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2454 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2455 UCHAR max_transform_hierarchy_depth_inter;
2456 UCHAR max_transform_hierarchy_depth_intra;
2457 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
2458 UINT allowed_log2_sao_offset_scale_luma_values;
2459 UINT allowed_log2_sao_offset_scale_chroma_values;
2460 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
2461 UINT allowed_chroma_qp_offset_list_len_minus1_values;
2462 UINT allowed_cb_qp_offset_list_values[6];
2463 UINT allowed_cr_qp_offset_list_values[6];
2464 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
2465} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
2466
2467typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
2468 UINT DataSize;
2469 union
2470 {
2471 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264* pH264Support;
2472 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC* pHEVCSupport;
2473 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1* pHEVCSupport1;
2474 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT* pAV1Support;
2475 };
2476} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
2477
2478typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
2479 UINT NodeIndex; // input
2480 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2481 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2482 BOOL IsSupported; // output
2483 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits; // input/output
2484} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
2485
2486typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 {
2487 UINT MaxL0ReferencesForP;
2488 UINT MaxL0ReferencesForB;
2489 UINT MaxL1ReferencesForB;
2490 UINT MaxLongTermReferences;
2491 UINT MaxDPBCapacity;
2492} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
2493
2494typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC {
2495 UINT MaxL0ReferencesForP;
2496 UINT MaxL0ReferencesForB;
2497 UINT MaxL1ReferencesForB;
2498 UINT MaxLongTermReferences;
2499 UINT MaxDPBCapacity;
2500} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
2501
2502typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
2503 UINT DataSize;
2504 union
2505 {
2506 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264* pH264Support;
2507 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC* pHEVCSupport;
2508 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT* pAV1Support;
2509 };
2510} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
2511
2512typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
2513 UINT NodeIndex; // input
2514 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2515 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2516 BOOL IsSupported; // output
2517 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport; // output
2518} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
2519
2520typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
2521{
2522 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0,
2523 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
2524 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
2525 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
2526 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
2527 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
2528 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
2529 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
2530 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
2531 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
2532 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
2533 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
2534 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
2535 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
2536 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
2537 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
2538 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
2539 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
2540 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
2541 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
2542 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
2543 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
2544 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
2545 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
2546 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000,
2547} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
2548cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)")
2549
2550typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
2551{
2552 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0,
2553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
2554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
2555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
2556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8,
2557} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
2558cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)")
2559
2560typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES {
2561 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
2562 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
2563 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2,
2564} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
2565
2566typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
2567{
2568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
2569 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
2570 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
2571} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
2572
2573typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
2574{
2575 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0,
2576 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
2577 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
2578 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
2579 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
2580 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
2581 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
2582 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
2583 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
2584 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
2585 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
2586 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
2587 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
2588 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
2589 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
2590 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
2591 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
2592 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000,
2593} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
2594cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)")
2595
2596typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC {
2597 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
2598 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2599 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2600 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2601 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2602 UCHAR max_transform_hierarchy_depth_inter;
2603 UCHAR max_transform_hierarchy_depth_intra;
2604} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
2605
2606typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
2607{
2608 UINT DataSize;
2609 union
2610 {
2611 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264* pH264Config;
2612 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC* pHEVCConfig;
2613 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION* pAV1Config;
2614 };
2615} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
2616
2617typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
2618{
2619 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
2620 UINT IntraRefreshDuration;
2621} D3D12_VIDEO_ENCODER_INTRA_REFRESH;
2622
2623
2624typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
2625{
2626 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
2627 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
2628 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
2629 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
2630 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4,
2631} D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
2632
2633typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
2634{
2635 UINT MaxSubregionsNumber;
2636 UINT MaxIntraRefreshFrameDuration;
2637 UINT SubregionBlockPixelsSize;
2638 UINT QPMapRegionPixelsSize;
2639} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
2640
2641typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
2642{
2643 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0,
2644 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
2645 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
2646 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
2647 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
2648 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
2649 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
2650 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
2651 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
2652 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
2653 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
2654 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
2655 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
2656 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
2657 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000,
2658} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
2659cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)")
2660
2661typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
2662{
2663 UINT GOPLength;
2664 UINT PPicturePeriod;
2665 UCHAR pic_order_cnt_type;
2666 UCHAR log2_max_frame_num_minus4;
2667 UCHAR log2_max_pic_order_cnt_lsb_minus4;
2668} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
2669
2670typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
2671{
2672 UINT GOPLength;
2673 UINT PPicturePeriod;
2674 UCHAR log2_max_pic_order_cnt_lsb_minus4;
2675} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
2676
2677typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
2678{
2679 UINT DataSize;
2680 union
2681 {
2682 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264* pH264GroupOfPictures;
2683 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC* pHEVCGroupOfPictures;
2684 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE* pAV1SequenceStructure;
2685 };
2686} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
2687
2688typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
2689{
2690 // input
2691 UINT NodeIndex;
2692 D3D12_VIDEO_ENCODER_CODEC Codec;
2693 DXGI_FORMAT InputFormat;
2694 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2695 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
2696 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
2697 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
2698 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
2699 UINT ResolutionsListCount;
2700 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2701 UINT MaxReferenceFramesInDPB;
2702
2703 // single value output
2704 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
2705 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
2706 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
2707 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; // assuming max resolution from input list
2708
2709 // resolution dependent output
2710 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
2711} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
2712
2713typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
2714{
2715 // Mutually exclusive options according to selected mode
2716 union
2717 {
2718 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION
2719 UINT MaxBytesPerSlice;
2720
2721 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED
2722 UINT NumberOfCodingUnitsPerSlice;
2723
2724 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION
2725 UINT NumberOfRowsPerSlice;
2726
2727 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME
2728 UINT NumberOfSlicesPerFrame;
2729 };
2730} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
2731
2732typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
2733{
2734 UINT DataSize;
2735 union
2736 {
2737 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_H264;
2738 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_HEVC;
2739 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES* pTilesPartition_AV1;
2740 };
2741
2742} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
2743
2744typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
2745{
2746 /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT */
2747 UINT NodeIndex;
2748 D3D12_VIDEO_ENCODER_CODEC Codec;
2749 DXGI_FORMAT InputFormat;
2750 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2751 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
2752 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
2753 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
2754 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
2755 UINT ResolutionsListCount;
2756 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2757 UINT MaxReferenceFramesInDPB;
2758 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
2759 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
2760 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
2761 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
2762 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
2763
2764 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 */
2765 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; // input
2766 UINT MaxQualityVsSpeed;
2767} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
2768
2769typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
2770{
2771 UINT NodeIndex; // input
2772 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2773 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2774 DXGI_FORMAT InputFormat; // input
2775 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
2776
2777 BOOL IsSupported; // output
2778 UINT CompressedBitstreamBufferAccessAlignment; // output
2779 UINT EncoderMetadataBufferAccessAlignment; // output
2780 UINT MaxEncoderOutputMetadataBufferSize; // output
2781} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
2782
2783//
2784// Video Encoder creation API
2785//
2786
2787typedef enum D3D12_VIDEO_ENCODER_FLAGS
2788{
2789 D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0,
2790} D3D12_VIDEO_ENCODER_FLAGS;
2791cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)")
2792
2793typedef struct D3D12_VIDEO_ENCODER_DESC
2794{
2795 UINT NodeMask;
2796 D3D12_VIDEO_ENCODER_FLAGS Flags;
2797 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
2798 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
2799 DXGI_FORMAT InputFormat;
2800 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2801 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
2802} D3D12_VIDEO_ENCODER_DESC;
2803
2804[uuid(2E0D212D-8DF9-44A6-A770-BB289B182737), object, local, pointer_default(unique)]
2805interface ID3D12VideoEncoder
2806 : ID3D12Pageable
2807{
2808 UINT GetNodeMask();
2809 D3D12_VIDEO_ENCODER_FLAGS GetEncoderFlags();
2810 D3D12_VIDEO_ENCODER_CODEC GetCodec();
2811 HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
2812 HRESULT GetCodecConfiguration([annotation("_Inout_")] D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
2813 DXGI_FORMAT GetInputFormat();
2814 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE GetMaxMotionEstimationPrecision();
2815}
2816
2817[uuid(22B35D96-876A-44C0-B25E-FB8C9C7F1C4A), object, local, pointer_default(unique)]
2818interface ID3D12VideoEncoderHeap
2819 : ID3D12Pageable
2820{
2821 UINT GetNodeMask();
2822 D3D12_VIDEO_ENCODER_HEAP_FLAGS GetEncoderHeapFlags();
2823 D3D12_VIDEO_ENCODER_CODEC GetCodec();
2824 HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
2825 HRESULT GetCodecLevel([annotation("_Inout_")] D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
2826 UINT GetResolutionListCount();
2827 HRESULT GetResolutionList(
2828 const UINT ResolutionsListCount,
2829 [annotation("_Out_writes_(ResolutionsListCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList);
2830}
2831
2832[uuid(4243ADB4-3A32-4666-973C-0CCC5625DC44), object, local, pointer_default(unique)]
2833interface ID3D12VideoDevice3
2834 : ID3D12VideoDevice2
2835{
2836
2837 HRESULT CreateVideoEncoder(
2838 [annotation("_In_")] const D3D12_VIDEO_ENCODER_DESC* pDesc,
2839 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoder,
2840 [annotation("_COM_Outptr_")] void** ppVideoEncoder);
2841
2842 HRESULT CreateVideoEncoderHeap(
2843 [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC* pDesc,
2844 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap,
2845 [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
2846
2847}
2848
2849//
2850// Video Encoder operation API
2851//
2852
2853
2854typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
2855{
2856 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
2857 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
2858 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
2859 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3,
2860} D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
2861
2862
2863typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
2864{
2865 UINT ReconstructedPictureResourceIndex;
2866 BOOL IsLongTermReference;
2867 UINT LongTermPictureIdx;
2868 UINT PictureOrderCountNumber;
2869 UINT FrameDecodingOrderNumber;
2870 UINT TemporalLayerIndex;
2871} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
2872
2873typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
2874{
2875 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0,
2876 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
2877 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
2878} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
2879cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)")
2880
2881typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
2882{
2883 UCHAR memory_management_control_operation;
2884 UINT difference_of_pic_nums_minus1;
2885 UINT long_term_pic_num;
2886 UINT long_term_frame_idx;
2887 UINT max_long_term_frame_idx_plus1;
2888} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
2889
2890typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
2891{
2892 UCHAR modification_of_pic_nums_idc;
2893 UINT abs_diff_pic_num_minus1;
2894 UINT long_term_pic_num;
2895} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
2896
2897typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
2898{
2899 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
2900 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
2901 UINT pic_parameter_set_id;
2902 UINT idr_pic_id;
2903 UINT PictureOrderCountNumber;
2904 UINT FrameDecodingOrderNumber;
2905 UINT TemporalLayerIndex;
2906 UINT List0ReferenceFramesCount;
2907 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2908 UINT List1ReferenceFramesCount;
2909 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2910 UINT ReferenceFramesReconPictureDescriptorsCount;
2911 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* pReferenceFramesReconPictureDescriptors;
2912 UCHAR adaptive_ref_pic_marking_mode_flag;
2913 UINT RefPicMarkingOperationsCommandsCount;
2914 [annotation("_Field_size_full_(RefPicMarkingOperationsCommandsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* pRefPicMarkingOperationsCommands;
2915 UINT List0RefPicModificationsCount;
2916 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList0RefPicModifications;
2917 UINT List1RefPicModificationsCount;
2918 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList1RefPicModifications;
2919 UINT QPMapValuesCount;
2920 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
2921} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
2922
2923typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
2924{
2925 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
2926 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
2927 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
2928 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3,
2929} D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
2930
2931typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
2932{
2933 UINT ReconstructedPictureResourceIndex;
2934 BOOL IsRefUsedByCurrentPic;
2935 BOOL IsLongTermReference;
2936 UINT PictureOrderCountNumber;
2937 UINT TemporalLayerIndex;
2938} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
2939
2940typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
2941{
2942 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0,
2943 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
2944 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
2945 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
2946 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8,
2947} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
2948cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)")
2949
2950typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
2951{
2952 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
2953 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
2954 UINT slice_pic_parameter_set_id;
2955 UINT PictureOrderCountNumber;
2956 UINT TemporalLayerIndex;
2957 UINT List0ReferenceFramesCount;
2958 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2959 UINT List1ReferenceFramesCount;
2960 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2961 UINT ReferenceFramesReconPictureDescriptorsCount;
2962 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
2963 UINT List0RefPicModificationsCount;
2964 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
2965 UINT List1RefPicModificationsCount;
2966 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
2967 UINT QPMapValuesCount;
2968 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
2969} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
2970
2971typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
2972{
2973 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
2974 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
2975 UINT slice_pic_parameter_set_id;
2976 UINT PictureOrderCountNumber;
2977 UINT TemporalLayerIndex;
2978 UINT List0ReferenceFramesCount;
2979 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2980 UINT List1ReferenceFramesCount;
2981 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2982 UINT ReferenceFramesReconPictureDescriptorsCount;
2983 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
2984 UINT List0RefPicModificationsCount;
2985 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
2986 UINT List1RefPicModificationsCount;
2987 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
2988 UINT QPMapValuesCount;
2989 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
2990 UCHAR diff_cu_chroma_qp_offset_depth;
2991 UCHAR log2_sao_offset_scale_luma;
2992 UCHAR log2_sao_offset_scale_chroma;
2993 UCHAR log2_max_transform_skip_block_size_minus2;
2994 UCHAR chroma_qp_offset_list_len_minus1;
2995 CHAR cb_qp_offset_list[6];
2996 CHAR cr_qp_offset_list[6];
2997} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
2998
2999typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
3000{
3001 UINT DataSize;
3002 union
3003 {
3004 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
3005 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC* pHEVCPicData;
3006 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1* pHEVCPicData1;
3007 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
3008 };
3009} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
3010
3011typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
3012{
3013 UINT NumTexture2Ds;
3014 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
3015 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
3016} D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
3017
3018typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
3019{
3020 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0,
3021 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
3022 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
3023 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
3024 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8,
3025} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
3026cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)")
3027
3028typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
3029{
3030 UINT IntraRefreshFrameIndex;
3031 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
3032 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
3033 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
3034} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
3035
3036typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
3037{
3038 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0,
3039 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
3040 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
3041 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
3042 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
3043 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10,
3044} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
3045cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)")
3046
3047typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
3048{
3049 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
3050 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
3051 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3052 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
3053 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
3054 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
3055 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3056} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
3057
3058//
3059// Video Encoder operation commands API
3060//
3061
3062typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
3063{
3064 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
3065 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
3066 ID3D12Resource *pInputFrame;
3067 UINT InputFrameSubresource;
3068 UINT CurrentFrameBitstreamMetadataSize;
3069} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
3070
3071typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
3072{
3073 ID3D12Resource* pBuffer;
3074 UINT64 FrameStartOffset;
3075} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
3076
3077typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
3078{
3079 ID3D12Resource *pReconstructedPicture;
3080 UINT ReconstructedPictureSubresource;
3081} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
3082
3083typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
3084{
3085 UINT64 bSize;
3086 UINT64 bStartOffset;
3087 UINT64 bHeaderSize;
3088} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
3089
3090typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
3091{
3092 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0,
3093 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
3094 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
3095 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
3096 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
3097 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10,
3098} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
3099cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)")
3100
3101typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
3102{
3103 UINT64 AverageQP;
3104 UINT64 IntraCodingUnitsCount;
3105 UINT64 InterCodingUnitsCount;
3106 UINT64 SkipCodingUnitsCount;
3107 UINT64 AverageMotionEstimationXDirection;
3108 UINT64 AverageMotionEstimationYDirection;
3109} D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
3110
3111typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
3112{
3113 UINT64 EncodeErrorFlags; // D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
3114 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
3115 UINT64 EncodedBitstreamWrittenBytesCount;
3116 UINT64 WrittenSubregionsCount;
3117} D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
3118
3119typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
3120{
3121 ID3D12Resource* pBuffer;
3122 UINT64 Offset;
3123} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
3124
3125typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
3126{
3127 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
3128 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
3129 DXGI_FORMAT EncoderInputFormat;
3130 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
3131 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
3132} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
3133
3134typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
3135{
3136 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
3137} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
3138
3139typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
3140{
3141 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
3142 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
3143 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
3144} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
3145
3146[uuid(895491e2-e701-46a9-9a1f-8d3480ed867a), object, local, pointer_default(unique)]
3147interface ID3D12VideoEncodeCommandList2
3148 : ID3D12VideoEncodeCommandList1
3149{
3150 void EncodeFrame(
3151 [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
3152 [annotation("_In_")] ID3D12VideoEncoderHeap *pHeap,
3153 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
3154 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
3155
3156 void ResolveEncoderOutputMetadata(
3157 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS* pInputArguments,
3158 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS* pOutputArguments);
3159}
3160
3161
3162[uuid(7f027b22-1515-4e85-aa0d-026486580576), object, local, pointer_default(unique)]
3163interface ID3D12VideoEncodeCommandList3
3164 : ID3D12VideoEncodeCommandList2
3165{
3166
3167 void Barrier(
3168 UINT32 NumBarrierGroups,
3169 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
3170 );
3171}
3172
3173
3174
3175typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
3176{
3177 UINT NodeMask;
3178 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
3179 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
3180 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
3181 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
3182 UINT ResolutionsListCount;
3183 [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
3184 UINT Pow2DownscaleFactor;
3185} D3D12_VIDEO_ENCODER_HEAP_DESC1;
3186
3187[uuid(ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9), object, local, pointer_default(unique)]
3188interface ID3D12VideoEncoderHeap1
3189 : ID3D12VideoEncoderHeap
3190{
3191 UINT GetPow2DownscaleFactor();
3192}
3193
3194[uuid(e59ad09e-f1ae-42bb-8983-9f6e5586c4eb), object, local, pointer_default(unique)]
3195interface ID3D12VideoDevice4
3196 : ID3D12VideoDevice3
3197{
3198 HRESULT CreateVideoEncoderHeap1(
3199 [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC1* pDesc,
3200 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap1,
3201 [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
3202
3203}
3204
3205typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1 {
3206 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc; // input
3207 BOOL IsSupported; // output
3208 UINT64 MemoryPoolL0Size; // output
3209 UINT64 MemoryPoolL1Size; // output
3210} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
3211
3212typedef enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
3213{
3214 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0x0,
3215 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
3216 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
3217 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
3218 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
3219 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10,
3220} D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
3221cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )")
3222
3223// Binary back-compat with D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
3224typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
3225{
3226 UINT NodeIndex; // input
3227 D3D12_VIDEO_ENCODER_CODEC Codec; // input
3228 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
3229 DXGI_FORMAT InputFormat; // input
3230 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
3231
3232 BOOL IsSupported; // output
3233 UINT CompressedBitstreamBufferAccessAlignment; // output
3234 UINT EncoderMetadataBufferAccessAlignment; // output
3235 UINT MaxEncoderOutputMetadataBufferSize; // output
3236 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata; // input
3237 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; // input
3238 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions; // output
3239 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions; // output
3240 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions; // output
3241 UINT EncoderOutputMetadataFramePSNRComponentsNumber; // output
3242 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber; // output
3243 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize; // output
3244} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
3245
3246typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
3247{
3248 float PSNRY;
3249 float PSNRU;
3250 float PSNRV;
3251} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
3252
3253typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
3254{
3255 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
3256 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1,
3257} D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
3258
3259typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
3260{
3261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
3262 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1,
3263} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
3264
3265typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
3266{
3267 D3D12_VIDEO_ENCODER_CODEC Codec;
3268 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3269 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
3270 DXGI_FORMAT InputFormat;
3271 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
3272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3273 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3274 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3275} D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
3276
3277typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
3278{
3279 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
3280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
3281 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2,
3282} D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
3283
3284typedef enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
3285{
3286 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
3287 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
3288 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2,
3289} D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
3290
3291// D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT
3292typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
3293{
3294 UINT NodeIndex;
3295 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3296 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3297 BOOL IsSupported;
3298 UINT MapSourcePreferenceRanking;
3299 UINT BlockSize;
3300} D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
3301
3302typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
3303{
3304 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0x0,
3305 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
3306 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
3307 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4,
3308} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
3309cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )")
3310
3311// D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS
3312typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
3313{
3314 UINT NodeIndex;
3315 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3316 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3317 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3318 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
3319 UINT MapSourcePreferenceRanking;
3320} D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
3321
3322typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
3323{
3324 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
3325 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
3326 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2,
3327} D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
3328
3329typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS {
3330 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0x0,
3331 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL), // 0x1
3332 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL), // 0x2
3333 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL), // 0x4
3334} D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
3335cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )")
3336
3337typedef enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
3338{
3339 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0x0,
3340 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
3341 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
3342 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4,
3343
3344
3345} D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
3346cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )")
3347
3348// D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH
3349typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
3350{
3351 UINT NodeIndex;
3352 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3353 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3354 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3355 BOOL BidirectionalRefFrameEnabled;
3356 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
3357 UINT MaxMotionHints;
3358 UINT MinDeviation;
3359 UINT MaxDeviation;
3360 UINT MapSourcePreferenceRanking;
3361 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
3362} D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
3363
3364// D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
3365typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
3366{
3367 UINT NodeIndex;
3368 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3369 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
3370 BOOL IsSupported;
3371 UINT64 MaxResolvedBufferAllocationSize;
3372} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
3373
3374typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
3375{
3376 BOOL Enabled;
3377 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3378} D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
3379
3380typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
3381{
3382 // Reuse existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1.QPMapRegionPixelsSize for BlockSize
3383 UINT MapSourcePreferenceRanking;
3384} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
3385
3386typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
3387{
3388 BOOL Enabled;
3389 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3390 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3391} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
3392
3393typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
3394{
3395 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
3396 UINT MapSourcePreferenceRanking;
3397} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
3398
3399typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
3400{
3401 BOOL Enabled;
3402 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3403 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3404 BOOL BidirectionalRefFrameEnabled;
3405} D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
3406
3407typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
3408{
3409 UINT MaxMotionHints;
3410 UINT MinDeviation;
3411 UINT MaxDeviation;
3412 UINT MapSourcePreferenceRanking;
3413 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
3414 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
3415} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
3416
3417typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
3418{
3419 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0x0,
3420 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
3421 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
3422 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
3423 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
3424 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
3425 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
3426
3427 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED =
3428 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED |
3429 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED |
3430 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED,
3431
3432} D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
3433cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )")
3434
3435// D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
3436typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
3437{
3438 UINT NodeIndex;
3439 D3D12_VIDEO_ENCODER_CODEC Codec;
3440 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3441 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
3442 DXGI_FORMAT InputFormat;
3443 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
3444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3445 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3446 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3447 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
3448 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
3449 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
3450 UINT Pow2DownscaleFactor;
3451 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
3452} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
3453
3454typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
3455{
3456 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
3457} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
3458
3459typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
3460{
3461 /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS */
3462 UINT MaxSubregionsNumber;
3463 UINT MaxIntraRefreshFrameDuration;
3464 UINT SubregionBlockPixelsSize;
3465 UINT QPMapRegionPixelsSize;
3466
3467 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 */
3468 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
3469 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
3470 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
3471 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
3472} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
3473
3474typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
3475{
3476 BOOL Enabled;
3477 UINT Pow2DownscaleFactor;
3478} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
3479
3480// D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2
3481typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
3482{
3483 /*
3484 * Below params match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 binary size
3485 * please note pResolutionDependentSupport type changes from D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS to D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
3486 */
3487
3488 UINT NodeIndex;
3489 D3D12_VIDEO_ENCODER_CODEC Codec;
3490 DXGI_FORMAT InputFormat;
3491 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3492 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3493 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3494 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
3495 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3496 UINT ResolutionsListCount;
3497 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
3498 UINT MaxReferenceFramesInDPB;
3499 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
3500 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
3501 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
3502 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
3503 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1* pResolutionDependentSupport;
3504 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3505 UINT MaxQualityVsSpeed;
3506
3507 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2 */
3508 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
3509 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
3510 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
3511 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
3512} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
3513
3514typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
3515{
3516 BOOL FullFrameIdentical;
3517 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3518 UINT NumDirtyRects;
3519 [annotation("_Field_size_full_(NumDirtyRects)")] RECT* pDirtyRects;
3520 UINT SourceDPBFrameReference;
3521} D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
3522
3523typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
3524{
3525 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3526 union
3527 {
3528 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE
3529 ID3D12Resource* pOpaqueLayoutBuffer;
3530 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER
3531 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO* pCPUBuffer;
3532 };
3533} D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
3534
3535typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
3536{
3537 ID3D12Resource* pOpaqueQuantizationMap;
3538} D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
3539
3540typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
3541{
3542 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3543 UINT SearchDeviationLimit;
3544} D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
3545
3546typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
3547{
3548 POINT SourcePoint;
3549 RECT DestRect;
3550} D3D12_VIDEO_ENCODER_MOVE_RECT;
3551
3552typedef enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
3553{
3554 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0x0,
3555 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1,
3556} D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
3557
3558typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
3559{
3560 UINT NumMoveRegions;
3561 [annotation("_Field_size_full_(NumMoveRegions)")] D3D12_VIDEO_ENCODER_MOVE_RECT* pMoveRegions;
3562 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
3563 UINT SourceDPBFrameReference;
3564 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
3565 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
3566} D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
3567
3568typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
3569{
3570 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3571 union
3572 {
3573 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE
3574 ID3D12Resource* pOpaqueLayoutBuffer;
3575 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER
3576 D3D12_VIDEO_ENCODER_MOVEREGION_INFO* pCPUBuffer;
3577 };
3578} D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
3579
3580typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
3581{
3582 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
3583 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
3584 UINT slice_pic_parameter_set_id;
3585 UINT PictureOrderCountNumber;
3586 UINT TemporalLayerIndex;
3587 UINT List0ReferenceFramesCount;
3588 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
3589 UINT List1ReferenceFramesCount;
3590 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
3591 UINT ReferenceFramesReconPictureDescriptorsCount;
3592 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
3593 UINT List0RefPicModificationsCount;
3594 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
3595 UINT List1RefPicModificationsCount;
3596 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
3597 UINT QPMapValuesCount;
3598 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
3599 UCHAR diff_cu_chroma_qp_offset_depth;
3600 UCHAR log2_sao_offset_scale_luma;
3601 UCHAR log2_sao_offset_scale_chroma;
3602 UCHAR log2_max_transform_skip_block_size_minus2;
3603 UCHAR chroma_qp_offset_list_len_minus1;
3604 CHAR cb_qp_offset_list[6];
3605 CHAR cr_qp_offset_list[6];
3606 UINT num_ref_idx_l0_active_minus1;
3607 UINT num_ref_idx_l1_active_minus1;
3608} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
3609
3610typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
3611{
3612 UINT DataSize;
3613 union
3614 {
3615 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
3616 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2* pHEVCPicData;
3617 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
3618 };
3619} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
3620
3621typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
3622{
3623 ID3D12Resource* pDownscaledFrame;
3624 UINT64 Subresource;
3625 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
3626} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
3627
3628typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
3629{
3630 UINT IntraRefreshFrameIndex;
3631 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
3632 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
3633 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
3634 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
3635 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
3636 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
3637 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
3638} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
3639
3640typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
3641{
3642 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
3643 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
3644 ID3D12Resource* pInputFrame;
3645 UINT InputFrameSubresource;
3646 UINT CurrentFrameBitstreamMetadataSize;
3647 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
3648} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
3649
3650typedef enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
3651{
3652 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
3653 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1,
3654} D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
3655
3656typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
3657{
3658 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
3659 UINT ExpectedSubregionCount;
3660 UINT64* pSubregionBitstreamsBaseOffsets;
3661 ID3D12Resource** ppSubregionBitstreams;
3662 ID3D12Resource** ppSubregionSizes;
3663 ID3D12Resource** ppSubregionOffsets;
3664 ID3D12Fence** ppSubregionFences;
3665 UINT64* pSubregionFenceValues;
3666} D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
3667
3668typedef enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
3669{
3670 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
3671 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1,
3672} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
3673
3674typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
3675{
3676 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
3677 union
3678 {
3679 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
3680 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
3681 };
3682} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
3683
3684typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
3685{
3686 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
3687 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
3688 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
3689 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
3690} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
3691
3692typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
3693{
3694 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
3695 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
3696 DXGI_FORMAT EncoderInputFormat;
3697 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
3698 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
3699 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
3700 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3701} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
3702
3703typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
3704{
3705 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
3706 ID3D12Resource* pOutputQPMap;
3707 ID3D12Resource* pOutputSATDMap;
3708 ID3D12Resource* pOutputBitAllocationMap;
3709 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
3710 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
3711} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
3712
3713typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
3714{
3715 ID3D12Resource* pQuantizationMap;
3716} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
3717
3718typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
3719{
3720 BOOL FullFrameIdentical;
3721 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3722 ID3D12Resource* pDirtyRegionsMap;
3723 UINT SourceDPBFrameReference;
3724} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
3725
3726typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
3727{
3728 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
3729 UINT NumHintsPerPixel;
3730 [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMaps;
3731 [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsSubresources;
3732 [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMapsMetadata;
3733 [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsMetadataSubresources;
3734 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
3735 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
3736} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
3737
3738typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
3739{
3740 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
3741 union
3742 {
3743 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX
3744 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
3745 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS
3746 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
3747 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS
3748 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
3749 };
3750} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
3751
3752typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
3753{
3754 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3755 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
3756} D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
3757
3758typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
3759{
3760 ID3D12Resource* pOpaqueLayoutBuffer;
3761} D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
3762
3763// Change this interface UUID when changing the base class in the inheritance
3764[uuid(69aeb5b7-55f2-4012-8b73-3a88d65a204c), object, local, pointer_default(unique)]
3765interface ID3D12VideoEncodeCommandList4
3766 : ID3D12VideoEncodeCommandList3
3767{
3768 void EncodeFrame1(
3769 [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
3770 [annotation("_In_")] ID3D12VideoEncoderHeap1* pHeap,
3771 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1* pInputArguments,
3772 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1* pOutputArguments);
3773
3774 void ResolveEncoderOutputMetadata1(
3775 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1* pInputArguments,
3776 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1* pOutputArguments);
3777
3778 void ResolveInputParamLayout(
3779 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS* pInputArguments,
3780 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS* pOutputArguments);
3781}
3782
3783
3784
3785cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
3786#pragma endregion
3787
3788
3789cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
3790cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
3791cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
3792cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
3793cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
3794cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
3795cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
3796cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
3797cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
3798cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
3799cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
3800cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
3801cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
3802cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
3803cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
3804cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
3805cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
3806cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
3807cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);" )
3808cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
3809cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);" )
3810cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
3811cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);" )
3812cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);" )
3813cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);" )
3814cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);" )
3815cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);" )
3816cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);" )
3817cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);" )
3818cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.h
new file mode 100644
index 0000000..2e2418d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.h
@@ -0,0 +1,1133 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13/* @@MIDL_FILE_HEADING( ) */
14
15
16
17/* verify that the <rpcndr.h> version is high enough to compile this file*/
18#ifndef __REQUIRED_RPCNDR_H_VERSION__
19#define __REQUIRED_RPCNDR_H_VERSION__ 500
20#endif
21
22/* verify that the <rpcsal.h> version is high enough to compile this file*/
23#ifndef __REQUIRED_RPCSAL_H_VERSION__
24#define __REQUIRED_RPCSAL_H_VERSION__ 100
25#endif
26
27#include "rpc.h"
28#include "rpcndr.h"
29
30#ifndef __RPCNDR_H_VERSION__
31#error this stub requires an updated version of <rpcndr.h>
32#endif /* __RPCNDR_H_VERSION__ */
33
34#ifndef COM_NO_WINDOWS_H
35#include "windows.h"
36#include "ole2.h"
37#endif /*COM_NO_WINDOWS_H*/
38
39#ifndef __d3dcommon_h__
40#define __d3dcommon_h__
41
42#if defined(_MSC_VER) && (_MSC_VER >= 1020)
43#pragma once
44#endif
45
46#ifndef DECLSPEC_XFGVIRT
47#if defined(_CONTROL_FLOW_GUARD_XFG)
48#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
49#else
50#define DECLSPEC_XFGVIRT(base, func)
51#endif
52#endif
53
54/* Forward Declarations */
55
56#ifndef __ID3D10Blob_FWD_DEFINED__
57#define __ID3D10Blob_FWD_DEFINED__
58typedef interface ID3D10Blob ID3D10Blob;
59
60#endif /* __ID3D10Blob_FWD_DEFINED__ */
61
62
63#ifndef __ID3DDestructionNotifier_FWD_DEFINED__
64#define __ID3DDestructionNotifier_FWD_DEFINED__
65typedef interface ID3DDestructionNotifier ID3DDestructionNotifier;
66
67#endif /* __ID3DDestructionNotifier_FWD_DEFINED__ */
68
69
70/* header files for imported files */
71#include "oaidl.h"
72#include "ocidl.h"
73
74#ifdef __cplusplus
75extern "C"{
76#endif
77
78
79/* interface __MIDL_itf_d3dcommon_0000_0000 */
80/* [local] */
81
82typedef
83enum D3D_DRIVER_TYPE
84 {
85 D3D_DRIVER_TYPE_UNKNOWN = 0,
86 D3D_DRIVER_TYPE_HARDWARE = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
87 D3D_DRIVER_TYPE_REFERENCE = ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
88 D3D_DRIVER_TYPE_NULL = ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
89 D3D_DRIVER_TYPE_SOFTWARE = ( D3D_DRIVER_TYPE_NULL + 1 ) ,
90 D3D_DRIVER_TYPE_WARP = ( D3D_DRIVER_TYPE_SOFTWARE + 1 )
91 } D3D_DRIVER_TYPE;
92
93typedef
94enum D3D_FEATURE_LEVEL
95 {
96 D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
97 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
98 D3D_FEATURE_LEVEL_9_1 = 0x9100,
99 D3D_FEATURE_LEVEL_9_2 = 0x9200,
100 D3D_FEATURE_LEVEL_9_3 = 0x9300,
101 D3D_FEATURE_LEVEL_10_0 = 0xa000,
102 D3D_FEATURE_LEVEL_10_1 = 0xa100,
103 D3D_FEATURE_LEVEL_11_0 = 0xb000,
104 D3D_FEATURE_LEVEL_11_1 = 0xb100,
105 D3D_FEATURE_LEVEL_12_0 = 0xc000,
106 D3D_FEATURE_LEVEL_12_1 = 0xc100,
107 D3D_FEATURE_LEVEL_12_2 = 0xc200
108 } D3D_FEATURE_LEVEL;
109
110#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048
111#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096
112#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
113#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
114#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
115#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
116#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
117#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
118#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
119#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
120#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
121#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
122#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128
123#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048
124#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192
125typedef
126enum D3D_PRIMITIVE_TOPOLOGY
127 {
128 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
129 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
130 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
131 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
132 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
133 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
134 D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
135 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
136 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
137 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
138 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
139 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
140 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
141 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
142 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
143 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
144 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
145 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
146 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
147 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
148 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
149 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
150 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
151 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
152 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
153 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
154 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
155 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
156 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
157 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
158 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
159 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
160 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
161 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
162 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
163 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
164 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
165 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
166 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
167 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
168 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
169 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
170 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
171 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
172 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
173 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
174 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
175 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
176 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
177 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
178 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
179 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
180 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
181 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
182 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
183 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
184 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
185 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
186 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
187 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
188 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
189 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
190 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
191 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
192 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
193 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
194 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
195 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
196 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
197 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
198 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
199 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
200 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
201 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
202 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
203 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
204 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
205 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
206 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
207 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
208 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
209 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
210 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
211 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
212 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
213 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
214 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
215 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
216 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
217 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
218 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
219 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
220 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
221 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
222 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
223 } D3D_PRIMITIVE_TOPOLOGY;
224
225typedef
226enum D3D_PRIMITIVE
227 {
228 D3D_PRIMITIVE_UNDEFINED = 0,
229 D3D_PRIMITIVE_POINT = 1,
230 D3D_PRIMITIVE_LINE = 2,
231 D3D_PRIMITIVE_TRIANGLE = 3,
232 D3D_PRIMITIVE_LINE_ADJ = 6,
233 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
234 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
235 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
236 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
237 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
238 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
239 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
240 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
241 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
242 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
243 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
244 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
245 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
246 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
247 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
248 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
249 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
250 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
251 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
252 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
253 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
254 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
255 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
256 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
257 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
258 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
259 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
260 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
261 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
262 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
263 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
264 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
265 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
266 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
267 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
268 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
269 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
270 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
271 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
272 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
273 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
274 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
275 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
276 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
277 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
278 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
279 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
280 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
281 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
282 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
283 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
284 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
285 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
286 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
287 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
288 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
289 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
290 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
291 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
292 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
293 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
294 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
295 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
296 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
297 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
298 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
299 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
300 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
301 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
302 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
303 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
304 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
305 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
306 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
307 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
308 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
309 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
310 } D3D_PRIMITIVE;
311
312typedef
313enum D3D_SRV_DIMENSION
314 {
315 D3D_SRV_DIMENSION_UNKNOWN = 0,
316 D3D_SRV_DIMENSION_BUFFER = 1,
317 D3D_SRV_DIMENSION_TEXTURE1D = 2,
318 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
319 D3D_SRV_DIMENSION_TEXTURE2D = 4,
320 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
321 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
322 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
323 D3D_SRV_DIMENSION_TEXTURE3D = 8,
324 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
325 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
326 D3D_SRV_DIMENSION_BUFFEREX = 11,
327 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
328 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
329 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
330 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
331 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
332 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
333 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
334 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
335 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
336 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
337 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
338 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
339 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
340 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
341 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
342 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
343 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
344 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
345 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
346 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
347 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
348 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
349 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
350 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
351 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
352 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
353 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
354 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
355 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
356 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
357 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
358 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
359 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX
360 } D3D_SRV_DIMENSION;
361
362#define D3D_SHADER_FEATURE_DOUBLES 0x00001
363#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002
364#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004
365#define D3D_SHADER_FEATURE_64_UAVS 0x00008
366#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010
367#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020
368#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040
369#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080
370#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100
371#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200
372#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400
373#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800
374#define D3D_SHADER_FEATURE_ROVS 0x01000
375#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000
376#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000
377#define D3D_SHADER_FEATURE_INT64_OPS 0x08000
378#define D3D_SHADER_FEATURE_VIEW_ID 0x10000
379#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000
380#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000
381#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000
382#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000
383#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000
384#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000
385#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000
386#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000
387#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000
388#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000
389#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000
390#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
391#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000
392#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000
393#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
394#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull
395#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull
396#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull
397typedef struct _D3D_SHADER_MACRO
398 {
399 LPCSTR Name;
400 LPCSTR Definition;
401 } D3D_SHADER_MACRO;
402
403typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
404
405DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
406
407
408extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec;
409extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec;
410
411#ifndef __ID3D10Blob_INTERFACE_DEFINED__
412#define __ID3D10Blob_INTERFACE_DEFINED__
413
414/* interface ID3D10Blob */
415/* [unique][local][object][uuid] */
416
417
418EXTERN_C const IID IID_ID3D10Blob;
419
420#if defined(__cplusplus) && !defined(CINTERFACE)
421
422 MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
423 ID3D10Blob : public IUnknown
424 {
425 public:
426 virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0;
427
428 virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0;
429
430 };
431
432
433#else /* C style interface */
434
435 typedef struct ID3D10BlobVtbl
436 {
437 BEGIN_INTERFACE
438
439 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
440 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
441 ID3D10Blob * This,
442 /* [in] */ REFIID riid,
443 /* [annotation][iid_is][out] */
444 _COM_Outptr_ void **ppvObject);
445
446 DECLSPEC_XFGVIRT(IUnknown, AddRef)
447 ULONG ( STDMETHODCALLTYPE *AddRef )(
448 ID3D10Blob * This);
449
450 DECLSPEC_XFGVIRT(IUnknown, Release)
451 ULONG ( STDMETHODCALLTYPE *Release )(
452 ID3D10Blob * This);
453
454 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferPointer)
455 LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )(
456 ID3D10Blob * This);
457
458 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferSize)
459 SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )(
460 ID3D10Blob * This);
461
462 END_INTERFACE
463 } ID3D10BlobVtbl;
464
465 interface ID3D10Blob
466 {
467 CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
468 };
469
470
471
472#ifdef COBJMACROS
473
474
475#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \
476 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
477
478#define ID3D10Blob_AddRef(This) \
479 ( (This)->lpVtbl -> AddRef(This) )
480
481#define ID3D10Blob_Release(This) \
482 ( (This)->lpVtbl -> Release(This) )
483
484
485#define ID3D10Blob_GetBufferPointer(This) \
486 ( (This)->lpVtbl -> GetBufferPointer(This) )
487
488#define ID3D10Blob_GetBufferSize(This) \
489 ( (This)->lpVtbl -> GetBufferSize(This) )
490
491#endif /* COBJMACROS */
492
493
494#endif /* C style interface */
495
496
497
498
499#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */
500
501
502/* interface __MIDL_itf_d3dcommon_0000_0001 */
503/* [local] */
504
505typedef interface ID3D10Blob* LPD3D10BLOB;
506typedef ID3D10Blob ID3DBlob;
507
508typedef ID3DBlob* LPD3DBLOB;
509#define IID_ID3DBlob IID_ID3D10Blob
510typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )(
511 void *pData);
512
513
514
515extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec;
516extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec;
517
518#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__
519#define __ID3DDestructionNotifier_INTERFACE_DEFINED__
520
521/* interface ID3DDestructionNotifier */
522/* [unique][local][object][uuid] */
523
524
525EXTERN_C const IID IID_ID3DDestructionNotifier;
526
527#if defined(__cplusplus) && !defined(CINTERFACE)
528
529 MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3")
530 ID3DDestructionNotifier : public IUnknown
531 {
532 public:
533 virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback(
534 /* [annotation] */
535 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
536 /* [annotation] */
537 _In_ void *pData,
538 /* [annotation] */
539 _Out_ UINT *pCallbackID) = 0;
540
541 virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback(
542 /* [annotation] */
543 _In_ UINT callbackID) = 0;
544
545 };
546
547
548#else /* C style interface */
549
550 typedef struct ID3DDestructionNotifierVtbl
551 {
552 BEGIN_INTERFACE
553
554 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
555 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
556 ID3DDestructionNotifier * This,
557 /* [in] */ REFIID riid,
558 /* [annotation][iid_is][out] */
559 _COM_Outptr_ void **ppvObject);
560
561 DECLSPEC_XFGVIRT(IUnknown, AddRef)
562 ULONG ( STDMETHODCALLTYPE *AddRef )(
563 ID3DDestructionNotifier * This);
564
565 DECLSPEC_XFGVIRT(IUnknown, Release)
566 ULONG ( STDMETHODCALLTYPE *Release )(
567 ID3DDestructionNotifier * This);
568
569 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, RegisterDestructionCallback)
570 HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )(
571 ID3DDestructionNotifier * This,
572 /* [annotation] */
573 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
574 /* [annotation] */
575 _In_ void *pData,
576 /* [annotation] */
577 _Out_ UINT *pCallbackID);
578
579 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, UnregisterDestructionCallback)
580 HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )(
581 ID3DDestructionNotifier * This,
582 /* [annotation] */
583 _In_ UINT callbackID);
584
585 END_INTERFACE
586 } ID3DDestructionNotifierVtbl;
587
588 interface ID3DDestructionNotifier
589 {
590 CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl;
591 };
592
593
594
595#ifdef COBJMACROS
596
597
598#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \
599 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
600
601#define ID3DDestructionNotifier_AddRef(This) \
602 ( (This)->lpVtbl -> AddRef(This) )
603
604#define ID3DDestructionNotifier_Release(This) \
605 ( (This)->lpVtbl -> Release(This) )
606
607
608#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \
609 ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) )
610
611#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \
612 ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) )
613
614#endif /* COBJMACROS */
615
616
617#endif /* C style interface */
618
619
620
621
622#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */
623
624
625/* interface __MIDL_itf_d3dcommon_0000_0002 */
626/* [local] */
627
628typedef
629enum _D3D_INCLUDE_TYPE
630 {
631 D3D_INCLUDE_LOCAL = 0,
632 D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) ,
633 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
634 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
635 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
636 } D3D_INCLUDE_TYPE;
637
638typedef interface ID3DInclude ID3DInclude;
639#undef INTERFACE
640#define INTERFACE ID3DInclude
641DECLARE_INTERFACE(ID3DInclude)
642{
643 STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
644 STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
645};
646typedef ID3DInclude* LPD3DINCLUDE;
647typedef
648enum _D3D_SHADER_VARIABLE_CLASS
649 {
650 D3D_SVC_SCALAR = 0,
651 D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) ,
652 D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) ,
653 D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) ,
654 D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
655 D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) ,
656 D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) ,
657 D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
658 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
659 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
660 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
661 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
662 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
663 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
664 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
665 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
666 D3D_SVC_FORCE_DWORD = 0x7fffffff
667 } D3D_SHADER_VARIABLE_CLASS;
668
669typedef
670enum _D3D_SHADER_VARIABLE_FLAGS
671 {
672 D3D_SVF_USERPACKED = 1,
673 D3D_SVF_USED = 2,
674 D3D_SVF_INTERFACE_POINTER = 4,
675 D3D_SVF_INTERFACE_PARAMETER = 8,
676 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
677 D3D10_SVF_USED = D3D_SVF_USED,
678 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
679 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
680 D3D_SVF_FORCE_DWORD = 0x7fffffff
681 } D3D_SHADER_VARIABLE_FLAGS;
682
683typedef
684enum _D3D_SHADER_VARIABLE_TYPE
685 {
686 D3D_SVT_VOID = 0,
687 D3D_SVT_BOOL = 1,
688 D3D_SVT_INT = 2,
689 D3D_SVT_FLOAT = 3,
690 D3D_SVT_STRING = 4,
691 D3D_SVT_TEXTURE = 5,
692 D3D_SVT_TEXTURE1D = 6,
693 D3D_SVT_TEXTURE2D = 7,
694 D3D_SVT_TEXTURE3D = 8,
695 D3D_SVT_TEXTURECUBE = 9,
696 D3D_SVT_SAMPLER = 10,
697 D3D_SVT_SAMPLER1D = 11,
698 D3D_SVT_SAMPLER2D = 12,
699 D3D_SVT_SAMPLER3D = 13,
700 D3D_SVT_SAMPLERCUBE = 14,
701 D3D_SVT_PIXELSHADER = 15,
702 D3D_SVT_VERTEXSHADER = 16,
703 D3D_SVT_PIXELFRAGMENT = 17,
704 D3D_SVT_VERTEXFRAGMENT = 18,
705 D3D_SVT_UINT = 19,
706 D3D_SVT_UINT8 = 20,
707 D3D_SVT_GEOMETRYSHADER = 21,
708 D3D_SVT_RASTERIZER = 22,
709 D3D_SVT_DEPTHSTENCIL = 23,
710 D3D_SVT_BLEND = 24,
711 D3D_SVT_BUFFER = 25,
712 D3D_SVT_CBUFFER = 26,
713 D3D_SVT_TBUFFER = 27,
714 D3D_SVT_TEXTURE1DARRAY = 28,
715 D3D_SVT_TEXTURE2DARRAY = 29,
716 D3D_SVT_RENDERTARGETVIEW = 30,
717 D3D_SVT_DEPTHSTENCILVIEW = 31,
718 D3D_SVT_TEXTURE2DMS = 32,
719 D3D_SVT_TEXTURE2DMSARRAY = 33,
720 D3D_SVT_TEXTURECUBEARRAY = 34,
721 D3D_SVT_HULLSHADER = 35,
722 D3D_SVT_DOMAINSHADER = 36,
723 D3D_SVT_INTERFACE_POINTER = 37,
724 D3D_SVT_COMPUTESHADER = 38,
725 D3D_SVT_DOUBLE = 39,
726 D3D_SVT_RWTEXTURE1D = 40,
727 D3D_SVT_RWTEXTURE1DARRAY = 41,
728 D3D_SVT_RWTEXTURE2D = 42,
729 D3D_SVT_RWTEXTURE2DARRAY = 43,
730 D3D_SVT_RWTEXTURE3D = 44,
731 D3D_SVT_RWBUFFER = 45,
732 D3D_SVT_BYTEADDRESS_BUFFER = 46,
733 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
734 D3D_SVT_STRUCTURED_BUFFER = 48,
735 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
736 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
737 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
738 D3D_SVT_MIN8FLOAT = 52,
739 D3D_SVT_MIN10FLOAT = 53,
740 D3D_SVT_MIN16FLOAT = 54,
741 D3D_SVT_MIN12INT = 55,
742 D3D_SVT_MIN16INT = 56,
743 D3D_SVT_MIN16UINT = 57,
744 D3D_SVT_INT16 = 58,
745 D3D_SVT_UINT16 = 59,
746 D3D_SVT_FLOAT16 = 60,
747 D3D_SVT_INT64 = 61,
748 D3D_SVT_UINT64 = 62,
749 D3D10_SVT_VOID = D3D_SVT_VOID,
750 D3D10_SVT_BOOL = D3D_SVT_BOOL,
751 D3D10_SVT_INT = D3D_SVT_INT,
752 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
753 D3D10_SVT_STRING = D3D_SVT_STRING,
754 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
755 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
756 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
757 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
758 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
759 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
760 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
761 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
762 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
763 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
764 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
765 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
766 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
767 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
768 D3D10_SVT_UINT = D3D_SVT_UINT,
769 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
770 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
771 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
772 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
773 D3D10_SVT_BLEND = D3D_SVT_BLEND,
774 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
775 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
776 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
777 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
778 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
779 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
780 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
781 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
782 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
783 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
784 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
785 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
786 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
787 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
788 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
789 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
790 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
791 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
792 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
793 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
794 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
795 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
796 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
797 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
798 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
799 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
800 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
801 D3D_SVT_FORCE_DWORD = 0x7fffffff
802 } D3D_SHADER_VARIABLE_TYPE;
803
804typedef
805enum _D3D_SHADER_INPUT_FLAGS
806 {
807 D3D_SIF_USERPACKED = 0x1,
808 D3D_SIF_COMPARISON_SAMPLER = 0x2,
809 D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
810 D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
811 D3D_SIF_TEXTURE_COMPONENTS = 0xc,
812 D3D_SIF_UNUSED = 0x10,
813 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
814 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
815 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
816 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
817 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
818 D3D_SIF_FORCE_DWORD = 0x7fffffff
819 } D3D_SHADER_INPUT_FLAGS;
820
821typedef
822enum _D3D_SHADER_INPUT_TYPE
823 {
824 D3D_SIT_CBUFFER = 0,
825 D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) ,
826 D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) ,
827 D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) ,
828 D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) ,
829 D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) ,
830 D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) ,
831 D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
832 D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) ,
833 D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
834 D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
835 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
836 D3D_SIT_RTACCELERATIONSTRUCTURE = ( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1 ) ,
837 D3D_SIT_UAV_FEEDBACKTEXTURE = ( D3D_SIT_RTACCELERATIONSTRUCTURE + 1 ) ,
838 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
839 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
840 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
841 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
842 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
843 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
844 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
845 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
846 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
847 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
848 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
849 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
850 } D3D_SHADER_INPUT_TYPE;
851
852typedef
853enum _D3D_SHADER_CBUFFER_FLAGS
854 {
855 D3D_CBF_USERPACKED = 1,
856 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
857 D3D_CBF_FORCE_DWORD = 0x7fffffff
858 } D3D_SHADER_CBUFFER_FLAGS;
859
860typedef
861enum _D3D_CBUFFER_TYPE
862 {
863 D3D_CT_CBUFFER = 0,
864 D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) ,
865 D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) ,
866 D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
867 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
868 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
869 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
870 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
871 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
872 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO
873 } D3D_CBUFFER_TYPE;
874
875typedef
876enum D3D_NAME
877 {
878 D3D_NAME_UNDEFINED = 0,
879 D3D_NAME_POSITION = 1,
880 D3D_NAME_CLIP_DISTANCE = 2,
881 D3D_NAME_CULL_DISTANCE = 3,
882 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
883 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
884 D3D_NAME_VERTEX_ID = 6,
885 D3D_NAME_PRIMITIVE_ID = 7,
886 D3D_NAME_INSTANCE_ID = 8,
887 D3D_NAME_IS_FRONT_FACE = 9,
888 D3D_NAME_SAMPLE_INDEX = 10,
889 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
890 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
891 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
892 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
893 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
894 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
895 D3D_NAME_BARYCENTRICS = 23,
896 D3D_NAME_SHADINGRATE = 24,
897 D3D_NAME_CULLPRIMITIVE = 25,
898 D3D_NAME_TARGET = 64,
899 D3D_NAME_DEPTH = 65,
900 D3D_NAME_COVERAGE = 66,
901 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
902 D3D_NAME_DEPTH_LESS_EQUAL = 68,
903 D3D_NAME_STENCIL_REF = 69,
904 D3D_NAME_INNER_COVERAGE = 70,
905 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
906 D3D10_NAME_POSITION = D3D_NAME_POSITION,
907 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
908 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
909 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
910 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
911 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
912 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
913 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
914 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
915 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
916 D3D10_NAME_TARGET = D3D_NAME_TARGET,
917 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
918 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
919 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
920 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
921 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
922 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
923 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
924 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
925 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
926 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
927 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
928 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
929 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
930 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
931 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE
932 } D3D_NAME;
933
934typedef
935enum D3D_RESOURCE_RETURN_TYPE
936 {
937 D3D_RETURN_TYPE_UNORM = 1,
938 D3D_RETURN_TYPE_SNORM = 2,
939 D3D_RETURN_TYPE_SINT = 3,
940 D3D_RETURN_TYPE_UINT = 4,
941 D3D_RETURN_TYPE_FLOAT = 5,
942 D3D_RETURN_TYPE_MIXED = 6,
943 D3D_RETURN_TYPE_DOUBLE = 7,
944 D3D_RETURN_TYPE_CONTINUED = 8,
945 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
946 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
947 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
948 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
949 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
950 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
951 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
952 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
953 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
954 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
955 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
956 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
957 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
958 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED
959 } D3D_RESOURCE_RETURN_TYPE;
960
961typedef
962enum D3D_REGISTER_COMPONENT_TYPE
963 {
964 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
965 D3D_REGISTER_COMPONENT_UINT32 = 1,
966 D3D_REGISTER_COMPONENT_SINT32 = 2,
967 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
968 D3D_REGISTER_COMPONENT_UINT16 = 4,
969 D3D_REGISTER_COMPONENT_SINT16 = 5,
970 D3D_REGISTER_COMPONENT_FLOAT16 = 6,
971 D3D_REGISTER_COMPONENT_UINT64 = 7,
972 D3D_REGISTER_COMPONENT_SINT64 = 8,
973 D3D_REGISTER_COMPONENT_FLOAT64 = 9,
974 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
975 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
976 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
977 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
978 D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
979 D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
980 D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
981 D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
982 D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
983 D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64
984 } D3D_REGISTER_COMPONENT_TYPE;
985
986typedef
987enum D3D_TESSELLATOR_DOMAIN
988 {
989 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
990 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
991 D3D_TESSELLATOR_DOMAIN_TRI = 2,
992 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
993 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
994 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
995 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
996 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD
997 } D3D_TESSELLATOR_DOMAIN;
998
999typedef
1000enum D3D_TESSELLATOR_PARTITIONING
1001 {
1002 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
1003 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
1004 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
1005 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
1006 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
1007 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
1008 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
1009 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
1010 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
1011 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
1012 } D3D_TESSELLATOR_PARTITIONING;
1013
1014typedef
1015enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
1016 {
1017 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
1018 D3D_TESSELLATOR_OUTPUT_POINT = 1,
1019 D3D_TESSELLATOR_OUTPUT_LINE = 2,
1020 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
1021 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
1022 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
1023 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
1024 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
1025 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1026 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1027 } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
1028
1029typedef
1030enum D3D_MIN_PRECISION
1031 {
1032 D3D_MIN_PRECISION_DEFAULT = 0,
1033 D3D_MIN_PRECISION_FLOAT_16 = 1,
1034 D3D_MIN_PRECISION_FLOAT_2_8 = 2,
1035 D3D_MIN_PRECISION_RESERVED = 3,
1036 D3D_MIN_PRECISION_SINT_16 = 4,
1037 D3D_MIN_PRECISION_UINT_16 = 5,
1038 D3D_MIN_PRECISION_ANY_16 = 0xf0,
1039 D3D_MIN_PRECISION_ANY_10 = 0xf1
1040 } D3D_MIN_PRECISION;
1041
1042typedef
1043enum D3D_INTERPOLATION_MODE
1044 {
1045 D3D_INTERPOLATION_UNDEFINED = 0,
1046 D3D_INTERPOLATION_CONSTANT = 1,
1047 D3D_INTERPOLATION_LINEAR = 2,
1048 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
1049 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
1050 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
1051 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
1052 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7
1053 } D3D_INTERPOLATION_MODE;
1054
1055typedef
1056enum _D3D_PARAMETER_FLAGS
1057 {
1058 D3D_PF_NONE = 0,
1059 D3D_PF_IN = 0x1,
1060 D3D_PF_OUT = 0x2,
1061 D3D_PF_FORCE_DWORD = 0x7fffffff
1062 } D3D_PARAMETER_FLAGS;
1063
1064typedef
1065enum D3D_FORMAT_LAYOUT
1066 {
1067 D3DFL_STANDARD = 0,
1068 D3DFL_CUSTOM = -1
1069 } D3D_FORMAT_LAYOUT;
1070
1071typedef
1072enum D3D_FORMAT_TYPE_LEVEL
1073 {
1074 D3DFTL_NO_TYPE = 0,
1075 D3DFTL_PARTIAL_TYPE = -2,
1076 D3DFTL_FULL_TYPE = -1
1077 } D3D_FORMAT_TYPE_LEVEL;
1078
1079typedef
1080enum D3D_FORMAT_COMPONENT_NAME
1081 {
1082 D3DFCN_R = -4,
1083 D3DFCN_G = -3,
1084 D3DFCN_B = -2,
1085 D3DFCN_A = -1,
1086 D3DFCN_D = 0,
1087 D3DFCN_S = 1,
1088 D3DFCN_X = 2
1089 } D3D_FORMAT_COMPONENT_NAME;
1090
1091typedef
1092enum D3D_FORMAT_COMPONENT_INTERPRETATION
1093 {
1094 D3DFCI_TYPELESS = 0,
1095 D3DFCI_FLOAT = -4,
1096 D3DFCI_SNORM = -3,
1097 D3DFCI_UNORM = -2,
1098 D3DFCI_SINT = -1,
1099 D3DFCI_UINT = 1,
1100 D3DFCI_UNORM_SRGB = 2,
1101 D3DFCI_BIASED_FIXED_2_8 = 3
1102 } D3D_FORMAT_COMPONENT_INTERPRETATION;
1103
1104DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
1105DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);
1106DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);
1107DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);
1108#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)
1109#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)
1110#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)
1111#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)
1112#define D3D_COMPONENT_MASK_X 1
1113#define D3D_COMPONENT_MASK_Y 2
1114#define D3D_COMPONENT_MASK_Z 4
1115#define D3D_COMPONENT_MASK_W 8
1116DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);
1117DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);
1118
1119
1120extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec;
1121extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec;
1122
1123/* Additional Prototypes for ALL interfaces */
1124
1125/* end of Additional Prototypes */
1126
1127#ifdef __cplusplus
1128}
1129#endif
1130
1131#endif
1132
1133
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.idl
new file mode 100644
index 0000000..bfa375d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dcommon.idl
@@ -0,0 +1,991 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10//----------------------------------------------------------------------------
11//
12// D3D-version-neutral runtime information.
13//
14//----------------------------------------------------------------------------
15
16typedef enum D3D_DRIVER_TYPE
17{
18 D3D_DRIVER_TYPE_UNKNOWN,
19 D3D_DRIVER_TYPE_HARDWARE,
20 D3D_DRIVER_TYPE_REFERENCE,
21 D3D_DRIVER_TYPE_NULL,
22 D3D_DRIVER_TYPE_SOFTWARE,
23 D3D_DRIVER_TYPE_WARP,
24} D3D_DRIVER_TYPE;
25
26typedef enum D3D_FEATURE_LEVEL
27{
28 D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
29 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
30 D3D_FEATURE_LEVEL_9_1 = 0x9100,
31 D3D_FEATURE_LEVEL_9_2 = 0x9200,
32 D3D_FEATURE_LEVEL_9_3 = 0x9300,
33 D3D_FEATURE_LEVEL_10_0 = 0xa000,
34 D3D_FEATURE_LEVEL_10_1 = 0xa100,
35 D3D_FEATURE_LEVEL_11_0 = 0xb000,
36 D3D_FEATURE_LEVEL_11_1 = 0xb100,
37 D3D_FEATURE_LEVEL_12_0 = 0xc000,
38 D3D_FEATURE_LEVEL_12_1 = 0xc100,
39 D3D_FEATURE_LEVEL_12_2 = 0xc200
40} D3D_FEATURE_LEVEL;
41
42cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048")
43cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096")
44cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048")
45cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096")
46cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512")
47cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096")
48cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256")
49cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2")
50cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535")
51cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575")
52cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1")
53cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4")
54cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128")
55cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048")
56cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192")
57
58typedef enum D3D_PRIMITIVE_TOPOLOGY
59{
60 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
61 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
62 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
63 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
64 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
65 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
66 D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
67 // Adjacency values should be equal to (0x8 & non-adjacency):
68 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
69 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
70 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
71 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
72 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
73 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
74 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
75 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
76 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
77 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
78 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
79 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
80 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
81 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
82 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
83 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
84 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
85 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
86 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
87 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
88 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
89 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
90 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
91 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
92 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
93 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
94 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
95 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
96 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
97 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
98 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
99 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
100 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
101 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
102 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
103 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
104
105 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
106 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
107 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
108 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
109 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
110 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
111 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
112 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
113 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
114 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
115
116 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
117 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
118 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
119 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
120 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
121 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
122 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
123 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
124 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
125 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
126 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
127 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
128 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
129 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
130 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
131 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
132 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
133 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
134 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
135 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
136 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
137 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
138 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
139 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
140 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
141 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
142 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
143 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
144 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
145 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
146 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
147 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
148 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
149 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
150 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
151 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
152 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
153 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
154 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
155 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
156 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
157 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
158} D3D_PRIMITIVE_TOPOLOGY;
159
160typedef enum D3D_PRIMITIVE
161{
162 D3D_PRIMITIVE_UNDEFINED = 0,
163 D3D_PRIMITIVE_POINT = 1,
164 D3D_PRIMITIVE_LINE = 2,
165 D3D_PRIMITIVE_TRIANGLE = 3,
166 // Adjacency values should be equal to (0x4 & non-adjacency):
167 D3D_PRIMITIVE_LINE_ADJ = 6,
168 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
169 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
170 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
171 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
172 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
173 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
174 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
175 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
176 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
177 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
178 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
179 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
180 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
181 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
182 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
183 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
184 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
185 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
186 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
187 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
188 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
189 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
190 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
191 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
192 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
193 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
194 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
195 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
196 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
197 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
198 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
199 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
200 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
201
202 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
203 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
204 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
205 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
206 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
207 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
208
209 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
210 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
211 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
212 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
213 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
214 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
215 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
216 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
217 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
218 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
219 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
220 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
221 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
222 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
223 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
224 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
225 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
226 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
227 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
228 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
229 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
230 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
231 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
232 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
233 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
234 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
235 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
236 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
237 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
238 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
239 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
240 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
241 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
242 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
243 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
244 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
245 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
246 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
247} D3D_PRIMITIVE;
248
249typedef enum D3D_SRV_DIMENSION
250{
251 D3D_SRV_DIMENSION_UNKNOWN = 0,
252 D3D_SRV_DIMENSION_BUFFER = 1,
253 D3D_SRV_DIMENSION_TEXTURE1D = 2,
254 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
255 D3D_SRV_DIMENSION_TEXTURE2D = 4,
256 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
257 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
258 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
259 D3D_SRV_DIMENSION_TEXTURE3D = 8,
260 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
261 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
262 D3D_SRV_DIMENSION_BUFFEREX = 11,
263
264 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
265 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
266 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
267 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
268 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
269 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
270 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
271 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
272 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
273 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
274
275 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
276 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
277 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
278 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
279 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
280 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
281 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
282 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
283 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
284 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
285 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
286
287 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
288 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
289 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
290 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
291 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
292 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
293 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
294 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
295 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
296 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
297 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
298 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
299} D3D_SRV_DIMENSION;
300
301// Bits in shaders indicating features they use which the runtime checks against current device support:
302cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES 0x00001")
303cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
304cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004")
305cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS 0x00008")
306cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010")
307cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020")
308cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040")
309cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080")
310cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100")
311cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200")
312cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400")
313cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800")
314cpp_quote("#define D3D_SHADER_FEATURE_ROVS 0x01000")
315cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
316cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000")
317cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS 0x08000")
318cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID 0x10000")
319cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000")
320cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000")
321cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000")
322cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000")
323cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000")
324cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000")
325cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000")
326cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000")
327cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000")
328cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000")
329cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000")
330cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000")
331cpp_quote("#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000")
332cpp_quote("#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000")
333cpp_quote("#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000")
334cpp_quote("#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull")
335
336// This section is for flags that do not directly indicate a required feature,
337// but are used to indicate something about the shader.
338
339// Flag for any derivative use. This allows call-graph validation
340// in the runtime to detect misuse of derivatives for an entry point that cannot
341// support it, or to determine when the flag
342// D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS is required.
343cpp_quote("#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull")
344
345cpp_quote("#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull")
346
347
348// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
349// When adding entries here, make sure they don't conflict with what's there.
350
351//----------------------------------------------------------------------------
352//
353// Shader compilation information.
354//
355//----------------------------------------------------------------------------
356
357//----------------------------------------------------------------------------
358// D3D_SHADER_MACRO:
359// ----------
360// Preprocessor macro definition. The application pass in a NULL-terminated
361// array of this structure to various D3D APIs. This enables the application
362// to #define tokens at runtime, before the file is parsed.
363//----------------------------------------------------------------------------
364
365typedef struct _D3D_SHADER_MACRO
366{
367 LPCSTR Name;
368 LPCSTR Definition;
369} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
370
371//----------------------------------------------------------------------------
372// ID3DBlob:
373// ------------
374// The buffer object is used by D3D to return arbitrary size data.
375// For compatibility with D3D10 this interface is also called ID3D10Blob,
376// but the version-neutral form is preferred.
377//
378// GetBufferPointer -
379// Returns a pointer to the beginning of the buffer.
380//
381// GetBufferSize -
382// Returns the size of the buffer, in bytes.
383//----------------------------------------------------------------------------
384
385// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
386cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
387
388[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
389interface ID3D10Blob : IUnknown
390{
391 LPVOID GetBufferPointer();
392 SIZE_T GetBufferSize();
393};
394
395cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
396
397typedef ID3D10Blob ID3DBlob;
398cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
399cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
400
401// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
402typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
403
404[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
405interface ID3DDestructionNotifier
406 : IUnknown
407{
408 HRESULT RegisterDestructionCallback(
409 [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
410 [annotation("_In_")] void* pData,
411 [annotation("_Out_")] UINT* pCallbackID
412 );
413 HRESULT UnregisterDestructionCallback(
414 [annotation("_In_")] UINT callbackID
415 );
416};
417
418typedef enum _D3D_INCLUDE_TYPE
419{
420 D3D_INCLUDE_LOCAL,
421 D3D_INCLUDE_SYSTEM,
422
423 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
424 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
425
426 // force 32-bit size enum
427 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
428} D3D_INCLUDE_TYPE;
429
430//----------------------------------------------------------------------------
431// ID3DInclude:
432// -------------
433// This interface is intended to be implemented by the application, and can
434// be used by various D3D APIs. This enables application-specific handling
435// of #include directives in source files.
436//
437// Open()
438// Opens an include file. If successful, it should fill in ppData and
439// pBytes. The data pointer returned must remain valid until Close is
440// subsequently called. The name of the file is encoded in UTF-8 format.
441// Close()
442// Closes an include file. If Open was successful, Close is guaranteed
443// to be called before the API using this interface returns.
444//----------------------------------------------------------------------------
445
446cpp_quote("typedef interface ID3DInclude ID3DInclude;")
447
448cpp_quote("#undef INTERFACE")
449cpp_quote("#define INTERFACE ID3DInclude")
450
451cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
452cpp_quote("{")
453cpp_quote(" STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
454cpp_quote(" STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
455cpp_quote("};")
456
457cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
458
459//----------------------------------------------------------------------------
460//
461// Shader reflection information.
462//
463//----------------------------------------------------------------------------
464
465typedef enum _D3D_SHADER_VARIABLE_CLASS
466{
467 D3D_SVC_SCALAR,
468 D3D_SVC_VECTOR,
469 D3D_SVC_MATRIX_ROWS,
470 D3D_SVC_MATRIX_COLUMNS,
471 D3D_SVC_OBJECT,
472 D3D_SVC_STRUCT,
473 D3D_SVC_INTERFACE_CLASS,
474 D3D_SVC_INTERFACE_POINTER,
475
476 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
477 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
478 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
479 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
480 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
481 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
482
483 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
484 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
485
486 // force 32-bit size enum
487 D3D_SVC_FORCE_DWORD = 0x7fffffff
488} D3D_SHADER_VARIABLE_CLASS;
489
490typedef enum _D3D_SHADER_VARIABLE_FLAGS
491{
492 D3D_SVF_USERPACKED = 1,
493 D3D_SVF_USED = 2,
494
495 D3D_SVF_INTERFACE_POINTER = 4,
496 D3D_SVF_INTERFACE_PARAMETER = 8,
497
498 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
499 D3D10_SVF_USED = D3D_SVF_USED,
500
501 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
502 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
503
504 // force 32-bit size enum
505 D3D_SVF_FORCE_DWORD = 0x7fffffff
506} D3D_SHADER_VARIABLE_FLAGS;
507
508typedef enum _D3D_SHADER_VARIABLE_TYPE
509{
510 D3D_SVT_VOID = 0,
511 D3D_SVT_BOOL = 1,
512 D3D_SVT_INT = 2,
513 D3D_SVT_FLOAT = 3,
514 D3D_SVT_STRING = 4,
515 D3D_SVT_TEXTURE = 5,
516 D3D_SVT_TEXTURE1D = 6,
517 D3D_SVT_TEXTURE2D = 7,
518 D3D_SVT_TEXTURE3D = 8,
519 D3D_SVT_TEXTURECUBE = 9,
520 D3D_SVT_SAMPLER = 10,
521 D3D_SVT_SAMPLER1D = 11,
522 D3D_SVT_SAMPLER2D = 12,
523 D3D_SVT_SAMPLER3D = 13,
524 D3D_SVT_SAMPLERCUBE = 14,
525 D3D_SVT_PIXELSHADER = 15,
526 D3D_SVT_VERTEXSHADER = 16,
527 D3D_SVT_PIXELFRAGMENT = 17,
528 D3D_SVT_VERTEXFRAGMENT = 18,
529 D3D_SVT_UINT = 19,
530 D3D_SVT_UINT8 = 20,
531 D3D_SVT_GEOMETRYSHADER = 21,
532 D3D_SVT_RASTERIZER = 22,
533 D3D_SVT_DEPTHSTENCIL = 23,
534 D3D_SVT_BLEND = 24,
535 D3D_SVT_BUFFER = 25,
536 D3D_SVT_CBUFFER = 26,
537 D3D_SVT_TBUFFER = 27,
538 D3D_SVT_TEXTURE1DARRAY = 28,
539 D3D_SVT_TEXTURE2DARRAY = 29,
540 D3D_SVT_RENDERTARGETVIEW = 30,
541 D3D_SVT_DEPTHSTENCILVIEW = 31,
542
543 D3D_SVT_TEXTURE2DMS = 32,
544 D3D_SVT_TEXTURE2DMSARRAY = 33,
545
546 D3D_SVT_TEXTURECUBEARRAY = 34,
547
548 D3D_SVT_HULLSHADER = 35,
549 D3D_SVT_DOMAINSHADER = 36,
550
551 D3D_SVT_INTERFACE_POINTER = 37,
552 D3D_SVT_COMPUTESHADER = 38,
553
554 D3D_SVT_DOUBLE = 39,
555
556 D3D_SVT_RWTEXTURE1D = 40,
557 D3D_SVT_RWTEXTURE1DARRAY = 41,
558 D3D_SVT_RWTEXTURE2D = 42,
559 D3D_SVT_RWTEXTURE2DARRAY = 43,
560 D3D_SVT_RWTEXTURE3D = 44,
561 D3D_SVT_RWBUFFER = 45,
562
563 D3D_SVT_BYTEADDRESS_BUFFER = 46,
564 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
565 D3D_SVT_STRUCTURED_BUFFER = 48,
566 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
567 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
568 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
569
570 D3D_SVT_MIN8FLOAT = 52,
571 D3D_SVT_MIN10FLOAT = 53,
572 D3D_SVT_MIN16FLOAT = 54,
573 D3D_SVT_MIN12INT = 55,
574 D3D_SVT_MIN16INT = 56,
575 D3D_SVT_MIN16UINT = 57,
576
577 D3D_SVT_INT16 = 58,
578 D3D_SVT_UINT16 = 59,
579 D3D_SVT_FLOAT16 = 60,
580 D3D_SVT_INT64 = 61,
581 D3D_SVT_UINT64 = 62,
582
583 D3D10_SVT_VOID = D3D_SVT_VOID,
584 D3D10_SVT_BOOL = D3D_SVT_BOOL,
585 D3D10_SVT_INT = D3D_SVT_INT,
586 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
587 D3D10_SVT_STRING = D3D_SVT_STRING,
588 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
589 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
590 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
591 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
592 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
593 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
594 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
595 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
596 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
597 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
598 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
599 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
600 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
601 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
602 D3D10_SVT_UINT = D3D_SVT_UINT,
603 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
604 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
605 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
606 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
607 D3D10_SVT_BLEND = D3D_SVT_BLEND,
608 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
609 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
610 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
611 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
612 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
613 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
614 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
615
616 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
617 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
618
619 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
620
621 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
622 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
623
624 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
625 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
626
627 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
628
629 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
630 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
631 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
632 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
633 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
634 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
635
636 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
637 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
638 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
639 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
640 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
641 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
642
643 // force 32-bit size enum
644 D3D_SVT_FORCE_DWORD = 0x7fffffff
645} D3D_SHADER_VARIABLE_TYPE;
646
647typedef enum _D3D_SHADER_INPUT_FLAGS
648{
649 D3D_SIF_USERPACKED = 0x01,
650 D3D_SIF_COMPARISON_SAMPLER = 0x02, // is this a comparison sampler?
651 D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
652 D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
653 D3D_SIF_TEXTURE_COMPONENTS = 0x0c,
654 D3D_SIF_UNUSED = 0x10,
655
656 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
657 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
658 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
659 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
660 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
661
662 // force 32-bit size enum
663 D3D_SIF_FORCE_DWORD = 0x7fffffff
664} D3D_SHADER_INPUT_FLAGS;
665
666typedef enum _D3D_SHADER_INPUT_TYPE
667{
668 D3D_SIT_CBUFFER,
669 D3D_SIT_TBUFFER,
670 D3D_SIT_TEXTURE,
671 D3D_SIT_SAMPLER,
672 D3D_SIT_UAV_RWTYPED,
673 D3D_SIT_STRUCTURED,
674 D3D_SIT_UAV_RWSTRUCTURED,
675 D3D_SIT_BYTEADDRESS,
676 D3D_SIT_UAV_RWBYTEADDRESS,
677 D3D_SIT_UAV_APPEND_STRUCTURED,
678 D3D_SIT_UAV_CONSUME_STRUCTURED,
679 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
680 D3D_SIT_RTACCELERATIONSTRUCTURE,
681 D3D_SIT_UAV_FEEDBACKTEXTURE,
682
683 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
684 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
685 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
686 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
687
688 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
689 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
690 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
691 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
692 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
693 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
694 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
695 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
696} D3D_SHADER_INPUT_TYPE;
697
698typedef enum _D3D_SHADER_CBUFFER_FLAGS
699{
700 D3D_CBF_USERPACKED = 1,
701
702 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
703
704 // force 32-bit size enum
705 D3D_CBF_FORCE_DWORD = 0x7fffffff
706} D3D_SHADER_CBUFFER_FLAGS;
707
708typedef enum _D3D_CBUFFER_TYPE
709{
710 D3D_CT_CBUFFER,
711 D3D_CT_TBUFFER,
712 D3D_CT_INTERFACE_POINTERS,
713 D3D_CT_RESOURCE_BIND_INFO,
714
715 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
716 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
717
718 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
719 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
720 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
721 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
722} D3D_CBUFFER_TYPE;
723
724typedef enum D3D_NAME
725{
726 D3D_NAME_UNDEFINED = 0,
727
728 // Names meaningful to both HLSL and hardware
729 D3D_NAME_POSITION = 1,
730 D3D_NAME_CLIP_DISTANCE = 2,
731 D3D_NAME_CULL_DISTANCE = 3,
732 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
733 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
734 D3D_NAME_VERTEX_ID = 6,
735 D3D_NAME_PRIMITIVE_ID = 7,
736 D3D_NAME_INSTANCE_ID = 8,
737 D3D_NAME_IS_FRONT_FACE = 9,
738 D3D_NAME_SAMPLE_INDEX = 10,
739 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
740 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
741 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
742 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
743 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
744 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
745 D3D_NAME_BARYCENTRICS = 23,
746 D3D_NAME_SHADINGRATE = 24,
747 D3D_NAME_CULLPRIMITIVE = 25,
748
749 // Names meaningful to HLSL only
750 D3D_NAME_TARGET = 64,
751 D3D_NAME_DEPTH = 65,
752 D3D_NAME_COVERAGE = 66,
753 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
754 D3D_NAME_DEPTH_LESS_EQUAL = 68,
755 D3D_NAME_STENCIL_REF = 69,
756 D3D_NAME_INNER_COVERAGE = 70,
757
758 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
759 D3D10_NAME_POSITION = D3D_NAME_POSITION,
760 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
761 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
762 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
763 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
764 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
765 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
766 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
767 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
768 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
769 D3D10_NAME_TARGET = D3D_NAME_TARGET,
770 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
771 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
772
773 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
774 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
775 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
776 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
777 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
778 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
779 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
780 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
781
782 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
783 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
784
785 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
786 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
787 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
788} D3D_NAME;
789
790typedef enum D3D_RESOURCE_RETURN_TYPE
791{
792 D3D_RETURN_TYPE_UNORM = 1,
793 D3D_RETURN_TYPE_SNORM = 2,
794 D3D_RETURN_TYPE_SINT = 3,
795 D3D_RETURN_TYPE_UINT = 4,
796 D3D_RETURN_TYPE_FLOAT = 5,
797 D3D_RETURN_TYPE_MIXED = 6,
798 D3D_RETURN_TYPE_DOUBLE = 7,
799 D3D_RETURN_TYPE_CONTINUED = 8,
800
801 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
802 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
803 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
804 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
805 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
806 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
807
808 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
809 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
810 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
811 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
812 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
813 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
814 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
815 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
816} D3D_RESOURCE_RETURN_TYPE;
817
818typedef enum D3D_REGISTER_COMPONENT_TYPE
819{
820 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
821 D3D_REGISTER_COMPONENT_UINT32 = 1,
822 D3D_REGISTER_COMPONENT_SINT32 = 2,
823 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
824 D3D_REGISTER_COMPONENT_UINT16 = 4,
825 D3D_REGISTER_COMPONENT_SINT16 = 5,
826 D3D_REGISTER_COMPONENT_FLOAT16 = 6,
827 D3D_REGISTER_COMPONENT_UINT64 = 7,
828 D3D_REGISTER_COMPONENT_SINT64 = 8,
829 D3D_REGISTER_COMPONENT_FLOAT64 = 9,
830
831 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
832 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
833 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
834 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
835 D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
836 D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
837 D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
838 D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
839 D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
840 D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64,
841} D3D_REGISTER_COMPONENT_TYPE;
842
843typedef enum D3D_TESSELLATOR_DOMAIN
844{
845 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
846 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
847 D3D_TESSELLATOR_DOMAIN_TRI = 2,
848 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
849
850 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
851 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
852 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
853 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
854} D3D_TESSELLATOR_DOMAIN;
855
856typedef enum D3D_TESSELLATOR_PARTITIONING
857{
858 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
859 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
860 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
861 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
862 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
863
864 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
865 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
866 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
867 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
868 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
869} D3D_TESSELLATOR_PARTITIONING;
870
871typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
872{
873 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
874 D3D_TESSELLATOR_OUTPUT_POINT = 1,
875 D3D_TESSELLATOR_OUTPUT_LINE = 2,
876 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
877 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
878
879 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
880 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
881 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
882 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
883 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
884} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
885
886typedef enum D3D_MIN_PRECISION
887{
888 D3D_MIN_PRECISION_DEFAULT = 0, // Default precision for the shader model
889 D3D_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
890 D3D_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
891 D3D_MIN_PRECISION_RESERVED = 3, // Reserved for future use
892 D3D_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
893 D3D_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
894
895 // These values are abstractions of width only for use in situations
896 // where a general width is needed instead of specific types. They
897 // will never be used in shader operands.
898 D3D_MIN_PRECISION_ANY_16 = 0xf0,
899 D3D_MIN_PRECISION_ANY_10 = 0xf1,
900} D3D_MIN_PRECISION;
901
902typedef enum D3D_INTERPOLATION_MODE
903{
904 D3D_INTERPOLATION_UNDEFINED = 0,
905 D3D_INTERPOLATION_CONSTANT = 1,
906 D3D_INTERPOLATION_LINEAR = 2,
907 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
908 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
909 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
910 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
911 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
912} D3D_INTERPOLATION_MODE;
913
914// Parameter flags.
915typedef enum _D3D_PARAMETER_FLAGS
916{
917 D3D_PF_NONE = 0x00000000,
918 D3D_PF_IN = 0x00000001,
919 D3D_PF_OUT = 0x00000002,
920 D3D_PF_FORCE_DWORD = 0x7fffffff
921} D3D_PARAMETER_FLAGS;
922
923// Format Layout Properties
924typedef enum D3D_FORMAT_LAYOUT
925{
926 D3DFL_STANDARD = 0, // standard layout
927 D3DFL_CUSTOM = -1 // custom layout
928 // Note, 1 bit allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
929 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
930} D3D_FORMAT_LAYOUT;
931
932typedef enum D3D_FORMAT_TYPE_LEVEL
933{
934 D3DFTL_NO_TYPE = 0,
935 D3DFTL_PARTIAL_TYPE = -2,
936 D3DFTL_FULL_TYPE = -1,
937 // Note, 2 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
938 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
939} D3D_FORMAT_TYPE_LEVEL;
940
941typedef enum D3D_FORMAT_COMPONENT_NAME
942{
943 D3DFCN_R = -4,
944 D3DFCN_G = -3,
945 D3DFCN_B = -2,
946 D3DFCN_A = -1,
947 D3DFCN_D = 0,
948 D3DFCN_S = 1,
949 D3DFCN_X = 2,
950 // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
951 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
952} D3D_FORMAT_COMPONENT_NAME;
953
954typedef enum D3D_FORMAT_COMPONENT_INTERPRETATION
955{
956 D3DFCI_TYPELESS = 0,
957 D3DFCI_FLOAT = -4,
958 D3DFCI_SNORM = -3,
959 D3DFCI_UNORM = -2,
960 D3DFCI_SINT = -1,
961 D3DFCI_UINT = 1,
962 D3DFCI_UNORM_SRGB = 2,
963 D3DFCI_BIASED_FIXED_2_8 = 3,
964 // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
965 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
966} D3D_FORMAT_COMPONENT_INTERPRETATION;
967
968// Well-Known Private Data IDs (WKPDID_*):
969
970// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
971//
972// const char c_szName[] = "texture.jpg";
973// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
974cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
975cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
976cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
977cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
978
979cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
980cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
981cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
982cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
983
984cpp_quote("#define D3D_COMPONENT_MASK_X 1")
985cpp_quote("#define D3D_COMPONENT_MASK_Y 2")
986cpp_quote("#define D3D_COMPONENT_MASK_Z 4")
987cpp_quote("#define D3D_COMPONENT_MASK_W 8")
988
989cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
990cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
991
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.h
new file mode 100644
index 0000000..671866a
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.h
@@ -0,0 +1,998 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3dshadercacheregistration_h__
39#define __d3dshadercacheregistration_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3DShaderCacheInstallerClient_FWD_DEFINED__
56#define __ID3DShaderCacheInstallerClient_FWD_DEFINED__
57typedef interface ID3DShaderCacheInstallerClient ID3DShaderCacheInstallerClient;
58
59#endif /* __ID3DShaderCacheInstallerClient_FWD_DEFINED__ */
60
61
62#ifndef __ID3DShaderCacheComponent_FWD_DEFINED__
63#define __ID3DShaderCacheComponent_FWD_DEFINED__
64typedef interface ID3DShaderCacheComponent ID3DShaderCacheComponent;
65
66#endif /* __ID3DShaderCacheComponent_FWD_DEFINED__ */
67
68
69#ifndef __ID3DShaderCacheApplication_FWD_DEFINED__
70#define __ID3DShaderCacheApplication_FWD_DEFINED__
71typedef interface ID3DShaderCacheApplication ID3DShaderCacheApplication;
72
73#endif /* __ID3DShaderCacheApplication_FWD_DEFINED__ */
74
75
76#ifndef __ID3DShaderCacheInstaller_FWD_DEFINED__
77#define __ID3DShaderCacheInstaller_FWD_DEFINED__
78typedef interface ID3DShaderCacheInstaller ID3DShaderCacheInstaller;
79
80#endif /* __ID3DShaderCacheInstaller_FWD_DEFINED__ */
81
82
83#ifndef __ID3DShaderCacheExplorer_FWD_DEFINED__
84#define __ID3DShaderCacheExplorer_FWD_DEFINED__
85typedef interface ID3DShaderCacheExplorer ID3DShaderCacheExplorer;
86
87#endif /* __ID3DShaderCacheExplorer_FWD_DEFINED__ */
88
89
90#ifndef __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
91#define __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
92typedef interface ID3DShaderCacheInstallerFactory ID3DShaderCacheInstallerFactory;
93
94#endif /* __ID3DShaderCacheInstallerFactory_FWD_DEFINED__ */
95
96
97/* header files for imported files */
98#include "oaidl.h"
99#include "ocidl.h"
100
101#ifdef __cplusplus
102extern "C"{
103#endif
104
105
106/* interface __MIDL_itf_d3dshadercacheregistration_0000_0000 */
107/* [local] */
108
109#pragma once
110DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);
111typedef
112enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
113 {
114 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER = 0,
115 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM = ( D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER + 1 )
116 } D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
117
118
119
120
121extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_c_ifspec;
122extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_s_ifspec;
123
124#ifndef __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
125#define __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
126
127/* interface ID3DShaderCacheInstallerClient */
128/* [unique][local][object][uuid] */
129
130
131EXTERN_C const IID IID_ID3DShaderCacheInstallerClient;
132
133#if defined(__cplusplus) && !defined(CINTERFACE)
134
135 MIDL_INTERFACE("a16ee930-d9f6-4222-a514-244473e5d266")
136 ID3DShaderCacheInstallerClient
137 {
138 public:
139 BEGIN_INTERFACE
140 virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
141 _Inout_ SIZE_T *pNameLength,
142 _Out_writes_opt_(*pNameLength) wchar_t *pName) = 0;
143
144 virtual D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE STDMETHODCALLTYPE GetInstallerScope( void) = 0;
145
146 virtual HRESULT STDMETHODCALLTYPE HandleDriverUpdate(
147 _In_ ID3DShaderCacheInstaller *pInstaller) = 0;
148
149 END_INTERFACE
150 };
151
152
153#else /* C style interface */
154
155 typedef struct ID3DShaderCacheInstallerClientVtbl
156 {
157 BEGIN_INTERFACE
158
159 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerName)
160 HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
161 ID3DShaderCacheInstallerClient * This,
162 _Inout_ SIZE_T *pNameLength,
163 _Out_writes_opt_(*pNameLength) wchar_t *pName);
164
165 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerScope)
166 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE ( STDMETHODCALLTYPE *GetInstallerScope )(
167 ID3DShaderCacheInstallerClient * This);
168
169 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, HandleDriverUpdate)
170 HRESULT ( STDMETHODCALLTYPE *HandleDriverUpdate )(
171 ID3DShaderCacheInstallerClient * This,
172 _In_ ID3DShaderCacheInstaller *pInstaller);
173
174 END_INTERFACE
175 } ID3DShaderCacheInstallerClientVtbl;
176
177 interface ID3DShaderCacheInstallerClient
178 {
179 CONST_VTBL struct ID3DShaderCacheInstallerClientVtbl *lpVtbl;
180 };
181
182
183
184#ifdef COBJMACROS
185
186
187#define ID3DShaderCacheInstallerClient_GetInstallerName(This,pNameLength,pName) \
188 ( (This)->lpVtbl -> GetInstallerName(This,pNameLength,pName) )
189
190#define ID3DShaderCacheInstallerClient_GetInstallerScope(This) \
191 ( (This)->lpVtbl -> GetInstallerScope(This) )
192
193#define ID3DShaderCacheInstallerClient_HandleDriverUpdate(This,pInstaller) \
194 ( (This)->lpVtbl -> HandleDriverUpdate(This,pInstaller) )
195
196#endif /* COBJMACROS */
197
198
199#endif /* C style interface */
200
201
202
203
204#endif /* __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__ */
205
206
207/* interface __MIDL_itf_d3dshadercacheregistration_0000_0001 */
208/* [local] */
209
210typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
211 {
212 const wchar_t *pAdapterFamily;
213 const wchar_t *pPsdbPath;
214 } D3D_SHADER_CACHE_PSDB_PROPERTIES;
215
216
217
218extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_c_ifspec;
219extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_s_ifspec;
220
221#ifndef __ID3DShaderCacheComponent_INTERFACE_DEFINED__
222#define __ID3DShaderCacheComponent_INTERFACE_DEFINED__
223
224/* interface ID3DShaderCacheComponent */
225/* [unique][local][object][uuid] */
226
227
228EXTERN_C const IID IID_ID3DShaderCacheComponent;
229
230#if defined(__cplusplus) && !defined(CINTERFACE)
231
232 MIDL_INTERFACE("eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828")
233 ID3DShaderCacheComponent : public IUnknown
234 {
235 public:
236 virtual HRESULT STDMETHODCALLTYPE GetComponentName(
237 _Out_ const wchar_t **pName) = 0;
238
239 virtual HRESULT STDMETHODCALLTYPE GetStateObjectDatabasePath(
240 _Out_ const wchar_t **pPath) = 0;
241
242 virtual HRESULT STDMETHODCALLTYPE GetPrecompiledCachePath(
243 _In_ const wchar_t *pAdapterFamily,
244 _Inout_ const wchar_t **pPath) = 0;
245
246 virtual UINT STDMETHODCALLTYPE GetPrecompiledShaderDatabaseCount( void) = 0;
247
248 virtual HRESULT STDMETHODCALLTYPE GetPrecompiledShaderDatabases(
249 UINT ArraySize,
250 _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs) = 0;
251
252 };
253
254
255#else /* C style interface */
256
257 typedef struct ID3DShaderCacheComponentVtbl
258 {
259 BEGIN_INTERFACE
260
261 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
262 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
263 ID3DShaderCacheComponent * This,
264 REFIID riid,
265 _COM_Outptr_ void **ppvObject);
266
267 DECLSPEC_XFGVIRT(IUnknown, AddRef)
268 ULONG ( STDMETHODCALLTYPE *AddRef )(
269 ID3DShaderCacheComponent * This);
270
271 DECLSPEC_XFGVIRT(IUnknown, Release)
272 ULONG ( STDMETHODCALLTYPE *Release )(
273 ID3DShaderCacheComponent * This);
274
275 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetComponentName)
276 HRESULT ( STDMETHODCALLTYPE *GetComponentName )(
277 ID3DShaderCacheComponent * This,
278 _Out_ const wchar_t **pName);
279
280 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetStateObjectDatabasePath)
281 HRESULT ( STDMETHODCALLTYPE *GetStateObjectDatabasePath )(
282 ID3DShaderCacheComponent * This,
283 _Out_ const wchar_t **pPath);
284
285 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledCachePath)
286 HRESULT ( STDMETHODCALLTYPE *GetPrecompiledCachePath )(
287 ID3DShaderCacheComponent * This,
288 _In_ const wchar_t *pAdapterFamily,
289 _Inout_ const wchar_t **pPath);
290
291 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabaseCount)
292 UINT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabaseCount )(
293 ID3DShaderCacheComponent * This);
294
295 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabases)
296 HRESULT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabases )(
297 ID3DShaderCacheComponent * This,
298 UINT ArraySize,
299 _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs);
300
301 END_INTERFACE
302 } ID3DShaderCacheComponentVtbl;
303
304 interface ID3DShaderCacheComponent
305 {
306 CONST_VTBL struct ID3DShaderCacheComponentVtbl *lpVtbl;
307 };
308
309
310
311#ifdef COBJMACROS
312
313
314#define ID3DShaderCacheComponent_QueryInterface(This,riid,ppvObject) \
315 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
316
317#define ID3DShaderCacheComponent_AddRef(This) \
318 ( (This)->lpVtbl -> AddRef(This) )
319
320#define ID3DShaderCacheComponent_Release(This) \
321 ( (This)->lpVtbl -> Release(This) )
322
323
324#define ID3DShaderCacheComponent_GetComponentName(This,pName) \
325 ( (This)->lpVtbl -> GetComponentName(This,pName) )
326
327#define ID3DShaderCacheComponent_GetStateObjectDatabasePath(This,pPath) \
328 ( (This)->lpVtbl -> GetStateObjectDatabasePath(This,pPath) )
329
330#define ID3DShaderCacheComponent_GetPrecompiledCachePath(This,pAdapterFamily,pPath) \
331 ( (This)->lpVtbl -> GetPrecompiledCachePath(This,pAdapterFamily,pPath) )
332
333#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabaseCount(This) \
334 ( (This)->lpVtbl -> GetPrecompiledShaderDatabaseCount(This) )
335
336#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) \
337 ( (This)->lpVtbl -> GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) )
338
339#endif /* COBJMACROS */
340
341
342#endif /* C style interface */
343
344
345
346
347#endif /* __ID3DShaderCacheComponent_INTERFACE_DEFINED__ */
348
349
350/* interface __MIDL_itf_d3dshadercacheregistration_0000_0002 */
351/* [local] */
352
353typedef
354enum D3D_SHADER_CACHE_TARGET_FLAGS
355 {
356 D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0
357 } D3D_SHADER_CACHE_TARGET_FLAGS;
358
359DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )
360typedef union D3D_VERSION_NUMBER
361 {
362 UINT64 Version;
363 UINT16 VersionParts[ 4 ];
364 } D3D_VERSION_NUMBER;
365
366typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
367 {
368 wchar_t szAdapterFamily[ 128 ];
369 UINT64 MinimumABISupportVersion;
370 UINT64 MaximumABISupportVersion;
371 D3D_VERSION_NUMBER CompilerVersion;
372 D3D_VERSION_NUMBER ApplicationProfileVersion;
373 } D3D_SHADER_CACHE_COMPILER_PROPERTIES;
374
375typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
376 {
377 const wchar_t *pExeFilename;
378 const wchar_t *pName;
379 D3D_VERSION_NUMBER Version;
380 const wchar_t *pEngineName;
381 D3D_VERSION_NUMBER EngineVersion;
382 } D3D_SHADER_CACHE_APPLICATION_DESC;
383
384
385
386extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_c_ifspec;
387extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_s_ifspec;
388
389#ifndef __ID3DShaderCacheApplication_INTERFACE_DEFINED__
390#define __ID3DShaderCacheApplication_INTERFACE_DEFINED__
391
392/* interface ID3DShaderCacheApplication */
393/* [unique][local][object][uuid] */
394
395
396EXTERN_C const IID IID_ID3DShaderCacheApplication;
397
398#if defined(__cplusplus) && !defined(CINTERFACE)
399
400 MIDL_INTERFACE("fc688ee2-1b35-4913-93be-1ca3fa7df39e")
401 ID3DShaderCacheApplication : public IUnknown
402 {
403 public:
404 virtual HRESULT STDMETHODCALLTYPE GetExePath(
405 _Out_ const wchar_t **pExePath) = 0;
406
407 virtual HRESULT STDMETHODCALLTYPE GetDesc(
408 _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc) = 0;
409
410 virtual HRESULT STDMETHODCALLTYPE RegisterComponent(
411 _In_ const wchar_t *pName,
412 _In_ const wchar_t *pStateObjectDBPath,
413 _In_ UINT NumPSDB,
414 _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
415 REFIID riid,
416 _COM_Outptr_ void **ppvComponent) = 0;
417
418 virtual HRESULT STDMETHODCALLTYPE RemoveComponent(
419 _In_ ID3DShaderCacheComponent *pComponent) = 0;
420
421 virtual UINT STDMETHODCALLTYPE GetComponentCount( void) = 0;
422
423 virtual HRESULT STDMETHODCALLTYPE GetComponent(
424 _In_ UINT index,
425 REFIID riid,
426 _COM_Outptr_ void **ppvComponent) = 0;
427
428 virtual UINT STDMETHODCALLTYPE GetPrecompileTargetCount(
429 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
430
431 virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
432 _In_ UINT ArraySize,
433 _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
434 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
435
436 virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
437 _Out_ const wchar_t **pInstallerName) = 0;
438
439 };
440
441
442#else /* C style interface */
443
444 typedef struct ID3DShaderCacheApplicationVtbl
445 {
446 BEGIN_INTERFACE
447
448 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
449 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
450 ID3DShaderCacheApplication * This,
451 REFIID riid,
452 _COM_Outptr_ void **ppvObject);
453
454 DECLSPEC_XFGVIRT(IUnknown, AddRef)
455 ULONG ( STDMETHODCALLTYPE *AddRef )(
456 ID3DShaderCacheApplication * This);
457
458 DECLSPEC_XFGVIRT(IUnknown, Release)
459 ULONG ( STDMETHODCALLTYPE *Release )(
460 ID3DShaderCacheApplication * This);
461
462 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetExePath)
463 HRESULT ( STDMETHODCALLTYPE *GetExePath )(
464 ID3DShaderCacheApplication * This,
465 _Out_ const wchar_t **pExePath);
466
467 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetDesc)
468 HRESULT ( STDMETHODCALLTYPE *GetDesc )(
469 ID3DShaderCacheApplication * This,
470 _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc);
471
472 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RegisterComponent)
473 HRESULT ( STDMETHODCALLTYPE *RegisterComponent )(
474 ID3DShaderCacheApplication * This,
475 _In_ const wchar_t *pName,
476 _In_ const wchar_t *pStateObjectDBPath,
477 _In_ UINT NumPSDB,
478 _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
479 REFIID riid,
480 _COM_Outptr_ void **ppvComponent);
481
482 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RemoveComponent)
483 HRESULT ( STDMETHODCALLTYPE *RemoveComponent )(
484 ID3DShaderCacheApplication * This,
485 _In_ ID3DShaderCacheComponent *pComponent);
486
487 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponentCount)
488 UINT ( STDMETHODCALLTYPE *GetComponentCount )(
489 ID3DShaderCacheApplication * This);
490
491 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponent)
492 HRESULT ( STDMETHODCALLTYPE *GetComponent )(
493 ID3DShaderCacheApplication * This,
494 _In_ UINT index,
495 REFIID riid,
496 _COM_Outptr_ void **ppvComponent);
497
498 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargetCount)
499 UINT ( STDMETHODCALLTYPE *GetPrecompileTargetCount )(
500 ID3DShaderCacheApplication * This,
501 D3D_SHADER_CACHE_TARGET_FLAGS flags);
502
503 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargets)
504 HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
505 ID3DShaderCacheApplication * This,
506 _In_ UINT ArraySize,
507 _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
508 D3D_SHADER_CACHE_TARGET_FLAGS flags);
509
510 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetInstallerName)
511 HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
512 ID3DShaderCacheApplication * This,
513 _Out_ const wchar_t **pInstallerName);
514
515 END_INTERFACE
516 } ID3DShaderCacheApplicationVtbl;
517
518 interface ID3DShaderCacheApplication
519 {
520 CONST_VTBL struct ID3DShaderCacheApplicationVtbl *lpVtbl;
521 };
522
523
524
525#ifdef COBJMACROS
526
527
528#define ID3DShaderCacheApplication_QueryInterface(This,riid,ppvObject) \
529 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
530
531#define ID3DShaderCacheApplication_AddRef(This) \
532 ( (This)->lpVtbl -> AddRef(This) )
533
534#define ID3DShaderCacheApplication_Release(This) \
535 ( (This)->lpVtbl -> Release(This) )
536
537
538#define ID3DShaderCacheApplication_GetExePath(This,pExePath) \
539 ( (This)->lpVtbl -> GetExePath(This,pExePath) )
540
541#define ID3DShaderCacheApplication_GetDesc(This,pApplicationDesc) \
542 ( (This)->lpVtbl -> GetDesc(This,pApplicationDesc) )
543
544#define ID3DShaderCacheApplication_RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) \
545 ( (This)->lpVtbl -> RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) )
546
547#define ID3DShaderCacheApplication_RemoveComponent(This,pComponent) \
548 ( (This)->lpVtbl -> RemoveComponent(This,pComponent) )
549
550#define ID3DShaderCacheApplication_GetComponentCount(This) \
551 ( (This)->lpVtbl -> GetComponentCount(This) )
552
553#define ID3DShaderCacheApplication_GetComponent(This,index,riid,ppvComponent) \
554 ( (This)->lpVtbl -> GetComponent(This,index,riid,ppvComponent) )
555
556#define ID3DShaderCacheApplication_GetPrecompileTargetCount(This,flags) \
557 ( (This)->lpVtbl -> GetPrecompileTargetCount(This,flags) )
558
559#define ID3DShaderCacheApplication_GetPrecompileTargets(This,ArraySize,pArray,flags) \
560 ( (This)->lpVtbl -> GetPrecompileTargets(This,ArraySize,pArray,flags) )
561
562#define ID3DShaderCacheApplication_GetInstallerName(This,pInstallerName) \
563 ( (This)->lpVtbl -> GetInstallerName(This,pInstallerName) )
564
565#endif /* COBJMACROS */
566
567
568#endif /* C style interface */
569
570
571
572
573#endif /* __ID3DShaderCacheApplication_INTERFACE_DEFINED__ */
574
575
576/* interface __MIDL_itf_d3dshadercacheregistration_0000_0003 */
577/* [local] */
578
579typedef struct SC_HANDLE__ *SC_HANDLE;
580
581
582
583extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_c_ifspec;
584extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_s_ifspec;
585
586#ifndef __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
587#define __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
588
589/* interface ID3DShaderCacheInstaller */
590/* [unique][local][object][uuid] */
591
592
593EXTERN_C const IID IID_ID3DShaderCacheInstaller;
594
595#if defined(__cplusplus) && !defined(CINTERFACE)
596
597 MIDL_INTERFACE("bbe30de1-6318-4526-ae17-776693191bb4")
598 ID3DShaderCacheInstaller : public IUnknown
599 {
600 public:
601 virtual HRESULT STDMETHODCALLTYPE RegisterDriverUpdateListener( void) = 0;
602
603 virtual HRESULT STDMETHODCALLTYPE UnregisterDriverUpdateListener( void) = 0;
604
605 virtual HRESULT STDMETHODCALLTYPE RegisterServiceDriverUpdateTrigger(
606 SC_HANDLE hServiceHandle) = 0;
607
608 virtual HRESULT STDMETHODCALLTYPE UnregisterServiceDriverUpdateTrigger(
609 SC_HANDLE hServiceHandle) = 0;
610
611 virtual HRESULT STDMETHODCALLTYPE RegisterApplication(
612 _In_ const wchar_t *pExePath,
613 _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
614 REFIID riid,
615 _COM_Outptr_ void **ppvApp) = 0;
616
617 virtual HRESULT STDMETHODCALLTYPE RemoveApplication(
618 _In_ ID3DShaderCacheApplication *pApplication) = 0;
619
620 virtual UINT STDMETHODCALLTYPE GetApplicationCount( void) = 0;
621
622 virtual HRESULT STDMETHODCALLTYPE GetApplication(
623 _In_ UINT index,
624 REFIID riid,
625 _COM_Outptr_ void **ppvApp) = 0;
626
627 virtual HRESULT STDMETHODCALLTYPE ClearAllState( void) = 0;
628
629 virtual UINT STDMETHODCALLTYPE GetMaxPrecompileTargetCount( void) = 0;
630
631 virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
632 _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
633 _Inout_ UINT *pArraySize,
634 _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
635 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
636
637 };
638
639
640#else /* C style interface */
641
642 typedef struct ID3DShaderCacheInstallerVtbl
643 {
644 BEGIN_INTERFACE
645
646 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
647 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
648 ID3DShaderCacheInstaller * This,
649 REFIID riid,
650 _COM_Outptr_ void **ppvObject);
651
652 DECLSPEC_XFGVIRT(IUnknown, AddRef)
653 ULONG ( STDMETHODCALLTYPE *AddRef )(
654 ID3DShaderCacheInstaller * This);
655
656 DECLSPEC_XFGVIRT(IUnknown, Release)
657 ULONG ( STDMETHODCALLTYPE *Release )(
658 ID3DShaderCacheInstaller * This);
659
660 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterDriverUpdateListener)
661 HRESULT ( STDMETHODCALLTYPE *RegisterDriverUpdateListener )(
662 ID3DShaderCacheInstaller * This);
663
664 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterDriverUpdateListener)
665 HRESULT ( STDMETHODCALLTYPE *UnregisterDriverUpdateListener )(
666 ID3DShaderCacheInstaller * This);
667
668 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterServiceDriverUpdateTrigger)
669 HRESULT ( STDMETHODCALLTYPE *RegisterServiceDriverUpdateTrigger )(
670 ID3DShaderCacheInstaller * This,
671 SC_HANDLE hServiceHandle);
672
673 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterServiceDriverUpdateTrigger)
674 HRESULT ( STDMETHODCALLTYPE *UnregisterServiceDriverUpdateTrigger )(
675 ID3DShaderCacheInstaller * This,
676 SC_HANDLE hServiceHandle);
677
678 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterApplication)
679 HRESULT ( STDMETHODCALLTYPE *RegisterApplication )(
680 ID3DShaderCacheInstaller * This,
681 _In_ const wchar_t *pExePath,
682 _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
683 REFIID riid,
684 _COM_Outptr_ void **ppvApp);
685
686 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RemoveApplication)
687 HRESULT ( STDMETHODCALLTYPE *RemoveApplication )(
688 ID3DShaderCacheInstaller * This,
689 _In_ ID3DShaderCacheApplication *pApplication);
690
691 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplicationCount)
692 UINT ( STDMETHODCALLTYPE *GetApplicationCount )(
693 ID3DShaderCacheInstaller * This);
694
695 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplication)
696 HRESULT ( STDMETHODCALLTYPE *GetApplication )(
697 ID3DShaderCacheInstaller * This,
698 _In_ UINT index,
699 REFIID riid,
700 _COM_Outptr_ void **ppvApp);
701
702 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, ClearAllState)
703 HRESULT ( STDMETHODCALLTYPE *ClearAllState )(
704 ID3DShaderCacheInstaller * This);
705
706 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetMaxPrecompileTargetCount)
707 UINT ( STDMETHODCALLTYPE *GetMaxPrecompileTargetCount )(
708 ID3DShaderCacheInstaller * This);
709
710 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetPrecompileTargets)
711 HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
712 ID3DShaderCacheInstaller * This,
713 _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
714 _Inout_ UINT *pArraySize,
715 _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
716 D3D_SHADER_CACHE_TARGET_FLAGS flags);
717
718 END_INTERFACE
719 } ID3DShaderCacheInstallerVtbl;
720
721 interface ID3DShaderCacheInstaller
722 {
723 CONST_VTBL struct ID3DShaderCacheInstallerVtbl *lpVtbl;
724 };
725
726
727
728#ifdef COBJMACROS
729
730
731#define ID3DShaderCacheInstaller_QueryInterface(This,riid,ppvObject) \
732 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
733
734#define ID3DShaderCacheInstaller_AddRef(This) \
735 ( (This)->lpVtbl -> AddRef(This) )
736
737#define ID3DShaderCacheInstaller_Release(This) \
738 ( (This)->lpVtbl -> Release(This) )
739
740
741#define ID3DShaderCacheInstaller_RegisterDriverUpdateListener(This) \
742 ( (This)->lpVtbl -> RegisterDriverUpdateListener(This) )
743
744#define ID3DShaderCacheInstaller_UnregisterDriverUpdateListener(This) \
745 ( (This)->lpVtbl -> UnregisterDriverUpdateListener(This) )
746
747#define ID3DShaderCacheInstaller_RegisterServiceDriverUpdateTrigger(This,hServiceHandle) \
748 ( (This)->lpVtbl -> RegisterServiceDriverUpdateTrigger(This,hServiceHandle) )
749
750#define ID3DShaderCacheInstaller_UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) \
751 ( (This)->lpVtbl -> UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) )
752
753#define ID3DShaderCacheInstaller_RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) \
754 ( (This)->lpVtbl -> RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) )
755
756#define ID3DShaderCacheInstaller_RemoveApplication(This,pApplication) \
757 ( (This)->lpVtbl -> RemoveApplication(This,pApplication) )
758
759#define ID3DShaderCacheInstaller_GetApplicationCount(This) \
760 ( (This)->lpVtbl -> GetApplicationCount(This) )
761
762#define ID3DShaderCacheInstaller_GetApplication(This,index,riid,ppvApp) \
763 ( (This)->lpVtbl -> GetApplication(This,index,riid,ppvApp) )
764
765#define ID3DShaderCacheInstaller_ClearAllState(This) \
766 ( (This)->lpVtbl -> ClearAllState(This) )
767
768#define ID3DShaderCacheInstaller_GetMaxPrecompileTargetCount(This) \
769 ( (This)->lpVtbl -> GetMaxPrecompileTargetCount(This) )
770
771#define ID3DShaderCacheInstaller_GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) \
772 ( (This)->lpVtbl -> GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) )
773
774#endif /* COBJMACROS */
775
776
777#endif /* C style interface */
778
779
780
781
782#endif /* __ID3DShaderCacheInstaller_INTERFACE_DEFINED__ */
783
784
785#ifndef __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
786#define __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
787
788/* interface ID3DShaderCacheExplorer */
789/* [unique][local][object][uuid] */
790
791
792EXTERN_C const IID IID_ID3DShaderCacheExplorer;
793
794#if defined(__cplusplus) && !defined(CINTERFACE)
795
796 MIDL_INTERFACE("90432322-32f5-487f-9264-e9390fa58b2a")
797 ID3DShaderCacheExplorer : public IUnknown
798 {
799 public:
800 virtual HRESULT STDMETHODCALLTYPE GetApplicationFromExePath(
801 _In_ const wchar_t *pFullExePath,
802 REFIID riid,
803 _COM_Outptr_ void **ppvApp) = 0;
804
805 };
806
807
808#else /* C style interface */
809
810 typedef struct ID3DShaderCacheExplorerVtbl
811 {
812 BEGIN_INTERFACE
813
814 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
815 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
816 ID3DShaderCacheExplorer * This,
817 REFIID riid,
818 _COM_Outptr_ void **ppvObject);
819
820 DECLSPEC_XFGVIRT(IUnknown, AddRef)
821 ULONG ( STDMETHODCALLTYPE *AddRef )(
822 ID3DShaderCacheExplorer * This);
823
824 DECLSPEC_XFGVIRT(IUnknown, Release)
825 ULONG ( STDMETHODCALLTYPE *Release )(
826 ID3DShaderCacheExplorer * This);
827
828 DECLSPEC_XFGVIRT(ID3DShaderCacheExplorer, GetApplicationFromExePath)
829 HRESULT ( STDMETHODCALLTYPE *GetApplicationFromExePath )(
830 ID3DShaderCacheExplorer * This,
831 _In_ const wchar_t *pFullExePath,
832 REFIID riid,
833 _COM_Outptr_ void **ppvApp);
834
835 END_INTERFACE
836 } ID3DShaderCacheExplorerVtbl;
837
838 interface ID3DShaderCacheExplorer
839 {
840 CONST_VTBL struct ID3DShaderCacheExplorerVtbl *lpVtbl;
841 };
842
843
844
845#ifdef COBJMACROS
846
847
848#define ID3DShaderCacheExplorer_QueryInterface(This,riid,ppvObject) \
849 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
850
851#define ID3DShaderCacheExplorer_AddRef(This) \
852 ( (This)->lpVtbl -> AddRef(This) )
853
854#define ID3DShaderCacheExplorer_Release(This) \
855 ( (This)->lpVtbl -> Release(This) )
856
857
858#define ID3DShaderCacheExplorer_GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) \
859 ( (This)->lpVtbl -> GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) )
860
861#endif /* COBJMACROS */
862
863
864#endif /* C style interface */
865
866
867
868
869#endif /* __ID3DShaderCacheExplorer_INTERFACE_DEFINED__ */
870
871
872#ifndef __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
873#define __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
874
875/* interface ID3DShaderCacheInstallerFactory */
876/* [unique][local][object][uuid] */
877
878
879EXTERN_C const IID IID_ID3DShaderCacheInstallerFactory;
880
881#if defined(__cplusplus) && !defined(CINTERFACE)
882
883 MIDL_INTERFACE("09b2dfe4-840f-401a-804c-0dd8aadc9e9f")
884 ID3DShaderCacheInstallerFactory : public IUnknown
885 {
886 public:
887 virtual HRESULT STDMETHODCALLTYPE CreateInstaller(
888 _In_ ID3DShaderCacheInstallerClient *pClient,
889 REFIID riid,
890 _COM_Outptr_ void **ppvInstaller) = 0;
891
892 virtual HRESULT STDMETHODCALLTYPE CreateExplorer(
893 IUnknown *pUnknown,
894 REFIID riid,
895 _COM_Outptr_ void **ppvExplorer) = 0;
896
897 };
898
899
900#else /* C style interface */
901
902 typedef struct ID3DShaderCacheInstallerFactoryVtbl
903 {
904 BEGIN_INTERFACE
905
906 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
907 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
908 ID3DShaderCacheInstallerFactory * This,
909 REFIID riid,
910 _COM_Outptr_ void **ppvObject);
911
912 DECLSPEC_XFGVIRT(IUnknown, AddRef)
913 ULONG ( STDMETHODCALLTYPE *AddRef )(
914 ID3DShaderCacheInstallerFactory * This);
915
916 DECLSPEC_XFGVIRT(IUnknown, Release)
917 ULONG ( STDMETHODCALLTYPE *Release )(
918 ID3DShaderCacheInstallerFactory * This);
919
920 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateInstaller)
921 HRESULT ( STDMETHODCALLTYPE *CreateInstaller )(
922 ID3DShaderCacheInstallerFactory * This,
923 _In_ ID3DShaderCacheInstallerClient *pClient,
924 REFIID riid,
925 _COM_Outptr_ void **ppvInstaller);
926
927 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateExplorer)
928 HRESULT ( STDMETHODCALLTYPE *CreateExplorer )(
929 ID3DShaderCacheInstallerFactory * This,
930 IUnknown *pUnknown,
931 REFIID riid,
932 _COM_Outptr_ void **ppvExplorer);
933
934 END_INTERFACE
935 } ID3DShaderCacheInstallerFactoryVtbl;
936
937 interface ID3DShaderCacheInstallerFactory
938 {
939 CONST_VTBL struct ID3DShaderCacheInstallerFactoryVtbl *lpVtbl;
940 };
941
942
943
944#ifdef COBJMACROS
945
946
947#define ID3DShaderCacheInstallerFactory_QueryInterface(This,riid,ppvObject) \
948 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
949
950#define ID3DShaderCacheInstallerFactory_AddRef(This) \
951 ( (This)->lpVtbl -> AddRef(This) )
952
953#define ID3DShaderCacheInstallerFactory_Release(This) \
954 ( (This)->lpVtbl -> Release(This) )
955
956
957#define ID3DShaderCacheInstallerFactory_CreateInstaller(This,pClient,riid,ppvInstaller) \
958 ( (This)->lpVtbl -> CreateInstaller(This,pClient,riid,ppvInstaller) )
959
960#define ID3DShaderCacheInstallerFactory_CreateExplorer(This,pUnknown,riid,ppvExplorer) \
961 ( (This)->lpVtbl -> CreateExplorer(This,pUnknown,riid,ppvExplorer) )
962
963#endif /* COBJMACROS */
964
965
966#endif /* C style interface */
967
968
969
970
971#endif /* __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__ */
972
973
974/* interface __MIDL_itf_d3dshadercacheregistration_0000_0006 */
975/* [local] */
976
977DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);
978DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);
979DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);
980DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);
981DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);
982DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);
983
984
985extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_c_ifspec;
986extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_s_ifspec;
987
988/* Additional Prototypes for ALL interfaces */
989
990/* end of Additional Prototypes */
991
992#ifdef __cplusplus
993}
994#endif
995
996#endif
997
998
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.idl
new file mode 100644
index 0000000..7dcc53d
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dshadercacheregistration.idl
@@ -0,0 +1,195 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7#pragma once
8import "oaidl.idl";
9import "ocidl.idl";
10
11cpp_quote("DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);")
12
13typedef enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
14{
15 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER,
16 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM
17} D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
18
19interface ID3DShaderCacheInstaller;
20
21// This interface is implemented by the game installer
22[uuid(a16ee930-d9f6-4222-a514-244473e5d266), object, local, pointer_default(unique)]
23interface ID3DShaderCacheInstallerClient
24{
25 HRESULT GetInstallerName(
26 [annotation("_Inout_")] SIZE_T* pNameLength,
27 [annotation("_Out_writes_opt_(*pNameLength)")] wchar_t* pName);
28
29 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE GetInstallerScope();
30
31 HRESULT HandleDriverUpdate(
32 [annotation("_In_")] ID3DShaderCacheInstaller* pInstaller);
33};
34
35typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
36{
37 const wchar_t* pAdapterFamily;
38 const wchar_t* pPsdbPath;
39} D3D_SHADER_CACHE_PSDB_PROPERTIES;
40
41[uuid(eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828), object, local, pointer_default(unique)]
42interface ID3DShaderCacheComponent : IUnknown
43{
44 HRESULT GetComponentName(
45 [annotation("_Out_")] const wchar_t** pName);
46
47 HRESULT GetStateObjectDatabasePath(
48 [annotation("_Out_")] const wchar_t** pPath);
49
50 HRESULT GetPrecompiledCachePath(
51 [annotation("_In_")] const wchar_t* pAdapterFamily,
52 [annotation("_Inout_")] const wchar_t** pPath);
53
54 UINT GetPrecompiledShaderDatabaseCount();
55
56 HRESULT GetPrecompiledShaderDatabases(
57 UINT ArraySize,
58 [annotation("_Out_writes_(ArraySize)")] D3D_SHADER_CACHE_PSDB_PROPERTIES * pPSDBs);
59};
60
61typedef enum D3D_SHADER_CACHE_TARGET_FLAGS
62{
63 D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0,
64}D3D_SHADER_CACHE_TARGET_FLAGS;
65cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )")
66
67typedef union D3D_VERSION_NUMBER
68{
69 UINT64 Version;
70 UINT16 VersionParts[4];
71} D3D_VERSION_NUMBER;
72
73typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
74{
75 wchar_t szAdapterFamily[128];
76 UINT64 MinimumABISupportVersion;
77 UINT64 MaximumABISupportVersion;
78 D3D_VERSION_NUMBER CompilerVersion;
79 D3D_VERSION_NUMBER ApplicationProfileVersion;
80} D3D_SHADER_CACHE_COMPILER_PROPERTIES;
81
82typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
83{
84 const wchar_t* pExeFilename;
85 const wchar_t* pName;
86 D3D_VERSION_NUMBER Version;
87 const wchar_t* pEngineName;
88 D3D_VERSION_NUMBER EngineVersion;
89} D3D_SHADER_CACHE_APPLICATION_DESC;
90
91[uuid(fc688ee2-1b35-4913-93be-1ca3fa7df39e), object, local, pointer_default(unique)]
92interface ID3DShaderCacheApplication : IUnknown
93{
94 HRESULT GetExePath(
95 [annotation("_Out_")] const wchar_t** pExePath);
96
97 HRESULT GetDesc(
98 [annotation("_Out_")] D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc);
99
100 HRESULT RegisterComponent(
101 [annotation("_In_")] const wchar_t* pName,
102 [annotation("_In_")] const wchar_t* pStateObjectDBPath,
103 [annotation("_In_")] UINT NumPSDB,
104 [annotation("_In_reads_(NumPSDB)")] const D3D_SHADER_CACHE_PSDB_PROPERTIES* pPSDBs,
105 [in] REFIID riid,
106 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvComponent);
107
108 HRESULT RemoveComponent(
109 [annotation("_In_")] ID3DShaderCacheComponent* pComponent);
110
111 UINT GetComponentCount();
112
113 HRESULT GetComponent(
114 [annotation("_In_")] UINT index,
115 [in] REFIID riid,
116 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvComponent);
117
118 UINT GetPrecompileTargetCount(D3D_SHADER_CACHE_TARGET_FLAGS flags);
119
120 HRESULT GetPrecompileTargets(
121 [annotation("_In_")] UINT ArraySize,
122 [annotation("_In_reads_(ArraySize)")] D3D_SHADER_CACHE_COMPILER_PROPERTIES* pArray,
123 D3D_SHADER_CACHE_TARGET_FLAGS flags);
124
125 HRESULT GetInstallerName(
126 [annotation("_Out_")] const wchar_t** pInstallerName);
127};
128
129typedef struct SC_HANDLE__ *SC_HANDLE;
130[uuid(bbe30de1-6318-4526-ae17-776693191bb4), object, local, pointer_default(unique)]
131interface ID3DShaderCacheInstaller : IUnknown
132{
133 HRESULT RegisterDriverUpdateListener();
134 HRESULT UnregisterDriverUpdateListener();
135
136 HRESULT RegisterServiceDriverUpdateTrigger(SC_HANDLE hServiceHandle);
137 HRESULT UnregisterServiceDriverUpdateTrigger(SC_HANDLE hServiceHandle);
138
139 HRESULT RegisterApplication(
140 [annotation("_In_")] const wchar_t* pExePath,
141 [annotation("_In_")] const D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc,
142 [in] REFIID riid,
143 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
144
145 HRESULT RemoveApplication(
146 [annotation("_In_")] ID3DShaderCacheApplication* pApplication); // Expected: ID3DShaderCacheApplication
147
148 UINT GetApplicationCount();
149
150 HRESULT GetApplication(
151 [annotation("_In_")] UINT index,
152 [in] REFIID riid,
153 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
154
155 HRESULT ClearAllState();
156
157 UINT GetMaxPrecompileTargetCount();
158
159 HRESULT GetPrecompileTargets(
160 [annotation("_In_opt_")] const D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc,
161 [annotation("_Inout_")] UINT* pArraySize,
162 [annotation("_Out_writes_(*pArraySize)")] D3D_SHADER_CACHE_COMPILER_PROPERTIES* pArray,
163 D3D_SHADER_CACHE_TARGET_FLAGS flags);
164};
165
166[uuid(90432322-32f5-487f-9264-e9390fa58b2a), object, local, pointer_default(unique)]
167interface ID3DShaderCacheExplorer : IUnknown
168{
169 HRESULT GetApplicationFromExePath(
170 [annotation("_In_")] const wchar_t* pFullExePath,
171 [in] REFIID riid,
172 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
173};
174
175[uuid(09b2dfe4-840f-401a-804c-0dd8aadc9e9f), object, local, pointer_default(unique)]
176interface ID3DShaderCacheInstallerFactory : IUnknown
177{
178 HRESULT CreateInstaller(
179 [annotation("_In_")] ID3DShaderCacheInstallerClient* pClient,
180 [in] REFIID riid,
181 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvInstaller);
182
183 HRESULT CreateExplorer(
184 [in] IUnknown* pUnknown, // Expected: ID3D12Device, IDXCoreAdapter, IDXGIAdapter
185 [in] REFIID riid,
186 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvExplorer); // Expected: ID3DShaderCacheExplorer
187};
188
189
190cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);" )
191cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);" )
192cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);" )
193cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);" )
194cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);" )
195cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);" )
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12.h
new file mode 100644
index 0000000..e8ec24e
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12.h
@@ -0,0 +1,36 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_H__
9#define __D3DX12_H__
10
11#include "d3d12.h"
12
13#if defined( __cplusplus )
14
15#include "d3dx12_barriers.h"
16#include "d3dx12_core.h"
17#include "d3dx12_default.h"
18#include "d3dx12_pipeline_state_stream.h"
19#include "d3dx12_render_pass.h"
20#include "d3dx12_resource_helpers.h"
21#include "d3dx12_root_signature.h"
22#include "d3dx12_property_format_table.h"
23
24#ifndef D3DX12_NO_STATE_OBJECT_HELPERS
25#include "d3dx12_state_object.h"
26#endif // !D3DX12_NO_STATE_OBJECT_HELPERS
27
28#ifndef D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
29#include "d3dx12_check_feature_support.h"
30#endif // !D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
31
32#endif // defined( __cplusplus )
33
34#endif //__D3DX12_H__
35
36
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_barriers.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_barriers.h
new file mode 100644
index 0000000..1bd7a74
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_barriers.h
@@ -0,0 +1,193 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_BARRIERS_H__
9#define __D3DX12_BARRIERS_H__
10
11#if defined( __cplusplus )
12
13#include "d3d12.h"
14
15//------------------------------------------------------------------------------------------------
16struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
17{
18 CD3DX12_RESOURCE_BARRIER() = default;
19 explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
20 D3D12_RESOURCE_BARRIER(o)
21 {}
22 static inline CD3DX12_RESOURCE_BARRIER Transition(
23 _In_ ID3D12Resource* pResource,
24 D3D12_RESOURCE_STATES stateBefore,
25 D3D12_RESOURCE_STATES stateAfter,
26 UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
27 D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept
28 {
29 CD3DX12_RESOURCE_BARRIER result = {};
30 D3D12_RESOURCE_BARRIER &barrier = result;
31 result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
32 result.Flags = flags;
33 barrier.Transition.pResource = pResource;
34 barrier.Transition.StateBefore = stateBefore;
35 barrier.Transition.StateAfter = stateAfter;
36 barrier.Transition.Subresource = subresource;
37 return result;
38 }
39 static inline CD3DX12_RESOURCE_BARRIER Aliasing(
40 _In_opt_ ID3D12Resource* pResourceBefore,
41 _In_opt_ ID3D12Resource* pResourceAfter) noexcept
42 {
43 CD3DX12_RESOURCE_BARRIER result = {};
44 D3D12_RESOURCE_BARRIER &barrier = result;
45 result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
46 barrier.Aliasing.pResourceBefore = pResourceBefore;
47 barrier.Aliasing.pResourceAfter = pResourceAfter;
48 return result;
49 }
50 static inline CD3DX12_RESOURCE_BARRIER UAV(
51 _In_opt_ ID3D12Resource* pResource) noexcept
52 {
53 CD3DX12_RESOURCE_BARRIER result = {};
54 D3D12_RESOURCE_BARRIER &barrier = result;
55 result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
56 barrier.UAV.pResource = pResource;
57 return result;
58 }
59};
60
61#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
62
63//================================================================================================
64// D3DX12 Enhanced Barrier Helpers
65//================================================================================================
66
67class CD3DX12_BARRIER_SUBRESOURCE_RANGE : public D3D12_BARRIER_SUBRESOURCE_RANGE
68{
69public:
70 CD3DX12_BARRIER_SUBRESOURCE_RANGE() = default;
71 CD3DX12_BARRIER_SUBRESOURCE_RANGE(const D3D12_BARRIER_SUBRESOURCE_RANGE &o) noexcept :
72 D3D12_BARRIER_SUBRESOURCE_RANGE(o)
73 {}
74 explicit CD3DX12_BARRIER_SUBRESOURCE_RANGE(UINT Subresource) noexcept :
75 D3D12_BARRIER_SUBRESOURCE_RANGE{ Subresource, 0, 0, 0, 0, 0 }
76 {}
77 CD3DX12_BARRIER_SUBRESOURCE_RANGE(
78 UINT firstMipLevel,
79 UINT numMips,
80 UINT firstArraySlice,
81 UINT numArraySlices,
82 UINT firstPlane = 0,
83 UINT numPlanes = 1) noexcept :
84 D3D12_BARRIER_SUBRESOURCE_RANGE
85 {
86 firstMipLevel,
87 numMips,
88 firstArraySlice,
89 numArraySlices,
90 firstPlane,
91 numPlanes
92 }
93 {}
94};
95
96class CD3DX12_GLOBAL_BARRIER : public D3D12_GLOBAL_BARRIER
97{
98public:
99 CD3DX12_GLOBAL_BARRIER() = default;
100 CD3DX12_GLOBAL_BARRIER(const D3D12_GLOBAL_BARRIER &o) noexcept : D3D12_GLOBAL_BARRIER(o){}
101 CD3DX12_GLOBAL_BARRIER(
102 D3D12_BARRIER_SYNC syncBefore,
103 D3D12_BARRIER_SYNC syncAfter,
104 D3D12_BARRIER_ACCESS accessBefore,
105 D3D12_BARRIER_ACCESS accessAfter) noexcept : D3D12_GLOBAL_BARRIER {
106 syncBefore,
107 syncAfter,
108 accessBefore,
109 accessAfter
110 }
111 {}
112};
113
114class CD3DX12_BUFFER_BARRIER : public D3D12_BUFFER_BARRIER
115{
116public:
117 CD3DX12_BUFFER_BARRIER() = default;
118 CD3DX12_BUFFER_BARRIER(const D3D12_BUFFER_BARRIER &o) noexcept : D3D12_BUFFER_BARRIER(o){}
119 CD3DX12_BUFFER_BARRIER(
120 D3D12_BARRIER_SYNC syncBefore,
121 D3D12_BARRIER_SYNC syncAfter,
122 D3D12_BARRIER_ACCESS accessBefore,
123 D3D12_BARRIER_ACCESS accessAfter,
124 ID3D12Resource *pRes) noexcept : D3D12_BUFFER_BARRIER {
125 syncBefore,
126 syncAfter,
127 accessBefore,
128 accessAfter,
129 pRes,
130 0, ULLONG_MAX
131 }
132 {}
133};
134
135class CD3DX12_TEXTURE_BARRIER : public D3D12_TEXTURE_BARRIER
136{
137public:
138 CD3DX12_TEXTURE_BARRIER() = default;
139 CD3DX12_TEXTURE_BARRIER(const D3D12_TEXTURE_BARRIER &o) noexcept : D3D12_TEXTURE_BARRIER(o){}
140 CD3DX12_TEXTURE_BARRIER(
141 D3D12_BARRIER_SYNC syncBefore,
142 D3D12_BARRIER_SYNC syncAfter,
143 D3D12_BARRIER_ACCESS accessBefore,
144 D3D12_BARRIER_ACCESS accessAfter,
145 D3D12_BARRIER_LAYOUT layoutBefore,
146 D3D12_BARRIER_LAYOUT layoutAfter,
147 ID3D12Resource *pRes,
148 const D3D12_BARRIER_SUBRESOURCE_RANGE &subresources,
149 D3D12_TEXTURE_BARRIER_FLAGS flag = D3D12_TEXTURE_BARRIER_FLAG_NONE) noexcept : D3D12_TEXTURE_BARRIER {
150 syncBefore,
151 syncAfter,
152 accessBefore,
153 accessAfter,
154 layoutBefore,
155 layoutAfter,
156 pRes,
157 subresources,
158 flag
159 }
160 {}
161};
162
163class CD3DX12_BARRIER_GROUP : public D3D12_BARRIER_GROUP
164{
165public:
166 CD3DX12_BARRIER_GROUP() = default;
167 CD3DX12_BARRIER_GROUP(const D3D12_BARRIER_GROUP &o) noexcept : D3D12_BARRIER_GROUP(o){}
168 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_BUFFER_BARRIER *pBarriers) noexcept
169 {
170 Type = D3D12_BARRIER_TYPE_BUFFER;
171 NumBarriers = numBarriers;
172 pBufferBarriers = pBarriers;
173 }
174 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_TEXTURE_BARRIER *pBarriers) noexcept
175 {
176 Type = D3D12_BARRIER_TYPE_TEXTURE;
177 NumBarriers = numBarriers;
178 pTextureBarriers = pBarriers;
179 }
180 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_GLOBAL_BARRIER *pBarriers) noexcept
181 {
182 Type = D3D12_BARRIER_TYPE_GLOBAL;
183 NumBarriers = numBarriers;
184 pGlobalBarriers = pBarriers;
185 }
186};
187#endif // D3D12_SDK_VERSION >= 608
188
189
190#endif // defined( __cplusplus )
191
192#endif // __D3DX12_BARRIERS_H__
193
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_check_feature_support.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_check_feature_support.h
new file mode 100644
index 0000000..725fb7f
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_check_feature_support.h
@@ -0,0 +1,1162 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15
16//================================================================================================
17// D3DX12 Check Feature Support
18//================================================================================================
19
20#include <vector>
21
22class CD3DX12FeatureSupport
23{
24public: // Function declaration
25 // Default constructor that creates an empty object
26 CD3DX12FeatureSupport() noexcept;
27
28 // Initialize data from the given device
29 HRESULT Init(ID3D12Device* pDevice);
30
31 // Retreives the status of the object. If an error occurred in the initialization process, the function returns the error code.
32 HRESULT GetStatus() const noexcept { return m_hStatus; }
33
34 // Getter functions for each feature class
35 // D3D12_OPTIONS
36 BOOL DoublePrecisionFloatShaderOps() const noexcept;
37 BOOL OutputMergerLogicOp() const noexcept;
38 D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport() const noexcept;
39 D3D12_TILED_RESOURCES_TIER TiledResourcesTier() const noexcept;
40 D3D12_RESOURCE_BINDING_TIER ResourceBindingTier() const noexcept;
41 BOOL PSSpecifiedStencilRefSupported() const noexcept;
42 BOOL TypedUAVLoadAdditionalFormats() const noexcept;
43 BOOL ROVsSupported() const noexcept;
44 D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier() const noexcept;
45 BOOL StandardSwizzle64KBSupported() const noexcept;
46 BOOL CrossAdapterRowMajorTextureSupported() const noexcept;
47 BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation() const noexcept;
48 D3D12_RESOURCE_HEAP_TIER ResourceHeapTier() const noexcept;
49 D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier() const noexcept;
50 UINT MaxGPUVirtualAddressBitsPerResource() const noexcept;
51
52 // FEATURE_LEVELS
53 D3D_FEATURE_LEVEL MaxSupportedFeatureLevel() const noexcept;
54
55 // FORMAT_SUPPORT
56 HRESULT FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const;
57
58 // MUTLTISAMPLE_QUALITY_LEVELS
59 HRESULT MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const;
60
61 // FORMAT_INFO
62 HRESULT FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const;
63
64 // GPU_VIRTUAL_ADDRESS_SUPPORT
65 UINT MaxGPUVirtualAddressBitsPerProcess() const noexcept;
66
67 // SHADER_MODEL
68 D3D_SHADER_MODEL HighestShaderModel() const noexcept;
69
70 // D3D12_OPTIONS1
71 BOOL WaveOps() const noexcept;
72 UINT WaveLaneCountMin() const noexcept;
73 UINT WaveLaneCountMax() const noexcept;
74 UINT TotalLaneCount() const noexcept;
75 BOOL ExpandedComputeResourceStates() const noexcept;
76 BOOL Int64ShaderOps() const noexcept;
77
78 // PROTECTED_RESOURCE_SESSION_SUPPORT
79 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS ProtectedResourceSessionSupport(UINT NodeIndex = 0) const;
80
81 // ROOT_SIGNATURE
82 D3D_ROOT_SIGNATURE_VERSION HighestRootSignatureVersion() const noexcept;
83
84 // ARCHITECTURE1
85 BOOL TileBasedRenderer(UINT NodeIndex = 0) const;
86 BOOL UMA(UINT NodeIndex = 0) const;
87 BOOL CacheCoherentUMA(UINT NodeIndex = 0) const;
88 BOOL IsolatedMMU(UINT NodeIndex = 0) const;
89
90 // D3D12_OPTIONS2
91 BOOL DepthBoundsTestSupported() const noexcept;
92 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier() const noexcept;
93
94 // SHADER_CACHE
95 D3D12_SHADER_CACHE_SUPPORT_FLAGS ShaderCacheSupportFlags() const noexcept;
96
97 // COMMAND_QUEUE_PRIORITY
98 BOOL CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority);
99
100 // D3D12_OPTIONS3
101 BOOL CopyQueueTimestampQueriesSupported() const noexcept;
102 BOOL CastingFullyTypedFormatSupported() const noexcept;
103 D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags() const noexcept;
104 D3D12_VIEW_INSTANCING_TIER ViewInstancingTier() const noexcept;
105 BOOL BarycentricsSupported() const noexcept;
106
107 // EXISTING_HEAPS
108 BOOL ExistingHeapsSupported() const noexcept;
109
110 // D3D12_OPTIONS4
111 BOOL MSAA64KBAlignedTextureSupported() const noexcept;
112 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier() const noexcept;
113 BOOL Native16BitShaderOpsSupported() const noexcept;
114
115 // SERIALIZATION
116 D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier(UINT NodeIndex = 0) const;
117
118 // CROSS_NODE
119 // CrossNodeSharingTier handled in D3D12Options
120 BOOL CrossNodeAtomicShaderInstructions() const noexcept;
121
122 // D3D12_OPTIONS5
123 BOOL SRVOnlyTiledResourceTier3() const noexcept;
124 D3D12_RENDER_PASS_TIER RenderPassesTier() const noexcept;
125 D3D12_RAYTRACING_TIER RaytracingTier() const noexcept;
126
127#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
128 // DISPLAYABLE
129 BOOL DisplayableTexture() const noexcept;
130 // SharedResourceCompatibilityTier handled in D3D12Options4
131#endif
132
133 // D3D12_OPTIONS6
134 BOOL AdditionalShadingRatesSupported() const noexcept;
135 BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing() const noexcept;
136 D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier() const noexcept;
137 UINT ShadingRateImageTileSize() const noexcept;
138 BOOL BackgroundProcessingSupported() const noexcept;
139
140 // QUERY_META_COMMAND
141 HRESULT QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const;
142
143 // D3D12_OPTIONS7
144 D3D12_MESH_SHADER_TIER MeshShaderTier() const noexcept;
145 D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier() const noexcept;
146
147 // PROTECTED_RESOURCE_SESSION_TYPE_COUNT
148 UINT ProtectedResourceSessionTypeCount(UINT NodeIndex = 0) const;
149
150 // PROTECTED_RESOURCE_SESSION_TYPES
151 std::vector<GUID> ProtectedResourceSessionTypes(UINT NodeIndex = 0) const;
152
153#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
154 // D3D12_OPTIONS8
155 BOOL UnalignedBlockTexturesSupported() const noexcept;
156
157 // D3D12_OPTIONS9
158 BOOL MeshShaderPipelineStatsSupported() const noexcept;
159 BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex() const noexcept;
160 BOOL AtomicInt64OnTypedResourceSupported() const noexcept;
161 BOOL AtomicInt64OnGroupSharedSupported() const noexcept;
162 BOOL DerivativesInMeshAndAmplificationShadersSupported() const noexcept;
163 D3D12_WAVE_MMA_TIER WaveMMATier() const noexcept;
164#endif
165
166#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
167 // D3D12_OPTIONS10
168 BOOL VariableRateShadingSumCombinerSupported() const noexcept;
169 BOOL MeshShaderPerPrimitiveShadingRateSupported() const noexcept;
170
171 // D3D12_OPTIONS11
172 BOOL AtomicInt64OnDescriptorHeapResourceSupported() const noexcept;
173#endif
174
175#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
176 // D3D12_OPTIONS12
177 D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives() const noexcept;
178 BOOL EnhancedBarriersSupported() const noexcept;
179 BOOL RelaxedFormatCastingSupported() const noexcept;
180#endif
181
182#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
183 // D3D12_OPTIONS13
184 BOOL UnrestrictedBufferTextureCopyPitchSupported() const noexcept;
185 BOOL UnrestrictedVertexElementAlignmentSupported() const noexcept;
186 BOOL InvertedViewportHeightFlipsYSupported() const noexcept;
187 BOOL InvertedViewportDepthFlipsZSupported() const noexcept;
188 BOOL TextureCopyBetweenDimensionsSupported() const noexcept;
189 BOOL AlphaBlendFactorSupported() const noexcept;
190#endif
191
192#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
193 // D3D12_OPTIONS14
194 BOOL AdvancedTextureOpsSupported() const noexcept;
195 BOOL WriteableMSAATexturesSupported() const noexcept;
196 BOOL IndependentFrontAndBackStencilRefMaskSupported() const noexcept;
197
198 // D3D12_OPTIONS15
199 BOOL TriangleFanSupported() const noexcept;
200 BOOL DynamicIndexBufferStripCutSupported() const noexcept;
201#endif
202
203#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
204 // D3D12_OPTIONS16
205 BOOL DynamicDepthBiasSupported() const noexcept;
206#endif
207#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
208 BOOL GPUUploadHeapSupported() const noexcept;
209
210 // D3D12_OPTIONS17
211 BOOL NonNormalizedCoordinateSamplersSupported() const noexcept;
212 BOOL ManualWriteTrackingResourceSupported() const noexcept;
213
214 // D3D12_OPTIONS18
215 BOOL RenderPassesValid() const noexcept;
216#endif
217
218#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
219 BOOL MismatchingOutputDimensionsSupported() const noexcept;
220 UINT SupportedSampleCountsWithNoOutputs() const noexcept;
221 BOOL PointSamplingAddressesNeverRoundUp() const noexcept;
222 BOOL RasterizerDesc2Supported() const noexcept;
223 BOOL NarrowQuadrilateralLinesSupported() const noexcept;
224 BOOL AnisoFilterWithPointMipSupported() const noexcept;
225 UINT MaxSamplerDescriptorHeapSize() const noexcept;
226 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers() const noexcept;
227 UINT MaxViewDescriptorHeapSize() const noexcept;
228#endif
229
230#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
231 BOOL ComputeOnlyWriteWatchSupported() const noexcept;
232#endif
233
234#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
235 D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier() const noexcept;
236 D3D12_WORK_GRAPHS_TIER WorkGraphsTier() const noexcept;
237#endif
238
239#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
240 D3D12_TIGHT_ALIGNMENT_TIER TightAlignmentSupportTier() const noexcept;
241#endif
242
243private: // Private structs and helpers declaration
244 struct ProtectedResourceSessionTypesLocal : D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
245 {
246 std::vector<GUID> TypeVec;
247 };
248
249 // Helper function to decide the highest shader model supported by the system
250 // Stores the result in m_dShaderModel
251 // Must be updated whenever a new shader model is added to the d3d12.h header
252 HRESULT QueryHighestShaderModel();
253
254 // Helper function to decide the highest root signature supported
255 // Must be updated whenever a new root signature version is added to the d3d12.h header
256 HRESULT QueryHighestRootSignatureVersion();
257
258 // Helper funcion to decide the highest feature level
259 HRESULT QueryHighestFeatureLevel();
260
261 // Helper function to initialize local protected resource session types structs
262 HRESULT QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count);
263
264private: // Member data
265 // Pointer to the underlying device
266 ID3D12Device* m_pDevice;
267
268 // Stores the error code from initialization
269 HRESULT m_hStatus;
270
271 // Feature support data structs
272 D3D12_FEATURE_DATA_D3D12_OPTIONS m_dOptions;
273 D3D_FEATURE_LEVEL m_eMaxFeatureLevel;
274 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT m_dGPUVASupport;
275 D3D12_FEATURE_DATA_SHADER_MODEL m_dShaderModel;
276 D3D12_FEATURE_DATA_D3D12_OPTIONS1 m_dOptions1;
277 std::vector<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT> m_dProtectedResourceSessionSupport;
278 D3D12_FEATURE_DATA_ROOT_SIGNATURE m_dRootSignature;
279 std::vector<D3D12_FEATURE_DATA_ARCHITECTURE1> m_dArchitecture1;
280 D3D12_FEATURE_DATA_D3D12_OPTIONS2 m_dOptions2;
281 D3D12_FEATURE_DATA_SHADER_CACHE m_dShaderCache;
282 D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY m_dCommandQueuePriority;
283 D3D12_FEATURE_DATA_D3D12_OPTIONS3 m_dOptions3;
284 D3D12_FEATURE_DATA_EXISTING_HEAPS m_dExistingHeaps;
285 D3D12_FEATURE_DATA_D3D12_OPTIONS4 m_dOptions4;
286 std::vector<D3D12_FEATURE_DATA_SERIALIZATION> m_dSerialization; // Cat2 NodeIndex
287 D3D12_FEATURE_DATA_CROSS_NODE m_dCrossNode;
288 D3D12_FEATURE_DATA_D3D12_OPTIONS5 m_dOptions5;
289#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
290 D3D12_FEATURE_DATA_DISPLAYABLE m_dDisplayable;
291#endif
292 D3D12_FEATURE_DATA_D3D12_OPTIONS6 m_dOptions6;
293 D3D12_FEATURE_DATA_D3D12_OPTIONS7 m_dOptions7;
294 std::vector<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT> m_dProtectedResourceSessionTypeCount; // Cat2 NodeIndex
295 std::vector<ProtectedResourceSessionTypesLocal> m_dProtectedResourceSessionTypes; // Cat3
296#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
297 D3D12_FEATURE_DATA_D3D12_OPTIONS8 m_dOptions8;
298 D3D12_FEATURE_DATA_D3D12_OPTIONS9 m_dOptions9;
299#endif
300#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
301 D3D12_FEATURE_DATA_D3D12_OPTIONS10 m_dOptions10;
302 D3D12_FEATURE_DATA_D3D12_OPTIONS11 m_dOptions11;
303#endif
304#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
305 D3D12_FEATURE_DATA_D3D12_OPTIONS12 m_dOptions12;
306#endif
307#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
308 D3D12_FEATURE_DATA_D3D12_OPTIONS13 m_dOptions13;
309#endif
310#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
311 D3D12_FEATURE_DATA_D3D12_OPTIONS14 m_dOptions14;
312 D3D12_FEATURE_DATA_D3D12_OPTIONS15 m_dOptions15;
313#endif
314#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
315 D3D12_FEATURE_DATA_D3D12_OPTIONS16 m_dOptions16;
316#endif
317#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
318 D3D12_FEATURE_DATA_D3D12_OPTIONS17 m_dOptions17;
319#endif
320#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
321 D3D12_FEATURE_DATA_D3D12_OPTIONS18 m_dOptions18;
322#endif
323#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
324 D3D12_FEATURE_DATA_D3D12_OPTIONS19 m_dOptions19;
325#endif
326#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
327 D3D12_FEATURE_DATA_D3D12_OPTIONS20 m_dOptions20;
328#endif
329#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
330 D3D12_FEATURE_DATA_D3D12_OPTIONS21 m_dOptions21;
331#endif
332#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
333 D3D12_FEATURE_DATA_TIGHT_ALIGNMENT m_dTightAlignment;
334#endif
335};
336
337// Implementations for CD3DX12FeatureSupport functions
338
339// Macro to set up a getter function for each entry in feature support data
340// The getter function will have the same name as the feature option name
341#define FEATURE_SUPPORT_GET(RETTYPE,FEATURE,OPTION) \
342inline RETTYPE CD3DX12FeatureSupport::OPTION() const noexcept \
343{ \
344 return FEATURE.OPTION; \
345}
346
347// Macro to set up a getter function for each entry in feature support data
348// Also specifies the name for the function which can be different from the feature name
349#define FEATURE_SUPPORT_GET_NAME(RETTYPE,FEATURE,OPTION,NAME) \
350inline RETTYPE CD3DX12FeatureSupport::NAME() const noexcept \
351{\
352 return FEATURE.OPTION; \
353}
354
355// Macro to set up a getter function for feature data indexed by the graphics node ID
356// The default parameter is 0, or the first availabe graphics device node
357#define FEATURE_SUPPORT_GET_NODE_INDEXED(RETTYPE,FEATURE,OPTION) \
358inline RETTYPE CD3DX12FeatureSupport::OPTION(UINT NodeIndex) const \
359{\
360 return FEATURE[NodeIndex].OPTION; \
361}
362
363// Macro to set up a getter function for feature data indexed by NodeIndex
364// Allows a custom name for the getter function
365#define FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(RETTYPE,FEATURE,OPTION,NAME) \
366inline RETTYPE CD3DX12FeatureSupport::NAME(UINT NodeIndex) const \
367{\
368 return FEATURE[NodeIndex].OPTION; \
369}
370
371inline CD3DX12FeatureSupport::CD3DX12FeatureSupport() noexcept
372: m_pDevice(nullptr)
373, m_hStatus(E_INVALIDARG)
374, m_dOptions{}
375, m_eMaxFeatureLevel{}
376, m_dGPUVASupport{}
377, m_dShaderModel{}
378, m_dOptions1{}
379, m_dRootSignature{}
380, m_dOptions2{}
381, m_dShaderCache{}
382, m_dCommandQueuePriority{}
383, m_dOptions3{}
384, m_dExistingHeaps{}
385, m_dOptions4{}
386, m_dCrossNode{}
387, m_dOptions5{}
388#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
389, m_dDisplayable{}
390#endif
391, m_dOptions6{}
392, m_dOptions7{}
393#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
394, m_dOptions8{}
395, m_dOptions9{}
396#endif
397#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
398, m_dOptions10{}
399, m_dOptions11{}
400#endif
401#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
402, m_dOptions12{}
403#endif
404#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
405, m_dOptions13{}
406#endif
407#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
408, m_dOptions14{}
409, m_dOptions15{}
410#endif
411#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
412, m_dOptions16{}
413#endif
414#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
415, m_dOptions17{}
416#endif
417#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
418, m_dOptions18{}
419#endif
420#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
421, m_dOptions19{}
422#endif
423#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
424, m_dOptions20{}
425#endif
426#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
427, m_dOptions21{}
428#endif
429#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
430, m_dTightAlignment{}
431#endif
432{}
433
434inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
435{
436 if (!pDevice)
437 {
438 m_hStatus = E_INVALIDARG;
439 return m_hStatus;
440 }
441
442 m_pDevice = pDevice;
443
444 // Initialize static feature support data structures
445 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &m_dOptions, sizeof(m_dOptions))))
446 {
447 m_dOptions = {};
448 }
449
450 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT, &m_dGPUVASupport, sizeof(m_dGPUVASupport))))
451 {
452 m_dGPUVASupport = {};
453 }
454
455 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &m_dOptions1, sizeof(m_dOptions1))))
456 {
457 m_dOptions1 = {};
458 }
459
460 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS2, &m_dOptions2, sizeof(m_dOptions2))))
461 {
462 m_dOptions2 = {};
463 }
464
465 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_CACHE, &m_dShaderCache, sizeof(m_dShaderCache))))
466 {
467 m_dShaderCache = {};
468 }
469
470 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3, &m_dOptions3, sizeof(m_dOptions3))))
471 {
472 m_dOptions3 = {};
473 }
474
475 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_EXISTING_HEAPS, &m_dExistingHeaps, sizeof(m_dExistingHeaps))))
476 {
477 m_dExistingHeaps = {};
478 }
479
480 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS4, &m_dOptions4, sizeof(m_dOptions4))))
481 {
482 m_dOptions4 = {};
483 }
484
485 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_CROSS_NODE, &m_dCrossNode, sizeof(m_dCrossNode))))
486 {
487 m_dCrossNode = {};
488 }
489
490 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS5, &m_dOptions5, sizeof(m_dOptions5))))
491 {
492 m_dOptions5 = {};
493 }
494
495#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
496 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_DISPLAYABLE, &m_dDisplayable, sizeof(m_dDisplayable))))
497 {
498 m_dDisplayable = {};
499 }
500#endif
501
502 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS6, &m_dOptions6, sizeof(m_dOptions6))))
503 {
504 m_dOptions6 = {};
505 }
506
507 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS7, &m_dOptions7, sizeof(m_dOptions7))))
508 {
509 m_dOptions7 = {};
510 }
511
512#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
513 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS8, &m_dOptions8, sizeof(m_dOptions8))))
514 {
515 m_dOptions8 = {};
516 }
517
518 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS9, &m_dOptions9, sizeof(m_dOptions9))))
519 {
520 m_dOptions9 = {};
521 }
522#endif
523
524#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
525 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS10, &m_dOptions10, sizeof(m_dOptions10))))
526 {
527 m_dOptions10 = {};
528 }
529
530 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS11, &m_dOptions11, sizeof(m_dOptions11))))
531 {
532 m_dOptions11 = {};
533 }
534#endif
535
536#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
537 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &m_dOptions12, sizeof(m_dOptions12))))
538 {
539 m_dOptions12 = {};
540 m_dOptions12.MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE::D3D12_TRI_STATE_UNKNOWN;
541 }
542#endif
543
544#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
545 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS13, &m_dOptions13, sizeof(m_dOptions13))))
546 {
547 m_dOptions13 = {};
548 }
549#endif
550
551#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
552 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS14, &m_dOptions14, sizeof(m_dOptions14))))
553 {
554 m_dOptions14 = {};
555 }
556
557 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS15, &m_dOptions15, sizeof(m_dOptions15))))
558 {
559 m_dOptions15 = {};
560 }
561#endif
562
563#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
564 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS16, &m_dOptions16, sizeof(m_dOptions16))))
565 {
566 m_dOptions16 = {};
567 }
568#endif
569
570#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
571 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS17, &m_dOptions17, sizeof(m_dOptions17))))
572 {
573 m_dOptions17 = {};
574 }
575
576 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS18, &m_dOptions18, sizeof(m_dOptions18))))
577 {
578 m_dOptions18.RenderPassesValid = false;
579 }
580#endif
581
582#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
583 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS19, &m_dOptions19, sizeof(m_dOptions19))))
584 {
585 m_dOptions19 = {};
586 m_dOptions19.SupportedSampleCountsWithNoOutputs = 1;
587 m_dOptions19.MaxSamplerDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
588 m_dOptions19.MaxSamplerDescriptorHeapSizeWithStaticSamplers = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
589 m_dOptions19.MaxViewDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1;
590 }
591#endif
592
593#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
594 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS20, &m_dOptions20, sizeof(m_dOptions20))))
595 {
596 m_dOptions20 = {};
597 }
598#endif
599
600#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
601 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS21, &m_dOptions21, sizeof(m_dOptions21))))
602 {
603 m_dOptions21 = {};
604 }
605#endif
606
607#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
608 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT, &m_dTightAlignment, sizeof(m_dTightAlignment))))
609 {
610 m_dTightAlignment = {};
611 }
612#endif
613
614 // Initialize per-node feature support data structures
615 const UINT uNodeCount = m_pDevice->GetNodeCount();
616 m_dProtectedResourceSessionSupport.resize(uNodeCount);
617 m_dArchitecture1.resize(uNodeCount);
618 m_dSerialization.resize(uNodeCount);
619 m_dProtectedResourceSessionTypeCount.resize(uNodeCount);
620 m_dProtectedResourceSessionTypes.resize(uNodeCount);
621 for (UINT NodeIndex = 0; NodeIndex < uNodeCount; NodeIndex++)
622 {
623 m_dProtectedResourceSessionSupport[NodeIndex].NodeIndex = NodeIndex;
624 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT, &m_dProtectedResourceSessionSupport[NodeIndex], sizeof(m_dProtectedResourceSessionSupport[NodeIndex]))))
625 {
626 m_dProtectedResourceSessionSupport[NodeIndex].Support = D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE;
627 }
628
629 m_dArchitecture1[NodeIndex].NodeIndex = NodeIndex;
630 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE1, &m_dArchitecture1[NodeIndex], sizeof(m_dArchitecture1[NodeIndex]))))
631 {
632 D3D12_FEATURE_DATA_ARCHITECTURE dArchLocal = {};
633 dArchLocal.NodeIndex = NodeIndex;
634 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE, &dArchLocal, sizeof(dArchLocal))))
635 {
636 dArchLocal.TileBasedRenderer = false;
637 dArchLocal.UMA = false;
638 dArchLocal.CacheCoherentUMA = false;
639 }
640
641 m_dArchitecture1[NodeIndex].TileBasedRenderer = dArchLocal.TileBasedRenderer;
642 m_dArchitecture1[NodeIndex].UMA = dArchLocal.UMA;
643 m_dArchitecture1[NodeIndex].CacheCoherentUMA = dArchLocal.CacheCoherentUMA;
644 m_dArchitecture1[NodeIndex].IsolatedMMU = false;
645 }
646
647 m_dSerialization[NodeIndex].NodeIndex = NodeIndex;
648 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SERIALIZATION, &m_dSerialization[NodeIndex], sizeof(m_dSerialization[NodeIndex]))))
649 {
650 m_dSerialization[NodeIndex].HeapSerializationTier = D3D12_HEAP_SERIALIZATION_TIER_0;
651 }
652
653 m_dProtectedResourceSessionTypeCount[NodeIndex].NodeIndex = NodeIndex;
654 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT, &m_dProtectedResourceSessionTypeCount[NodeIndex], sizeof(m_dProtectedResourceSessionTypeCount[NodeIndex]))))
655 {
656 m_dProtectedResourceSessionTypeCount[NodeIndex].Count = 0;
657 }
658
659 // Special procedure to initialize local protected resource session types structs
660 // Must wait until session type count initialized
661 QueryProtectedResourceSessionTypes(NodeIndex, m_dProtectedResourceSessionTypeCount[NodeIndex].Count);
662 }
663
664 // Initialize features that requires highest version check
665 if (FAILED(m_hStatus = QueryHighestShaderModel()))
666 {
667 return m_hStatus;
668 }
669
670 if (FAILED(m_hStatus = QueryHighestRootSignatureVersion()))
671 {
672 return m_hStatus;
673 }
674
675 // Initialize Feature Levels data
676 if (FAILED(m_hStatus = QueryHighestFeatureLevel()))
677 {
678 return m_hStatus;
679 }
680
681 return m_hStatus;
682}
683
684// 0: D3D12_OPTIONS
685FEATURE_SUPPORT_GET(BOOL, m_dOptions, DoublePrecisionFloatShaderOps);
686FEATURE_SUPPORT_GET(BOOL, m_dOptions, OutputMergerLogicOp);
687FEATURE_SUPPORT_GET(D3D12_SHADER_MIN_PRECISION_SUPPORT, m_dOptions, MinPrecisionSupport);
688FEATURE_SUPPORT_GET(D3D12_TILED_RESOURCES_TIER, m_dOptions, TiledResourcesTier);
689FEATURE_SUPPORT_GET(D3D12_RESOURCE_BINDING_TIER, m_dOptions, ResourceBindingTier);
690FEATURE_SUPPORT_GET(BOOL, m_dOptions, PSSpecifiedStencilRefSupported);
691FEATURE_SUPPORT_GET(BOOL, m_dOptions, TypedUAVLoadAdditionalFormats);
692FEATURE_SUPPORT_GET(BOOL, m_dOptions, ROVsSupported);
693FEATURE_SUPPORT_GET(D3D12_CONSERVATIVE_RASTERIZATION_TIER, m_dOptions, ConservativeRasterizationTier);
694FEATURE_SUPPORT_GET(BOOL, m_dOptions, StandardSwizzle64KBSupported);
695FEATURE_SUPPORT_GET(BOOL, m_dOptions, CrossAdapterRowMajorTextureSupported);
696FEATURE_SUPPORT_GET(BOOL, m_dOptions, VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation);
697FEATURE_SUPPORT_GET(D3D12_RESOURCE_HEAP_TIER, m_dOptions, ResourceHeapTier);
698
699// Special procedure for handling caps that is also part of other features
700inline D3D12_CROSS_NODE_SHARING_TIER CD3DX12FeatureSupport::CrossNodeSharingTier() const noexcept
701{
702 if (m_dCrossNode.SharingTier > D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED)
703 {
704 return m_dCrossNode.SharingTier;
705 }
706 else
707 {
708 return m_dOptions.CrossNodeSharingTier;
709 }
710}
711
712inline UINT CD3DX12FeatureSupport::MaxGPUVirtualAddressBitsPerResource() const noexcept
713{
714 if (m_dOptions.MaxGPUVirtualAddressBitsPerResource > 0)
715 {
716 return m_dOptions.MaxGPUVirtualAddressBitsPerResource;
717 }
718 else
719 {
720 return m_dGPUVASupport.MaxGPUVirtualAddressBitsPerResource;
721 }
722}
723
724// 1: Architecture
725// Combined with Architecture1
726
727// 2: Feature Levels
728// Simply returns the highest supported feature level
729inline D3D_FEATURE_LEVEL CD3DX12FeatureSupport::MaxSupportedFeatureLevel() const noexcept
730{
731 return m_eMaxFeatureLevel;
732}
733
734// 3: Feature Format Support
735inline HRESULT CD3DX12FeatureSupport::FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const
736{
737 D3D12_FEATURE_DATA_FORMAT_SUPPORT dFormatSupport;
738 dFormatSupport.Format = Format;
739
740 // It is possible that the function call returns an error
741 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &dFormatSupport, sizeof(D3D12_FEATURE_DATA_FORMAT_SUPPORT));
742
743 Support1 = dFormatSupport.Support1;
744 Support2 = dFormatSupport.Support2; // Two outputs. Probably better just to take in the struct as an argument?
745
746 return result;
747}
748
749// 4: Multisample Quality Levels
750inline HRESULT CD3DX12FeatureSupport::MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const
751{
752 D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS dMultisampleQualityLevels;
753 dMultisampleQualityLevels.Format = Format;
754 dMultisampleQualityLevels.SampleCount = SampleCount;
755 dMultisampleQualityLevels.Flags = Flags;
756
757 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &dMultisampleQualityLevels, sizeof(D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS));
758
759 if (SUCCEEDED(result))
760 {
761 NumQualityLevels = dMultisampleQualityLevels.NumQualityLevels;
762 }
763 else
764 {
765 NumQualityLevels = 0;
766 }
767
768 return result;
769}
770
771// 5: Format Info
772inline HRESULT CD3DX12FeatureSupport::FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const
773{
774 D3D12_FEATURE_DATA_FORMAT_INFO dFormatInfo;
775 dFormatInfo.Format = Format;
776
777 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &dFormatInfo, sizeof(D3D12_FEATURE_DATA_FORMAT_INFO));
778 if (FAILED(result))
779 {
780 PlaneCount = 0;
781 }
782 else
783 {
784 PlaneCount = dFormatInfo.PlaneCount;
785 }
786 return result;
787}
788
789// 6: GPU Virtual Address Support
790// MaxGPUVirtualAddressBitsPerResource handled in D3D12Options
791FEATURE_SUPPORT_GET(UINT, m_dGPUVASupport, MaxGPUVirtualAddressBitsPerProcess);
792
793// 7: Shader Model
794inline D3D_SHADER_MODEL CD3DX12FeatureSupport::HighestShaderModel() const noexcept
795{
796 return m_dShaderModel.HighestShaderModel;
797}
798
799// 8: D3D12 Options1
800FEATURE_SUPPORT_GET(BOOL, m_dOptions1, WaveOps);
801FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMin);
802FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMax);
803FEATURE_SUPPORT_GET(UINT, m_dOptions1, TotalLaneCount);
804FEATURE_SUPPORT_GET(BOOL, m_dOptions1, ExpandedComputeResourceStates);
805FEATURE_SUPPORT_GET(BOOL, m_dOptions1, Int64ShaderOps);
806
807// 10: Protected Resource Session Support
808inline D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS CD3DX12FeatureSupport::ProtectedResourceSessionSupport(UINT NodeIndex) const
809{
810 return m_dProtectedResourceSessionSupport[NodeIndex].Support;
811}
812
813// 12: Root Signature
814inline D3D_ROOT_SIGNATURE_VERSION CD3DX12FeatureSupport::HighestRootSignatureVersion() const noexcept
815{
816 return m_dRootSignature.HighestVersion;
817}
818
819// 16: Architecture1
820// Same data fields can be queried from m_dArchitecture
821FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, TileBasedRenderer);
822FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, UMA);
823FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, CacheCoherentUMA);
824FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, IsolatedMMU);
825
826// 18: D3D12 Options2
827FEATURE_SUPPORT_GET(BOOL, m_dOptions2, DepthBoundsTestSupported);
828FEATURE_SUPPORT_GET(D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER, m_dOptions2, ProgrammableSamplePositionsTier);
829
830// 19: Shader Cache
831FEATURE_SUPPORT_GET_NAME(D3D12_SHADER_CACHE_SUPPORT_FLAGS, m_dShaderCache, SupportFlags, ShaderCacheSupportFlags);
832
833// 20: Command Queue Priority
834inline BOOL CD3DX12FeatureSupport::CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority)
835{
836 m_dCommandQueuePriority.CommandListType = CommandListType;
837 m_dCommandQueuePriority.Priority = Priority;
838
839 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_COMMAND_QUEUE_PRIORITY, &m_dCommandQueuePriority, sizeof(D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY))))
840 {
841 return false;
842 }
843
844 return m_dCommandQueuePriority.PriorityForTypeIsSupported;
845}
846
847// 21: D3D12 Options3
848FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CopyQueueTimestampQueriesSupported);
849FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CastingFullyTypedFormatSupported);
850FEATURE_SUPPORT_GET(D3D12_COMMAND_LIST_SUPPORT_FLAGS, m_dOptions3, WriteBufferImmediateSupportFlags);
851FEATURE_SUPPORT_GET(D3D12_VIEW_INSTANCING_TIER, m_dOptions3, ViewInstancingTier);
852FEATURE_SUPPORT_GET(BOOL, m_dOptions3, BarycentricsSupported);
853
854// 22: Existing Heaps
855FEATURE_SUPPORT_GET_NAME(BOOL, m_dExistingHeaps, Supported, ExistingHeapsSupported);
856
857// 23: D3D12 Options4
858FEATURE_SUPPORT_GET(BOOL, m_dOptions4, MSAA64KBAlignedTextureSupported);
859FEATURE_SUPPORT_GET(D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER, m_dOptions4, SharedResourceCompatibilityTier);
860FEATURE_SUPPORT_GET(BOOL, m_dOptions4, Native16BitShaderOpsSupported);
861
862// 24: Serialization
863FEATURE_SUPPORT_GET_NODE_INDEXED(D3D12_HEAP_SERIALIZATION_TIER, m_dSerialization, HeapSerializationTier);
864
865// 25: Cross Node
866// CrossNodeSharingTier handled in D3D12Options
867FEATURE_SUPPORT_GET_NAME(BOOL, m_dCrossNode, AtomicShaderInstructions, CrossNodeAtomicShaderInstructions);
868
869// 27: D3D12 Options5
870FEATURE_SUPPORT_GET(BOOL, m_dOptions5, SRVOnlyTiledResourceTier3);
871FEATURE_SUPPORT_GET(D3D12_RENDER_PASS_TIER, m_dOptions5, RenderPassesTier);
872FEATURE_SUPPORT_GET(D3D12_RAYTRACING_TIER, m_dOptions5, RaytracingTier);
873
874#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
875// 28: Displayable
876FEATURE_SUPPORT_GET(BOOL, m_dDisplayable, DisplayableTexture);
877// SharedResourceCompatibilityTier handled in D3D12Options4
878#endif
879
880// 30: D3D12 Options6
881FEATURE_SUPPORT_GET(BOOL, m_dOptions6, AdditionalShadingRatesSupported);
882FEATURE_SUPPORT_GET(BOOL, m_dOptions6, PerPrimitiveShadingRateSupportedWithViewportIndexing);
883FEATURE_SUPPORT_GET(D3D12_VARIABLE_SHADING_RATE_TIER, m_dOptions6, VariableShadingRateTier);
884FEATURE_SUPPORT_GET(UINT, m_dOptions6, ShadingRateImageTileSize);
885FEATURE_SUPPORT_GET(BOOL, m_dOptions6, BackgroundProcessingSupported);
886
887// 31: Query Meta Command
888// Keep the original call routine
889inline HRESULT CD3DX12FeatureSupport::QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const
890{
891 return m_pDevice->CheckFeatureSupport(D3D12_FEATURE_QUERY_META_COMMAND, &dQueryMetaCommand, sizeof(D3D12_FEATURE_DATA_QUERY_META_COMMAND));
892}
893
894// 32: D3D12 Options7
895FEATURE_SUPPORT_GET(D3D12_MESH_SHADER_TIER, m_dOptions7, MeshShaderTier);
896FEATURE_SUPPORT_GET(D3D12_SAMPLER_FEEDBACK_TIER, m_dOptions7, SamplerFeedbackTier);
897
898// 33: Protected Resource Session Type Count
899FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(UINT, m_dProtectedResourceSessionTypeCount, Count, ProtectedResourceSessionTypeCount);
900
901// 34: Protected Resource Session Types
902FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(std::vector<GUID>, m_dProtectedResourceSessionTypes, TypeVec, ProtectedResourceSessionTypes);
903
904#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
905// 36: Options8
906FEATURE_SUPPORT_GET(BOOL, m_dOptions8, UnalignedBlockTexturesSupported);
907
908// 37: Options9
909FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderPipelineStatsSupported);
910FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderSupportsFullRangeRenderTargetArrayIndex);
911FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnTypedResourceSupported);
912FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnGroupSharedSupported);
913FEATURE_SUPPORT_GET(BOOL, m_dOptions9, DerivativesInMeshAndAmplificationShadersSupported);
914FEATURE_SUPPORT_GET(D3D12_WAVE_MMA_TIER, m_dOptions9, WaveMMATier);
915#endif
916
917#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
918// 39: Options10
919FEATURE_SUPPORT_GET(BOOL, m_dOptions10, VariableRateShadingSumCombinerSupported);
920FEATURE_SUPPORT_GET(BOOL, m_dOptions10, MeshShaderPerPrimitiveShadingRateSupported);
921
922// 40: Options11
923FEATURE_SUPPORT_GET(BOOL, m_dOptions11, AtomicInt64OnDescriptorHeapResourceSupported);
924#endif
925
926#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
927// 41: Options12
928FEATURE_SUPPORT_GET(D3D12_TRI_STATE, m_dOptions12, MSPrimitivesPipelineStatisticIncludesCulledPrimitives);
929FEATURE_SUPPORT_GET(BOOL, m_dOptions12, EnhancedBarriersSupported);
930FEATURE_SUPPORT_GET(BOOL, m_dOptions12, RelaxedFormatCastingSupported);
931#endif
932
933#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
934// 42: Options13
935FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedBufferTextureCopyPitchSupported);
936FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedVertexElementAlignmentSupported);
937FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportHeightFlipsYSupported);
938FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportDepthFlipsZSupported);
939FEATURE_SUPPORT_GET(BOOL, m_dOptions13, TextureCopyBetweenDimensionsSupported);
940FEATURE_SUPPORT_GET(BOOL, m_dOptions13, AlphaBlendFactorSupported);
941#endif
942
943#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
944// 43: Options14
945FEATURE_SUPPORT_GET(BOOL, m_dOptions14, AdvancedTextureOpsSupported);
946FEATURE_SUPPORT_GET(BOOL, m_dOptions14, WriteableMSAATexturesSupported);
947FEATURE_SUPPORT_GET(BOOL, m_dOptions14, IndependentFrontAndBackStencilRefMaskSupported);
948
949// 44: Options15
950FEATURE_SUPPORT_GET(BOOL, m_dOptions15, TriangleFanSupported);
951FEATURE_SUPPORT_GET(BOOL, m_dOptions15, DynamicIndexBufferStripCutSupported);
952#endif
953
954#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
955// 45: Options16
956FEATURE_SUPPORT_GET(BOOL, m_dOptions16, DynamicDepthBiasSupported);
957#endif
958#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
959FEATURE_SUPPORT_GET(BOOL, m_dOptions16, GPUUploadHeapSupported);
960
961// 46: Options17
962FEATURE_SUPPORT_GET(BOOL, m_dOptions17, NonNormalizedCoordinateSamplersSupported);
963FEATURE_SUPPORT_GET(BOOL, m_dOptions17, ManualWriteTrackingResourceSupported);
964
965// 47: Option18
966FEATURE_SUPPORT_GET(BOOL, m_dOptions18, RenderPassesValid);
967#endif
968
969#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
970FEATURE_SUPPORT_GET(BOOL, m_dOptions19, MismatchingOutputDimensionsSupported);
971FEATURE_SUPPORT_GET(UINT, m_dOptions19, SupportedSampleCountsWithNoOutputs);
972FEATURE_SUPPORT_GET(BOOL, m_dOptions19, PointSamplingAddressesNeverRoundUp);
973FEATURE_SUPPORT_GET(BOOL, m_dOptions19, RasterizerDesc2Supported);
974FEATURE_SUPPORT_GET(BOOL, m_dOptions19, NarrowQuadrilateralLinesSupported);
975FEATURE_SUPPORT_GET(BOOL, m_dOptions19, AnisoFilterWithPointMipSupported);
976FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSize);
977FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSizeWithStaticSamplers);
978FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxViewDescriptorHeapSize);
979#endif
980
981#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
982// 49: Options20
983FEATURE_SUPPORT_GET(BOOL, m_dOptions20, ComputeOnlyWriteWatchSupported);
984#endif
985
986#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
987// 50: Options21
988FEATURE_SUPPORT_GET(D3D12_EXECUTE_INDIRECT_TIER, m_dOptions21, ExecuteIndirectTier);
989FEATURE_SUPPORT_GET(D3D12_WORK_GRAPHS_TIER, m_dOptions21, WorkGraphsTier);
990#endif
991
992#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
993// 51: TightAlignment
994FEATURE_SUPPORT_GET_NAME(D3D12_TIGHT_ALIGNMENT_TIER, m_dTightAlignment, SupportTier, TightAlignmentSupportTier);
995#endif
996
997// Helper function to decide the highest shader model supported by the system
998// Stores the result in m_dShaderModel
999// Must be updated whenever a new shader model is added to the d3d12.h header
1000inline HRESULT CD3DX12FeatureSupport::QueryHighestShaderModel()
1001{
1002 // Check support in descending order
1003 HRESULT result;
1004
1005 const D3D_SHADER_MODEL allModelVersions[] =
1006 {
1007#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
1008 D3D_SHADER_MODEL_6_9,
1009#endif
1010#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1011 D3D_SHADER_MODEL_6_8,
1012#endif
1013#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
1014 D3D_SHADER_MODEL_6_7,
1015#endif
1016 D3D_SHADER_MODEL_6_6,
1017 D3D_SHADER_MODEL_6_5,
1018 D3D_SHADER_MODEL_6_4,
1019 D3D_SHADER_MODEL_6_3,
1020 D3D_SHADER_MODEL_6_2,
1021 D3D_SHADER_MODEL_6_1,
1022 D3D_SHADER_MODEL_6_0,
1023 D3D_SHADER_MODEL_5_1
1024 };
1025 constexpr size_t numModelVersions = sizeof(allModelVersions) / sizeof(D3D_SHADER_MODEL);
1026
1027 for (size_t i = 0; i < numModelVersions; i++)
1028 {
1029 m_dShaderModel.HighestShaderModel = allModelVersions[i];
1030 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &m_dShaderModel, sizeof(D3D12_FEATURE_DATA_SHADER_MODEL));
1031 if (result != E_INVALIDARG)
1032 {
1033 // Indicates that the version is recognizable by the runtime and stored in the struct
1034 // Also terminate on unexpected error code
1035 if (FAILED(result))
1036 {
1037 m_dShaderModel.HighestShaderModel = static_cast<D3D_SHADER_MODEL>(0);
1038 }
1039 return result;
1040 }
1041 }
1042
1043 // Shader model may not be supported. Continue the rest initializations
1044 m_dShaderModel.HighestShaderModel = static_cast<D3D_SHADER_MODEL>(0);
1045 return S_OK;
1046}
1047
1048// Helper function to decide the highest root signature supported
1049// Must be updated whenever a new root signature version is added to the d3d12.h header
1050inline HRESULT CD3DX12FeatureSupport::QueryHighestRootSignatureVersion()
1051{
1052 HRESULT result;
1053
1054 const D3D_ROOT_SIGNATURE_VERSION allRootSignatureVersions[] =
1055 {
1056#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1057 D3D_ROOT_SIGNATURE_VERSION_1_2,
1058#endif
1059 D3D_ROOT_SIGNATURE_VERSION_1_1,
1060 D3D_ROOT_SIGNATURE_VERSION_1_0,
1061 D3D_ROOT_SIGNATURE_VERSION_1,
1062 };
1063 constexpr size_t numRootSignatureVersions = sizeof(allRootSignatureVersions) / sizeof(D3D_ROOT_SIGNATURE_VERSION);
1064
1065 for (size_t i = 0; i < numRootSignatureVersions; i++)
1066 {
1067 m_dRootSignature.HighestVersion = allRootSignatureVersions[i];
1068 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ROOT_SIGNATURE, &m_dRootSignature, sizeof(D3D12_FEATURE_DATA_ROOT_SIGNATURE));
1069 if (result != E_INVALIDARG)
1070 {
1071 if (FAILED(result))
1072 {
1073 m_dRootSignature.HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(0);
1074 }
1075 // If succeeded, the highest version is already written into the member struct
1076 return result;
1077 }
1078 }
1079
1080 // No version left. Set to invalid value and continue.
1081 m_dRootSignature.HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(0);
1082 return S_OK;
1083}
1084
1085// Helper funcion to decide the highest feature level
1086inline HRESULT CD3DX12FeatureSupport::QueryHighestFeatureLevel()
1087{
1088 HRESULT result;
1089
1090 // Check against a list of all feature levels present in d3dcommon.h
1091 // Needs to be updated for future feature levels
1092 const D3D_FEATURE_LEVEL allLevels[] =
1093 {
1094#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
1095 D3D_FEATURE_LEVEL_12_2,
1096#endif
1097 D3D_FEATURE_LEVEL_12_1,
1098 D3D_FEATURE_LEVEL_12_0,
1099 D3D_FEATURE_LEVEL_11_1,
1100 D3D_FEATURE_LEVEL_11_0,
1101 D3D_FEATURE_LEVEL_10_1,
1102 D3D_FEATURE_LEVEL_10_0,
1103 D3D_FEATURE_LEVEL_9_3,
1104 D3D_FEATURE_LEVEL_9_2,
1105 D3D_FEATURE_LEVEL_9_1,
1106#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 5)
1107 D3D_FEATURE_LEVEL_1_0_CORE,
1108#endif
1109#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
1110 D3D_FEATURE_LEVEL_1_0_GENERIC
1111#endif
1112 };
1113
1114 D3D12_FEATURE_DATA_FEATURE_LEVELS dFeatureLevel;
1115 dFeatureLevel.NumFeatureLevels = static_cast<UINT>(sizeof(allLevels) / sizeof(D3D_FEATURE_LEVEL));
1116 dFeatureLevel.pFeatureLevelsRequested = allLevels;
1117
1118 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS, &dFeatureLevel, sizeof(D3D12_FEATURE_DATA_FEATURE_LEVELS));
1119 if (SUCCEEDED(result))
1120 {
1121 m_eMaxFeatureLevel = dFeatureLevel.MaxSupportedFeatureLevel;
1122 }
1123 else
1124 {
1125 m_eMaxFeatureLevel = static_cast<D3D_FEATURE_LEVEL>(0);
1126
1127 if (result == DXGI_ERROR_UNSUPPORTED)
1128 {
1129 // Indicates that none supported. Continue initialization
1130 result = S_OK;
1131 }
1132 }
1133 return result;
1134}
1135
1136// Helper function to initialize local protected resource session types structs
1137inline HRESULT CD3DX12FeatureSupport::QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count)
1138{
1139 auto& CurrentPRSTypes = m_dProtectedResourceSessionTypes[NodeIndex];
1140 CurrentPRSTypes.NodeIndex = NodeIndex;
1141 CurrentPRSTypes.Count = Count;
1142 CurrentPRSTypes.TypeVec.resize(CurrentPRSTypes.Count);
1143 CurrentPRSTypes.pTypes = CurrentPRSTypes.TypeVec.data();
1144
1145 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES, &m_dProtectedResourceSessionTypes[NodeIndex], sizeof(D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES));
1146 if (FAILED(result))
1147 {
1148 // Resize TypeVec to empty
1149 CurrentPRSTypes.TypeVec.clear();
1150 }
1151
1152 return result;
1153}
1154
1155#undef FEATURE_SUPPORT_GET
1156#undef FEATURE_SUPPORT_GET_NAME
1157#undef FEATURE_SUPPORT_GET_NODE_INDEXED
1158#undef FEATURE_SUPPORT_GET_NODE_INDEXED_NAME
1159
1160// end CD3DX12FeatureSupport
1161
1162
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_core.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_core.h
new file mode 100644
index 0000000..092a039
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_core.h
@@ -0,0 +1,2072 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include <string.h>
15#include "d3d12.h"
16#include "d3dx12_default.h"
17
18//------------------------------------------------------------------------------------------------
19#ifndef D3DX12_ASSERT
20 #ifdef assert
21 #define D3DX12_ASSERT(x) assert(x)
22 #else
23 #define D3DX12_ASSERT(x)
24 #endif
25#endif
26
27//------------------------------------------------------------------------------------------------
28template <typename t_CommandListType>
29inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) noexcept
30{
31 // This cast is useful for passing strongly typed command list pointers into
32 // ExecuteCommandLists.
33 // This cast is valid as long as the const-ness is respected. D3D12 APIs do
34 // respect the const-ness of their arguments.
35 return reinterpret_cast<ID3D12CommandList * const *>(pp);
36}
37
38#ifdef D3DX12_USE_ARRAY_COM_PTR
39#include <vector>
40//------------------------------------------------------------------------------------------------
41// CArrayComPtr - Useful RAII container of raw IUnknown pointers.
42template<typename _T>
43class CArrayComPtr
44{
45 std::vector<_T *> m_array;
46
47public:
48 class CProxyPtr
49 {
50 _T *&pObj;
51
52 CProxyPtr(_T *&obj) :
53 pObj(obj) {}
54
55 public:
56 operator _T*() { return pObj; }
57 _T **operator&() { return &pObj; }
58 CProxyPtr &operator=(_T*&obj)
59 {
60 if(pObj)
61 pObj->Release();
62
63 pObj = obj;
64
65 if(pObj)
66 pObj->AddRef();
67 }
68
69 friend class CArrayComPtr<_T>;
70 };
71
72public:
73 CArrayComPtr() = default;
74
75 CArrayComPtr(size_t size) :
76 m_array(size) {
77 }
78
79 CArrayComPtr(const CArrayComPtr &o)
80 {
81 m_array = o.m_array;
82 for (size_t i = 0; i < m_array.size(); ++i)
83 {
84 m_array[i]->AddRef();
85 }
86 }
87
88 CArrayComPtr(CArrayComPtr &&o) = default;
89
90 ~CArrayComPtr()
91 {
92 for (auto ptr : m_array)
93 {
94 if (ptr)
95 {
96 ptr->Release();
97 }
98 }
99 }
100
101 _T *const *Get() { return m_array.data(); }
102
103 void Assign(size_t index, _T *ptr)
104 {
105 if (index >= m_array.size())
106 {
107 Resize(index + 1);
108 }
109
110 // Release the old pointer if it exists
111 if (m_array[index])
112 {
113 m_array[index]->Release();
114 }
115
116 // Assign the new pointer and AddRef it if not null
117 m_array[index] = ptr;
118 if (ptr)
119 {
120 ptr->AddRef();
121 }
122 }
123
124 void Resize(size_t size)
125 {
126 // If shrinking, release any pointers that will be discarded
127 if (size < m_array.size())
128 {
129 for (size_t i = size; i < m_array.size(); ++i)
130 {
131 if (m_array[i])
132 {
133 m_array[i]->Release();
134 }
135 }
136 }
137
138 // Resize the vector, initializing new elements to nullptr
139 m_array.resize(size, nullptr);
140 }
141
142 void PushBack(_T *ptr)
143 {
144 // AddRef if not null
145 if (ptr)
146 {
147 ptr->AddRef();
148 }
149 m_array.push_back(ptr);
150 }
151
152 CProxyPtr operator[](size_t index)
153 {
154 return CProxyPtr(m_array[index]);
155 }
156};
157#endif
158//------------------------------------------------------------------------------------------------
159inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
160{
161 return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
162 l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
163}
164
165//------------------------------------------------------------------------------------------------
166inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
167{ return !( l == r ); }
168
169//------------------------------------------------------------------------------------------------
170struct CD3DX12_RECT : public D3D12_RECT
171{
172 CD3DX12_RECT() = default;
173 explicit CD3DX12_RECT( const D3D12_RECT& o ) noexcept :
174 D3D12_RECT( o )
175 {}
176 explicit CD3DX12_RECT(
177 LONG Left,
178 LONG Top,
179 LONG Right,
180 LONG Bottom ) noexcept
181 {
182 left = Left;
183 top = Top;
184 right = Right;
185 bottom = Bottom;
186 }
187};
188
189//------------------------------------------------------------------------------------------------
190struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT
191{
192 CD3DX12_VIEWPORT() = default;
193 explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) noexcept :
194 D3D12_VIEWPORT( o )
195 {}
196 explicit CD3DX12_VIEWPORT(
197 FLOAT topLeftX,
198 FLOAT topLeftY,
199 FLOAT width,
200 FLOAT height,
201 FLOAT minDepth = D3D12_MIN_DEPTH,
202 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
203 {
204 TopLeftX = topLeftX;
205 TopLeftY = topLeftY;
206 Width = width;
207 Height = height;
208 MinDepth = minDepth;
209 MaxDepth = maxDepth;
210 }
211 explicit CD3DX12_VIEWPORT(
212 _In_ ID3D12Resource* pResource,
213 UINT mipSlice = 0,
214 FLOAT topLeftX = 0.0f,
215 FLOAT topLeftY = 0.0f,
216 FLOAT minDepth = D3D12_MIN_DEPTH,
217 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
218 {
219#if defined(_MSC_VER) || !defined(_WIN32)
220 const auto Desc = pResource->GetDesc();
221#else
222 D3D12_RESOURCE_DESC tmpDesc;
223 const auto& Desc = *pResource->GetDesc(&tmpDesc);
224#endif
225 const UINT64 SubresourceWidth = Desc.Width >> mipSlice;
226 const UINT64 SubresourceHeight = Desc.Height >> mipSlice;
227 switch (Desc.Dimension)
228 {
229 case D3D12_RESOURCE_DIMENSION_BUFFER:
230 TopLeftX = topLeftX;
231 TopLeftY = 0.0f;
232 Width = float(Desc.Width) - topLeftX;
233 Height = 1.0f;
234 break;
235 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
236 TopLeftX = topLeftX;
237 TopLeftY = 0.0f;
238 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
239 Height = 1.0f;
240 break;
241 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
242 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
243 TopLeftX = topLeftX;
244 TopLeftY = topLeftY;
245 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
246 Height = (SubresourceHeight ? float(SubresourceHeight) : 1.0f) - topLeftY;
247 break;
248 default: break;
249 }
250
251 MinDepth = minDepth;
252 MaxDepth = maxDepth;
253 }
254};
255
256//------------------------------------------------------------------------------------------------
257struct CD3DX12_BOX : public D3D12_BOX
258{
259 CD3DX12_BOX() = default;
260 explicit CD3DX12_BOX( const D3D12_BOX& o ) noexcept :
261 D3D12_BOX( o )
262 {}
263 explicit CD3DX12_BOX(
264 LONG Left,
265 LONG Right ) noexcept
266 {
267 left = static_cast<UINT>(Left);
268 top = 0;
269 front = 0;
270 right = static_cast<UINT>(Right);
271 bottom = 1;
272 back = 1;
273 }
274 explicit CD3DX12_BOX(
275 LONG Left,
276 LONG Top,
277 LONG Right,
278 LONG Bottom ) noexcept
279 {
280 left = static_cast<UINT>(Left);
281 top = static_cast<UINT>(Top);
282 front = 0;
283 right = static_cast<UINT>(Right);
284 bottom = static_cast<UINT>(Bottom);
285 back = 1;
286 }
287 explicit CD3DX12_BOX(
288 LONG Left,
289 LONG Top,
290 LONG Front,
291 LONG Right,
292 LONG Bottom,
293 LONG Back ) noexcept
294 {
295 left = static_cast<UINT>(Left);
296 top = static_cast<UINT>(Top);
297 front = static_cast<UINT>(Front);
298 right = static_cast<UINT>(Right);
299 bottom = static_cast<UINT>(Bottom);
300 back = static_cast<UINT>(Back);
301 }
302};
303inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
304{
305 return l.left == r.left && l.top == r.top && l.front == r.front &&
306 l.right == r.right && l.bottom == r.bottom && l.back == r.back;
307}
308inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
309{ return !( l == r ); }
310
311//------------------------------------------------------------------------------------------------
312struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
313{
314 CD3DX12_DEPTH_STENCIL_DESC() = default;
315 explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept :
316 D3D12_DEPTH_STENCIL_DESC( o )
317 {}
318 explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) noexcept
319 {
320 DepthEnable = TRUE;
321 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
322 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
323 StencilEnable = FALSE;
324 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
325 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
326 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
327 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
328 FrontFace = defaultStencilOp;
329 BackFace = defaultStencilOp;
330 }
331 explicit CD3DX12_DEPTH_STENCIL_DESC(
332 BOOL depthEnable,
333 D3D12_DEPTH_WRITE_MASK depthWriteMask,
334 D3D12_COMPARISON_FUNC depthFunc,
335 BOOL stencilEnable,
336 UINT8 stencilReadMask,
337 UINT8 stencilWriteMask,
338 D3D12_STENCIL_OP frontStencilFailOp,
339 D3D12_STENCIL_OP frontStencilDepthFailOp,
340 D3D12_STENCIL_OP frontStencilPassOp,
341 D3D12_COMPARISON_FUNC frontStencilFunc,
342 D3D12_STENCIL_OP backStencilFailOp,
343 D3D12_STENCIL_OP backStencilDepthFailOp,
344 D3D12_STENCIL_OP backStencilPassOp,
345 D3D12_COMPARISON_FUNC backStencilFunc ) noexcept
346 {
347 DepthEnable = depthEnable;
348 DepthWriteMask = depthWriteMask;
349 DepthFunc = depthFunc;
350 StencilEnable = stencilEnable;
351 StencilReadMask = stencilReadMask;
352 StencilWriteMask = stencilWriteMask;
353 FrontFace.StencilFailOp = frontStencilFailOp;
354 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
355 FrontFace.StencilPassOp = frontStencilPassOp;
356 FrontFace.StencilFunc = frontStencilFunc;
357 BackFace.StencilFailOp = backStencilFailOp;
358 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
359 BackFace.StencilPassOp = backStencilPassOp;
360 BackFace.StencilFunc = backStencilFunc;
361 }
362};
363
364//------------------------------------------------------------------------------------------------
365struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1
366{
367 CD3DX12_DEPTH_STENCIL_DESC1() = default;
368 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept :
369 D3D12_DEPTH_STENCIL_DESC1( o )
370 {}
371 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
372 {
373 DepthEnable = o.DepthEnable;
374 DepthWriteMask = o.DepthWriteMask;
375 DepthFunc = o.DepthFunc;
376 StencilEnable = o.StencilEnable;
377 StencilReadMask = o.StencilReadMask;
378 StencilWriteMask = o.StencilWriteMask;
379 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
380 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
381 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
382 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
383 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
384 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
385 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
386 BackFace.StencilFunc = o.BackFace.StencilFunc;
387 DepthBoundsTestEnable = FALSE;
388 }
389 explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) noexcept
390 {
391 DepthEnable = TRUE;
392 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
393 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
394 StencilEnable = FALSE;
395 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
396 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
397 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
398 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
399 FrontFace = defaultStencilOp;
400 BackFace = defaultStencilOp;
401 DepthBoundsTestEnable = FALSE;
402 }
403 explicit CD3DX12_DEPTH_STENCIL_DESC1(
404 BOOL depthEnable,
405 D3D12_DEPTH_WRITE_MASK depthWriteMask,
406 D3D12_COMPARISON_FUNC depthFunc,
407 BOOL stencilEnable,
408 UINT8 stencilReadMask,
409 UINT8 stencilWriteMask,
410 D3D12_STENCIL_OP frontStencilFailOp,
411 D3D12_STENCIL_OP frontStencilDepthFailOp,
412 D3D12_STENCIL_OP frontStencilPassOp,
413 D3D12_COMPARISON_FUNC frontStencilFunc,
414 D3D12_STENCIL_OP backStencilFailOp,
415 D3D12_STENCIL_OP backStencilDepthFailOp,
416 D3D12_STENCIL_OP backStencilPassOp,
417 D3D12_COMPARISON_FUNC backStencilFunc,
418 BOOL depthBoundsTestEnable ) noexcept
419 {
420 DepthEnable = depthEnable;
421 DepthWriteMask = depthWriteMask;
422 DepthFunc = depthFunc;
423 StencilEnable = stencilEnable;
424 StencilReadMask = stencilReadMask;
425 StencilWriteMask = stencilWriteMask;
426 FrontFace.StencilFailOp = frontStencilFailOp;
427 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
428 FrontFace.StencilPassOp = frontStencilPassOp;
429 FrontFace.StencilFunc = frontStencilFunc;
430 BackFace.StencilFailOp = backStencilFailOp;
431 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
432 BackFace.StencilPassOp = backStencilPassOp;
433 BackFace.StencilFunc = backStencilFunc;
434 DepthBoundsTestEnable = depthBoundsTestEnable;
435 }
436 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
437 {
438 D3D12_DEPTH_STENCIL_DESC D;
439 D.DepthEnable = DepthEnable;
440 D.DepthWriteMask = DepthWriteMask;
441 D.DepthFunc = DepthFunc;
442 D.StencilEnable = StencilEnable;
443 D.StencilReadMask = StencilReadMask;
444 D.StencilWriteMask = StencilWriteMask;
445 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
446 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
447 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
448 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
449 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
450 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
451 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
452 D.BackFace.StencilFunc = BackFace.StencilFunc;
453 return D;
454 }
455};
456
457//------------------------------------------------------------------------------------------------
458#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
459struct CD3DX12_DEPTH_STENCIL_DESC2 : public D3D12_DEPTH_STENCIL_DESC2
460{
461 CD3DX12_DEPTH_STENCIL_DESC2() = default;
462 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC2& o ) noexcept :
463 D3D12_DEPTH_STENCIL_DESC2( o )
464 {}
465 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept
466 {
467 DepthEnable = o.DepthEnable;
468 DepthWriteMask = o.DepthWriteMask;
469 DepthFunc = o.DepthFunc;
470 StencilEnable = o.StencilEnable;
471 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
472 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
473 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
474 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
475 FrontFace.StencilReadMask = o.StencilReadMask;
476 FrontFace.StencilWriteMask = o.StencilWriteMask;
477
478 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
479 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
480 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
481 BackFace.StencilFunc = o.BackFace.StencilFunc;
482 BackFace.StencilReadMask = o.StencilReadMask;
483 BackFace.StencilWriteMask = o.StencilWriteMask;
484 DepthBoundsTestEnable = o.DepthBoundsTestEnable;
485 }
486 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
487 {
488 DepthEnable = o.DepthEnable;
489 DepthWriteMask = o.DepthWriteMask;
490 DepthFunc = o.DepthFunc;
491 StencilEnable = o.StencilEnable;
492
493 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
494 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
495 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
496 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
497 FrontFace.StencilReadMask = o.StencilReadMask;
498 FrontFace.StencilWriteMask = o.StencilWriteMask;
499
500 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
501 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
502 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
503 BackFace.StencilFunc = o.BackFace.StencilFunc;
504 BackFace.StencilReadMask = o.StencilReadMask;
505 BackFace.StencilWriteMask = o.StencilWriteMask;
506
507 DepthBoundsTestEnable = FALSE;
508 }
509 explicit CD3DX12_DEPTH_STENCIL_DESC2( CD3DX12_DEFAULT ) noexcept
510 {
511 DepthEnable = TRUE;
512 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
513 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
514 StencilEnable = FALSE;
515 const D3D12_DEPTH_STENCILOP_DESC1 defaultStencilOp =
516 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS, D3D12_DEFAULT_STENCIL_READ_MASK, D3D12_DEFAULT_STENCIL_WRITE_MASK };
517 FrontFace = defaultStencilOp;
518 BackFace = defaultStencilOp;
519 DepthBoundsTestEnable = FALSE;
520 }
521 explicit CD3DX12_DEPTH_STENCIL_DESC2(
522 BOOL depthEnable,
523 D3D12_DEPTH_WRITE_MASK depthWriteMask,
524 D3D12_COMPARISON_FUNC depthFunc,
525 BOOL stencilEnable,
526 D3D12_STENCIL_OP frontStencilFailOp,
527 D3D12_STENCIL_OP frontStencilDepthFailOp,
528 D3D12_STENCIL_OP frontStencilPassOp,
529 D3D12_COMPARISON_FUNC frontStencilFunc,
530 UINT8 frontStencilReadMask,
531 UINT8 frontStencilWriteMask,
532 D3D12_STENCIL_OP backStencilFailOp,
533 D3D12_STENCIL_OP backStencilDepthFailOp,
534 D3D12_STENCIL_OP backStencilPassOp,
535 D3D12_COMPARISON_FUNC backStencilFunc,
536 UINT8 backStencilReadMask,
537 UINT8 backStencilWriteMask,
538 BOOL depthBoundsTestEnable ) noexcept
539 {
540 DepthEnable = depthEnable;
541 DepthWriteMask = depthWriteMask;
542 DepthFunc = depthFunc;
543 StencilEnable = stencilEnable;
544
545 FrontFace.StencilFailOp = frontStencilFailOp;
546 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
547 FrontFace.StencilPassOp = frontStencilPassOp;
548 FrontFace.StencilFunc = frontStencilFunc;
549 FrontFace.StencilReadMask = frontStencilReadMask;
550 FrontFace.StencilWriteMask = frontStencilWriteMask;
551
552 BackFace.StencilFailOp = backStencilFailOp;
553 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
554 BackFace.StencilPassOp = backStencilPassOp;
555 BackFace.StencilFunc = backStencilFunc;
556 BackFace.StencilReadMask = backStencilReadMask;
557 BackFace.StencilWriteMask = backStencilWriteMask;
558
559 DepthBoundsTestEnable = depthBoundsTestEnable;
560 }
561
562 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
563 {
564 D3D12_DEPTH_STENCIL_DESC D;
565 D.DepthEnable = DepthEnable;
566 D.DepthWriteMask = DepthWriteMask;
567 D.DepthFunc = DepthFunc;
568 D.StencilEnable = StencilEnable;
569 D.StencilReadMask = FrontFace.StencilReadMask;
570 D.StencilWriteMask = FrontFace.StencilWriteMask;
571 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
572 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
573 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
574 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
575 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
576 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
577 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
578 D.BackFace.StencilFunc = BackFace.StencilFunc;
579 return D;
580 }
581};
582#endif // D3D12_SDK_VERSION >= 606
583
584//------------------------------------------------------------------------------------------------
585struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
586{
587 CD3DX12_BLEND_DESC() = default;
588 explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) noexcept :
589 D3D12_BLEND_DESC( o )
590 {}
591 explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) noexcept
592 {
593 AlphaToCoverageEnable = FALSE;
594 IndependentBlendEnable = FALSE;
595 const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
596 {
597 FALSE,FALSE,
598 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
599 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
600 D3D12_LOGIC_OP_NOOP,
601 D3D12_COLOR_WRITE_ENABLE_ALL,
602 };
603 for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
604 RenderTarget[ i ] = defaultRenderTargetBlendDesc;
605 }
606};
607
608//------------------------------------------------------------------------------------------------
609struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
610{
611 CD3DX12_RASTERIZER_DESC() = default;
612 explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) noexcept :
613 D3D12_RASTERIZER_DESC( o )
614 {}
615 explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) noexcept
616 {
617 FillMode = D3D12_FILL_MODE_SOLID;
618 CullMode = D3D12_CULL_MODE_BACK;
619 FrontCounterClockwise = FALSE;
620 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
621 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
622 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
623 DepthClipEnable = TRUE;
624 MultisampleEnable = FALSE;
625 AntialiasedLineEnable = FALSE;
626 ForcedSampleCount = 0;
627 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
628 }
629 explicit CD3DX12_RASTERIZER_DESC(
630 D3D12_FILL_MODE fillMode,
631 D3D12_CULL_MODE cullMode,
632 BOOL frontCounterClockwise,
633 INT depthBias,
634 FLOAT depthBiasClamp,
635 FLOAT slopeScaledDepthBias,
636 BOOL depthClipEnable,
637 BOOL multisampleEnable,
638 BOOL antialiasedLineEnable,
639 UINT forcedSampleCount,
640 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
641 {
642 FillMode = fillMode;
643 CullMode = cullMode;
644 FrontCounterClockwise = frontCounterClockwise;
645 DepthBias = depthBias;
646 DepthBiasClamp = depthBiasClamp;
647 SlopeScaledDepthBias = slopeScaledDepthBias;
648 DepthClipEnable = depthClipEnable;
649 MultisampleEnable = multisampleEnable;
650 AntialiasedLineEnable = antialiasedLineEnable;
651 ForcedSampleCount = forcedSampleCount;
652 ConservativeRaster = conservativeRaster;
653 }
654};
655
656
657//------------------------------------------------------------------------------------------------
658#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
659struct CD3DX12_RASTERIZER_DESC1 : public D3D12_RASTERIZER_DESC1
660{
661 CD3DX12_RASTERIZER_DESC1() = default;
662 explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC1& o) noexcept :
663 D3D12_RASTERIZER_DESC1(o)
664
665 {
666 }
667 explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC& o) noexcept
668 {
669 FillMode = o.FillMode;
670 CullMode = o.CullMode;
671 FrontCounterClockwise = o.FrontCounterClockwise;
672 DepthBias = static_cast<FLOAT>(o.DepthBias);
673 DepthBiasClamp = o.DepthBiasClamp;
674 SlopeScaledDepthBias = o.SlopeScaledDepthBias;
675 DepthClipEnable = o.DepthClipEnable;
676 MultisampleEnable = o.MultisampleEnable;
677 AntialiasedLineEnable = o.AntialiasedLineEnable;
678 ForcedSampleCount = o.ForcedSampleCount;
679 ConservativeRaster = o.ConservativeRaster;
680 }
681 explicit CD3DX12_RASTERIZER_DESC1(CD3DX12_DEFAULT) noexcept
682 {
683 FillMode = D3D12_FILL_MODE_SOLID;
684 CullMode = D3D12_CULL_MODE_BACK;
685 FrontCounterClockwise = FALSE;
686 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
687 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
688 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
689 DepthClipEnable = TRUE;
690 MultisampleEnable = FALSE;
691 AntialiasedLineEnable = FALSE;
692 ForcedSampleCount = 0;
693 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
694 }
695 explicit CD3DX12_RASTERIZER_DESC1(
696 D3D12_FILL_MODE fillMode,
697 D3D12_CULL_MODE cullMode,
698 BOOL frontCounterClockwise,
699 FLOAT depthBias,
700 FLOAT depthBiasClamp,
701 FLOAT slopeScaledDepthBias,
702 BOOL depthClipEnable,
703 BOOL multisampleEnable,
704 BOOL antialiasedLineEnable,
705 UINT forcedSampleCount,
706 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
707 {
708 FillMode = fillMode;
709 CullMode = cullMode;
710 FrontCounterClockwise = frontCounterClockwise;
711 DepthBias = depthBias;
712 DepthBiasClamp = depthBiasClamp;
713 SlopeScaledDepthBias = slopeScaledDepthBias;
714 DepthClipEnable = depthClipEnable;
715 MultisampleEnable = multisampleEnable;
716 AntialiasedLineEnable = antialiasedLineEnable;
717 ForcedSampleCount = forcedSampleCount;
718 ConservativeRaster = conservativeRaster;
719 }
720
721
722 operator D3D12_RASTERIZER_DESC() const noexcept
723 {
724 D3D12_RASTERIZER_DESC o;
725
726 o.FillMode = FillMode;
727 o.CullMode = CullMode;
728 o.FrontCounterClockwise = FrontCounterClockwise;
729 o.DepthBias = static_cast<INT>(DepthBias);
730 o.DepthBiasClamp = DepthBiasClamp;
731 o.SlopeScaledDepthBias = SlopeScaledDepthBias;
732 o.DepthClipEnable = DepthClipEnable;
733 o.MultisampleEnable = MultisampleEnable;
734 o.AntialiasedLineEnable = AntialiasedLineEnable;
735 o.ForcedSampleCount = ForcedSampleCount;
736 o.ConservativeRaster = ConservativeRaster;
737
738 return o;
739 }
740};
741#endif // D3D12_SDK_VERSION >= 608
742
743//------------------------------------------------------------------------------------------------
744#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
745struct CD3DX12_RASTERIZER_DESC2 : public D3D12_RASTERIZER_DESC2
746{
747 CD3DX12_RASTERIZER_DESC2() = default;
748 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC2& o) noexcept :
749 D3D12_RASTERIZER_DESC2(o)
750
751 {
752 }
753 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC1& o) noexcept
754 {
755 FillMode = o.FillMode;
756 CullMode = o.CullMode;
757 FrontCounterClockwise = o.FrontCounterClockwise;
758 DepthBias = o.DepthBias;
759 DepthBiasClamp = o.DepthBiasClamp;
760 SlopeScaledDepthBias = o.SlopeScaledDepthBias;
761 DepthClipEnable = o.DepthClipEnable;
762 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
763 if (o.MultisampleEnable)
764 {
765 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE;
766 }
767 else if (o.AntialiasedLineEnable)
768 {
769 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED;
770 }
771 ForcedSampleCount = o.ForcedSampleCount;
772 ConservativeRaster = o.ConservativeRaster;
773 }
774 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC& o) noexcept
775 : CD3DX12_RASTERIZER_DESC2(CD3DX12_RASTERIZER_DESC1(o))
776 {
777 }
778 explicit CD3DX12_RASTERIZER_DESC2(CD3DX12_DEFAULT) noexcept
779 {
780 FillMode = D3D12_FILL_MODE_SOLID;
781 CullMode = D3D12_CULL_MODE_BACK;
782 FrontCounterClockwise = FALSE;
783 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
784 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
785 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
786 DepthClipEnable = TRUE;
787 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
788 ForcedSampleCount = 0;
789 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
790 }
791 explicit CD3DX12_RASTERIZER_DESC2(
792 D3D12_FILL_MODE fillMode,
793 D3D12_CULL_MODE cullMode,
794 BOOL frontCounterClockwise,
795 FLOAT depthBias,
796 FLOAT depthBiasClamp,
797 FLOAT slopeScaledDepthBias,
798 BOOL depthClipEnable,
799 D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode,
800 UINT forcedSampleCount,
801 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
802 {
803 FillMode = fillMode;
804 CullMode = cullMode;
805 FrontCounterClockwise = frontCounterClockwise;
806 DepthBias = depthBias;
807 DepthBiasClamp = depthBiasClamp;
808 SlopeScaledDepthBias = slopeScaledDepthBias;
809 DepthClipEnable = depthClipEnable;
810 LineRasterizationMode = lineRasterizationMode;
811 ForcedSampleCount = forcedSampleCount;
812 ConservativeRaster = conservativeRaster;
813 }
814
815
816 operator D3D12_RASTERIZER_DESC1() const noexcept
817 {
818 D3D12_RASTERIZER_DESC1 o;
819
820 o.FillMode = FillMode;
821 o.CullMode = CullMode;
822 o.FrontCounterClockwise = FrontCounterClockwise;
823 o.DepthBias = DepthBias;
824 o.DepthBiasClamp = DepthBiasClamp;
825 o.SlopeScaledDepthBias = SlopeScaledDepthBias;
826 o.DepthClipEnable = DepthClipEnable;
827 o.MultisampleEnable = FALSE;
828 o.AntialiasedLineEnable = FALSE;
829 if (LineRasterizationMode == D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED)
830 {
831 o.AntialiasedLineEnable = TRUE;
832 }
833 else if (LineRasterizationMode != D3D12_LINE_RASTERIZATION_MODE_ALIASED)
834 {
835 o.MultisampleEnable = TRUE;
836 }
837 o.ForcedSampleCount = ForcedSampleCount;
838 o.ConservativeRaster = ConservativeRaster;
839
840 return o;
841 }
842 operator D3D12_RASTERIZER_DESC() const noexcept
843 {
844 return static_cast<D3D12_RASTERIZER_DESC>(CD3DX12_RASTERIZER_DESC1(static_cast<D3D12_RASTERIZER_DESC1>(*this)));
845 }
846};
847#endif // D3D12_SDK_VERSION >= 610
848
849//------------------------------------------------------------------------------------------------
850struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
851{
852 CD3DX12_RESOURCE_ALLOCATION_INFO() = default;
853 explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) noexcept :
854 D3D12_RESOURCE_ALLOCATION_INFO( o )
855 {}
856 CD3DX12_RESOURCE_ALLOCATION_INFO(
857 UINT64 size,
858 UINT64 alignment ) noexcept
859 {
860 SizeInBytes = size;
861 Alignment = alignment;
862 }
863};
864
865//------------------------------------------------------------------------------------------------
866struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
867{
868 CD3DX12_HEAP_PROPERTIES() = default;
869 explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) noexcept :
870 D3D12_HEAP_PROPERTIES(o)
871 {}
872 CD3DX12_HEAP_PROPERTIES(
873 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
874 D3D12_MEMORY_POOL memoryPoolPreference,
875 UINT creationNodeMask = 1,
876 UINT nodeMask = 1 ) noexcept
877 {
878 Type = D3D12_HEAP_TYPE_CUSTOM;
879 CPUPageProperty = cpuPageProperty;
880 MemoryPoolPreference = memoryPoolPreference;
881 CreationNodeMask = creationNodeMask;
882 VisibleNodeMask = nodeMask;
883 }
884 explicit CD3DX12_HEAP_PROPERTIES(
885 D3D12_HEAP_TYPE type,
886 UINT creationNodeMask = 1,
887 UINT nodeMask = 1 ) noexcept
888 {
889 Type = type;
890 CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
891 MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
892 CreationNodeMask = creationNodeMask;
893 VisibleNodeMask = nodeMask;
894 }
895 bool IsCPUAccessible() const noexcept
896 {
897 return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK
898#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
899 || Type == D3D12_HEAP_TYPE_GPU_UPLOAD
900#endif
901 || (Type == D3D12_HEAP_TYPE_CUSTOM &&
902 (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
903 }
904};
905inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
906{
907 return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
908 l.MemoryPoolPreference == r.MemoryPoolPreference &&
909 l.CreationNodeMask == r.CreationNodeMask &&
910 l.VisibleNodeMask == r.VisibleNodeMask;
911}
912inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
913{ return !( l == r ); }
914
915//------------------------------------------------------------------------------------------------
916struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
917{
918 CD3DX12_HEAP_DESC() = default;
919 explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) noexcept :
920 D3D12_HEAP_DESC(o)
921 {}
922 CD3DX12_HEAP_DESC(
923 UINT64 size,
924 D3D12_HEAP_PROPERTIES properties,
925 UINT64 alignment = 0,
926 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
927 {
928 SizeInBytes = size;
929 Properties = properties;
930 Alignment = alignment;
931 Flags = flags;
932 }
933 CD3DX12_HEAP_DESC(
934 UINT64 size,
935 D3D12_HEAP_TYPE type,
936 UINT64 alignment = 0,
937 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
938 {
939 SizeInBytes = size;
940 Properties = CD3DX12_HEAP_PROPERTIES( type );
941 Alignment = alignment;
942 Flags = flags;
943 }
944 CD3DX12_HEAP_DESC(
945 UINT64 size,
946 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
947 D3D12_MEMORY_POOL memoryPoolPreference,
948 UINT64 alignment = 0,
949 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
950 {
951 SizeInBytes = size;
952 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
953 Alignment = alignment;
954 Flags = flags;
955 }
956 CD3DX12_HEAP_DESC(
957 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
958 D3D12_HEAP_PROPERTIES properties,
959 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
960 {
961 SizeInBytes = resAllocInfo.SizeInBytes;
962 Properties = properties;
963 Alignment = resAllocInfo.Alignment;
964 Flags = flags;
965 }
966 CD3DX12_HEAP_DESC(
967 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
968 D3D12_HEAP_TYPE type,
969 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
970 {
971 SizeInBytes = resAllocInfo.SizeInBytes;
972 Properties = CD3DX12_HEAP_PROPERTIES( type );
973 Alignment = resAllocInfo.Alignment;
974 Flags = flags;
975 }
976 CD3DX12_HEAP_DESC(
977 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
978 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
979 D3D12_MEMORY_POOL memoryPoolPreference,
980 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
981 {
982 SizeInBytes = resAllocInfo.SizeInBytes;
983 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
984 Alignment = resAllocInfo.Alignment;
985 Flags = flags;
986 }
987 bool IsCPUAccessible() const noexcept
988 { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); }
989};
990inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
991{
992 return l.SizeInBytes == r.SizeInBytes &&
993 l.Properties == r.Properties &&
994 l.Alignment == r.Alignment &&
995 l.Flags == r.Flags;
996}
997inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
998{ return !( l == r ); }
999
1000//------------------------------------------------------------------------------------------------
1001struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
1002{
1003 CD3DX12_CLEAR_VALUE() = default;
1004 explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) noexcept :
1005 D3D12_CLEAR_VALUE(o)
1006 {}
1007 CD3DX12_CLEAR_VALUE(
1008 DXGI_FORMAT format,
1009 const FLOAT color[4] ) noexcept
1010 {
1011 Format = format;
1012 memcpy( Color, color, sizeof( Color ) );
1013 }
1014 CD3DX12_CLEAR_VALUE(
1015 DXGI_FORMAT format,
1016 FLOAT depth,
1017 UINT8 stencil ) noexcept
1018 {
1019 Format = format;
1020 memset( &Color, 0, sizeof( Color ) );
1021 /* Use memcpy to preserve NAN values */
1022 memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) );
1023 DepthStencil.Stencil = stencil;
1024 }
1025};
1026
1027//------------------------------------------------------------------------------------------------
1028inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) noexcept
1029{
1030 if (a.Format != b.Format) return false;
1031 if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT
1032 || a.Format == DXGI_FORMAT_D16_UNORM
1033 || a.Format == DXGI_FORMAT_D32_FLOAT
1034 || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
1035 {
1036 return (a.DepthStencil.Depth == b.DepthStencil.Depth) &&
1037 (a.DepthStencil.Stencil == b.DepthStencil.Stencil);
1038 } else {
1039 return (a.Color[0] == b.Color[0]) &&
1040 (a.Color[1] == b.Color[1]) &&
1041 (a.Color[2] == b.Color[2]) &&
1042 (a.Color[3] == b.Color[3]);
1043 }
1044}
1045
1046//------------------------------------------------------------------------------------------------
1047struct CD3DX12_RANGE : public D3D12_RANGE
1048{
1049 CD3DX12_RANGE() = default;
1050 explicit CD3DX12_RANGE(const D3D12_RANGE &o) noexcept :
1051 D3D12_RANGE(o)
1052 {}
1053 CD3DX12_RANGE(
1054 SIZE_T begin,
1055 SIZE_T end ) noexcept
1056 {
1057 Begin = begin;
1058 End = end;
1059 }
1060};
1061
1062//------------------------------------------------------------------------------------------------
1063struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
1064{
1065 CD3DX12_RANGE_UINT64() = default;
1066 explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) noexcept :
1067 D3D12_RANGE_UINT64(o)
1068 {}
1069 CD3DX12_RANGE_UINT64(
1070 UINT64 begin,
1071 UINT64 end ) noexcept
1072 {
1073 Begin = begin;
1074 End = end;
1075 }
1076};
1077
1078//------------------------------------------------------------------------------------------------
1079struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64
1080{
1081 CD3DX12_SUBRESOURCE_RANGE_UINT64() = default;
1082 explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) noexcept :
1083 D3D12_SUBRESOURCE_RANGE_UINT64(o)
1084 {}
1085 CD3DX12_SUBRESOURCE_RANGE_UINT64(
1086 UINT subresource,
1087 const D3D12_RANGE_UINT64& range ) noexcept
1088 {
1089 Subresource = subresource;
1090 Range = range;
1091 }
1092 CD3DX12_SUBRESOURCE_RANGE_UINT64(
1093 UINT subresource,
1094 UINT64 begin,
1095 UINT64 end ) noexcept
1096 {
1097 Subresource = subresource;
1098 Range.Begin = begin;
1099 Range.End = end;
1100 }
1101};
1102
1103//------------------------------------------------------------------------------------------------
1104struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE
1105{
1106 CD3DX12_SHADER_BYTECODE() = default;
1107 explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) noexcept :
1108 D3D12_SHADER_BYTECODE(o)
1109 {}
1110 CD3DX12_SHADER_BYTECODE(
1111 _In_ ID3DBlob* pShaderBlob ) noexcept
1112 {
1113 pShaderBytecode = pShaderBlob->GetBufferPointer();
1114 BytecodeLength = pShaderBlob->GetBufferSize();
1115 }
1116 CD3DX12_SHADER_BYTECODE(
1117 const void* _pShaderBytecode,
1118 SIZE_T bytecodeLength ) noexcept
1119 {
1120 pShaderBytecode = _pShaderBytecode;
1121 BytecodeLength = bytecodeLength;
1122 }
1123};
1124
1125//------------------------------------------------------------------------------------------------
1126struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
1127{
1128 CD3DX12_TILED_RESOURCE_COORDINATE() = default;
1129 explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) noexcept :
1130 D3D12_TILED_RESOURCE_COORDINATE(o)
1131 {}
1132 CD3DX12_TILED_RESOURCE_COORDINATE(
1133 UINT x,
1134 UINT y,
1135 UINT z,
1136 UINT subresource ) noexcept
1137 {
1138 X = x;
1139 Y = y;
1140 Z = z;
1141 Subresource = subresource;
1142 }
1143};
1144
1145//------------------------------------------------------------------------------------------------
1146struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
1147{
1148 CD3DX12_TILE_REGION_SIZE() = default;
1149 explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) noexcept :
1150 D3D12_TILE_REGION_SIZE(o)
1151 {}
1152 CD3DX12_TILE_REGION_SIZE(
1153 UINT numTiles,
1154 BOOL useBox,
1155 UINT width,
1156 UINT16 height,
1157 UINT16 depth ) noexcept
1158 {
1159 NumTiles = numTiles;
1160 UseBox = useBox;
1161 Width = width;
1162 Height = height;
1163 Depth = depth;
1164 }
1165};
1166
1167//------------------------------------------------------------------------------------------------
1168struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
1169{
1170 CD3DX12_SUBRESOURCE_TILING() = default;
1171 explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) noexcept :
1172 D3D12_SUBRESOURCE_TILING(o)
1173 {}
1174 CD3DX12_SUBRESOURCE_TILING(
1175 UINT widthInTiles,
1176 UINT16 heightInTiles,
1177 UINT16 depthInTiles,
1178 UINT startTileIndexInOverallResource ) noexcept
1179 {
1180 WidthInTiles = widthInTiles;
1181 HeightInTiles = heightInTiles;
1182 DepthInTiles = depthInTiles;
1183 StartTileIndexInOverallResource = startTileIndexInOverallResource;
1184 }
1185};
1186
1187//------------------------------------------------------------------------------------------------
1188struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
1189{
1190 CD3DX12_TILE_SHAPE() = default;
1191 explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) noexcept :
1192 D3D12_TILE_SHAPE(o)
1193 {}
1194 CD3DX12_TILE_SHAPE(
1195 UINT widthInTexels,
1196 UINT heightInTexels,
1197 UINT depthInTexels ) noexcept
1198 {
1199 WidthInTexels = widthInTexels;
1200 HeightInTexels = heightInTexels;
1201 DepthInTexels = depthInTexels;
1202 }
1203};
1204
1205//------------------------------------------------------------------------------------------------
1206struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
1207{
1208 CD3DX12_PACKED_MIP_INFO() = default;
1209 explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) noexcept :
1210 D3D12_PACKED_MIP_INFO(o)
1211 {}
1212 CD3DX12_PACKED_MIP_INFO(
1213 UINT8 numStandardMips,
1214 UINT8 numPackedMips,
1215 UINT numTilesForPackedMips,
1216 UINT startTileIndexInOverallResource ) noexcept
1217 {
1218 NumStandardMips = numStandardMips;
1219 NumPackedMips = numPackedMips;
1220 NumTilesForPackedMips = numTilesForPackedMips;
1221 StartTileIndexInOverallResource = startTileIndexInOverallResource;
1222 }
1223};
1224
1225//------------------------------------------------------------------------------------------------
1226struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
1227{
1228 CD3DX12_SUBRESOURCE_FOOTPRINT() = default;
1229 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) noexcept :
1230 D3D12_SUBRESOURCE_FOOTPRINT(o)
1231 {}
1232 CD3DX12_SUBRESOURCE_FOOTPRINT(
1233 DXGI_FORMAT format,
1234 UINT width,
1235 UINT height,
1236 UINT depth,
1237 UINT rowPitch ) noexcept
1238 {
1239 Format = format;
1240 Width = width;
1241 Height = height;
1242 Depth = depth;
1243 RowPitch = rowPitch;
1244 }
1245 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(
1246 const D3D12_RESOURCE_DESC& resDesc,
1247 UINT rowPitch ) noexcept
1248 {
1249 Format = resDesc.Format;
1250 Width = UINT( resDesc.Width );
1251 Height = resDesc.Height;
1252 Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1u);
1253 RowPitch = rowPitch;
1254 }
1255};
1256
1257//------------------------------------------------------------------------------------------------
1258struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
1259{
1260 CD3DX12_TEXTURE_COPY_LOCATION() = default;
1261 explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) noexcept :
1262 D3D12_TEXTURE_COPY_LOCATION(o)
1263 {}
1264 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) noexcept
1265 {
1266 pResource = pRes;
1267 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
1268 PlacedFootprint = {};
1269 }
1270 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) noexcept
1271 {
1272 pResource = pRes;
1273 Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
1274 PlacedFootprint = Footprint;
1275 }
1276 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) noexcept
1277 {
1278 pResource = pRes;
1279 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
1280 PlacedFootprint = {};
1281 SubresourceIndex = Sub;
1282 }
1283};
1284
1285//------------------------------------------------------------------------------------------------
1286constexpr UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) noexcept
1287{
1288 return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
1289}
1290
1291//------------------------------------------------------------------------------------------------
1292inline UINT8 D3D12GetFormatPlaneCount(
1293 _In_ ID3D12Device* pDevice,
1294 DXGI_FORMAT Format
1295 ) noexcept
1296{
1297 D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 };
1298 if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
1299 {
1300 return 0;
1301 }
1302 return formatInfo.PlaneCount;
1303}
1304
1305//------------------------------------------------------------------------------------------------
1306struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
1307{
1308 CD3DX12_RESOURCE_DESC() = default;
1309 explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) noexcept :
1310 D3D12_RESOURCE_DESC( o )
1311 {}
1312 CD3DX12_RESOURCE_DESC(
1313 D3D12_RESOURCE_DIMENSION dimension,
1314 UINT64 alignment,
1315 UINT64 width,
1316 UINT height,
1317 UINT16 depthOrArraySize,
1318 UINT16 mipLevels,
1319 DXGI_FORMAT format,
1320 UINT sampleCount,
1321 UINT sampleQuality,
1322 D3D12_TEXTURE_LAYOUT layout,
1323 D3D12_RESOURCE_FLAGS flags ) noexcept
1324 {
1325 Dimension = dimension;
1326 Alignment = alignment;
1327 Width = width;
1328 Height = height;
1329 DepthOrArraySize = depthOrArraySize;
1330 MipLevels = mipLevels;
1331 Format = format;
1332 SampleDesc.Count = sampleCount;
1333 SampleDesc.Quality = sampleQuality;
1334 Layout = layout;
1335 Flags = flags;
1336 }
1337 static inline CD3DX12_RESOURCE_DESC Buffer(
1338 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1339 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1340 {
1341 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1342 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1343 }
1344 static inline CD3DX12_RESOURCE_DESC Buffer(
1345 UINT64 width,
1346 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1347 UINT64 alignment = 0 ) noexcept
1348 {
1349 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1350 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1351 }
1352 static inline CD3DX12_RESOURCE_DESC Tex1D(
1353 DXGI_FORMAT format,
1354 UINT64 width,
1355 UINT16 arraySize = 1,
1356 UINT16 mipLevels = 0,
1357 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1358 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1359 UINT64 alignment = 0 ) noexcept
1360 {
1361 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1362 mipLevels, format, 1, 0, layout, flags );
1363 }
1364 static inline CD3DX12_RESOURCE_DESC Tex2D(
1365 DXGI_FORMAT format,
1366 UINT64 width,
1367 UINT height,
1368 UINT16 arraySize = 1,
1369 UINT16 mipLevels = 0,
1370 UINT sampleCount = 1,
1371 UINT sampleQuality = 0,
1372 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1373 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1374 UINT64 alignment = 0 ) noexcept
1375 {
1376 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1377 mipLevels, format, sampleCount, sampleQuality, layout, flags );
1378 }
1379 static inline CD3DX12_RESOURCE_DESC Tex3D(
1380 DXGI_FORMAT format,
1381 UINT64 width,
1382 UINT height,
1383 UINT16 depth,
1384 UINT16 mipLevels = 0,
1385 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1386 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1387 UINT64 alignment = 0 ) noexcept
1388 {
1389 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1390 mipLevels, format, 1, 0, layout, flags );
1391 }
1392 inline UINT16 Depth() const noexcept
1393 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1394 inline UINT16 ArraySize() const noexcept
1395 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1396 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1397 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1398 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1399 { return static_cast<UINT>(MipLevels) * ArraySize() * PlaneCount(pDevice); }
1400 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1401 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1402};
1403inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1404{
1405 return l.Dimension == r.Dimension &&
1406 l.Alignment == r.Alignment &&
1407 l.Width == r.Width &&
1408 l.Height == r.Height &&
1409 l.DepthOrArraySize == r.DepthOrArraySize &&
1410 l.MipLevels == r.MipLevels &&
1411 l.Format == r.Format &&
1412 l.SampleDesc.Count == r.SampleDesc.Count &&
1413 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1414 l.Layout == r.Layout &&
1415 l.Flags == r.Flags;
1416}
1417inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1418{ return !( l == r ); }
1419
1420//------------------------------------------------------------------------------------------------
1421struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
1422{
1423 CD3DX12_RESOURCE_DESC1() = default;
1424 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
1425 D3D12_RESOURCE_DESC1( o )
1426 {}
1427 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC& o ) noexcept
1428 {
1429 Dimension = o.Dimension;
1430 Alignment = o.Alignment;
1431 Width = o.Width;
1432 Height = o.Height;
1433 DepthOrArraySize = o.DepthOrArraySize;
1434 MipLevels = o.MipLevels;
1435 Format = o.Format;
1436 SampleDesc = o.SampleDesc;
1437 Layout = o.Layout;
1438 Flags = o.Flags;
1439 SamplerFeedbackMipRegion = {};
1440 }
1441 CD3DX12_RESOURCE_DESC1(
1442 D3D12_RESOURCE_DIMENSION dimension,
1443 UINT64 alignment,
1444 UINT64 width,
1445 UINT height,
1446 UINT16 depthOrArraySize,
1447 UINT16 mipLevels,
1448 DXGI_FORMAT format,
1449 UINT sampleCount,
1450 UINT sampleQuality,
1451 D3D12_TEXTURE_LAYOUT layout,
1452 D3D12_RESOURCE_FLAGS flags,
1453 UINT samplerFeedbackMipRegionWidth = 0,
1454 UINT samplerFeedbackMipRegionHeight = 0,
1455 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1456 {
1457 Dimension = dimension;
1458 Alignment = alignment;
1459 Width = width;
1460 Height = height;
1461 DepthOrArraySize = depthOrArraySize;
1462 MipLevels = mipLevels;
1463 Format = format;
1464 SampleDesc.Count = sampleCount;
1465 SampleDesc.Quality = sampleQuality;
1466 Layout = layout;
1467 Flags = flags;
1468 SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
1469 SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
1470 SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
1471 }
1472
1473 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1474 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1475 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1476 {
1477 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1478 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1479 }
1480 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1481 UINT64 width,
1482 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1483 UINT64 alignment = 0 ) noexcept
1484 {
1485 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1486 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1487 }
1488 static inline CD3DX12_RESOURCE_DESC1 Tex1D(
1489 DXGI_FORMAT format,
1490 UINT64 width,
1491 UINT16 arraySize = 1,
1492 UINT16 mipLevels = 0,
1493 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1494 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1495 UINT64 alignment = 0 ) noexcept
1496 {
1497 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1498 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1499 }
1500 static inline CD3DX12_RESOURCE_DESC1 Tex2D(
1501 DXGI_FORMAT format,
1502 UINT64 width,
1503 UINT height,
1504 UINT16 arraySize = 1,
1505 UINT16 mipLevels = 0,
1506 UINT sampleCount = 1,
1507 UINT sampleQuality = 0,
1508 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1509 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1510 UINT64 alignment = 0,
1511 UINT samplerFeedbackMipRegionWidth = 0,
1512 UINT samplerFeedbackMipRegionHeight = 0,
1513 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1514 {
1515 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1516 mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
1517 samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
1518 }
1519 static inline CD3DX12_RESOURCE_DESC1 Tex3D(
1520 DXGI_FORMAT format,
1521 UINT64 width,
1522 UINT height,
1523 UINT16 depth,
1524 UINT16 mipLevels = 0,
1525 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1526 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1527 UINT64 alignment = 0 ) noexcept
1528 {
1529 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1530 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1531 }
1532 inline UINT16 Depth() const noexcept
1533 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1534 inline UINT16 ArraySize() const noexcept
1535 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1536 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1537 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1538 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1539 { return static_cast<UINT>(MipLevels) * ArraySize() * PlaneCount(pDevice); }
1540 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1541 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1542};
1543inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1544{
1545 return l.Dimension == r.Dimension &&
1546 l.Alignment == r.Alignment &&
1547 l.Width == r.Width &&
1548 l.Height == r.Height &&
1549 l.DepthOrArraySize == r.DepthOrArraySize &&
1550 l.MipLevels == r.MipLevels &&
1551 l.Format == r.Format &&
1552 l.SampleDesc.Count == r.SampleDesc.Count &&
1553 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1554 l.Layout == r.Layout &&
1555 l.Flags == r.Flags &&
1556 l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
1557 l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
1558 l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
1559}
1560inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1561{ return !( l == r ); }
1562
1563//------------------------------------------------------------------------------------------------
1564// Fills in the mipmap and alignment values of pDesc when either members are zero
1565// Used to replace an implicit field to an explicit (0 mip map = max mip map level)
1566// If expansion has occured, returns LclDesc, else returns the original pDesc
1567inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
1568 CD3DX12_RESOURCE_DESC1& LclDesc,
1569 const CD3DX12_RESOURCE_DESC1* pDesc,
1570 const bool tightAlignmentSupported = false,
1571 const bool alignAsCommitted = false)
1572{
1573 // Expand mip levels:
1574 if (pDesc->MipLevels == 0 || pDesc->Alignment == 0)
1575 {
1576 LclDesc = *pDesc;
1577 if (pDesc->MipLevels == 0)
1578 {
1579 auto MaxMipLevels = [](UINT64 uiMaxDimension) -> UINT16
1580 {
1581 UINT16 uiRet = 0;
1582 while (uiMaxDimension > 0)
1583 {
1584 uiRet++;
1585 uiMaxDimension >>= 1;
1586 }
1587 return uiRet;
1588 };
1589 auto Max = [](UINT64 const& a, UINT64 const& b)
1590 {
1591 return (a < b) ? b : a;
1592 };
1593
1594 LclDesc.MipLevels = MaxMipLevels(
1595 Max(LclDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? LclDesc.DepthOrArraySize : 1,
1596 Max(LclDesc.Width, LclDesc.Height)));
1597 }
1598 if (pDesc->Alignment == 0)
1599 {
1600 if (pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE
1601 || pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE
1602 )
1603 {
1604 LclDesc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
1605 }
1606 else if (!(tightAlignmentSupported && (pDesc->Flags & D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT))
1607 || (pDesc->Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER))
1608 {
1609 LclDesc.Alignment =
1610 (pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
1611 }
1612 else
1613 {
1614 // Tight alignment is supported and we aren't a cross adapter resource, now just need to set the alignment field to the minimum alignment for each type
1615 if(alignAsCommitted)
1616 LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT;
1617 else
1618 LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT;
1619 }
1620 }
1621 return &LclDesc;
1622 }
1623 else
1624 {
1625 return pDesc;
1626 }
1627}
1628
1629
1630//------------------------------------------------------------------------------------------------
1631struct CD3DX12_SHADER_RESOURCE_VIEW_DESC : public D3D12_SHADER_RESOURCE_VIEW_DESC
1632{
1633 CD3DX12_SHADER_RESOURCE_VIEW_DESC() = default;
1634 explicit CD3DX12_SHADER_RESOURCE_VIEW_DESC( const D3D12_SHADER_RESOURCE_VIEW_DESC& o ) noexcept :
1635 D3D12_SHADER_RESOURCE_VIEW_DESC(o)
1636 {}
1637
1638 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC StructuredBuffer(
1639 UINT NumElements,
1640 UINT StructureByteStride,
1641 UINT64 FirstElement = 0) noexcept
1642 {
1643 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1644 desc.Format = DXGI_FORMAT_UNKNOWN;
1645 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1646 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1647 desc.Buffer.FirstElement = FirstElement;
1648 desc.Buffer.NumElements = NumElements;
1649 desc.Buffer.StructureByteStride = StructureByteStride;
1650 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
1651 return desc;
1652 }
1653
1654 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RawBuffer(
1655 UINT NumElements,
1656 UINT64 FirstElement = 0) noexcept
1657 {
1658 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1659 desc.Format = DXGI_FORMAT_R32_UINT;
1660 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1661 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1662 desc.Buffer.FirstElement = FirstElement;
1663 desc.Buffer.NumElements = NumElements;
1664 desc.Buffer.StructureByteStride = 0;
1665 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_RAW;
1666 return desc;
1667 }
1668
1669 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TypedBuffer(
1670 DXGI_FORMAT Format,
1671 UINT NumElements,
1672 UINT64 FirstElement = 0,
1673 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1674 {
1675 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1676 desc.Format = Format;
1677 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1678 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1679 desc.Buffer.FirstElement = FirstElement;
1680 desc.Buffer.NumElements = NumElements;
1681 desc.Buffer.StructureByteStride = 0;
1682 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
1683 return desc;
1684 }
1685
1686 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1D(
1687 DXGI_FORMAT Format,
1688 UINT MipLevels = -1,
1689 UINT MostDetailedMip = 0,
1690 FLOAT ResourceMinLODClamp = 0.0f,
1691 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1692 {
1693 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1694 desc.Format = Format;
1695 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1D;
1696 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1697 desc.Texture1D.MostDetailedMip = MostDetailedMip;
1698 desc.Texture1D.MipLevels = MipLevels;
1699 desc.Texture1D.ResourceMinLODClamp = ResourceMinLODClamp;
1700 return desc;
1701 }
1702
1703 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1DArray(
1704 DXGI_FORMAT Format,
1705 UINT ArraySize = -1,
1706 UINT MipLevels = -1,
1707 UINT FirstArraySlice = 0,
1708 UINT MostDetailedMip = 0,
1709 FLOAT ResourceMinLODClamp = 0.0f,
1710 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1711 {
1712 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1713 desc.Format = Format;
1714 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1DARRAY;
1715 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1716 desc.Texture1DArray.MostDetailedMip = MostDetailedMip;
1717 desc.Texture1DArray.MipLevels = MipLevels;
1718 desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
1719 desc.Texture1DArray.ArraySize = ArraySize;
1720 desc.Texture1DArray.ResourceMinLODClamp = ResourceMinLODClamp;
1721 return desc;
1722 }
1723
1724 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2D(
1725 DXGI_FORMAT Format,
1726 UINT MipLevels = -1,
1727 UINT MostDetailedMip = 0,
1728 UINT PlaneSlice = 0,
1729 FLOAT ResourceMinLODClamp = 0.0f,
1730 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1731 {
1732 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1733 desc.Format = Format;
1734 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
1735 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1736 desc.Texture2D.MostDetailedMip = MostDetailedMip;
1737 desc.Texture2D.MipLevels = MipLevels;
1738 desc.Texture2D.PlaneSlice = PlaneSlice;
1739 desc.Texture2D.ResourceMinLODClamp = ResourceMinLODClamp;
1740 return desc;
1741 }
1742
1743 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DArray(
1744 DXGI_FORMAT Format,
1745 UINT ArraySize = -1,
1746 UINT MipLevels = -1,
1747 UINT FirstArraySlice = 0,
1748 UINT MostDetailedMip = 0,
1749 UINT PlaneSlice = 0,
1750 FLOAT ResourceMinLODClamp = 0.0f,
1751 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1752 {
1753 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1754 desc.Format = Format;
1755 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY;
1756 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1757 desc.Texture2DArray.MostDetailedMip = MostDetailedMip;
1758 desc.Texture2DArray.MipLevels = MipLevels;
1759 desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
1760 desc.Texture2DArray.ArraySize = ArraySize;
1761 desc.Texture2DArray.PlaneSlice = PlaneSlice;
1762 desc.Texture2DArray.ResourceMinLODClamp = ResourceMinLODClamp;
1763 return desc;
1764 }
1765
1766 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMS(
1767 DXGI_FORMAT Format,
1768 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1769 {
1770 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1771 desc.Format = Format;
1772 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMS;
1773 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1774 // desc.Texture2DMS.UnusedField_NothingToDefine = 0;
1775 return desc;
1776 }
1777
1778 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMSArray(
1779 DXGI_FORMAT Format,
1780 UINT ArraySize,
1781 UINT FirstArraySlice = 0,
1782 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1783 {
1784 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1785 desc.Format = Format;
1786 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY;
1787 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1788 desc.Texture2DMSArray.ArraySize = ArraySize;
1789 desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
1790 return desc;
1791 }
1792
1793 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex3D(
1794 DXGI_FORMAT Format,
1795 UINT MipLevels = -1,
1796 UINT MostDetailedMip = 0,
1797 FLOAT ResourceMinLODClamp = 0.0f,
1798 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1799 {
1800 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1801 desc.Format = Format;
1802 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE3D;
1803 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1804 desc.Texture3D.MostDetailedMip = MostDetailedMip;
1805 desc.Texture3D.MipLevels = MipLevels;
1806 desc.Texture3D.ResourceMinLODClamp = ResourceMinLODClamp;
1807 return desc;
1808 }
1809
1810 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCube(
1811 DXGI_FORMAT Format,
1812 UINT MipLevels = -1,
1813 UINT MostDetailedMip = 0,
1814 FLOAT ResourceMinLODClamp = 0.0f,
1815 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1816 {
1817 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1818 desc.Format = Format;
1819 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBE;
1820 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1821 desc.TextureCube.MostDetailedMip = MostDetailedMip;
1822 desc.TextureCube.MipLevels = MipLevels;
1823 desc.TextureCube.ResourceMinLODClamp = ResourceMinLODClamp;
1824 return desc;
1825 }
1826
1827 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCubeArray(
1828 DXGI_FORMAT Format,
1829 UINT NumCubes,
1830 UINT MipLevels = -1,
1831 UINT First2DArrayFace = 0,
1832 UINT MostDetailedMip = 0,
1833 FLOAT ResourceMinLODClamp = 0.0f,
1834 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1835 {
1836 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1837 desc.Format = Format;
1838 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBEARRAY;
1839 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1840 desc.TextureCubeArray.NumCubes = NumCubes;
1841 desc.TextureCubeArray.MostDetailedMip = MostDetailedMip;
1842 desc.TextureCubeArray.MipLevels = MipLevels;
1843 desc.TextureCubeArray.First2DArrayFace = First2DArrayFace;
1844 desc.TextureCubeArray.ResourceMinLODClamp = ResourceMinLODClamp;
1845 return desc;
1846 }
1847
1848 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RaytracingAccelStruct(
1849 D3D12_GPU_VIRTUAL_ADDRESS Location) noexcept
1850 {
1851 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1852 desc.Format = DXGI_FORMAT_UNKNOWN;
1853 desc.ViewDimension = D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE;
1854 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1855 desc.RaytracingAccelerationStructure.Location = Location;
1856 return desc;
1857 }
1858};
1859
1860//------------------------------------------------------------------------------------------------
1861struct CD3DX12_UNORDERED_ACCESS_VIEW_DESC : public D3D12_UNORDERED_ACCESS_VIEW_DESC
1862{
1863 CD3DX12_UNORDERED_ACCESS_VIEW_DESC() = default;
1864 explicit CD3DX12_UNORDERED_ACCESS_VIEW_DESC( const D3D12_UNORDERED_ACCESS_VIEW_DESC& o ) noexcept :
1865 D3D12_UNORDERED_ACCESS_VIEW_DESC(o)
1866 {}
1867
1868 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC StructuredBuffer(
1869 UINT NumElements,
1870 UINT StructureByteStride,
1871 UINT64 FirstElement = 0,
1872 UINT64 CounterOffsetInBytes = 0) noexcept
1873 {
1874 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1875 desc.Format = DXGI_FORMAT_UNKNOWN;
1876 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1877 desc.Buffer.FirstElement = FirstElement;
1878 desc.Buffer.NumElements = NumElements;
1879 desc.Buffer.StructureByteStride = StructureByteStride;
1880 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
1881 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1882 return desc;
1883 }
1884
1885 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC RawBuffer(
1886 UINT NumElements,
1887 UINT64 FirstElement = 0,
1888 UINT64 CounterOffsetInBytes = 0) noexcept
1889 {
1890 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1891 desc.Format = DXGI_FORMAT_R32_UINT;
1892 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1893 desc.Buffer.FirstElement = FirstElement;
1894 desc.Buffer.NumElements = NumElements;
1895 desc.Buffer.StructureByteStride = 0;
1896 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_RAW;
1897 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1898 return desc;
1899 }
1900
1901 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC TypedBuffer(
1902 DXGI_FORMAT Format,
1903 UINT NumElements,
1904 UINT64 FirstElement = 0,
1905 UINT64 CounterOffsetInBytes = 0) noexcept
1906 {
1907 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1908 desc.Format = Format;
1909 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1910 desc.Buffer.FirstElement = FirstElement;
1911 desc.Buffer.NumElements = NumElements;
1912 desc.Buffer.StructureByteStride = 0;
1913 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
1914 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1915 return desc;
1916 }
1917
1918 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1D(
1919 DXGI_FORMAT Format,
1920 UINT MipSlice = 0) noexcept
1921 {
1922 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1923 desc.Format = Format;
1924 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1D;
1925 desc.Texture1D.MipSlice = MipSlice;
1926 return desc;
1927 }
1928
1929 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1DArray(
1930 DXGI_FORMAT Format,
1931 UINT ArraySize = -1,
1932 UINT FirstArraySlice = 0,
1933 UINT MipSlice = 0) noexcept
1934 {
1935 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1936 desc.Format = Format;
1937 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1DARRAY;
1938 desc.Texture1DArray.MipSlice = MipSlice;
1939 desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
1940 desc.Texture1DArray.ArraySize = ArraySize;
1941 return desc;
1942 }
1943
1944 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2D(
1945 DXGI_FORMAT Format,
1946 UINT MipSlice = 0,
1947 UINT PlaneSlice = 0) noexcept
1948 {
1949 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1950 desc.Format = Format;
1951 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D;
1952 desc.Texture2D.MipSlice = MipSlice;
1953 desc.Texture2D.PlaneSlice = PlaneSlice;
1954 return desc;
1955 }
1956
1957 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DArray(
1958 DXGI_FORMAT Format,
1959 UINT ArraySize = -1,
1960 UINT FirstArraySlice = 0,
1961 UINT MipSlice = 0,
1962 UINT PlaneSlice = 0) noexcept
1963 {
1964 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1965 desc.Format = Format;
1966 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DARRAY;
1967 desc.Texture2DArray.MipSlice = MipSlice;
1968 desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
1969 desc.Texture2DArray.ArraySize = ArraySize;
1970 desc.Texture2DArray.PlaneSlice = PlaneSlice;
1971 return desc;
1972 }
1973
1974 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMS(
1975 DXGI_FORMAT Format) noexcept
1976 {
1977 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1978 desc.Format = Format;
1979 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMS;
1980 //desc.Texture2DMS.UnusedField_NothingToDefine = 0;
1981 return desc;
1982 }
1983
1984 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMSArray(
1985 DXGI_FORMAT Format,
1986 UINT ArraySize = -1,
1987 UINT FirstArraySlice = 0) noexcept
1988 {
1989 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1990 desc.Format = Format;
1991 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY;
1992 desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
1993 desc.Texture2DMSArray.ArraySize = ArraySize;
1994 return desc;
1995 }
1996
1997 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex3D(
1998 DXGI_FORMAT Format,
1999 UINT WSize = -1,
2000 UINT FirstWSlice = 0,
2001 UINT MipSlice = 0) noexcept
2002 {
2003 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
2004 desc.Format = Format;
2005 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE3D;
2006 desc.Texture3D.MipSlice = MipSlice;
2007 desc.Texture3D.FirstWSlice = FirstWSlice;
2008 desc.Texture3D.WSize = WSize;
2009 return desc;
2010 }
2011};
2012
2013//------------------------------------------------------------------------------------------------
2014struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
2015{
2016 CD3DX12_VIEW_INSTANCING_DESC() = default;
2017 explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) noexcept :
2018 D3D12_VIEW_INSTANCING_DESC( o )
2019 {}
2020 explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) noexcept
2021 {
2022 ViewInstanceCount = 0;
2023 pViewInstanceLocations = nullptr;
2024 Flags = D3D12_VIEW_INSTANCING_FLAG_NONE;
2025 }
2026 explicit CD3DX12_VIEW_INSTANCING_DESC(
2027 UINT InViewInstanceCount,
2028 const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations,
2029 D3D12_VIEW_INSTANCING_FLAGS InFlags) noexcept
2030 {
2031 ViewInstanceCount = InViewInstanceCount;
2032 pViewInstanceLocations = InViewInstanceLocations;
2033 Flags = InFlags;
2034 }
2035};
2036
2037//------------------------------------------------------------------------------------------------
2038struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
2039{
2040 CD3DX12_RT_FORMAT_ARRAY() = default;
2041 explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) noexcept
2042 : D3D12_RT_FORMAT_ARRAY(o)
2043 {}
2044 explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) noexcept
2045 {
2046 NumRenderTargets = NumFormats;
2047 memcpy(RTFormats, pFormats, sizeof(RTFormats));
2048 // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
2049 }
2050};
2051
2052//------------------------------------------------------------------------------------------------
2053struct CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC : public D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
2054{
2055 CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC() = default;
2056 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& o) noexcept :
2057 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC(o)
2058 {
2059 }
2060 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( CD3DX12_DEFAULT ) noexcept
2061 {
2062 pSerializedBlob = nullptr;
2063 SerializedBlobSizeInBytes = 0;
2064 }
2065 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( const void* pData, SIZE_T size) noexcept
2066 {
2067 pSerializedBlob = pData;
2068 SerializedBlobSizeInBytes = size;
2069 }
2070};
2071
2072
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_default.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_default.h
new file mode 100644
index 0000000..2b74d70
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_default.h
@@ -0,0 +1,12 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10struct CD3DX12_DEFAULT {};
11extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
12
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_pipeline_state_stream.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_pipeline_state_stream.h
new file mode 100644
index 0000000..456583b
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_pipeline_state_stream.h
@@ -0,0 +1,1718 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_default.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17
18//------------------------------------------------------------------------------------------------
19// Pipeline State Stream Helpers
20//------------------------------------------------------------------------------------------------
21
22//------------------------------------------------------------------------------------------------
23// Stream Subobjects, i.e. elements of a stream
24
25struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
26struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
27
28#ifdef _MSC_VER
29#pragma warning(push)
30#pragma warning(disable : 4324)
31#endif
32template <typename InnerStructType, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type, typename DefaultArg = InnerStructType>
33class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
34{
35private:
36 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE pssType;
37 InnerStructType pssInner;
38public:
39 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : pssType(Type), pssInner(DefaultArg()) {}
40 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : pssType(Type), pssInner(i) {}
41 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { pssType = Type; pssInner = i; return *this; }
42 operator InnerStructType const&() const noexcept { return pssInner; }
43 operator InnerStructType&() noexcept { return pssInner; }
44 InnerStructType* operator&() noexcept { return &pssInner; }
45 InnerStructType const* operator&() const noexcept { return &pssInner; }
46};
47#ifdef _MSC_VER
48#pragma warning(pop)
49#endif
50typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
51typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
52typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
53typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
54typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INDEX_BUFFER_STRIP_CUT_VALUE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE> CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE;
55typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
56typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
57typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
58typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
59typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
60typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
61typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
62typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
63typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
64typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
65typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
66typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
67typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
68#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
69typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2;
70#endif
71typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
72typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
73#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
74typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1;
75#endif
76#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
77typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2;
78#endif
79typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
80typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
81typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
82typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
83typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
84#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
85typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT<CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE;
86#endif
87
88//------------------------------------------------------------------------------------------------
89// Stream Parser Helpers
90
91struct ID3DX12PipelineParserCallbacks
92{
93 // Subobject Callbacks
94 virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {}
95 virtual void NodeMaskCb(UINT) {}
96 virtual void RootSignatureCb(ID3D12RootSignature*) {}
97 virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {}
98 virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {}
99 virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {}
100 virtual void VSCb(const D3D12_SHADER_BYTECODE&) {}
101 virtual void GSCb(const D3D12_SHADER_BYTECODE&) {}
102 virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {}
103 virtual void HSCb(const D3D12_SHADER_BYTECODE&) {}
104 virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
105 virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
106 virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
107 virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
108 virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
109 virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
110 virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
111 virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
112#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
113 virtual void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2&) {}
114#endif
115 virtual void DSVFormatCb(DXGI_FORMAT) {}
116 virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {}
117#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
118 virtual void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1&) {}
119#endif
120#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
121 virtual void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2&) {}
122#endif
123 virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {}
124 virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {}
125 virtual void SampleMaskCb(UINT) {}
126 virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
127 virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
128#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
129 virtual void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC&) {}
130#endif
131
132 // Error Callbacks
133 virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
134 virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
135 virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
136#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
137 virtual void FinalizeCb() {}
138#endif
139
140 virtual ~ID3DX12PipelineParserCallbacks() = default;
141};
142
143struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
144{
145 ID3D12RootSignature* pRootSignature;
146 D3D12_SHADER_BYTECODE AS;
147 D3D12_SHADER_BYTECODE MS;
148 D3D12_SHADER_BYTECODE PS;
149 D3D12_BLEND_DESC BlendState;
150 UINT SampleMask;
151 D3D12_RASTERIZER_DESC RasterizerState;
152 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
153 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
154 UINT NumRenderTargets;
155 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
156 DXGI_FORMAT DSVFormat;
157 DXGI_SAMPLE_DESC SampleDesc;
158 UINT NodeMask;
159 D3D12_CACHED_PIPELINE_STATE CachedPSO;
160 D3D12_PIPELINE_STATE_FLAGS Flags;
161};
162
163#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
164struct CD3DX12_PIPELINE_STATE_STREAM6
165{
166 CD3DX12_PIPELINE_STATE_STREAM6() = default;
167 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
168 CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
169 : Flags(Desc.Flags)
170 , NodeMask(Desc.NodeMask)
171 , pRootSignature(Desc.pRootSignature)
172 , InputLayout(Desc.InputLayout)
173 , IBStripCutValue(Desc.IBStripCutValue)
174 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
175 , VS(Desc.VS)
176 , GS(Desc.GS)
177 , StreamOutput(Desc.StreamOutput)
178 , HS(Desc.HS)
179 , DS(Desc.DS)
180 , PS(Desc.PS)
181 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
182 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
183 , DSVFormat(Desc.DSVFormat)
184 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
185 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
186 , SampleDesc(Desc.SampleDesc)
187 , SampleMask(Desc.SampleMask)
188 , CachedPSO(Desc.CachedPSO)
189 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
190 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
191 {
192 }
193 CD3DX12_PIPELINE_STATE_STREAM6(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
194 : Flags(Desc.Flags)
195 , NodeMask(Desc.NodeMask)
196 , pRootSignature(Desc.pRootSignature)
197 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
198 , PS(Desc.PS)
199 , AS(Desc.AS)
200 , MS(Desc.MS)
201 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
202 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
203 , DSVFormat(Desc.DSVFormat)
204 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
205 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
206 , SampleDesc(Desc.SampleDesc)
207 , SampleMask(Desc.SampleMask)
208 , CachedPSO(Desc.CachedPSO)
209 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
210 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
211 {
212 }
213 CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
214 : Flags(Desc.Flags)
215 , NodeMask(Desc.NodeMask)
216 , pRootSignature(Desc.pRootSignature)
217 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
218 , CachedPSO(Desc.CachedPSO)
219 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
220 {
221 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
222 }
223 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
224 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
225 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
226 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
227 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
228 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
229 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
230 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
231 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
232 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
233 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
234 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
235 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
236 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
237 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
238 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
239 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
240 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
241 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
242 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
243 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
244 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
245 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
246 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
247 CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE SerializedRootSignature;
248
249 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
250 {
251 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
252 D.Flags = this->Flags;
253 D.NodeMask = this->NodeMask;
254 D.pRootSignature = this->pRootSignature;
255 D.InputLayout = this->InputLayout;
256 D.IBStripCutValue = this->IBStripCutValue;
257 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
258 D.VS = this->VS;
259 D.GS = this->GS;
260 D.StreamOutput = this->StreamOutput;
261 D.HS = this->HS;
262 D.DS = this->DS;
263 D.PS = this->PS;
264 D.BlendState = this->BlendState;
265 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
266 D.DSVFormat = this->DSVFormat;
267 D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
268 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
269 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
270 D.SampleDesc = this->SampleDesc;
271 D.SampleMask = this->SampleMask;
272 D.CachedPSO = this->CachedPSO;
273 return D;
274 }
275 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
276 {
277 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
278 D.Flags = this->Flags;
279 D.NodeMask = this->NodeMask;
280 D.pRootSignature = this->pRootSignature;
281 D.CS = this->CS;
282 D.CachedPSO = this->CachedPSO;
283 return D;
284 }
285};
286#endif
287
288#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
289// Use CD3DX12_PIPELINE_STATE_STREAM5 for D3D12_RASTERIZER_DESC2 when CheckFeatureSupport returns true for Options19::RasterizerDesc2Supported is true
290// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
291// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
292// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
293// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
294// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
295struct CD3DX12_PIPELINE_STATE_STREAM5
296{
297 CD3DX12_PIPELINE_STATE_STREAM5() = default;
298 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
299 CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
300 : Flags(Desc.Flags)
301 , NodeMask(Desc.NodeMask)
302 , pRootSignature(Desc.pRootSignature)
303 , InputLayout(Desc.InputLayout)
304 , IBStripCutValue(Desc.IBStripCutValue)
305 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
306 , VS(Desc.VS)
307 , GS(Desc.GS)
308 , StreamOutput(Desc.StreamOutput)
309 , HS(Desc.HS)
310 , DS(Desc.DS)
311 , PS(Desc.PS)
312 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
313 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
314 , DSVFormat(Desc.DSVFormat)
315 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
316 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
317 , SampleDesc(Desc.SampleDesc)
318 , SampleMask(Desc.SampleMask)
319 , CachedPSO(Desc.CachedPSO)
320 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
321 {}
322 CD3DX12_PIPELINE_STATE_STREAM5(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
323 : Flags(Desc.Flags)
324 , NodeMask(Desc.NodeMask)
325 , pRootSignature(Desc.pRootSignature)
326 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
327 , PS(Desc.PS)
328 , AS(Desc.AS)
329 , MS(Desc.MS)
330 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
331 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
332 , DSVFormat(Desc.DSVFormat)
333 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
334 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
335 , SampleDesc(Desc.SampleDesc)
336 , SampleMask(Desc.SampleMask)
337 , CachedPSO(Desc.CachedPSO)
338 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
339 {}
340 CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
341 : Flags(Desc.Flags)
342 , NodeMask(Desc.NodeMask)
343 , pRootSignature(Desc.pRootSignature)
344 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
345 , CachedPSO(Desc.CachedPSO)
346 {
347 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
348 }
349 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
350 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
351 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
352 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
353 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
354 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
355 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
356 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
357 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
358 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
359 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
360 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
361 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
362 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
363 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
364 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
365 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
366 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
367 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
368 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
369 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
370 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
371 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
372 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
373
374 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
375 {
376 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
377 D.Flags = this->Flags;
378 D.NodeMask = this->NodeMask;
379 D.pRootSignature = this->pRootSignature;
380 D.InputLayout = this->InputLayout;
381 D.IBStripCutValue = this->IBStripCutValue;
382 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
383 D.VS = this->VS;
384 D.GS = this->GS;
385 D.StreamOutput = this->StreamOutput;
386 D.HS = this->HS;
387 D.DS = this->DS;
388 D.PS = this->PS;
389 D.BlendState = this->BlendState;
390 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
391 D.DSVFormat = this->DSVFormat;
392 D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
393 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
394 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
395 D.SampleDesc = this->SampleDesc;
396 D.SampleMask = this->SampleMask;
397 D.CachedPSO = this->CachedPSO;
398 return D;
399 }
400 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
401 {
402 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
403 D.Flags = this->Flags;
404 D.NodeMask = this->NodeMask;
405 D.pRootSignature = this->pRootSignature;
406 D.CS = this->CS;
407 D.CachedPSO = this->CachedPSO;
408 return D;
409 }
410};
411#endif // D3D12_SDK_VERSION >= 610
412
413#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
414// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
415// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
416// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
417// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
418// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
419struct CD3DX12_PIPELINE_STATE_STREAM4
420{
421 CD3DX12_PIPELINE_STATE_STREAM4() = default;
422 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
423 CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
424 : Flags(Desc.Flags)
425 , NodeMask(Desc.NodeMask)
426 , pRootSignature(Desc.pRootSignature)
427 , InputLayout(Desc.InputLayout)
428 , IBStripCutValue(Desc.IBStripCutValue)
429 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
430 , VS(Desc.VS)
431 , GS(Desc.GS)
432 , StreamOutput(Desc.StreamOutput)
433 , HS(Desc.HS)
434 , DS(Desc.DS)
435 , PS(Desc.PS)
436 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
437 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
438 , DSVFormat(Desc.DSVFormat)
439 , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
440 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
441 , SampleDesc(Desc.SampleDesc)
442 , SampleMask(Desc.SampleMask)
443 , CachedPSO(Desc.CachedPSO)
444 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
445 {}
446 CD3DX12_PIPELINE_STATE_STREAM4(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
447 : Flags(Desc.Flags)
448 , NodeMask(Desc.NodeMask)
449 , pRootSignature(Desc.pRootSignature)
450 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
451 , PS(Desc.PS)
452 , AS(Desc.AS)
453 , MS(Desc.MS)
454 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
455 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
456 , DSVFormat(Desc.DSVFormat)
457 , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
458 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
459 , SampleDesc(Desc.SampleDesc)
460 , SampleMask(Desc.SampleMask)
461 , CachedPSO(Desc.CachedPSO)
462 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
463 {}
464 CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
465 : Flags(Desc.Flags)
466 , NodeMask(Desc.NodeMask)
467 , pRootSignature(Desc.pRootSignature)
468 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
469 , CachedPSO(Desc.CachedPSO)
470 {
471 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
472 }
473 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
474 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
475 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
476 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
477 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
478 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
479 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
480 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
481 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
482 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
483 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
484 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
485 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
486 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
487 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
488 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
489 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
490 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
491 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1 RasterizerState;
492 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
493 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
494 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
495 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
496 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
497
498 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
499 {
500 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
501 D.Flags = this->Flags;
502 D.NodeMask = this->NodeMask;
503 D.pRootSignature = this->pRootSignature;
504 D.InputLayout = this->InputLayout;
505 D.IBStripCutValue = this->IBStripCutValue;
506 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
507 D.VS = this->VS;
508 D.GS = this->GS;
509 D.StreamOutput = this->StreamOutput;
510 D.HS = this->HS;
511 D.DS = this->DS;
512 D.PS = this->PS;
513 D.BlendState = this->BlendState;
514 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
515 D.DSVFormat = this->DSVFormat;
516 D.RasterizerState = CD3DX12_RASTERIZER_DESC1(D3D12_RASTERIZER_DESC1(this->RasterizerState));
517 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
518 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
519 D.SampleDesc = this->SampleDesc;
520 D.SampleMask = this->SampleMask;
521 D.CachedPSO = this->CachedPSO;
522 return D;
523 }
524 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
525 {
526 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
527 D.Flags = this->Flags;
528 D.NodeMask = this->NodeMask;
529 D.pRootSignature = this->pRootSignature;
530 D.CS = this->CS;
531 D.CachedPSO = this->CachedPSO;
532 return D;
533 }
534};
535#endif // D3D12_SDK_VERSION >= 608
536
537#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
538// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
539// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
540// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
541// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
542struct CD3DX12_PIPELINE_STATE_STREAM3
543{
544 CD3DX12_PIPELINE_STATE_STREAM3() = default;
545 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
546 CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
547 : Flags(Desc.Flags)
548 , NodeMask(Desc.NodeMask)
549 , pRootSignature(Desc.pRootSignature)
550 , InputLayout(Desc.InputLayout)
551 , IBStripCutValue(Desc.IBStripCutValue)
552 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
553 , VS(Desc.VS)
554 , GS(Desc.GS)
555 , StreamOutput(Desc.StreamOutput)
556 , HS(Desc.HS)
557 , DS(Desc.DS)
558 , PS(Desc.PS)
559 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
560 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
561 , DSVFormat(Desc.DSVFormat)
562 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
563 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
564 , SampleDesc(Desc.SampleDesc)
565 , SampleMask(Desc.SampleMask)
566 , CachedPSO(Desc.CachedPSO)
567 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
568 {}
569 CD3DX12_PIPELINE_STATE_STREAM3(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
570 : Flags(Desc.Flags)
571 , NodeMask(Desc.NodeMask)
572 , pRootSignature(Desc.pRootSignature)
573 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
574 , PS(Desc.PS)
575 , AS(Desc.AS)
576 , MS(Desc.MS)
577 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
578 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
579 , DSVFormat(Desc.DSVFormat)
580 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
581 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
582 , SampleDesc(Desc.SampleDesc)
583 , SampleMask(Desc.SampleMask)
584 , CachedPSO(Desc.CachedPSO)
585 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
586 {}
587 CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
588 : Flags(Desc.Flags)
589 , NodeMask(Desc.NodeMask)
590 , pRootSignature(Desc.pRootSignature)
591 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
592 , CachedPSO(Desc.CachedPSO)
593 {
594 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
595 }
596 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
597 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
598 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
599 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
600 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
601 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
602 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
603 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
604 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
605 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
606 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
607 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
608 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
609 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
610 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
611 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
612 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
613 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
614 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
615 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
616 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
617 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
618 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
619 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
620
621 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
622 {
623 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
624 D.Flags = this->Flags;
625 D.NodeMask = this->NodeMask;
626 D.pRootSignature = this->pRootSignature;
627 D.InputLayout = this->InputLayout;
628 D.IBStripCutValue = this->IBStripCutValue;
629 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
630 D.VS = this->VS;
631 D.GS = this->GS;
632 D.StreamOutput = this->StreamOutput;
633 D.HS = this->HS;
634 D.DS = this->DS;
635 D.PS = this->PS;
636 D.BlendState = this->BlendState;
637 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
638 D.DSVFormat = this->DSVFormat;
639 D.RasterizerState = this->RasterizerState;
640 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
641 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
642 D.SampleDesc = this->SampleDesc;
643 D.SampleMask = this->SampleMask;
644 D.CachedPSO = this->CachedPSO;
645 return D;
646 }
647 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
648 {
649 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
650 D.Flags = this->Flags;
651 D.NodeMask = this->NodeMask;
652 D.pRootSignature = this->pRootSignature;
653 D.CS = this->CS;
654 D.CachedPSO = this->CachedPSO;
655 return D;
656 }
657};
658#endif // D3D12_SDK_VERSION >= 606
659
660// CD3DX12_PIPELINE_STATE_STREAM2 Works on OS Build 19041+ (where there is a new mesh shader pipeline).
661// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
662// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
663struct CD3DX12_PIPELINE_STATE_STREAM2
664{
665 CD3DX12_PIPELINE_STATE_STREAM2() = default;
666 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
667 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
668 : Flags(Desc.Flags)
669 , NodeMask(Desc.NodeMask)
670 , pRootSignature(Desc.pRootSignature)
671 , InputLayout(Desc.InputLayout)
672 , IBStripCutValue(Desc.IBStripCutValue)
673 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
674 , VS(Desc.VS)
675 , GS(Desc.GS)
676 , StreamOutput(Desc.StreamOutput)
677 , HS(Desc.HS)
678 , DS(Desc.DS)
679 , PS(Desc.PS)
680 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
681 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
682 , DSVFormat(Desc.DSVFormat)
683 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
684 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
685 , SampleDesc(Desc.SampleDesc)
686 , SampleMask(Desc.SampleMask)
687 , CachedPSO(Desc.CachedPSO)
688 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
689 {}
690 CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
691 : Flags(Desc.Flags)
692 , NodeMask(Desc.NodeMask)
693 , pRootSignature(Desc.pRootSignature)
694 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
695 , PS(Desc.PS)
696 , AS(Desc.AS)
697 , MS(Desc.MS)
698 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
699 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
700 , DSVFormat(Desc.DSVFormat)
701 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
702 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
703 , SampleDesc(Desc.SampleDesc)
704 , SampleMask(Desc.SampleMask)
705 , CachedPSO(Desc.CachedPSO)
706 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
707 {}
708 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
709 : Flags(Desc.Flags)
710 , NodeMask(Desc.NodeMask)
711 , pRootSignature(Desc.pRootSignature)
712 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
713 , CachedPSO(Desc.CachedPSO)
714 {
715 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
716 }
717 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
718 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
719 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
720 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
721 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
722 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
723 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
724 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
725 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
726 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
727 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
728 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
729 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
730 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
731 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
732 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
733 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
734 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
735 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
736 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
737 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
738 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
739 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
740 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
741 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
742 {
743 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
744 D.Flags = this->Flags;
745 D.NodeMask = this->NodeMask;
746 D.pRootSignature = this->pRootSignature;
747 D.InputLayout = this->InputLayout;
748 D.IBStripCutValue = this->IBStripCutValue;
749 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
750 D.VS = this->VS;
751 D.GS = this->GS;
752 D.StreamOutput = this->StreamOutput;
753 D.HS = this->HS;
754 D.DS = this->DS;
755 D.PS = this->PS;
756 D.BlendState = this->BlendState;
757 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
758 D.DSVFormat = this->DSVFormat;
759 D.RasterizerState = this->RasterizerState;
760 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
761 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
762 D.SampleDesc = this->SampleDesc;
763 D.SampleMask = this->SampleMask;
764 D.CachedPSO = this->CachedPSO;
765 return D;
766 }
767 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
768 {
769 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
770 D.Flags = this->Flags;
771 D.NodeMask = this->NodeMask;
772 D.pRootSignature = this->pRootSignature;
773 D.CS = this->CS;
774 D.CachedPSO = this->CachedPSO;
775 return D;
776 }
777};
778
779// CD3DX12_PIPELINE_STATE_STREAM1 Works on OS Build 16299+ (where there is a new view instancing subobject).
780// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
781struct CD3DX12_PIPELINE_STATE_STREAM1
782{
783 CD3DX12_PIPELINE_STATE_STREAM1() = default;
784 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
785 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
786 : Flags(Desc.Flags)
787 , NodeMask(Desc.NodeMask)
788 , pRootSignature(Desc.pRootSignature)
789 , InputLayout(Desc.InputLayout)
790 , IBStripCutValue(Desc.IBStripCutValue)
791 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
792 , VS(Desc.VS)
793 , GS(Desc.GS)
794 , StreamOutput(Desc.StreamOutput)
795 , HS(Desc.HS)
796 , DS(Desc.DS)
797 , PS(Desc.PS)
798 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
799 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
800 , DSVFormat(Desc.DSVFormat)
801 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
802 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
803 , SampleDesc(Desc.SampleDesc)
804 , SampleMask(Desc.SampleMask)
805 , CachedPSO(Desc.CachedPSO)
806 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
807 {}
808 CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
809 : Flags(Desc.Flags)
810 , NodeMask(Desc.NodeMask)
811 , pRootSignature(Desc.pRootSignature)
812 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
813 , PS(Desc.PS)
814 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
815 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
816 , DSVFormat(Desc.DSVFormat)
817 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
818 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
819 , SampleDesc(Desc.SampleDesc)
820 , SampleMask(Desc.SampleMask)
821 , CachedPSO(Desc.CachedPSO)
822 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
823 {}
824 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
825 : Flags(Desc.Flags)
826 , NodeMask(Desc.NodeMask)
827 , pRootSignature(Desc.pRootSignature)
828 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
829 , CachedPSO(Desc.CachedPSO)
830 {
831 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
832 }
833 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
834 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
835 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
836 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
837 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
838 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
839 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
840 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
841 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
842 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
843 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
844 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
845 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
846 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
847 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
848 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
849 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
850 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
851 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
852 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
853 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
854 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
855 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
856 {
857 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
858 D.Flags = this->Flags;
859 D.NodeMask = this->NodeMask;
860 D.pRootSignature = this->pRootSignature;
861 D.InputLayout = this->InputLayout;
862 D.IBStripCutValue = this->IBStripCutValue;
863 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
864 D.VS = this->VS;
865 D.GS = this->GS;
866 D.StreamOutput = this->StreamOutput;
867 D.HS = this->HS;
868 D.DS = this->DS;
869 D.PS = this->PS;
870 D.BlendState = this->BlendState;
871 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
872 D.DSVFormat = this->DSVFormat;
873 D.RasterizerState = this->RasterizerState;
874 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
875 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
876 D.SampleDesc = this->SampleDesc;
877 D.SampleMask = this->SampleMask;
878 D.CachedPSO = this->CachedPSO;
879 return D;
880 }
881 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
882 {
883 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
884 D.Flags = this->Flags;
885 D.NodeMask = this->NodeMask;
886 D.pRootSignature = this->pRootSignature;
887 D.CS = this->CS;
888 D.CachedPSO = this->CachedPSO;
889 return D;
890 }
891};
892
893
894struct CD3DX12_PIPELINE_MESH_STATE_STREAM
895{
896 CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
897 CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
898 : Flags(Desc.Flags)
899 , NodeMask(Desc.NodeMask)
900 , pRootSignature(Desc.pRootSignature)
901 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
902 , PS(Desc.PS)
903 , AS(Desc.AS)
904 , MS(Desc.MS)
905 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
906 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
907 , DSVFormat(Desc.DSVFormat)
908 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
909 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
910 , SampleDesc(Desc.SampleDesc)
911 , SampleMask(Desc.SampleMask)
912 , CachedPSO(Desc.CachedPSO)
913 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
914 {}
915 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
916 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
917 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
918 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
919 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
920 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
921 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
922 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
923 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
924 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
925 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
926 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
927 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
928 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
929 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
930 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
931 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
932 {
933 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
934 D.Flags = this->Flags;
935 D.NodeMask = this->NodeMask;
936 D.pRootSignature = this->pRootSignature;
937 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
938 D.PS = this->PS;
939 D.AS = this->AS;
940 D.MS = this->MS;
941 D.BlendState = this->BlendState;
942 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
943 D.DSVFormat = this->DSVFormat;
944 D.RasterizerState = this->RasterizerState;
945 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
946 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
947 D.SampleDesc = this->SampleDesc;
948 D.SampleMask = this->SampleMask;
949 D.CachedPSO = this->CachedPSO;
950 return D;
951 }
952};
953
954// CD3DX12_PIPELINE_STATE_STREAM works on OS Build 15063+ but does not support new subobject(s) added in OS Build 16299+.
955// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
956struct CD3DX12_PIPELINE_STATE_STREAM
957{
958 CD3DX12_PIPELINE_STATE_STREAM() = default;
959 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
960 : Flags(Desc.Flags)
961 , NodeMask(Desc.NodeMask)
962 , pRootSignature(Desc.pRootSignature)
963 , InputLayout(Desc.InputLayout)
964 , IBStripCutValue(Desc.IBStripCutValue)
965 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
966 , VS(Desc.VS)
967 , GS(Desc.GS)
968 , StreamOutput(Desc.StreamOutput)
969 , HS(Desc.HS)
970 , DS(Desc.DS)
971 , PS(Desc.PS)
972 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
973 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
974 , DSVFormat(Desc.DSVFormat)
975 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
976 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
977 , SampleDesc(Desc.SampleDesc)
978 , SampleMask(Desc.SampleMask)
979 , CachedPSO(Desc.CachedPSO)
980 {}
981 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
982 : Flags(Desc.Flags)
983 , NodeMask(Desc.NodeMask)
984 , pRootSignature(Desc.pRootSignature)
985 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
986 , CachedPSO(Desc.CachedPSO)
987 {}
988 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
989 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
990 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
991 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
992 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
993 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
994 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
995 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
996 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
997 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
998 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
999 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
1000 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
1001 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
1002 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
1003 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
1004 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
1005 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
1006 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
1007 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
1008 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
1009 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
1010 {
1011 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
1012 D.Flags = this->Flags;
1013 D.NodeMask = this->NodeMask;
1014 D.pRootSignature = this->pRootSignature;
1015 D.InputLayout = this->InputLayout;
1016 D.IBStripCutValue = this->IBStripCutValue;
1017 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
1018 D.VS = this->VS;
1019 D.GS = this->GS;
1020 D.StreamOutput = this->StreamOutput;
1021 D.HS = this->HS;
1022 D.DS = this->DS;
1023 D.PS = this->PS;
1024 D.BlendState = this->BlendState;
1025 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
1026 D.DSVFormat = this->DSVFormat;
1027 D.RasterizerState = this->RasterizerState;
1028 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
1029 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
1030 D.SampleDesc = this->SampleDesc;
1031 D.SampleMask = this->SampleMask;
1032 D.CachedPSO = this->CachedPSO;
1033 return D;
1034 }
1035 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
1036 {
1037 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
1038 D.Flags = this->Flags;
1039 D.NodeMask = this->NodeMask;
1040 D.pRootSignature = this->pRootSignature;
1041 D.CS = this->CS;
1042 D.CachedPSO = this->CachedPSO;
1043 return D;
1044 }
1045};
1046
1047
1048struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1049{
1050 CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
1051 CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
1052 : SeenDSS(false)
1053 {
1054 // Adjust defaults to account for absent members.
1055 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1056
1057 // Depth disabled if no DSV format specified.
1058 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
1059 }
1060
1061 // ID3DX12PipelineParserCallbacks
1062 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
1063 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
1064 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
1065 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
1066 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
1067 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
1068 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
1069 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
1070 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
1071 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
1072 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
1073 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
1074 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
1075 void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
1076 void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
1077 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
1078 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1079 {
1080 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1081 SeenDSS = true;
1082 }
1083 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1084 {
1085 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1086 SeenDSS = true;
1087 }
1088 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1089 {
1090 PipelineStream.DSVFormat = DSVFormat;
1091 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1092 {
1093 // Re-enable depth for the default state.
1094 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
1095 }
1096 }
1097 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
1098 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
1099 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
1100 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
1101 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
1102 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
1103
1104private:
1105 bool SeenDSS;
1106};
1107
1108#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1109struct CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1110{
1111 CD3DX12_PIPELINE_STATE_STREAM3 PipelineStream;
1112 CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER() noexcept
1113 : SeenDSS(false)
1114 {
1115 // Adjust defaults to account for absent members.
1116 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1117
1118 // Depth disabled if no DSV format specified.
1119 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1120 }
1121
1122 // ID3DX12PipelineParserCallbacks
1123 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1124 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1125 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1126 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1127 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1128 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1129 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1130 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1131 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1132 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1133 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1134 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1135 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1136 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1137 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1138 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1139 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1140 {
1141 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1142 SeenDSS = true;
1143 }
1144 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1145 {
1146 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1147 SeenDSS = true;
1148 }
1149 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1150 {
1151 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1152 SeenDSS = true;
1153 }
1154 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1155 {
1156 PipelineStream.DSVFormat = DSVFormat;
1157 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1158 {
1159 // Re-enable depth for the default state.
1160 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1161 }
1162 }
1163 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState); }
1164 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1165 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1166 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1167 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1168 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1169
1170private:
1171 bool SeenDSS;
1172};
1173#endif // D3D12_SDK_VERSION >= 606
1174
1175#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1176struct CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1177{
1178 CD3DX12_PIPELINE_STATE_STREAM4 PipelineStream;
1179 CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER() noexcept
1180 : SeenDSS(false)
1181 {
1182 // Adjust defaults to account for absent members.
1183 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1184
1185 // Depth disabled if no DSV format specified.
1186 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1187 }
1188
1189 // ID3DX12PipelineParserCallbacks
1190 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1191 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1192 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1193 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1194 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1195 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1196 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1197 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1198 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1199 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1200 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1201 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1202 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1203 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1204 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1205 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1206 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1207 {
1208 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1209 SeenDSS = true;
1210 }
1211 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1212 {
1213 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1214 SeenDSS = true;
1215 }
1216 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1217 {
1218 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1219 SeenDSS = true;
1220 }
1221 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1222 {
1223 PipelineStream.DSVFormat = DSVFormat;
1224 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1225 {
1226 // Re-enable depth for the default state.
1227 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1228 }
1229 }
1230 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
1231 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
1232 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1233 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1234 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1235 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1236 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1237
1238private:
1239 bool SeenDSS;
1240};
1241#endif // D3D12_SDK_VERSION >= 608
1242
1243#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
1244// This SDK 613 version has better primitive topology default handling than the v610 equivalent below.
1245struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1246{
1247 CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
1248 CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
1249 : SeenDSS(false),
1250 SeenMS(false),
1251 SeenTopology(false)
1252 {
1253 // Adjust defaults to account for absent members.
1254 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1255
1256 // Depth disabled if no DSV format specified.
1257 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1258 }
1259
1260 // ID3DX12PipelineParserCallbacks
1261 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1262 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1263 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1264 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1265 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1266 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
1267 {
1268 PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
1269 SeenTopology = true;
1270 }
1271 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1272 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1273 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1274 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1275 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1276 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1277 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1278 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1279 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
1280 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1281 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1282 {
1283 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1284 SeenDSS = true;
1285 }
1286 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1287 {
1288 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1289 SeenDSS = true;
1290 }
1291 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1292 {
1293 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1294 SeenDSS = true;
1295 }
1296 void DSVFormatCb(DXGI_FORMAT DSVFormat) override {PipelineStream.DSVFormat = DSVFormat;}
1297 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1298 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1299 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1300 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1301 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1302 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1303 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1304 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1305 void FinalizeCb() override
1306 {
1307 if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
1308 {
1309 // Re-enable depth for the default state.
1310 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1311 }
1312 if (!SeenTopology && SeenMS)
1313 {
1314 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
1315 }
1316 }
1317
1318private:
1319 bool SeenDSS;
1320 bool SeenMS;
1321 bool SeenTopology;
1322};
1323#elif defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
1324struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1325{
1326 CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
1327 CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
1328 : SeenDSS(false)
1329 {
1330 // Adjust defaults to account for absent members.
1331 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1332
1333 // Depth disabled if no DSV format specified.
1334 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1335 }
1336
1337 // ID3DX12PipelineParserCallbacks
1338 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1339 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1340 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1341 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1342 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1343 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1344 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1345 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1346 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1347 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1348 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1349 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1350 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1351 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1352 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1353 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1354 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1355 {
1356 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1357 SeenDSS = true;
1358 }
1359 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1360 {
1361 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1362 SeenDSS = true;
1363 }
1364 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1365 {
1366 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1367 SeenDSS = true;
1368 }
1369 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1370 {
1371 PipelineStream.DSVFormat = DSVFormat;
1372 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1373 {
1374 // Re-enable depth for the default state.
1375 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1376 }
1377 }
1378 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1379 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1380 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1381 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1382 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1383 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1384 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1385 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1386
1387private:
1388 bool SeenDSS;
1389};
1390#endif // D3D12_SDK_VERSION >= 610
1391
1392#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1393struct CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1394{
1395 CD3DX12_PIPELINE_STATE_STREAM6 PipelineStream;
1396 CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER() noexcept
1397 : SeenDSS(false),
1398 SeenMS(false),
1399 SeenTopology(false)
1400 {
1401 // Adjust defaults to account for absent members.
1402 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1403
1404 // Depth disabled if no DSV format specified.
1405 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1406 }
1407
1408 // ID3DX12PipelineParserCallbacks
1409 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1410 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1411 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1412 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1413 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1414 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
1415 {
1416 PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
1417 SeenTopology = true;
1418 }
1419 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1420 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1421 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1422 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1423 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1424 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1425 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1426 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1427 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
1428 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1429 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1430 {
1431 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1432 SeenDSS = true;
1433 }
1434 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1435 {
1436 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1437 SeenDSS = true;
1438 }
1439 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1440 {
1441 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1442 SeenDSS = true;
1443 }
1444 void DSVFormatCb(DXGI_FORMAT DSVFormat) override { PipelineStream.DSVFormat = DSVFormat; }
1445 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1446 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1447 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1448 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1449 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1450 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1451 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1452 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1453 void FinalizeCb() override
1454 {
1455 if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
1456 {
1457 // Re-enable depth for the default state.
1458 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1459 }
1460 if (!SeenTopology && SeenMS)
1461 {
1462 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
1463 }
1464 }
1465 void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& SerializedRootSignature) override { PipelineStream.SerializedRootSignature = CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(SerializedRootSignature); }
1466
1467private:
1468 bool SeenDSS;
1469 bool SeenMS;
1470 bool SeenTopology;
1471};
1472#endif // D3D12_SDK_VERSION >= 618
1473
1474struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1475{
1476 CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
1477 CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept
1478 : SeenDSS(false)
1479 {
1480 // Adjust defaults to account for absent members.
1481 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1482
1483 // Depth disabled if no DSV format specified.
1484 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
1485 }
1486
1487 // ID3DX12PipelineParserCallbacks
1488 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
1489 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
1490 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
1491 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
1492 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
1493 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
1494 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
1495 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
1496 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
1497 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
1498 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
1499 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
1500 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
1501 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
1502 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1503 {
1504 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1505 SeenDSS = true;
1506 }
1507 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1508 {
1509 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1510 SeenDSS = true;
1511 }
1512 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1513 {
1514 PipelineStream.DSVFormat = DSVFormat;
1515 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1516 {
1517 // Re-enable depth for the default state.
1518 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
1519 }
1520 }
1521 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
1522 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
1523 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
1524 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
1525 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
1526 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
1527
1528private:
1529 bool SeenDSS;
1530};
1531
1532
1533inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
1534{
1535 switch (SubobjectType)
1536 {
1537 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
1538 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1539#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1540 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
1541 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1542#endif
1543#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1544 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
1545 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER;
1546#endif
1547 default:
1548 return SubobjectType;
1549 }
1550}
1551
1552inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks)
1553{
1554 if (pCallbacks == nullptr)
1555 {
1556 return E_INVALIDARG;
1557 }
1558
1559 if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr)
1560 {
1561 pCallbacks->ErrorBadInputParameter(1); // first parameter issue
1562 return E_INVALIDARG;
1563 }
1564
1565 bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {};
1566 for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject)
1567 {
1568 BYTE* pStream = static_cast<BYTE*>(Desc.pPipelineStateSubobjectStream)+CurOffset;
1569 auto SubobjectType = *reinterpret_cast<D3D12_PIPELINE_STATE_SUBOBJECT_TYPE*>(pStream);
1570 if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID)
1571 {
1572 pCallbacks->ErrorUnknownSubobject(SubobjectType);
1573 return E_INVALIDARG;
1574 }
1575 if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)])
1576 {
1577 pCallbacks->ErrorDuplicateSubobject(SubobjectType);
1578 return E_INVALIDARG; // disallow subobject duplicates in a stream
1579 }
1580 SubobjectSeen[SubobjectType] = true;
1581 switch (SubobjectType)
1582 {
1583 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE:
1584 pCallbacks->RootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature)*>(pStream));
1585 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature);
1586 break;
1587 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS:
1588 pCallbacks->VSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::VS)*>(pStream));
1589 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS);
1590 break;
1591 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS:
1592 pCallbacks->PSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PS)*>(pStream));
1593 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS);
1594 break;
1595 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS:
1596 pCallbacks->DSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DS)*>(pStream));
1597 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS);
1598 break;
1599 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS:
1600 pCallbacks->HSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::HS)*>(pStream));
1601 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS);
1602 break;
1603 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS:
1604 pCallbacks->GSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::GS)*>(pStream));
1605 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS);
1606 break;
1607 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS:
1608 pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
1609 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
1610 break;
1611 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
1612 pCallbacks->ASCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::AS)*>(pStream));
1613 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
1614 break;
1615 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
1616 pCallbacks->MSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::MS)*>(pStream));
1617 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
1618 break;
1619 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
1620 pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
1621 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
1622 break;
1623 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND:
1624 pCallbacks->BlendStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::BlendState)*>(pStream));
1625 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState);
1626 break;
1627 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK:
1628 pCallbacks->SampleMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleMask)*>(pStream));
1629 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask);
1630 break;
1631 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER:
1632 pCallbacks->RasterizerStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState)*>(pStream));
1633 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState);
1634 break;
1635#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1636 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
1637 pCallbacks->RasterizerState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState)*>(pStream));
1638 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState);
1639 break;
1640#endif
1641#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
1642 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2:
1643 pCallbacks->RasterizerState2Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState)*>(pStream));
1644 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState);
1645 break;
1646#endif
1647 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL:
1648 pCallbacks->DepthStencilStateCb(*reinterpret_cast<CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL*>(pStream));
1649 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL);
1650 break;
1651 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
1652 pCallbacks->DepthStencilState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState)*>(pStream));
1653 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState);
1654 break;
1655#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1656 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
1657 pCallbacks->DepthStencilState2Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState)*>(pStream));
1658 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState);
1659 break;
1660#endif
1661 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT:
1662 pCallbacks->InputLayoutCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::InputLayout)*>(pStream));
1663 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout);
1664 break;
1665 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE:
1666 pCallbacks->IBStripCutValueCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue)*>(pStream));
1667 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue);
1668 break;
1669 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY:
1670 pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType)*>(pStream));
1671 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType);
1672 break;
1673 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS:
1674 pCallbacks->RTVFormatsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats)*>(pStream));
1675 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats);
1676 break;
1677 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT:
1678 pCallbacks->DSVFormatCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat)*>(pStream));
1679 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat);
1680 break;
1681 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC:
1682 pCallbacks->SampleDescCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc)*>(pStream));
1683 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc);
1684 break;
1685 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK:
1686 pCallbacks->NodeMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::NodeMask)*>(pStream));
1687 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask);
1688 break;
1689 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO:
1690 pCallbacks->CachedPSOCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO)*>(pStream));
1691 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO);
1692 break;
1693 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS:
1694 pCallbacks->FlagsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::Flags)*>(pStream));
1695 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags);
1696 break;
1697 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING:
1698 pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream));
1699 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
1700 break;
1701#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1702 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE:
1703 pCallbacks->SerializedRootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature)*>(pStream));
1704 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature);
1705 break;
1706#endif
1707 default:
1708 pCallbacks->ErrorUnknownSubobject(SubobjectType);
1709 return E_INVALIDARG;
1710 }
1711 }
1712#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
1713 pCallbacks->FinalizeCb();
1714#endif
1715
1716 return S_OK;
1717}
1718
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_property_format_table.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_property_format_table.h
new file mode 100644
index 0000000..66c7600
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_property_format_table.h
@@ -0,0 +1,128 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7#ifndef __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
8#define __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
9#include "d3d12.h"
10#define MAP_ALIGN_REQUIREMENT 16 // Map is required to return 16-byte aligned addresses
11
12struct D3D12_PROPERTY_LAYOUT_FORMAT_TABLE
13{
14public:
15 // ----------------------------------------------------------------------------
16 // Information describing everything about a D3D Resource Format
17 // ----------------------------------------------------------------------------
18 typedef struct FORMAT_DETAIL
19 {
20 DXGI_FORMAT DXGIFormat;
21 DXGI_FORMAT ParentFormat;
22 const DXGI_FORMAT* pDefaultFormatCastSet; // This is dependent on FL/driver version, but is here to save a lot of space
23 UINT8 BitsPerComponent[4]; // only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
24 UINT8 BitsPerUnit;
25 BYTE SRGBFormat : 1;
26 UINT WidthAlignment : 4; // number of texels to align to in a mip level.
27 UINT HeightAlignment : 4; // Top level dimensions must be a multiple of these
28 UINT DepthAlignment : 1; // values.
29 D3D_FORMAT_LAYOUT Layout : 1;
30 D3D_FORMAT_TYPE_LEVEL TypeLevel : 2;
31 D3D_FORMAT_COMPONENT_NAME ComponentName0 : 3; // RED ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
32 D3D_FORMAT_COMPONENT_NAME ComponentName1 : 3; // GREEN ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
33 D3D_FORMAT_COMPONENT_NAME ComponentName2 : 3; // BLUE ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
34 D3D_FORMAT_COMPONENT_NAME ComponentName3 : 3; // ALPHA ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
35 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation0 : 3; // only used for D3DFTL_FULL_TYPE
36 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation1 : 3; // only used for D3DFTL_FULL_TYPE
37 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation2 : 3; // only used for D3DFTL_FULL_TYPE
38 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation3 : 3; // only used for D3DFTL_FULL_TYPE
39 bool bDX9VertexOrIndexFormat : 1;
40 bool bDX9TextureFormat : 1;
41 bool bFloatNormFormat : 1;
42 bool bPlanar : 1;
43 bool bYUV : 1;
44 bool bDependantFormatCastSet : 1; // This indicates that the format cast set is dependent on FL/driver version
45 bool bInternal : 1;
46 } FORMAT_DETAIL;
47
48private:
49 static const FORMAT_DETAIL s_FormatDetail[];
50 static const UINT s_NumFormats;
51 static const LPCSTR s_FormatNames[]; // separate from above structure so it can be compiled out of runtime.
52public:
53 static UINT GetNumFormats();
54 static const FORMAT_DETAIL* GetFormatTable();
55 static D3D_FEATURE_LEVEL GetHighestDefinedFeatureLevel();
56
57 static DXGI_FORMAT GetFormat (SIZE_T Index);
58 static bool FormatExists (DXGI_FORMAT Format);
59 static bool FormatExistsInHeader (DXGI_FORMAT Format, bool bExternalHeader = true);
60 static UINT GetByteAlignment (DXGI_FORMAT Format);
61 static bool IsBlockCompressFormat (DXGI_FORMAT Format);
62 static LPCSTR GetName (DXGI_FORMAT Format, bool bHideInternalFormats = true);
63 static bool IsSRGBFormat (DXGI_FORMAT Format);
64 static UINT GetBitsPerStencil (DXGI_FORMAT Format);
65 static UINT GetBitsPerDepth (DXGI_FORMAT Format);
66 static void GetFormatReturnTypes (DXGI_FORMAT Format, D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations); // return array of 4 components
67 static UINT GetNumComponentsInFormat(DXGI_FORMAT Format);
68 static UINT GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
69
70 // Converts the sequential component index (range from 0 to GetNumComponentsInFormat()) to
71 // the absolute component index (range 0 to 3).
72 static UINT Sequential2AbsoluteComponentIndex (DXGI_FORMAT Format, UINT SequentialComponentIndex);
73 static bool CanBeCastEvenFullyTyped (DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl);
74 static UINT8 GetAddressingBitsPerAlignedSize (DXGI_FORMAT Format);
75 static DXGI_FORMAT GetParentFormat (DXGI_FORMAT Format);
76 static const DXGI_FORMAT* GetFormatCastSet (DXGI_FORMAT Format);
77 static D3D_FORMAT_LAYOUT GetLayout (DXGI_FORMAT Format);
78 static D3D_FORMAT_TYPE_LEVEL GetTypeLevel (DXGI_FORMAT Format);
79 static UINT GetBitsPerUnit (DXGI_FORMAT Format);
80 static UINT GetBitsPerUnitThrow (DXGI_FORMAT Format);
81 static UINT GetBitsPerElement (DXGI_FORMAT Format); // Legacy function used to support D3D10on9 only. Do not use.
82 static UINT GetWidthAlignment (DXGI_FORMAT Format);
83 static UINT GetHeightAlignment (DXGI_FORMAT Format);
84 static UINT GetDepthAlignment (DXGI_FORMAT Format);
85 static BOOL Planar (DXGI_FORMAT Format);
86 static BOOL NonOpaquePlanar (DXGI_FORMAT Format);
87 static BOOL YUV (DXGI_FORMAT Format);
88 static BOOL Opaque (DXGI_FORMAT Format);
89 static bool FamilySupportsStencil (DXGI_FORMAT Format);
90 static UINT NonOpaquePlaneCount (DXGI_FORMAT Format);
91 static BOOL DX9VertexOrIndexFormat (DXGI_FORMAT Format);
92 static BOOL DX9TextureFormat (DXGI_FORMAT Format);
93 static BOOL FloatNormTextureFormat (DXGI_FORMAT Format);
94 static bool DepthOnlyFormat (DXGI_FORMAT format);
95 static UINT8 GetPlaneCount (DXGI_FORMAT Format);
96 static bool MotionEstimatorAllowedInputFormat (DXGI_FORMAT Format);
97 static bool SupportsSamplerFeedback (DXGI_FORMAT Format);
98 static bool DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format);
99 static UINT8 GetPlaneSliceFromViewFormat (DXGI_FORMAT ResourceFormat, DXGI_FORMAT ViewFormat);
100 static bool FloatAndNotFloatFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
101 static bool SNORMAndUNORMFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
102 static bool ValidCastToR32UAV (DXGI_FORMAT from, DXGI_FORMAT to);
103 static bool IsSupportedTextureDisplayableFormat (DXGI_FORMAT, bool bMediaFormatOnly);
104 static D3D_FORMAT_COMPONENT_INTERPRETATION GetFormatComponentInterpretation (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
105 static UINT GetBitsPerComponent (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
106 static D3D_FORMAT_COMPONENT_NAME GetComponentName (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
107 static HRESULT CalculateExtraPlanarRows (DXGI_FORMAT format, UINT plane0Height, _Out_ UINT& totalHeight);
108 static HRESULT CalculateMinimumRowMajorRowPitch (DXGI_FORMAT Format, UINT Width, _Out_ UINT& RowPitch);
109 static HRESULT CalculateMinimumRowMajorSlicePitch (DXGI_FORMAT Format, UINT ContextBasedRowPitch, UINT Height, _Out_ UINT& SlicePitch);
110 static void GetYCbCrChromaSubsampling (DXGI_FORMAT Format, _Out_ UINT& HorizontalSubsampling, _Out_ UINT& VerticalSubsampling);
111
112 static HRESULT CalculateResourceSize (UINT width, UINT height, UINT depth, DXGI_FORMAT format, UINT mipLevels, UINT subresources, _Out_ SIZE_T& totalByteSize, _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST* pDst = nullptr);
113 static void GetTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
114 static void Get4KTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
115 static void GetMipDimensions (UINT8 mipSlice, _Inout_ UINT64* pWidth, _Inout_opt_ UINT64* pHeight = nullptr, _Inout_opt_ UINT64* pDepth = nullptr);
116 static void GetPlaneSubsampledSizeAndFormatForCopyableLayout(UINT PlaneSlice, DXGI_FORMAT Format, UINT Width, UINT Height, _Out_ DXGI_FORMAT& PlaneFormat, _Out_ UINT& MinPlanePitchWidth, _Out_ UINT& PlaneWidth, _Out_ UINT& PlaneHeight);
117
118 static UINT GetDetailTableIndex (DXGI_FORMAT Format);
119 static UINT GetDetailTableIndexNoThrow (DXGI_FORMAT Format);
120 static UINT GetDetailTableIndexThrow (DXGI_FORMAT Format);
121 static bool SupportsDepth (DXGI_FORMAT Format);
122 static bool SupportsStencil (DXGI_FORMAT Format);
123private:
124 static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format);
125
126};
127
128#endif \ No newline at end of file
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_render_pass.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_render_pass.h
new file mode 100644
index 0000000..c88fbdf
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_render_pass.h
@@ -0,0 +1,105 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
16inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
17{
18 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
19}
20
21inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
22{
23 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
24}
25
26inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
27{
28 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
29}
30#endif
31
32inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) noexcept
33{
34 return a.ClearValue == b.ClearValue;
35}
36
37inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) noexcept
38{
39 if (a.pSrcResource != b.pSrcResource) return false;
40 if (a.pDstResource != b.pDstResource) return false;
41 if (a.SubresourceCount != b.SubresourceCount) return false;
42 if (a.Format != b.Format) return false;
43 if (a.ResolveMode != b.ResolveMode) return false;
44 if (a.PreserveResolveSource != b.PreserveResolveSource) return false;
45 return true;
46}
47
48inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) noexcept
49{
50 if (a.Type != b.Type) return false;
51 switch (a.Type)
52 {
53 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR:
54 if (!(a.Clear == b.Clear)) return false;
55 break;
56#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
57 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
58 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
59 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
60 if (!(a.PreserveLocal == b.PreserveLocal)) return false;
61 break;
62#endif
63 default:
64 break;
65 }
66 return true;
67}
68
69inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS& a, const D3D12_RENDER_PASS_ENDING_ACCESS& b) noexcept
70{
71 if (a.Type != b.Type) return false;
72 switch (a.Type)
73 {
74 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE:
75 if (!(a.Resolve == b.Resolve)) return false;
76 break;
77#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
78 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
79 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
80 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
81 if (!(a.PreserveLocal == b.PreserveLocal)) return false;
82 break;
83#endif
84 default:
85 break;
86 }
87 return true;
88}
89
90inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) noexcept
91{
92 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
93 if (!(a.BeginningAccess == b.BeginningAccess)) return false;
94 if (!(a.EndingAccess == b.EndingAccess)) return false;
95 return true;
96}
97inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) noexcept
98{
99 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
100 if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false;
101 if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false;
102 if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false;
103 if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false;
104 return true;
105}
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_resource_helpers.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_resource_helpers.h
new file mode 100644
index 0000000..5c1c980
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_resource_helpers.h
@@ -0,0 +1,612 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_property_format_table.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17//------------------------------------------------------------------------------------------------
18template <typename T, typename U, typename V>
19inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
20{
21 MipSlice = static_cast<T>(Subresource % MipLevels);
22 ArraySlice = static_cast<U>((Subresource / MipLevels) % ArraySize);
23 PlaneSlice = static_cast<V>(Subresource / (MipLevels * ArraySize));
24}
25
26//------------------------------------------------------------------------------------------------
27// Row-by-row memcpy
28inline void MemcpySubresource(
29 _In_ const D3D12_MEMCPY_DEST* pDest,
30 _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
31 SIZE_T RowSizeInBytes,
32 UINT NumRows,
33 UINT NumSlices) noexcept
34{
35 for (UINT z = 0; z < NumSlices; ++z)
36 {
37 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
38 auto pSrcSlice = static_cast<const BYTE*>(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z);
39 for (UINT y = 0; y < NumRows; ++y)
40 {
41 memcpy(pDestSlice + pDest->RowPitch * y,
42 pSrcSlice + pSrc->RowPitch * LONG_PTR(y),
43 RowSizeInBytes);
44 }
45 }
46}
47
48//------------------------------------------------------------------------------------------------
49// Row-by-row memcpy
50inline void MemcpySubresource(
51 _In_ const D3D12_MEMCPY_DEST* pDest,
52 _In_ const void* pResourceData,
53 _In_ const D3D12_SUBRESOURCE_INFO* pSrc,
54 SIZE_T RowSizeInBytes,
55 UINT NumRows,
56 UINT NumSlices) noexcept
57{
58 for (UINT z = 0; z < NumSlices; ++z)
59 {
60 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
61 auto pSrcSlice = (static_cast<const BYTE*>(pResourceData) + pSrc->Offset) + pSrc->DepthPitch * ULONG_PTR(z);
62 for (UINT y = 0; y < NumRows; ++y)
63 {
64 memcpy(pDestSlice + pDest->RowPitch * y,
65 pSrcSlice + pSrc->RowPitch * ULONG_PTR(y),
66 RowSizeInBytes);
67 }
68 }
69}
70
71//------------------------------------------------------------------------------------------------
72// Returns required size of a buffer to be used for data upload
73inline UINT64 GetRequiredIntermediateSize(
74 _In_ ID3D12Resource* pDestinationResource,
75 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
76 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) noexcept
77{
78#if defined(_MSC_VER) || !defined(_WIN32)
79 const auto Desc = pDestinationResource->GetDesc();
80#else
81 D3D12_RESOURCE_DESC tmpDesc;
82 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
83#endif
84 UINT64 RequiredSize = 0;
85
86 ID3D12Device* pDevice = nullptr;
87 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
88 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
89 pDevice->Release();
90
91 return RequiredSize;
92}
93
94//------------------------------------------------------------------------------------------------
95// All arrays must be populated (e.g. by calling GetCopyableFootprints)
96inline UINT64 UpdateSubresources(
97 _In_ ID3D12GraphicsCommandList* pCmdList,
98 _In_ ID3D12Resource* pDestinationResource,
99 _In_ ID3D12Resource* pIntermediate,
100 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
101 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
102 UINT64 RequiredSize,
103 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
104 _In_reads_(NumSubresources) const UINT* pNumRows,
105 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
106 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
107{
108 // Minor validation
109#if defined(_MSC_VER) || !defined(_WIN32)
110 const auto IntermediateDesc = pIntermediate->GetDesc();
111 const auto DestinationDesc = pDestinationResource->GetDesc();
112#else
113 D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
114 const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
115 const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
116#endif
117 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
118 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
119 RequiredSize > SIZE_T(-1) ||
120 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
121 (FirstSubresource != 0 || NumSubresources != 1)))
122 {
123 return 0;
124 }
125
126 BYTE* pData;
127 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
128 if (FAILED(hr))
129 {
130 return 0;
131 }
132
133 for (UINT i = 0; i < NumSubresources; ++i)
134 {
135 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
136 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
137 MemcpySubresource(&DestData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
138 }
139 pIntermediate->Unmap(0, nullptr);
140
141 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
142 {
143 pCmdList->CopyBufferRegion(
144 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
145 }
146 else
147 {
148 for (UINT i = 0; i < NumSubresources; ++i)
149 {
150 const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
151 const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
152 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
153 }
154 }
155 return RequiredSize;
156}
157
158//------------------------------------------------------------------------------------------------
159// All arrays must be populated (e.g. by calling GetCopyableFootprints)
160inline UINT64 UpdateSubresources(
161 _In_ ID3D12GraphicsCommandList* pCmdList,
162 _In_ ID3D12Resource* pDestinationResource,
163 _In_ ID3D12Resource* pIntermediate,
164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
166 UINT64 RequiredSize,
167 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
168 _In_reads_(NumSubresources) const UINT* pNumRows,
169 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
170 _In_ const void* pResourceData,
171 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
172{
173 // Minor validation
174#if defined(_MSC_VER) || !defined(_WIN32)
175 const auto IntermediateDesc = pIntermediate->GetDesc();
176 const auto DestinationDesc = pDestinationResource->GetDesc();
177#else
178 D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
179 const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
180 const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
181#endif
182 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
183 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
184 RequiredSize > SIZE_T(-1) ||
185 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
186 (FirstSubresource != 0 || NumSubresources != 1)))
187 {
188 return 0;
189 }
190
191 BYTE* pData;
192 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
193 if (FAILED(hr))
194 {
195 return 0;
196 }
197
198 for (UINT i = 0; i < NumSubresources; ++i)
199 {
200 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
201 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
202 MemcpySubresource(&DestData, pResourceData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
203 }
204 pIntermediate->Unmap(0, nullptr);
205
206 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
207 {
208 pCmdList->CopyBufferRegion(
209 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
210 }
211 else
212 {
213 for (UINT i = 0; i < NumSubresources; ++i)
214 {
215 const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
216 const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
217 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
218 }
219 }
220 return RequiredSize;
221}
222
223//------------------------------------------------------------------------------------------------
224// Heap-allocating UpdateSubresources implementation
225inline UINT64 UpdateSubresources(
226 _In_ ID3D12GraphicsCommandList* pCmdList,
227 _In_ ID3D12Resource* pDestinationResource,
228 _In_ ID3D12Resource* pIntermediate,
229 UINT64 IntermediateOffset,
230 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
231 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
232 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
233{
234 UINT64 RequiredSize = 0;
235 const auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
236 if (MemToAlloc > SIZE_MAX)
237 {
238 return 0;
239 }
240 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
241 if (pMem == nullptr)
242 {
243 return 0;
244 }
245 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
246 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
247 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
248
249#if defined(_MSC_VER) || !defined(_WIN32)
250 const auto Desc = pDestinationResource->GetDesc();
251#else
252 D3D12_RESOURCE_DESC tmpDesc;
253 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
254#endif
255 ID3D12Device* pDevice = nullptr;
256 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
257 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
258 pDevice->Release();
259
260 const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
261 HeapFree(GetProcessHeap(), 0, pMem);
262 return Result;
263}
264
265//------------------------------------------------------------------------------------------------
266// Heap-allocating UpdateSubresources implementation
267inline UINT64 UpdateSubresources(
268 _In_ ID3D12GraphicsCommandList* pCmdList,
269 _In_ ID3D12Resource* pDestinationResource,
270 _In_ ID3D12Resource* pIntermediate,
271 UINT64 IntermediateOffset,
272 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
273 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
274 _In_ const void* pResourceData,
275 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
276{
277 UINT64 RequiredSize = 0;
278 const auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
279 if (MemToAlloc > SIZE_MAX)
280 {
281 return 0;
282 }
283 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
284 if (pMem == nullptr)
285 {
286 return 0;
287 }
288 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
289 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
290 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
291
292#if defined(_MSC_VER) || !defined(_WIN32)
293 const auto Desc = pDestinationResource->GetDesc();
294#else
295 D3D12_RESOURCE_DESC tmpDesc;
296 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
297#endif
298 ID3D12Device* pDevice = nullptr;
299 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
300 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
301 pDevice->Release();
302
303 const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pResourceData, pSrcData);
304 HeapFree(GetProcessHeap(), 0, pMem);
305 return Result;
306}
307
308//------------------------------------------------------------------------------------------------
309// Stack-allocating UpdateSubresources implementation
310template <UINT MaxSubresources>
311inline UINT64 UpdateSubresources(
312 _In_ ID3D12GraphicsCommandList* pCmdList,
313 _In_ ID3D12Resource* pDestinationResource,
314 _In_ ID3D12Resource* pIntermediate,
315 UINT64 IntermediateOffset,
316 _In_range_(0,MaxSubresources) UINT FirstSubresource,
317 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
318 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
319{
320 UINT64 RequiredSize = 0;
321 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
322 UINT NumRows[MaxSubresources];
323 UINT64 RowSizesInBytes[MaxSubresources];
324
325#if defined(_MSC_VER) || !defined(_WIN32)
326 const auto Desc = pDestinationResource->GetDesc();
327#else
328 D3D12_RESOURCE_DESC tmpDesc;
329 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
330#endif
331 ID3D12Device* pDevice = nullptr;
332 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
333 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
334 pDevice->Release();
335
336 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
337}
338
339//------------------------------------------------------------------------------------------------
340// Stack-allocating UpdateSubresources implementation
341template <UINT MaxSubresources>
342inline UINT64 UpdateSubresources(
343 _In_ ID3D12GraphicsCommandList* pCmdList,
344 _In_ ID3D12Resource* pDestinationResource,
345 _In_ ID3D12Resource* pIntermediate,
346 UINT64 IntermediateOffset,
347 _In_range_(0,MaxSubresources) UINT FirstSubresource,
348 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
349 _In_ const void* pResourceData,
350 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
351{
352 UINT64 RequiredSize = 0;
353 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
354 UINT NumRows[MaxSubresources];
355 UINT64 RowSizesInBytes[MaxSubresources];
356
357#if defined(_MSC_VER) || !defined(_WIN32)
358 const auto Desc = pDestinationResource->GetDesc();
359#else
360 D3D12_RESOURCE_DESC tmpDesc;
361 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
362#endif
363 ID3D12Device* pDevice = nullptr;
364 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
365 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
366 pDevice->Release();
367
368 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pResourceData, pSrcData);
369}
370
371//------------------------------------------------------------------------------------------------
372constexpr bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) noexcept
373{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; }
374
375//------------------------------------------------------------------------------------------------
376template< typename T >
377inline T D3DX12Align(T uValue, T uAlign)
378{
379 // Assert power of 2 alignment
380 D3DX12_ASSERT(0 == (uAlign & (uAlign - 1)));
381 T uMask = uAlign - 1;
382 T uResult = (uValue + uMask) & ~uMask;
383 D3DX12_ASSERT(uResult >= uValue);
384 D3DX12_ASSERT(0 == (uResult % uAlign));
385 return uResult;
386}
387
388//------------------------------------------------------------------------------------------------
389template< typename T >
390inline T D3DX12AlignAtLeast(T uValue, T uAlign)
391{
392 T aligned = D3DX12Align(uValue, uAlign);
393 return aligned > uAlign ? aligned : uAlign;
394}
395
396inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
397 D3D12_RESOURCE_DESC1& LclDesc,
398 const D3D12_RESOURCE_DESC1* pDesc,
399 const bool tightAlignmentSupported = false,
400 const bool alignAsCommitted = false)
401{
402 return D3DX12ConditionallyExpandAPIDesc(static_cast<CD3DX12_RESOURCE_DESC1&>(LclDesc), static_cast<const CD3DX12_RESOURCE_DESC1*>(pDesc), tightAlignmentSupported, alignAsCommitted);
403}
404
405#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
406//------------------------------------------------------------------------------------------------
407// The difference between D3DX12GetCopyableFootprints and ID3D12Device::GetCopyableFootprints
408// is that this one loses a lot of error checking by assuming the arguments are correct
409inline bool D3DX12GetCopyableFootprints(
410 _In_ const D3D12_RESOURCE_DESC1& ResourceDesc,
411 _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
412 _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
413 UINT64 BaseOffset,
414 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
415 _Out_writes_opt_(NumSubresources) UINT* pNumRows,
416 _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
417 _Out_opt_ UINT64* pTotalBytes)
418{
419 constexpr UINT64 uint64_max = ~0ull;
420 UINT64 TotalBytes = uint64_max;
421 UINT uSubRes = 0;
422
423 bool bResourceOverflow = false;
424 TotalBytes = 0;
425
426 const DXGI_FORMAT Format = ResourceDesc.Format;
427
428 CD3DX12_RESOURCE_DESC1 LresourceDesc;
429 const CD3DX12_RESOURCE_DESC1& resourceDesc = *D3DX12ConditionallyExpandAPIDesc(LresourceDesc, &ResourceDesc);
430
431 // Check if its a valid format
432 D3DX12_ASSERT(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(Format));
433
434 // D3DX12GetCopyableFootprints does not support buffers with width larger than UINT_MAX.
435 if (ResourceDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER && ResourceDesc.Width >= UINT_MAX)
436 {
437 return false;
438 }
439
440 const UINT WidthAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment( Format );
441 const UINT HeightAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment( Format );
442 const UINT16 DepthAlignment = UINT16( D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment( Format ) );
443
444 for (; uSubRes < NumSubresources; ++uSubRes)
445 {
446 bool bOverflow = false;
447 UINT Subresource = FirstSubresource + uSubRes;
448
449 D3DX12_ASSERT(resourceDesc.MipLevels != 0);
450 UINT subresourceCount = resourceDesc.MipLevels * resourceDesc.ArraySize() * D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(resourceDesc.Format);
451
452 if (Subresource > subresourceCount)
453 {
454 break;
455 }
456
457 TotalBytes = D3DX12Align< UINT64 >( TotalBytes, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT );
458
459 UINT MipLevel, ArraySlice, PlaneSlice;
460 D3D12DecomposeSubresource(Subresource, resourceDesc.MipLevels, resourceDesc.ArraySize(), /*_Out_*/MipLevel, /*_Out_*/ArraySlice, /*_Out_*/PlaneSlice);
461
462 const UINT64 Width = D3DX12AlignAtLeast<UINT64>(resourceDesc.Width >> MipLevel, WidthAlignment);
463 const UINT Height = D3DX12AlignAtLeast(resourceDesc.Height >> MipLevel, HeightAlignment);
464 const UINT16 Depth = D3DX12AlignAtLeast<UINT16>(resourceDesc.Depth() >> MipLevel, DepthAlignment);
465
466 // Adjust for the current PlaneSlice. Most formats have only one plane.
467 DXGI_FORMAT PlaneFormat;
468 UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight;
469 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(PlaneSlice, Format, (UINT)Width, Height, /*_Out_*/ PlaneFormat, /*_Out_*/ MinPlanePitchWidth, /* _Out_ */ PlaneWidth, /*_Out_*/ PlaneHeight);
470
471 D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement = {};
472 auto& Placement = pLayouts ? pLayouts[uSubRes].Footprint : LocalPlacement;
473 Placement.Format = PlaneFormat;
474 Placement.Width = PlaneWidth;
475 Placement.Height = PlaneHeight;
476 Placement.Depth = Depth;
477
478 // Calculate row pitch
479 UINT MinPlaneRowPitch = 0;
480 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, MinPlanePitchWidth, MinPlaneRowPitch);
481
482 // Formats with more than one plane choose a larger pitch alignment to ensure that each plane begins on the row
483 // immediately following the previous plane while still adhering to subresource alignment restrictions.
484 static_assert( D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT >= D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
485 && ((D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT % D3D12_TEXTURE_DATA_PITCH_ALIGNMENT) == 0),
486 "D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT must be >= and evenly divisible by D3D12_TEXTURE_DATA_PITCH_ALIGNMENT." );
487
488 Placement.RowPitch = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format)
489 ? D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT )
490 : D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT );
491
492 if (pRowSizeInBytes)
493 {
494 UINT PlaneRowSize = 0;
495 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, PlaneWidth, PlaneRowSize);
496
497 pRowSizeInBytes[uSubRes] = PlaneRowSize;
498 }
499
500 // Number of rows (accounting for block compression and additional planes)
501 UINT NumRows = 0;
502 if (D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format))
503 {
504 NumRows = PlaneHeight;
505 }
506 else
507 {
508 D3DX12_ASSERT(Height % HeightAlignment == 0);
509 NumRows = Height / HeightAlignment;
510 }
511
512 if (pNumRows)
513 {
514 pNumRows[uSubRes] = NumRows;
515 }
516
517 // Offsetting
518 if (pLayouts)
519 {
520 pLayouts[uSubRes].Offset = (bOverflow ? uint64_max : TotalBytes + BaseOffset);
521 }
522
523 const UINT16 NumSlices = Depth;
524 const UINT64 SubresourceSize = (NumRows * NumSlices - 1) * Placement.RowPitch + MinPlaneRowPitch;
525
526 // uint64 addition with overflow checking
527 TotalBytes = TotalBytes + SubresourceSize;
528 if(TotalBytes < SubresourceSize)
529 {
530 TotalBytes = uint64_max;
531 }
532 bResourceOverflow = bResourceOverflow || bOverflow;
533 }
534
535 // Overflow error
536 if (bResourceOverflow)
537 {
538 TotalBytes = uint64_max;
539 }
540
541
542 if (pLayouts)
543 {
544 memset( pLayouts + uSubRes, -1, sizeof( *pLayouts ) * (NumSubresources - uSubRes) );
545 }
546 if (pNumRows)
547 {
548 memset(pNumRows + uSubRes, -1, sizeof(*pNumRows) * (NumSubresources - uSubRes));
549 }
550 if (pRowSizeInBytes)
551 {
552 memset(pRowSizeInBytes + uSubRes, -1, sizeof(*pRowSizeInBytes) * (NumSubresources - uSubRes));
553 }
554 if (pTotalBytes)
555 {
556 *pTotalBytes = TotalBytes;
557 }
558 if(TotalBytes == uint64_max)
559 {
560 return false;
561 }
562 return true;
563}
564
565//------------------------------------------------------------------------------------------------
566inline D3D12_RESOURCE_DESC1 D3DX12ResourceDesc0ToDesc1(D3D12_RESOURCE_DESC const& desc0)
567{
568 D3D12_RESOURCE_DESC1 desc1;
569 desc1.Dimension = desc0.Dimension;
570 desc1.Alignment = desc0.Alignment;
571 desc1.Width = desc0.Width;
572 desc1.Height = desc0.Height;
573 desc1.DepthOrArraySize = desc0.DepthOrArraySize;
574 desc1.MipLevels = desc0.MipLevels;
575 desc1.Format = desc0.Format;
576 desc1.SampleDesc.Count = desc0.SampleDesc.Count;
577 desc1.SampleDesc.Quality = desc0.SampleDesc.Quality;
578 desc1.Layout = desc0.Layout;
579 desc1.Flags = desc0.Flags;
580 desc1.SamplerFeedbackMipRegion.Width = 0;
581 desc1.SamplerFeedbackMipRegion.Height = 0;
582 desc1.SamplerFeedbackMipRegion.Depth = 0;
583 return desc1;
584}
585
586//------------------------------------------------------------------------------------------------
587inline bool D3DX12GetCopyableFootprints(
588 _In_ const D3D12_RESOURCE_DESC& pResourceDesc,
589 _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
590 _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
591 UINT64 BaseOffset,
592 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
593 _Out_writes_opt_(NumSubresources) UINT* pNumRows,
594 _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
595 _Out_opt_ UINT64* pTotalBytes)
596{
597 // From D3D12_RESOURCE_DESC to D3D12_RESOURCE_DESC1
598 D3D12_RESOURCE_DESC1 desc = D3DX12ResourceDesc0ToDesc1(pResourceDesc);
599 return D3DX12GetCopyableFootprints(
600 *static_cast<CD3DX12_RESOURCE_DESC1*>(&desc),// From D3D12_RESOURCE_DESC1 to CD3DX12_RESOURCE_DESC1
601 FirstSubresource,
602 NumSubresources,
603 BaseOffset,
604 pLayouts,
605 pNumRows,
606 pRowSizeInBytes,
607 pTotalBytes);
608}
609
610#endif // D3D12_SDK_VERSION >= 606
611
612
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_root_signature.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_root_signature.h
new file mode 100644
index 0000000..e194d30
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_root_signature.h
@@ -0,0 +1,1227 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15#include "d3dx12_default.h"
16
17//------------------------------------------------------------------------------------------------
18struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
19{
20 CD3DX12_DESCRIPTOR_RANGE() = default;
21 explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) noexcept :
22 D3D12_DESCRIPTOR_RANGE(o)
23 {}
24 CD3DX12_DESCRIPTOR_RANGE(
25 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
26 UINT numDescriptors,
27 UINT baseShaderRegister,
28 UINT registerSpace = 0,
29 UINT offsetInDescriptorsFromTableStart =
30 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
31 {
32 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
33 }
34
35 inline void Init(
36 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
37 UINT numDescriptors,
38 UINT baseShaderRegister,
39 UINT registerSpace = 0,
40 UINT offsetInDescriptorsFromTableStart =
41 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
42 {
43 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
44 }
45
46 static inline void Init(
47 _Out_ D3D12_DESCRIPTOR_RANGE &range,
48 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
49 UINT numDescriptors,
50 UINT baseShaderRegister,
51 UINT registerSpace = 0,
52 UINT offsetInDescriptorsFromTableStart =
53 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
54 {
55 range.RangeType = rangeType;
56 range.NumDescriptors = numDescriptors;
57 range.BaseShaderRegister = baseShaderRegister;
58 range.RegisterSpace = registerSpace;
59 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
60 }
61};
62
63//------------------------------------------------------------------------------------------------
64struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
65{
66 CD3DX12_ROOT_DESCRIPTOR_TABLE() = default;
67 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) noexcept :
68 D3D12_ROOT_DESCRIPTOR_TABLE(o)
69 {}
70 CD3DX12_ROOT_DESCRIPTOR_TABLE(
71 UINT numDescriptorRanges,
72 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
73 {
74 Init(numDescriptorRanges, _pDescriptorRanges);
75 }
76
77 inline void Init(
78 UINT numDescriptorRanges,
79 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
80 {
81 Init(*this, numDescriptorRanges, _pDescriptorRanges);
82 }
83
84 static inline void Init(
85 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable,
86 UINT numDescriptorRanges,
87 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
88 {
89 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
90 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
91 }
92};
93
94//------------------------------------------------------------------------------------------------
95struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
96{
97 CD3DX12_ROOT_CONSTANTS() = default;
98 explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) noexcept :
99 D3D12_ROOT_CONSTANTS(o)
100 {}
101 CD3DX12_ROOT_CONSTANTS(
102 UINT num32BitValues,
103 UINT shaderRegister,
104 UINT registerSpace = 0) noexcept
105 {
106 Init(num32BitValues, shaderRegister, registerSpace);
107 }
108
109 inline void Init(
110 UINT num32BitValues,
111 UINT shaderRegister,
112 UINT registerSpace = 0) noexcept
113 {
114 Init(*this, num32BitValues, shaderRegister, registerSpace);
115 }
116
117 static inline void Init(
118 _Out_ D3D12_ROOT_CONSTANTS &rootConstants,
119 UINT num32BitValues,
120 UINT shaderRegister,
121 UINT registerSpace = 0) noexcept
122 {
123 rootConstants.Num32BitValues = num32BitValues;
124 rootConstants.ShaderRegister = shaderRegister;
125 rootConstants.RegisterSpace = registerSpace;
126 }
127};
128
129//------------------------------------------------------------------------------------------------
130struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
131{
132 CD3DX12_ROOT_DESCRIPTOR() = default;
133 explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) noexcept :
134 D3D12_ROOT_DESCRIPTOR(o)
135 {}
136 CD3DX12_ROOT_DESCRIPTOR(
137 UINT shaderRegister,
138 UINT registerSpace = 0) noexcept
139 {
140 Init(shaderRegister, registerSpace);
141 }
142
143 inline void Init(
144 UINT shaderRegister,
145 UINT registerSpace = 0) noexcept
146 {
147 Init(*this, shaderRegister, registerSpace);
148 }
149
150 static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) noexcept
151 {
152 table.ShaderRegister = shaderRegister;
153 table.RegisterSpace = registerSpace;
154 }
155};
156
157//------------------------------------------------------------------------------------------------
158struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
159{
160 CD3DX12_ROOT_PARAMETER() = default;
161 explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) noexcept :
162 D3D12_ROOT_PARAMETER(o)
163 {}
164
165 static inline void InitAsDescriptorTable(
166 _Out_ D3D12_ROOT_PARAMETER &rootParam,
167 UINT numDescriptorRanges,
168 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
169 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
170 {
171 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
172 rootParam.ShaderVisibility = visibility;
173 CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
174 }
175
176 static inline void InitAsConstants(
177 _Out_ D3D12_ROOT_PARAMETER &rootParam,
178 UINT num32BitValues,
179 UINT shaderRegister,
180 UINT registerSpace = 0,
181 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
182 {
183 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
184 rootParam.ShaderVisibility = visibility;
185 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
186 }
187
188 static inline void InitAsConstantBufferView(
189 _Out_ D3D12_ROOT_PARAMETER &rootParam,
190 UINT shaderRegister,
191 UINT registerSpace = 0,
192 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
193 {
194 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
195 rootParam.ShaderVisibility = visibility;
196 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
197 }
198
199 static inline void InitAsShaderResourceView(
200 _Out_ D3D12_ROOT_PARAMETER &rootParam,
201 UINT shaderRegister,
202 UINT registerSpace = 0,
203 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
204 {
205 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
206 rootParam.ShaderVisibility = visibility;
207 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
208 }
209
210 static inline void InitAsUnorderedAccessView(
211 _Out_ D3D12_ROOT_PARAMETER &rootParam,
212 UINT shaderRegister,
213 UINT registerSpace = 0,
214 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
215 {
216 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
217 rootParam.ShaderVisibility = visibility;
218 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
219 }
220
221 inline void InitAsDescriptorTable(
222 UINT numDescriptorRanges,
223 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
224 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
225 {
226 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
227 }
228
229 inline void InitAsConstants(
230 UINT num32BitValues,
231 UINT shaderRegister,
232 UINT registerSpace = 0,
233 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
234 {
235 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
236 }
237
238 inline void InitAsConstantBufferView(
239 UINT shaderRegister,
240 UINT registerSpace = 0,
241 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
242 {
243 InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
244 }
245
246 inline void InitAsShaderResourceView(
247 UINT shaderRegister,
248 UINT registerSpace = 0,
249 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
250 {
251 InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
252 }
253
254 inline void InitAsUnorderedAccessView(
255 UINT shaderRegister,
256 UINT registerSpace = 0,
257 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
258 {
259 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
260 }
261};
262
263//------------------------------------------------------------------------------------------------
264struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
265{
266 CD3DX12_STATIC_SAMPLER_DESC() = default;
267 explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) noexcept :
268 D3D12_STATIC_SAMPLER_DESC(o)
269 {}
270 CD3DX12_STATIC_SAMPLER_DESC(
271 UINT shaderRegister,
272 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
273 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
274 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
275 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
276 FLOAT mipLODBias = 0,
277 UINT maxAnisotropy = 16,
278 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
279 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
280 FLOAT minLOD = 0.f,
281 FLOAT maxLOD = D3D12_FLOAT32_MAX,
282 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
283 UINT registerSpace = 0) noexcept
284 {
285 Init(
286 shaderRegister,
287 filter,
288 addressU,
289 addressV,
290 addressW,
291 mipLODBias,
292 maxAnisotropy,
293 comparisonFunc,
294 borderColor,
295 minLOD,
296 maxLOD,
297 shaderVisibility,
298 registerSpace);
299 }
300
301 static inline void Init(
302 _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc,
303 UINT shaderRegister,
304 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
305 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
306 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
307 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
308 FLOAT mipLODBias = 0,
309 UINT maxAnisotropy = 16,
310 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
311 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
312 FLOAT minLOD = 0.f,
313 FLOAT maxLOD = D3D12_FLOAT32_MAX,
314 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
315 UINT registerSpace = 0) noexcept
316 {
317 samplerDesc.ShaderRegister = shaderRegister;
318 samplerDesc.Filter = filter;
319 samplerDesc.AddressU = addressU;
320 samplerDesc.AddressV = addressV;
321 samplerDesc.AddressW = addressW;
322 samplerDesc.MipLODBias = mipLODBias;
323 samplerDesc.MaxAnisotropy = maxAnisotropy;
324 samplerDesc.ComparisonFunc = comparisonFunc;
325 samplerDesc.BorderColor = borderColor;
326 samplerDesc.MinLOD = minLOD;
327 samplerDesc.MaxLOD = maxLOD;
328 samplerDesc.ShaderVisibility = shaderVisibility;
329 samplerDesc.RegisterSpace = registerSpace;
330 }
331 inline void Init(
332 UINT shaderRegister,
333 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
334 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
335 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
336 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
337 FLOAT mipLODBias = 0,
338 UINT maxAnisotropy = 16,
339 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
340 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
341 FLOAT minLOD = 0.f,
342 FLOAT maxLOD = D3D12_FLOAT32_MAX,
343 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
344 UINT registerSpace = 0) noexcept
345 {
346 Init(
347 *this,
348 shaderRegister,
349 filter,
350 addressU,
351 addressV,
352 addressW,
353 mipLODBias,
354 maxAnisotropy,
355 comparisonFunc,
356 borderColor,
357 minLOD,
358 maxLOD,
359 shaderVisibility,
360 registerSpace);
361 }
362};
363
364//------------------------------------------------------------------------------------------------
365#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
366struct CD3DX12_STATIC_SAMPLER_DESC1 : public D3D12_STATIC_SAMPLER_DESC1
367{
368 CD3DX12_STATIC_SAMPLER_DESC1() = default;
369 explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC &o) noexcept
370 {
371 memcpy(this, &o, sizeof(D3D12_STATIC_SAMPLER_DESC));
372 Flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE;
373 }
374 explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC1 & o) noexcept :
375 D3D12_STATIC_SAMPLER_DESC1(o)
376 {}
377 CD3DX12_STATIC_SAMPLER_DESC1(
378 UINT shaderRegister,
379 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
380 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
381 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
382 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
383 FLOAT mipLODBias = 0,
384 UINT maxAnisotropy = 16,
385 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
386 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
387 FLOAT minLOD = 0.f,
388 FLOAT maxLOD = D3D12_FLOAT32_MAX,
389 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
390 UINT registerSpace = 0,
391 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
392 {
393 Init(
394 shaderRegister,
395 filter,
396 addressU,
397 addressV,
398 addressW,
399 mipLODBias,
400 maxAnisotropy,
401 comparisonFunc,
402 borderColor,
403 minLOD,
404 maxLOD,
405 shaderVisibility,
406 registerSpace,
407 flags);
408 }
409
410 static inline void Init(
411 _Out_ D3D12_STATIC_SAMPLER_DESC1 &samplerDesc,
412 UINT shaderRegister,
413 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
414 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
415 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
416 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
417 FLOAT mipLODBias = 0,
418 UINT maxAnisotropy = 16,
419 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
420 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
421 FLOAT minLOD = 0.f,
422 FLOAT maxLOD = D3D12_FLOAT32_MAX,
423 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
424 UINT registerSpace = 0,
425 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
426 {
427 samplerDesc.ShaderRegister = shaderRegister;
428 samplerDesc.Filter = filter;
429 samplerDesc.AddressU = addressU;
430 samplerDesc.AddressV = addressV;
431 samplerDesc.AddressW = addressW;
432 samplerDesc.MipLODBias = mipLODBias;
433 samplerDesc.MaxAnisotropy = maxAnisotropy;
434 samplerDesc.ComparisonFunc = comparisonFunc;
435 samplerDesc.BorderColor = borderColor;
436 samplerDesc.MinLOD = minLOD;
437 samplerDesc.MaxLOD = maxLOD;
438 samplerDesc.ShaderVisibility = shaderVisibility;
439 samplerDesc.RegisterSpace = registerSpace;
440 samplerDesc.Flags = flags;
441 }
442 inline void Init(
443 UINT shaderRegister,
444 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
445 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
446 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
447 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
448 FLOAT mipLODBias = 0,
449 UINT maxAnisotropy = 16,
450 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
451 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
452 FLOAT minLOD = 0.f,
453 FLOAT maxLOD = D3D12_FLOAT32_MAX,
454 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
455 UINT registerSpace = 0,
456 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
457 {
458 Init(
459 *this,
460 shaderRegister,
461 filter,
462 addressU,
463 addressV,
464 addressW,
465 mipLODBias,
466 maxAnisotropy,
467 comparisonFunc,
468 borderColor,
469 minLOD,
470 maxLOD,
471 shaderVisibility,
472 registerSpace,
473 flags);
474 }
475};
476#endif // D3D12_SDK_VERSION >= 609
477
478//------------------------------------------------------------------------------------------------
479struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
480{
481 CD3DX12_ROOT_SIGNATURE_DESC() = default;
482 explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept :
483 D3D12_ROOT_SIGNATURE_DESC(o)
484 {}
485 CD3DX12_ROOT_SIGNATURE_DESC(
486 UINT numParameters,
487 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
488 UINT numStaticSamplers = 0,
489 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
490 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
491 {
492 Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
493 }
494 CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
495 {
496 Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
497 }
498
499 inline void Init(
500 UINT numParameters,
501 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
502 UINT numStaticSamplers = 0,
503 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
504 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
505 {
506 Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
507 }
508
509 static inline void Init(
510 _Out_ D3D12_ROOT_SIGNATURE_DESC &desc,
511 UINT numParameters,
512 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
513 UINT numStaticSamplers = 0,
514 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
515 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
516 {
517 desc.NumParameters = numParameters;
518 desc.pParameters = _pParameters;
519 desc.NumStaticSamplers = numStaticSamplers;
520 desc.pStaticSamplers = _pStaticSamplers;
521 desc.Flags = flags;
522 }
523};
524
525//------------------------------------------------------------------------------------------------
526struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1
527{
528 CD3DX12_DESCRIPTOR_RANGE1() = default;
529 explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) noexcept :
530 D3D12_DESCRIPTOR_RANGE1(o)
531 {}
532 CD3DX12_DESCRIPTOR_RANGE1(
533 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
534 UINT numDescriptors,
535 UINT baseShaderRegister,
536 UINT registerSpace = 0,
537 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
538 UINT offsetInDescriptorsFromTableStart =
539 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
540 {
541 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
542 }
543
544 inline void Init(
545 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
546 UINT numDescriptors,
547 UINT baseShaderRegister,
548 UINT registerSpace = 0,
549 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
550 UINT offsetInDescriptorsFromTableStart =
551 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
552 {
553 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
554 }
555
556 static inline void Init(
557 _Out_ D3D12_DESCRIPTOR_RANGE1 &range,
558 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
559 UINT numDescriptors,
560 UINT baseShaderRegister,
561 UINT registerSpace = 0,
562 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
563 UINT offsetInDescriptorsFromTableStart =
564 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
565 {
566 range.RangeType = rangeType;
567 range.NumDescriptors = numDescriptors;
568 range.BaseShaderRegister = baseShaderRegister;
569 range.RegisterSpace = registerSpace;
570 range.Flags = flags;
571 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
572 }
573};
574
575//------------------------------------------------------------------------------------------------
576struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1
577{
578 CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default;
579 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) noexcept :
580 D3D12_ROOT_DESCRIPTOR_TABLE1(o)
581 {}
582 CD3DX12_ROOT_DESCRIPTOR_TABLE1(
583 UINT numDescriptorRanges,
584 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
585 {
586 Init(numDescriptorRanges, _pDescriptorRanges);
587 }
588
589 inline void Init(
590 UINT numDescriptorRanges,
591 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
592 {
593 Init(*this, numDescriptorRanges, _pDescriptorRanges);
594 }
595
596 static inline void Init(
597 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable,
598 UINT numDescriptorRanges,
599 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
600 {
601 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
602 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
603 }
604};
605
606//------------------------------------------------------------------------------------------------
607struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1
608{
609 CD3DX12_ROOT_DESCRIPTOR1() = default;
610 explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) noexcept :
611 D3D12_ROOT_DESCRIPTOR1(o)
612 {}
613 CD3DX12_ROOT_DESCRIPTOR1(
614 UINT shaderRegister,
615 UINT registerSpace = 0,
616 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
617 {
618 Init(shaderRegister, registerSpace, flags);
619 }
620
621 inline void Init(
622 UINT shaderRegister,
623 UINT registerSpace = 0,
624 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
625 {
626 Init(*this, shaderRegister, registerSpace, flags);
627 }
628
629 static inline void Init(
630 _Out_ D3D12_ROOT_DESCRIPTOR1 &table,
631 UINT shaderRegister,
632 UINT registerSpace = 0,
633 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
634 {
635 table.ShaderRegister = shaderRegister;
636 table.RegisterSpace = registerSpace;
637 table.Flags = flags;
638 }
639};
640
641//------------------------------------------------------------------------------------------------
642struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1
643{
644 CD3DX12_ROOT_PARAMETER1() = default;
645 explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) noexcept :
646 D3D12_ROOT_PARAMETER1(o)
647 {}
648
649 static inline void InitAsDescriptorTable(
650 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
651 UINT numDescriptorRanges,
652 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
653 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
654 {
655 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
656 rootParam.ShaderVisibility = visibility;
657 CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
658 }
659
660 static inline void InitAsConstants(
661 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
662 UINT num32BitValues,
663 UINT shaderRegister,
664 UINT registerSpace = 0,
665 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
666 {
667 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
668 rootParam.ShaderVisibility = visibility;
669 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
670 }
671
672 static inline void InitAsConstantBufferView(
673 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
674 UINT shaderRegister,
675 UINT registerSpace = 0,
676 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
677 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
678 {
679 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
680 rootParam.ShaderVisibility = visibility;
681 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
682 }
683
684 static inline void InitAsShaderResourceView(
685 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
686 UINT shaderRegister,
687 UINT registerSpace = 0,
688 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
689 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
690 {
691 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
692 rootParam.ShaderVisibility = visibility;
693 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
694 }
695
696 static inline void InitAsUnorderedAccessView(
697 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
698 UINT shaderRegister,
699 UINT registerSpace = 0,
700 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
701 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
702 {
703 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
704 rootParam.ShaderVisibility = visibility;
705 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
706 }
707
708 inline void InitAsDescriptorTable(
709 UINT numDescriptorRanges,
710 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
711 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
712 {
713 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
714 }
715
716 inline void InitAsConstants(
717 UINT num32BitValues,
718 UINT shaderRegister,
719 UINT registerSpace = 0,
720 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
721 {
722 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
723 }
724
725 inline void InitAsConstantBufferView(
726 UINT shaderRegister,
727 UINT registerSpace = 0,
728 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
729 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
730 {
731 InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility);
732 }
733
734 inline void InitAsShaderResourceView(
735 UINT shaderRegister,
736 UINT registerSpace = 0,
737 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
738 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
739 {
740 InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility);
741 }
742
743 inline void InitAsUnorderedAccessView(
744 UINT shaderRegister,
745 UINT registerSpace = 0,
746 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
747 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
748 {
749 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility);
750 }
751};
752
753//------------------------------------------------------------------------------------------------
754struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC
755{
756 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default;
757 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) noexcept :
758 D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o)
759 {}
760 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept
761 {
762 Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
763 Desc_1_0 = o;
764 }
765 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) noexcept
766 {
767 Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
768 Desc_1_1 = o;
769 }
770#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
771 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC2& o) noexcept
772 {
773 Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
774 Desc_1_2 = o;
775 }
776#endif
777 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
778 UINT numParameters,
779 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
780 UINT numStaticSamplers = 0,
781 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
782 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
783 {
784 Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
785 }
786 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
787 UINT numParameters,
788 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
789 UINT numStaticSamplers = 0,
790 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
791 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
792 {
793 Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
794 }
795 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
796 {
797 Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
798 }
799
800 inline void Init_1_0(
801 UINT numParameters,
802 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
803 UINT numStaticSamplers = 0,
804 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
805 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
806 {
807 Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
808 }
809
810 static inline void Init_1_0(
811 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
812 UINT numParameters,
813 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
814 UINT numStaticSamplers = 0,
815 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
816 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
817 {
818 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
819 desc.Desc_1_0.NumParameters = numParameters;
820 desc.Desc_1_0.pParameters = _pParameters;
821 desc.Desc_1_0.NumStaticSamplers = numStaticSamplers;
822 desc.Desc_1_0.pStaticSamplers = _pStaticSamplers;
823 desc.Desc_1_0.Flags = flags;
824 }
825
826 inline void Init_1_1(
827 UINT numParameters,
828 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
829 UINT numStaticSamplers = 0,
830 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
831 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
832 {
833 Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
834 }
835
836 static inline void Init_1_1(
837 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
838 UINT numParameters,
839 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
840 UINT numStaticSamplers = 0,
841 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
842 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
843 {
844 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
845 desc.Desc_1_1.NumParameters = numParameters;
846 desc.Desc_1_1.pParameters = _pParameters;
847 desc.Desc_1_1.NumStaticSamplers = numStaticSamplers;
848 desc.Desc_1_1.pStaticSamplers = _pStaticSamplers;
849 desc.Desc_1_1.Flags = flags;
850 }
851
852#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
853 static inline void Init_1_2(
854 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC& desc,
855 UINT numParameters,
856 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
857 UINT numStaticSamplers = 0,
858 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1* _pStaticSamplers = nullptr,
859 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
860 {
861 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
862 desc.Desc_1_2.NumParameters = numParameters;
863 desc.Desc_1_2.pParameters = _pParameters;
864 desc.Desc_1_2.NumStaticSamplers = numStaticSamplers;
865 desc.Desc_1_2.pStaticSamplers = _pStaticSamplers;
866 desc.Desc_1_2.Flags = flags;
867 }
868#endif
869};
870
871//------------------------------------------------------------------------------------------------
872struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
873{
874 CD3DX12_CPU_DESCRIPTOR_HANDLE() = default;
875 explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) noexcept :
876 D3D12_CPU_DESCRIPTOR_HANDLE(o)
877 {}
878 CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
879 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
880 {
881 InitOffsetted(other, offsetScaledByIncrementSize);
882 }
883 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
884 {
885 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
886 }
887 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
888 {
889 ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
890 return *this;
891 }
892 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
893 {
894 ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize));
895 return *this;
896 }
897 bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
898 {
899 return (ptr == other.ptr);
900 }
901 bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
902 {
903 return (ptr != other.ptr);
904 }
905 CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) noexcept
906 {
907 ptr = other.ptr;
908 return *this;
909 }
910
911 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
912 {
913 InitOffsetted(*this, base, offsetScaledByIncrementSize);
914 }
915
916 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
917 {
918 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
919 }
920
921 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
922 {
923 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
924 }
925
926 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
927 {
928 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
929 }
930};
931
932//------------------------------------------------------------------------------------------------
933struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
934{
935 CD3DX12_GPU_DESCRIPTOR_HANDLE() = default;
936 explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) noexcept :
937 D3D12_GPU_DESCRIPTOR_HANDLE(o)
938 {}
939 CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
940 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
941 {
942 InitOffsetted(other, offsetScaledByIncrementSize);
943 }
944 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
945 {
946 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
947 }
948 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
949 {
950 ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
951 return *this;
952 }
953 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
954 {
955 ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize));
956 return *this;
957 }
958 inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
959 {
960 return (ptr == other.ptr);
961 }
962 inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
963 {
964 return (ptr != other.ptr);
965 }
966 CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) noexcept
967 {
968 ptr = other.ptr;
969 return *this;
970 }
971
972 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
973 {
974 InitOffsetted(*this, base, offsetScaledByIncrementSize);
975 }
976
977 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
978 {
979 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
980 }
981
982 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
983 {
984 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
985 }
986
987 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
988 {
989 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
990 }
991};
992
993//------------------------------------------------------------------------------------------------
994// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update.
995// To help enable root signature 1.1 features when they are available and not require maintaining
996// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
997// 1.1 is not supported.
998#ifdef __clang__
999#pragma clang diagnostic push
1000#pragma clang diagnostic ignored "-Wcovered-switch-default"
1001#endif
1002
1003inline HRESULT D3DX12SerializeVersionedRootSignature(
1004 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
1005 D3D_ROOT_SIGNATURE_VERSION MaxVersion,
1006 _Outptr_ ID3DBlob** ppBlob,
1007 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) noexcept
1008{
1009 if (ppErrorBlob != nullptr)
1010 {
1011 *ppErrorBlob = nullptr;
1012 }
1013
1014 switch (MaxVersion)
1015 {
1016 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1017 switch (pRootSignatureDesc->Version)
1018 {
1019 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1020 return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
1021
1022 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1023#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1024 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1025#endif
1026 {
1027 HRESULT hr = S_OK;
1028 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
1029
1030 const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters;
1031 void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr;
1032 if (ParametersSize > 0 && pParameters == nullptr)
1033 {
1034 hr = E_OUTOFMEMORY;
1035 }
1036 auto pParameters_1_0 = static_cast<D3D12_ROOT_PARAMETER*>(pParameters);
1037
1038 if (SUCCEEDED(hr))
1039 {
1040 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
1041 {
1042 __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters);
1043 pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType;
1044 pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility;
1045
1046 switch (desc_1_1.pParameters[n].ParameterType)
1047 {
1048 case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS:
1049 pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues;
1050 pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace;
1051 pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister;
1052 break;
1053
1054 case D3D12_ROOT_PARAMETER_TYPE_CBV:
1055 case D3D12_ROOT_PARAMETER_TYPE_SRV:
1056 case D3D12_ROOT_PARAMETER_TYPE_UAV:
1057 pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace;
1058 pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister;
1059 break;
1060
1061 case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
1062 {
1063 const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
1064
1065 const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
1066 void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
1067 if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
1068 {
1069 hr = E_OUTOFMEMORY;
1070 }
1071 auto pDescriptorRanges_1_0 = static_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges);
1072
1073 if (SUCCEEDED(hr))
1074 {
1075 for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
1076 {
1077 __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
1078 pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
1079 pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
1080 pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
1081 pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
1082 pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
1083 }
1084 }
1085
1086 D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
1087 table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
1088 table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
1089 }
1090 break;
1091
1092 default:
1093 break;
1094 }
1095 }
1096 }
1097
1098 D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
1099#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1100 if (desc_1_1.NumStaticSamplers > 0 && pRootSignatureDesc->Version == D3D_ROOT_SIGNATURE_VERSION_1_2)
1101 {
1102 const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
1103 pStaticSamplers = static_cast<D3D12_STATIC_SAMPLER_DESC*>(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
1104
1105 if (pStaticSamplers == nullptr)
1106 {
1107 hr = E_OUTOFMEMORY;
1108 }
1109 else
1110 {
1111 const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
1112 for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
1113 {
1114 if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
1115 {
1116 hr = E_INVALIDARG;
1117 break;
1118 }
1119 memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
1120 }
1121 }
1122 }
1123#endif
1124
1125 if (SUCCEEDED(hr))
1126 {
1127 const CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
1128 hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
1129 }
1130
1131 if (pParameters)
1132 {
1133 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
1134 {
1135 if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
1136 {
1137 auto pDescriptorRanges_1_0 = pParameters_1_0[n].DescriptorTable.pDescriptorRanges;
1138 HeapFree(GetProcessHeap(), 0, reinterpret_cast<void*>(const_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges_1_0)));
1139 }
1140 }
1141 HeapFree(GetProcessHeap(), 0, pParameters);
1142 }
1143
1144 if (pStaticSamplers)
1145 {
1146 HeapFree(GetProcessHeap(), 0, pStaticSamplers);
1147 }
1148
1149 return hr;
1150 }
1151
1152 default:
1153 break;
1154 }
1155 break;
1156
1157 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1158 switch (pRootSignatureDesc->Version)
1159 {
1160 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1161 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1162 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
1163
1164#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1165 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1166 {
1167 HRESULT hr = S_OK;
1168 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
1169
1170 D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
1171 if (desc_1_1.NumStaticSamplers > 0)
1172 {
1173 const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
1174 pStaticSamplers = static_cast<D3D12_STATIC_SAMPLER_DESC*>(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
1175
1176 if (pStaticSamplers == nullptr)
1177 {
1178 hr = E_OUTOFMEMORY;
1179 }
1180 else
1181 {
1182 const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
1183 for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
1184 {
1185 if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
1186 {
1187 hr = E_INVALIDARG;
1188 break;
1189 }
1190 memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
1191 }
1192 }
1193 }
1194
1195 if (SUCCEEDED(hr))
1196 {
1197 const CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC desc(desc_1_1.NumParameters, desc_1_1.pParameters, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
1198 hr = D3D12SerializeVersionedRootSignature(&desc, ppBlob, ppErrorBlob);
1199 }
1200
1201 if (pStaticSamplers)
1202 {
1203 HeapFree(GetProcessHeap(), 0, pStaticSamplers);
1204 }
1205
1206 return hr;
1207 }
1208#endif
1209
1210 default:
1211 break;
1212 }
1213 break;
1214
1215#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1216 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1217#endif
1218 default:
1219 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
1220 }
1221
1222 return E_INVALIDARG;
1223}
1224
1225#ifdef __clang__
1226#pragma clang diagnostic pop
1227#endif
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_state_object.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_state_object.h
new file mode 100644
index 0000000..579ecc8
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/d3dx12/d3dx12_state_object.h
@@ -0,0 +1,2570 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_default.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17
18//================================================================================================
19// D3DX12 State Object Creation Helpers
20//
21// Helper classes for creating new style state objects out of an arbitrary set of subobjects.
22// Uses STL
23//
24// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see its public methods).
25// One of its methods is CreateSubobject(), which has a comment showing a couple of options for
26// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT
27// etc.). The subobject helpers each have methods specific to the subobject for configuring its
28// contents.
29//
30//================================================================================================
31#include <list>
32#include <forward_list>
33#include <vector>
34#include <memory>
35#include <string>
36#include <vector>
37#ifndef D3DX12_USE_ATL
38#include <wrl/client.h>
39#define D3DX12_COM_PTR Microsoft::WRL::ComPtr
40#define D3DX12_COM_PTR_GET(x) x.Get()
41#define D3DX12_COM_PTR_ADDRESSOF(x) x.GetAddressOf()
42#else
43#include <atlbase.h>
44#define D3DX12_COM_PTR ATL::CComPtr
45#define D3DX12_COM_PTR_GET(x) x.p
46#define D3DX12_COM_PTR_ADDRESSOF(x) &x.p
47#endif
48
49//------------------------------------------------------------------------------------------------
50class CD3DX12_STATE_OBJECT_DESC
51{
52public:
53 CD3DX12_STATE_OBJECT_DESC() noexcept
54 {
55 Init(D3D12_STATE_OBJECT_TYPE_COLLECTION);
56 }
57 CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) noexcept
58 {
59 Init(Type);
60 }
61 void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
62 CD3DX12_STATE_OBJECT_DESC(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
63 CD3DX12_STATE_OBJECT_DESC& operator=(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
64 CD3DX12_STATE_OBJECT_DESC(CD3DX12_STATE_OBJECT_DESC&& other) = default;
65 CD3DX12_STATE_OBJECT_DESC& operator=(CD3DX12_STATE_OBJECT_DESC&& other) = default;
66 operator const D3D12_STATE_OBJECT_DESC& ()
67 {
68#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
69 m_RepointedSubobjectVectors.clear();
70 m_RepointedPrograms.clear();
71#endif
72 m_RepointedAssociations.clear();
73 m_SubobjectArray.clear();
74 m_SubobjectArray.reserve(m_Desc.NumSubobjects);
75 // Flatten subobjects into an array (each flattened subobject still has a
76 // member that's a pointer to its desc that's not flattened)
77 for (auto Iter = m_SubobjectList.begin();
78 Iter != m_SubobjectList.end(); Iter++)
79 {
80 m_SubobjectArray.push_back(*Iter);
81 // Store new location in array so we can redirect pointers contained in subobjects
82 Iter->pSubobjectArrayLocation = &m_SubobjectArray.back();
83 }
84 // For subobjects with pointer fields, create a new copy of those subobject definitions
85 // with fixed pointers
86 for (UINT i = 0; i < m_Desc.NumSubobjects; i++)
87 {
88 if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
89 {
90 auto pOriginalSubobjectAssociation =
91 static_cast<const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION*>(m_SubobjectArray[i].pDesc);
92 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation;
93 auto pWrapper =
94 static_cast<const SUBOBJECT_WRAPPER*>(pOriginalSubobjectAssociation->pSubobjectToAssociate);
95 Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation;
96 m_RepointedAssociations.push_back(Repointed);
97 m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
98 }
99#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
100 else if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM)
101 {
102 auto originalGenericProgramDesc =
103 static_cast<const D3D12_GENERIC_PROGRAM_DESC*>(m_SubobjectArray[i].pDesc);
104 D3D12_GENERIC_PROGRAM_DESC Repointed = *originalGenericProgramDesc;
105 if (originalGenericProgramDesc->NumSubobjects > 0)
106 {
107 m_RepointedSubobjectVectors.emplace_back(std::vector<const D3D12_STATE_SUBOBJECT*>());
108 std::vector<D3D12_STATE_SUBOBJECT const*>& repointedGenericProgramSubobjects = m_RepointedSubobjectVectors.back();
109 repointedGenericProgramSubobjects.resize(originalGenericProgramDesc->NumSubobjects);
110 for (UINT s = 0; s < originalGenericProgramDesc->NumSubobjects; s++)
111 {
112 auto pWrapper =
113 static_cast<const SUBOBJECT_WRAPPER*>(originalGenericProgramDesc->ppSubobjects[s]);
114 repointedGenericProgramSubobjects[s] = pWrapper->pSubobjectArrayLocation;
115 }
116 // Below: using ugly way to get pointer in case .data() is not defined
117 Repointed.ppSubobjects = &repointedGenericProgramSubobjects[0];
118 }
119 m_RepointedPrograms.push_back(Repointed);
120 m_SubobjectArray[i].pDesc = &m_RepointedPrograms.back();
121 }
122#endif
123 }
124 // Below: using ugly way to get pointer in case .data() is not defined
125 m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
126 return m_Desc;
127 }
128 operator const D3D12_STATE_OBJECT_DESC* ()
129 {
130 // Cast calls the above final preparation work
131 return &static_cast<const D3D12_STATE_OBJECT_DESC&>(*this);
132 }
133
134 // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT)
135 // whose lifetime is owned by this class.
136 // e.g.
137 //
138 // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
139 // auto Lib0 = Collection1.CreateSubobject<CD3DX12_DXIL_LIBRARY_SUBOBJECT>();
140 // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
141 // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be
142 // // data/engine driven
143 // etc.
144 //
145 // Alternatively, users can instantiate sububject helpers explicitly, such as via local
146 // variables instead, passing the state object desc that should point to it into the helper
147 // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)).
148 // In this alternative scenario, the user must keep the subobject alive as long as the state
149 // object it is associated with is alive, else its pointer references will be stale.
150 // e.g.
151 //
152 // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
153 // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
154 // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports
155 // // - meaning all exports in the libraries
156 // // are exported
157 // etc.
158
159 template<typename T>
160 T* CreateSubobject()
161 {
162 T* pSubobject = new T(*this);
163 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
164 return pSubobject;
165 }
166
167 template<typename T, typename U>
168 T* CreateSubobject(U&& arg)
169 {
170 T* pSubobject = new T(std::forward<U>(arg), *this);
171 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
172 return pSubobject;
173 }
174
175private:
176 D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
177 {
178 SUBOBJECT_WRAPPER Subobject;
179 Subobject.pSubobjectArrayLocation = nullptr;
180 Subobject.Type = Type;
181 Subobject.pDesc = pDesc;
182 m_SubobjectList.push_back(Subobject);
183 m_Desc.NumSubobjects++;
184 return &m_SubobjectList.back();
185 }
186 void Init(D3D12_STATE_OBJECT_TYPE Type) noexcept
187 {
188 SetStateObjectType(Type);
189 m_Desc.pSubobjects = nullptr;
190 m_Desc.NumSubobjects = 0;
191 m_SubobjectList.clear();
192 m_SubobjectArray.clear();
193 m_RepointedAssociations.clear();
194#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
195 m_RepointedSubobjectVectors.clear();
196 m_RepointedPrograms.clear();
197#endif
198 }
199 typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
200 {
201 D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array
202 // for repointing pointers in subobjects
203 } SUBOBJECT_WRAPPER;
204 D3D12_STATE_OBJECT_DESC m_Desc;
205 std::list<SUBOBJECT_WRAPPER> m_SubobjectList; // Pointers to list nodes handed out so
206 // these can be edited live
207 std::vector<D3D12_STATE_SUBOBJECT> m_SubobjectArray; // Built at the end, copying list contents
208
209 std::list<D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION>
210 m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
211 // repointed to flattened array
212
213#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
214 std::list<std::vector<D3D12_STATE_SUBOBJECT const*>>
215 m_RepointedSubobjectVectors;
216 std::list<D3D12_GENERIC_PROGRAM_DESC>
217 m_RepointedPrograms;
218#endif
219
220 template<typename CStr, typename StdStr>
221 class StringContainer
222 {
223 public:
224 CStr LocalCopy(CStr string, bool bSingleString = false)
225 {
226 if (string)
227 {
228 if (bSingleString)
229 {
230 m_Strings.clear();
231 m_Strings.push_back(string);
232 }
233 else
234 {
235 m_Strings.push_back(string);
236 }
237 return m_Strings.back().c_str();
238 }
239 else
240 {
241 return nullptr;
242 }
243 }
244 void clear() noexcept { m_Strings.clear(); }
245 private:
246 std::list<StdStr> m_Strings;
247 };
248
249public:
250 class SUBOBJECT_HELPER_BASE
251 {
252 public:
253 SUBOBJECT_HELPER_BASE() noexcept { Init(); }
254 virtual ~SUBOBJECT_HELPER_BASE() = default;
255 virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
256 SUBOBJECT_HELPER_BASE(const SUBOBJECT_HELPER_BASE& other) = delete;
257 SUBOBJECT_HELPER_BASE& operator=(const SUBOBJECT_HELPER_BASE& other) = delete;
258 SUBOBJECT_HELPER_BASE(SUBOBJECT_HELPER_BASE&& other) = default;
259 SUBOBJECT_HELPER_BASE& operator=(SUBOBJECT_HELPER_BASE&& other) = default;
260 void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
261 {
262 m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
263 }
264 operator const D3D12_STATE_SUBOBJECT& () const noexcept { return *m_pSubobject; }
265 protected:
266 virtual void* Data() noexcept = 0;
267 void Init() noexcept { m_pSubobject = nullptr; }
268 D3D12_STATE_SUBOBJECT* m_pSubobject;
269 };
270
271private:
272 std::list<std::unique_ptr<SUBOBJECT_HELPER_BASE>> m_OwnedSubobjectHelpers;
273
274 friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
275 friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
276 friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT;
277 friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
278 friend class CD3DX12_HIT_GROUP_SUBOBJECT;
279 friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
280 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
281 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
282 friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
283 friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
284 friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
285 friend class CD3DX12_NODE_MASK_SUBOBJECT;
286 //TODO: SDK Version check should include all the newly added subobject type for the public release.
287 // The SDK version check will be changed based on when we release state objects.
288#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
289 friend class CD3DX12_GENERIC_PROGRAM_SUBOBJECT;
290 friend class CD3DX12_WORK_GRAPH_SUBOBJECT;
291 friend class CD3DX12_STREAM_OUTPUT_SUBOBJECT;
292 friend class CD3DX12_BLEND_SUBOBJECT;
293 friend class CD3DX12_RASTERIZER_SUBOBJECT;
294 friend class CD3DX12_DEPTH_STENCIL2_SUBOBJECT;
295 friend class CD3DX12_INPUT_LAYOUT_SUBOBJECT;
296 friend class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT;
297 friend class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT;
298 friend class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT;
299 friend class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT;
300 friend class CD3DX12_SAMPLE_DESC_SUBOBJECT;
301 friend class CD3DX12_FLAGS_SUBOBJECT;
302 friend class CD3DX12_VIEW_INSTANCING_SUBOBJECT;
303 friend class CD3DX12_DEPTH_STENCIL_SUBOBJECT;
304 friend class CD3DX12_DEPTH_STENCIL1_SUBOBJECT;
305 friend class CD3DX12_SAMPLE_MASK_SUBOBJECT;
306 friend class CD3DX12_NODE_OUTPUT_OVERRIDES;
307 friend class CD3DX12_NODE_HELPER_BASE;
308 friend class CD3DX12_SHADER_NODE;
309 friend class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES;
310 friend class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES;
311 friend class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES;
312 friend class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES;
313#endif // D3D12_SDK_VERSION >= 612
314#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
315 friend class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
316 friend class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
317 friend class CD3DX12_COMPILER_EXISTING_COLLECTION_SUBOBJECT;
318 friend class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT;
319#endif
320};
321
322//------------------------------------------------------------------------------------------------
323class CD3DX12_DXIL_LIBRARY_SUBOBJECT
324 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
325{
326public:
327 CD3DX12_DXIL_LIBRARY_SUBOBJECT() noexcept
328 {
329 Init();
330 }
331 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
332 {
333 Init();
334 AddToStateObject(ContainingStateObject);
335 }
336 CD3DX12_DXIL_LIBRARY_SUBOBJECT(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
337 CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
338 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
339 CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
340 void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
341 {
342 static const D3D12_SHADER_BYTECODE Default = {};
343 m_Desc.DXILLibrary = pCode ? *pCode : Default;
344 }
345 void DefineExport(
346 LPCWSTR Name,
347 LPCWSTR ExportToRename = nullptr,
348 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
349 {
350 D3D12_EXPORT_DESC Export;
351 Export.Name = m_Strings.LocalCopy(Name);
352 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
353 Export.Flags = Flags;
354 m_Exports.push_back(Export);
355 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
356 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
357 }
358 template<size_t N>
359 void DefineExports(LPCWSTR(&Exports)[N])
360 {
361 for (UINT i = 0; i < N; i++)
362 {
363 DefineExport(Exports[i]);
364 }
365 }
366 void DefineExports(const LPCWSTR* Exports, UINT N)
367 {
368 for (UINT i = 0; i < N; i++)
369 {
370 DefineExport(Exports[i]);
371 }
372 }
373 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
374 {
375 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
376 }
377 operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
378private:
379 void Init() noexcept
380 {
381 SUBOBJECT_HELPER_BASE::Init();
382 m_Desc = {};
383 m_Strings.clear();
384 m_Exports.clear();
385 }
386 void* Data() noexcept override { return &m_Desc; }
387 D3D12_DXIL_LIBRARY_DESC m_Desc;
388 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
389 std::vector<D3D12_EXPORT_DESC> m_Exports;
390};
391
392//------------------------------------------------------------------------------------------------
393class CD3DX12_EXISTING_COLLECTION_SUBOBJECT
394 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
395{
396public:
397 CD3DX12_EXISTING_COLLECTION_SUBOBJECT() noexcept
398 {
399 Init();
400 }
401 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
402 {
403 Init();
404 AddToStateObject(ContainingStateObject);
405 }
406 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
407 CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
408 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
409 CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
410 void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
411 {
412 m_Desc.pExistingCollection = pExistingCollection;
413 m_CollectionRef = pExistingCollection;
414 }
415 void DefineExport(
416 LPCWSTR Name,
417 LPCWSTR ExportToRename = nullptr,
418 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
419 {
420 D3D12_EXPORT_DESC Export;
421 Export.Name = m_Strings.LocalCopy(Name);
422 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
423 Export.Flags = Flags;
424 m_Exports.push_back(Export);
425 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
426 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
427 }
428 template<size_t N>
429 void DefineExports(LPCWSTR(&Exports)[N])
430 {
431 for (UINT i = 0; i < N; i++)
432 {
433 DefineExport(Exports[i]);
434 }
435 }
436 void DefineExports(const LPCWSTR* Exports, UINT N)
437 {
438 for (UINT i = 0; i < N; i++)
439 {
440 DefineExport(Exports[i]);
441 }
442 }
443 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
444 {
445 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
446 }
447 operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
448private:
449 void Init() noexcept
450 {
451 SUBOBJECT_HELPER_BASE::Init();
452 m_Desc = {};
453 m_CollectionRef = nullptr;
454 m_Strings.clear();
455 m_Exports.clear();
456 }
457 void* Data() noexcept override { return &m_Desc; }
458 D3D12_EXISTING_COLLECTION_DESC m_Desc;
459 D3DX12_COM_PTR<ID3D12StateObject> m_CollectionRef;
460 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
461 std::vector<D3D12_EXPORT_DESC> m_Exports;
462};
463
464//------------------------------------------------------------------------------------------------
465class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT
466 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
467{
468public:
469 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() noexcept
470 {
471 Init();
472 }
473 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
474 {
475 Init();
476 AddToStateObject(ContainingStateObject);
477 }
478 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
479 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
480 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
481 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
482 void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
483 {
484 m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
485 }
486 void AddExport(LPCWSTR Export)
487 {
488 m_Desc.NumExports++;
489 m_Exports.push_back(m_Strings.LocalCopy(Export));
490 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
491 }
492 template<size_t N>
493 void AddExports(LPCWSTR (&Exports)[N])
494 {
495 for (UINT i = 0; i < N; i++)
496 {
497 AddExport(Exports[i]);
498 }
499 }
500 void AddExports(const LPCWSTR* Exports, UINT N)
501 {
502 for (UINT i = 0; i < N; i++)
503 {
504 AddExport(Exports[i]);
505 }
506 }
507 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
508 {
509 return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
510 }
511 operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
512private:
513 void Init() noexcept
514 {
515 SUBOBJECT_HELPER_BASE::Init();
516 m_Desc = {};
517 m_Strings.clear();
518 m_Exports.clear();
519 }
520 void* Data() noexcept override { return &m_Desc; }
521 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
522 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
523 std::vector<LPCWSTR> m_Exports;
524};
525
526//------------------------------------------------------------------------------------------------
527class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
528 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
529{
530public:
531 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() noexcept
532 {
533 Init();
534 }
535 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
536 {
537 Init();
538 AddToStateObject(ContainingStateObject);
539 }
540 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
541 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
542 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
543 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
544 void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
545 {
546 m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
547 }
548 void AddExport(LPCWSTR Export)
549 {
550 m_Desc.NumExports++;
551 m_Exports.push_back(m_Strings.LocalCopy(Export));
552 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
553 }
554 template<size_t N>
555 void AddExports(LPCWSTR (&Exports)[N])
556 {
557 for (UINT i = 0; i < N; i++)
558 {
559 AddExport(Exports[i]);
560 }
561 }
562 void AddExports(const LPCWSTR* Exports, UINT N)
563 {
564 for (UINT i = 0; i < N; i++)
565 {
566 AddExport(Exports[i]);
567 }
568 }
569 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
570 {
571 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
572 }
573 operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
574private:
575 void Init() noexcept
576 {
577 SUBOBJECT_HELPER_BASE::Init();
578 m_Desc = {};
579 m_Strings.clear();
580 m_SubobjectName.clear();
581 m_Exports.clear();
582 }
583 void* Data() noexcept override { return &m_Desc; }
584 D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
585 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
586 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_SubobjectName;
587 std::vector<LPCWSTR> m_Exports;
588};
589
590//------------------------------------------------------------------------------------------------
591class CD3DX12_HIT_GROUP_SUBOBJECT
592 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
593{
594public:
595 CD3DX12_HIT_GROUP_SUBOBJECT() noexcept
596 {
597 Init();
598 }
599 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
600 {
601 Init();
602 AddToStateObject(ContainingStateObject);
603 }
604 CD3DX12_HIT_GROUP_SUBOBJECT(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
605 CD3DX12_HIT_GROUP_SUBOBJECT& operator=(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
606 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
607 CD3DX12_HIT_GROUP_SUBOBJECT& operator=(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
608 void SetHitGroupExport(LPCWSTR exportName)
609 {
610 m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
611 }
612 void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) noexcept { m_Desc.Type = Type; }
613 void SetAnyHitShaderImport(LPCWSTR importName)
614 {
615 m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true);
616 }
617 void SetClosestHitShaderImport(LPCWSTR importName)
618 {
619 m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true);
620 }
621 void SetIntersectionShaderImport(LPCWSTR importName)
622 {
623 m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true);
624 }
625 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
626 {
627 return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
628 }
629 operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
630private:
631 void Init() noexcept
632 {
633 SUBOBJECT_HELPER_BASE::Init();
634 m_Desc = {};
635 for (UINT i = 0; i < m_NumStrings; i++)
636 {
637 m_Strings[i].clear();
638 }
639 }
640 void* Data() noexcept override { return &m_Desc; }
641 D3D12_HIT_GROUP_DESC m_Desc;
642 static constexpr UINT m_NumStrings = 4;
643 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring>
644 m_Strings[m_NumStrings]; // one string for every entrypoint name
645};
646
647//------------------------------------------------------------------------------------------------
648class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
649 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
650{
651public:
652 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
653 : m_Desc({})
654 {
655 Init();
656 }
657 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
658 : m_Desc({})
659 {
660 Init();
661 AddToStateObject(ContainingStateObject);
662 }
663 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc)
664 : m_Desc(desc)
665 {
666 Init();
667 }
668 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
669 : m_Desc(desc)
670 {
671 Init();
672 AddToStateObject(ContainingStateObject);
673 }
674 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
675 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
676 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
677 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
678 void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
679 {
680 m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
681 m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes;
682 }
683 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
684 {
685 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
686 }
687 operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
688 operator D3D12_RAYTRACING_SHADER_CONFIG&() noexcept { return m_Desc; }
689private:
690 void Init() noexcept
691 {
692 SUBOBJECT_HELPER_BASE::Init();
693 }
694 void* Data() noexcept override { return &m_Desc; }
695 D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
696};
697
698//------------------------------------------------------------------------------------------------
699class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
700 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
701{
702public:
703 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
704 : m_Desc({})
705 {
706 Init();
707 }
708 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
709 : m_Desc({})
710 {
711 Init();
712 AddToStateObject(ContainingStateObject);
713 }
714 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc)
715 : m_Desc(desc)
716 {
717 Init();
718 }
719 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
720 : m_Desc(desc)
721 {
722 Init();
723 AddToStateObject(ContainingStateObject);
724 }
725 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
726 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
727 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
728 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
729 void Config(UINT MaxTraceRecursionDepth) noexcept
730 {
731 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
732 }
733 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
734 {
735 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
736 }
737 operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
738 operator D3D12_RAYTRACING_PIPELINE_CONFIG&() noexcept { return m_Desc; }
739private:
740 void Init() noexcept
741 {
742 SUBOBJECT_HELPER_BASE::Init();
743 }
744 void* Data() noexcept override { return &m_Desc; }
745 D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
746};
747
748//------------------------------------------------------------------------------------------------
749class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
750 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
751{
752public:
753 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
754 : m_Desc({})
755 {
756 Init();
757 }
758 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
759 : m_Desc({})
760 {
761 Init();
762 AddToStateObject(ContainingStateObject);
763 }
764 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc)
765 : m_Desc(desc)
766 {
767 Init();
768 }
769 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
770 : m_Desc(desc)
771 {
772 Init();
773 AddToStateObject(ContainingStateObject);
774 }
775 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
776 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
777 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
778 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
779 void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
780 {
781 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
782 m_Desc.Flags = Flags;
783 }
784 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
785 {
786 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
787 }
788 operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
789 operator D3D12_RAYTRACING_PIPELINE_CONFIG1&() noexcept { return m_Desc; }
790private:
791 void Init() noexcept
792 {
793 SUBOBJECT_HELPER_BASE::Init();
794 }
795 void* Data() noexcept override { return &m_Desc; }
796 D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
797};
798
799//------------------------------------------------------------------------------------------------
800class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
801 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
802{
803public:
804 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
805 {
806 Init();
807 }
808 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
809 {
810 Init();
811 AddToStateObject(ContainingStateObject);
812 }
813 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
814 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
815 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
816 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
817 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
818 {
819 m_pRootSig = pRootSig;
820 }
821 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
822 {
823 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
824 }
825 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
826private:
827 void Init() noexcept
828 {
829 SUBOBJECT_HELPER_BASE::Init();
830 m_pRootSig = nullptr;
831 }
832 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
833 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
834};
835
836
837//------------------------------------------------------------------------------------------------
838class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
839 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
840{
841public:
842 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
843 {
844 Init();
845 }
846 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
847 {
848 Init();
849 AddToStateObject(ContainingStateObject);
850 }
851 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
852 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
853 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
854 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
855 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
856 {
857 m_pRootSig = pRootSig;
858 }
859 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
860 {
861 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
862 }
863 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
864private:
865 void Init() noexcept
866 {
867 SUBOBJECT_HELPER_BASE::Init();
868 m_pRootSig = nullptr;
869 }
870 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
871 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
872};
873
874#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
875//------------------------------------------------------------------------------------------------
876class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
877 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
878{
879public:
880 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
881 : m_Desc({})
882 {
883 Init();
884 }
885 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
886 : m_Desc({})
887 {
888 Init();
889 AddToStateObject(ContainingStateObject);
890 }
891 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
892 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
893 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
894 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
895 void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
896 {
897 if (pDesc)
898 {
899 m_Desc.Desc = {};
900 m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
901 m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
902 }
903 }
904 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
905 {
906 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
907 }
908 operator const D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
909 operator D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
910private:
911 void Init() noexcept
912 {
913 SUBOBJECT_HELPER_BASE::Init();
914 m_Desc = {};
915 }
916 void* Data() noexcept override { return &m_Desc; }
917 D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
918};
919
920//------------------------------------------------------------------------------------------------
921class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
922 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
923{
924public:
925 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
926 : m_Desc({})
927 {
928 Init();
929 }
930 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
931 : m_Desc({})
932 {
933 Init();
934 AddToStateObject(ContainingStateObject);
935 }
936 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
937 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
938 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
939 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
940 void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
941 {
942 if (pDesc)
943 {
944 m_Desc.Desc = {};
945 m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
946 m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
947 }
948 }
949 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
950 {
951 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE;
952 }
953 operator const D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
954 operator D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
955private:
956 void Init() noexcept
957 {
958 SUBOBJECT_HELPER_BASE::Init();
959 m_Desc = {};
960 }
961 void* Data() noexcept override { return &m_Desc; }
962 D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
963};
964
965
966//------------------------------------------------------------------------------------------------
967class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT
968 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
969{
970public:
971 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT() noexcept
972 {
973 Init();
974 }
975 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
976 {
977 Init();
978 AddToStateObject(ContainingStateObject);
979 }
980 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
981 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
982 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
983 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
984 void SetExistingCollection(const void* pKey, UINT KeySize) noexcept
985 {
986 const unsigned char* pKeyBytes = static_cast<const unsigned char *>(pKey);
987 m_Key.clear();
988 m_Key.insert(m_Key.begin(), pKeyBytes, pKeyBytes + KeySize);
989 m_Desc.pKey = m_Key.data();
990 m_Desc.KeySize = KeySize;
991 }
992 void DefineExport(
993 LPCWSTR Name,
994 LPCWSTR ExportToRename = nullptr,
995 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
996 {
997 D3D12_EXPORT_DESC Export;
998 Export.Name = m_Strings.LocalCopy(Name);
999 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
1000 Export.Flags = Flags;
1001 m_Exports.push_back(Export);
1002 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
1003 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
1004 }
1005 template<size_t N>
1006 void DefineExports(LPCWSTR(&Exports)[N])
1007 {
1008 for (UINT i = 0; i < N; i++)
1009 {
1010 DefineExport(Exports[i]);
1011 }
1012 }
1013 void DefineExports(const LPCWSTR* Exports, UINT N)
1014 {
1015 for (UINT i = 0; i < N; i++)
1016 {
1017 DefineExport(Exports[i]);
1018 }
1019 }
1020 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1021 {
1022 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY;
1023 }
1024 operator const D3D12_EXISTING_COLLECTION_BY_KEY_DESC&() const noexcept { return m_Desc; }
1025private:
1026 void Init() noexcept
1027 {
1028 SUBOBJECT_HELPER_BASE::Init();
1029 m_Desc = {};
1030 m_Strings.clear();
1031 m_Exports.clear();
1032 }
1033 void* Data() noexcept override { return &m_Desc; }
1034 D3D12_EXISTING_COLLECTION_BY_KEY_DESC m_Desc;
1035 std::vector<unsigned char> m_Key;
1036 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
1037 std::vector<D3D12_EXPORT_DESC> m_Exports;
1038};
1039
1040#endif // defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1041
1042//------------------------------------------------------------------------------------------------
1043class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
1044 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1045{
1046public:
1047 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
1048 : m_Desc({})
1049 {
1050 Init();
1051 }
1052 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1053 : m_Desc({})
1054 {
1055 Init();
1056 AddToStateObject(ContainingStateObject);
1057 }
1058 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc) noexcept
1059 : m_Desc(desc)
1060 {
1061 Init();
1062 }
1063 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1064 : m_Desc(desc)
1065 {
1066 Init();
1067 AddToStateObject(ContainingStateObject);
1068 }
1069 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
1070 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
1071 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
1072 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
1073 void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
1074 {
1075 m_Desc.Flags = Flags;
1076 }
1077 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1078 {
1079 return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
1080 }
1081 operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
1082 operator D3D12_STATE_OBJECT_CONFIG&() noexcept { return m_Desc; }
1083private:
1084 void Init() noexcept
1085 {
1086 SUBOBJECT_HELPER_BASE::Init();
1087 }
1088 void* Data() noexcept override { return &m_Desc; }
1089 D3D12_STATE_OBJECT_CONFIG m_Desc;
1090};
1091
1092//------------------------------------------------------------------------------------------------
1093class CD3DX12_NODE_MASK_SUBOBJECT
1094 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1095{
1096public:
1097 CD3DX12_NODE_MASK_SUBOBJECT() noexcept
1098 : m_Desc({})
1099 {
1100 Init();
1101 }
1102 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1103 : m_Desc({})
1104 {
1105 Init();
1106 AddToStateObject(ContainingStateObject);
1107 }
1108 CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc) noexcept
1109 : m_Desc(desc)
1110 {
1111 Init();
1112 }
1113 CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1114 : m_Desc(desc)
1115 {
1116 Init();
1117 AddToStateObject(ContainingStateObject);
1118 }
1119 CD3DX12_NODE_MASK_SUBOBJECT(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
1120 CD3DX12_NODE_MASK_SUBOBJECT& operator=(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
1121 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
1122 CD3DX12_NODE_MASK_SUBOBJECT& operator=(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
1123 void SetNodeMask(UINT NodeMask) noexcept
1124 {
1125 m_Desc.NodeMask = NodeMask;
1126 }
1127 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1128 {
1129 return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
1130 }
1131 operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
1132 operator D3D12_NODE_MASK&() noexcept { return m_Desc; }
1133private:
1134 void Init() noexcept
1135 {
1136 SUBOBJECT_HELPER_BASE::Init();
1137 }
1138 void* Data() noexcept override { return &m_Desc; }
1139 D3D12_NODE_MASK m_Desc;
1140};
1141
1142#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
1143//------------------------------------------------------------------------------------------------
1144class CD3DX12_STREAM_OUTPUT_SUBOBJECT
1145 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1146{
1147public:
1148 CD3DX12_STREAM_OUTPUT_SUBOBJECT()
1149 {
1150 Init();
1151 }
1152 CD3DX12_STREAM_OUTPUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1153 {
1154 Init();
1155 AddToStateObject(ContainingStateObject);
1156 }
1157 void AddSODeclEntry(const D3D12_SO_DECLARATION_ENTRY &entry)
1158 {
1159 m_soDecalEntries.emplace_back(D3D12_SO_DECLARATION_ENTRY{
1160 entry.Stream,
1161 m_Strings.LocalCopy(entry.SemanticName),
1162 entry.SemanticIndex,
1163 entry.StartComponent,
1164 entry.ComponentCount,
1165 entry.OutputSlot
1166 });
1167 m_Desc.NumEntries++;
1168 // Below: using ugly way to get pointer in case .data() is not defined
1169 m_Desc.pSODeclaration = &m_soDecalEntries[0];
1170 }
1171 void SetSODeclEntries(const D3D12_SO_DECLARATION_ENTRY* soDeclEntries, UINT numEntries)
1172 {
1173 m_soDecalEntries.resize(numEntries);
1174 for (UINT i = 0; i < numEntries; i++)
1175 {
1176 m_soDecalEntries[i] = D3D12_SO_DECLARATION_ENTRY{
1177 soDeclEntries[i].Stream,
1178 m_Strings.LocalCopy(soDeclEntries[i].SemanticName),
1179 soDeclEntries[i].SemanticIndex,
1180 soDeclEntries[i].StartComponent,
1181 soDeclEntries[i].ComponentCount,
1182 soDeclEntries[i].OutputSlot
1183 };
1184 }
1185 m_Desc.NumEntries = numEntries;
1186 // Below: using ugly way to get pointer in case .data() is not defined
1187 if (numEntries > 0)
1188 {
1189 m_Desc.pSODeclaration = &m_soDecalEntries[0];
1190 }
1191 }
1192 void SetBufferStrides(const UINT* bufferStrides, UINT numStrides)
1193 {
1194 for (UINT i = 0; i < numStrides; ++i)
1195 {
1196 m_Strides[i] = bufferStrides[i];
1197 }
1198 m_Desc.pBufferStrides = m_Strides;
1199 m_Desc.NumStrides = numStrides;
1200 }
1201 void SetRasterizedStream(UINT rasterizedStream)
1202 {
1203 m_Desc.RasterizedStream = rasterizedStream;
1204 }
1205 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1206 {
1207 return D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT;
1208 }
1209 operator const D3D12_STREAM_OUTPUT_DESC& () const noexcept { return m_Desc; }
1210
1211private:
1212 void Init()
1213 {
1214 SUBOBJECT_HELPER_BASE::Init();
1215 m_Desc = {};
1216 }
1217 void* Data() noexcept override { return &m_Desc; }
1218 D3D12_STREAM_OUTPUT_DESC m_Desc;
1219 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCSTR, std::string> m_Strings;
1220 std::vector<D3D12_SO_DECLARATION_ENTRY> m_soDecalEntries;
1221 UINT m_Strides[D3D12_SO_STREAM_COUNT];
1222};
1223
1224//------------------------------------------------------------------------------------------------
1225class CD3DX12_BLEND_SUBOBJECT
1226 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1227{
1228public:
1229 CD3DX12_BLEND_SUBOBJECT()
1230 : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
1231 {
1232 Init();
1233 }
1234 CD3DX12_BLEND_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1235 : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
1236 {
1237 Init();
1238 AddToStateObject(ContainingStateObject);
1239 }
1240 CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc)
1241 : m_Desc(desc)
1242 {
1243 Init();
1244 }
1245 CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1246 : m_Desc(desc)
1247 {
1248 Init();
1249 AddToStateObject(ContainingStateObject);
1250 }
1251 void SetAlphaToCoverageEnable(bool alphaToCoverageEnable)
1252 {
1253 m_Desc.AlphaToCoverageEnable = alphaToCoverageEnable;
1254 }
1255 void SetIndependentBlendEnable(bool independentBlendEnable)
1256 {
1257 m_Desc.IndependentBlendEnable = independentBlendEnable;
1258 }
1259 void SetRenderTarget(UINT renderTargetIndex, const D3D12_RENDER_TARGET_BLEND_DESC& renderTargetBlendDesc)
1260 {
1261 m_Desc.RenderTarget[renderTargetIndex].BlendEnable = renderTargetBlendDesc.BlendEnable;
1262 m_Desc.RenderTarget[renderTargetIndex].BlendOp = renderTargetBlendDesc.BlendOp;
1263 m_Desc.RenderTarget[renderTargetIndex].BlendOpAlpha = renderTargetBlendDesc.BlendOpAlpha;
1264 m_Desc.RenderTarget[renderTargetIndex].DestBlend = renderTargetBlendDesc.DestBlend;
1265 m_Desc.RenderTarget[renderTargetIndex].DestBlendAlpha = renderTargetBlendDesc.DestBlendAlpha;
1266 m_Desc.RenderTarget[renderTargetIndex].LogicOp = renderTargetBlendDesc.LogicOp;
1267 m_Desc.RenderTarget[renderTargetIndex].LogicOpEnable = renderTargetBlendDesc.LogicOpEnable;
1268 m_Desc.RenderTarget[renderTargetIndex].RenderTargetWriteMask = renderTargetBlendDesc.RenderTargetWriteMask;
1269 m_Desc.RenderTarget[renderTargetIndex].SrcBlend = renderTargetBlendDesc.SrcBlend;
1270 m_Desc.RenderTarget[renderTargetIndex].SrcBlendAlpha = renderTargetBlendDesc.SrcBlendAlpha;
1271 }
1272 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1273 {
1274 return D3D12_STATE_SUBOBJECT_TYPE_BLEND;
1275 }
1276 operator const D3D12_BLEND_DESC& () const noexcept { return m_Desc; }
1277 operator D3D12_BLEND_DESC& () noexcept { return m_Desc; }
1278private:
1279 void Init() noexcept
1280 {
1281 SUBOBJECT_HELPER_BASE::Init();
1282 }
1283 void* Data() noexcept override { return &m_Desc; }
1284 CD3DX12_BLEND_DESC m_Desc;
1285};
1286
1287//------------------------------------------------------------------------------------------------
1288class CD3DX12_RASTERIZER_SUBOBJECT
1289 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1290{
1291public:
1292 CD3DX12_RASTERIZER_SUBOBJECT()
1293 : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
1294 {
1295 Init();
1296 }
1297 CD3DX12_RASTERIZER_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1298 : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
1299 {
1300 Init();
1301 AddToStateObject(ContainingStateObject);
1302 }
1303 CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc)
1304 : m_Desc(desc)
1305 {
1306 Init();
1307 }
1308 CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1309 : m_Desc(desc)
1310 {
1311 Init();
1312 AddToStateObject(ContainingStateObject);
1313 }
1314 void SetFillMode(D3D12_FILL_MODE fillMode)
1315 {
1316 m_Desc.FillMode = fillMode;
1317 }
1318 void SetCullMode(D3D12_CULL_MODE cullMode)
1319 {
1320 m_Desc.CullMode = cullMode;
1321 }
1322 void SetFrontCounterClockwise(BOOL frontCounterClockwise)
1323 {
1324 m_Desc.FrontCounterClockwise = frontCounterClockwise;
1325 }
1326 void SetDepthBias(FLOAT depthBias)
1327 {
1328 m_Desc.DepthBias = depthBias;
1329 }
1330 void SetDepthBiasClamp(FLOAT depthBiasClamp)
1331 {
1332 m_Desc.DepthBiasClamp = depthBiasClamp;
1333 }
1334 void SetSlopeScaledDepthBias(FLOAT slopeScaledDepthBias)
1335 {
1336 m_Desc.SlopeScaledDepthBias = slopeScaledDepthBias;
1337 }
1338 void SetDepthClipEnable(BOOL depthClipEnable)
1339 {
1340 m_Desc.DepthClipEnable = depthClipEnable;
1341 }
1342 void SetLineRasterizationMode(D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode)
1343 {
1344 m_Desc.LineRasterizationMode = lineRasterizationMode;
1345 }
1346 void SetForcedSampleCount(UINT forcedSampleCount)
1347 {
1348 m_Desc.ForcedSampleCount = forcedSampleCount;
1349 }
1350 void SetConservativeRaster(D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster)
1351 {
1352 m_Desc.ConservativeRaster = conservativeRaster;
1353 }
1354 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1355 {
1356 return D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER;
1357 }
1358 operator const D3D12_RASTERIZER_DESC2& () const noexcept { return m_Desc; }
1359 operator D3D12_RASTERIZER_DESC2& () noexcept { return m_Desc; }
1360private:
1361 void Init() noexcept
1362 {
1363 SUBOBJECT_HELPER_BASE::Init();
1364 }
1365 void* Data() noexcept override { return &m_Desc; }
1366 CD3DX12_RASTERIZER_DESC2 m_Desc;
1367};
1368
1369//------------------------------------------------------------------------------------------------
1370class CD3DX12_DEPTH_STENCIL2_SUBOBJECT
1371 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1372{
1373public:
1374 CD3DX12_DEPTH_STENCIL2_SUBOBJECT()
1375 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
1376 {
1377 Init();
1378 }
1379 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1380 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
1381 {
1382 Init();
1383 AddToStateObject(ContainingStateObject);
1384 }
1385 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc)
1386 : m_Desc(desc)
1387 {
1388 Init();
1389 }
1390 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1391 : m_Desc(desc)
1392 {
1393 Init();
1394 AddToStateObject(ContainingStateObject);
1395 }
1396 void SetDepthEnable(BOOL depthEnable)
1397 {
1398 m_Desc.DepthEnable = depthEnable;
1399 }
1400 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1401 {
1402 m_Desc.DepthWriteMask = depthWriteMask;
1403 }
1404 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1405 {
1406 m_Desc.DepthFunc = depthFunc;
1407 }
1408 void SetStencilEnable(BOOL stencilEnable)
1409 {
1410 m_Desc.StencilEnable = stencilEnable;
1411 }
1412 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC1 frontFace)
1413 {
1414 m_Desc.FrontFace = {
1415 frontFace.StencilFailOp,
1416 frontFace.StencilDepthFailOp,
1417 frontFace.StencilPassOp,
1418 frontFace.StencilFunc,
1419 frontFace.StencilReadMask,
1420 frontFace.StencilWriteMask
1421 };
1422 }
1423 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC1 backFace)
1424 {
1425 m_Desc.BackFace = {
1426 backFace.StencilFailOp,
1427 backFace.StencilDepthFailOp,
1428 backFace.StencilPassOp,
1429 backFace.StencilFunc,
1430 backFace.StencilReadMask,
1431 backFace.StencilWriteMask
1432 };
1433 }
1434 void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
1435 {
1436 m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
1437 }
1438 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1439 {
1440 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2;
1441 }
1442 operator const D3D12_DEPTH_STENCIL_DESC2& () const noexcept { return m_Desc; }
1443 operator D3D12_DEPTH_STENCIL_DESC2& () noexcept { return m_Desc; }
1444private:
1445 void Init() noexcept
1446 {
1447 SUBOBJECT_HELPER_BASE::Init();
1448 }
1449 void* Data() noexcept override { return &m_Desc; }
1450 CD3DX12_DEPTH_STENCIL_DESC2 m_Desc;
1451};
1452
1453//------------------------------------------------------------------------------------------------
1454class CD3DX12_INPUT_LAYOUT_SUBOBJECT
1455 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1456{
1457public:
1458 CD3DX12_INPUT_LAYOUT_SUBOBJECT()
1459 {
1460 Init();
1461 }
1462 CD3DX12_INPUT_LAYOUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1463 {
1464 Init();
1465 AddToStateObject(ContainingStateObject);
1466 }
1467 void AddInputLayoutElementDesc(D3D12_INPUT_ELEMENT_DESC inputLayoutElementDesc)
1468 {
1469 m_inputLayoutElements.emplace_back(
1470 D3D12_INPUT_ELEMENT_DESC{
1471 m_Strings.LocalCopy(inputLayoutElementDesc.SemanticName),
1472 inputLayoutElementDesc.SemanticIndex,
1473 inputLayoutElementDesc.Format,
1474 inputLayoutElementDesc.InputSlot,
1475 inputLayoutElementDesc.AlignedByteOffset,
1476 inputLayoutElementDesc.InputSlotClass,
1477 inputLayoutElementDesc.InstanceDataStepRate
1478 });
1479 ++m_Desc.NumElements;
1480 // Below: using ugly way to get pointer in case .data() is not defined
1481 m_Desc.pInputElementDescs = &m_inputLayoutElements[0];
1482 }
1483 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1484 {
1485 return D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT;
1486 }
1487 operator const D3D12_INPUT_LAYOUT_DESC& () const noexcept { return m_Desc; }
1488private:
1489 void Init() noexcept
1490 {
1491 SUBOBJECT_HELPER_BASE::Init();
1492 m_Desc = {};
1493 m_inputLayoutElements.clear();
1494 }
1495 void* Data() noexcept override { return &m_Desc; }
1496 D3D12_INPUT_LAYOUT_DESC m_Desc;
1497 std::vector<D3D12_INPUT_ELEMENT_DESC> m_inputLayoutElements;
1498 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCSTR, std::string> m_Strings;
1499};
1500
1501//------------------------------------------------------------------------------------------------
1502class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT
1503 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1504{
1505public:
1506 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT()
1507 : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
1508 {
1509 Init();
1510 }
1511 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1512 : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
1513 {
1514 Init();
1515 AddToStateObject(ContainingStateObject);
1516 }
1517 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc)
1518 : m_Desc(desc)
1519 {
1520 Init();
1521 }
1522 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1523 : m_Desc(desc)
1524 {
1525 Init();
1526 AddToStateObject(ContainingStateObject);
1527 }
1528 void SetIBStripCutValue(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE ibStripCutValue)
1529 {
1530 m_Desc = ibStripCutValue;
1531 }
1532 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1533 {
1534 return D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE;
1535 }
1536 operator const D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () const noexcept { return m_Desc; }
1537 operator D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () noexcept { return m_Desc; }
1538private:
1539 void Init() noexcept
1540 {
1541 SUBOBJECT_HELPER_BASE::Init();
1542 }
1543 void* Data() noexcept override { return &m_Desc; }
1544 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE m_Desc;
1545};
1546
1547//------------------------------------------------------------------------------------------------
1548class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT
1549 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1550{
1551public:
1552 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT()
1553 : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
1554 {
1555 Init();
1556 }
1557 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1558 : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
1559 {
1560 Init();
1561 AddToStateObject(ContainingStateObject);
1562 }
1563 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc)
1564 : m_Desc(desc)
1565 {
1566 Init();
1567 }
1568 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1569 : m_Desc(desc)
1570 {
1571 Init();
1572 AddToStateObject(ContainingStateObject);
1573 }
1574 void SetPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE primitiveTopologytype)
1575 {
1576 m_Desc = primitiveTopologytype;
1577 }
1578 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1579 {
1580 return D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY;
1581 }
1582 operator const D3D12_PRIMITIVE_TOPOLOGY_TYPE& () const noexcept { return m_Desc; }
1583 operator D3D12_PRIMITIVE_TOPOLOGY_TYPE& () noexcept { return m_Desc; }
1584private:
1585 void Init() noexcept
1586 {
1587 SUBOBJECT_HELPER_BASE::Init();
1588 }
1589 void* Data() noexcept override { return &m_Desc; }
1590 D3D12_PRIMITIVE_TOPOLOGY_TYPE m_Desc;
1591};
1592
1593//------------------------------------------------------------------------------------------------
1594class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT
1595 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1596{
1597public:
1598 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT()
1599 : m_Desc({})
1600 {
1601 Init();
1602 }
1603 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1604 : m_Desc({})
1605 {
1606 Init();
1607 AddToStateObject(ContainingStateObject);
1608 }
1609 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc)
1610 : m_Desc(desc)
1611 {
1612 Init();
1613 }
1614 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1615 : m_Desc(desc)
1616 {
1617 Init();
1618 AddToStateObject(ContainingStateObject);
1619 }
1620 void SetNumRenderTargets(UINT numRenderTargets)
1621 {
1622 m_Desc.NumRenderTargets = numRenderTargets;
1623 }
1624 void SetRenderTargetFormat(UINT renderTarget, DXGI_FORMAT renderTargetFormat)
1625 {
1626 m_Desc.RTFormats[renderTarget] = renderTargetFormat;
1627 }
1628 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1629 {
1630 return D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS;
1631 }
1632 operator const D3D12_RT_FORMAT_ARRAY& () const noexcept { return m_Desc; }
1633 operator D3D12_RT_FORMAT_ARRAY& () noexcept { return m_Desc; }
1634private:
1635 void Init() noexcept
1636 {
1637 SUBOBJECT_HELPER_BASE::Init();
1638 }
1639 void* Data() noexcept override { return &m_Desc; }
1640 D3D12_RT_FORMAT_ARRAY m_Desc;
1641};
1642
1643//------------------------------------------------------------------------------------------------
1644class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT
1645 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1646{
1647public:
1648 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT()
1649 : m_Desc(DXGI_FORMAT_UNKNOWN)
1650 {
1651 Init();
1652 }
1653 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1654 : m_Desc(DXGI_FORMAT_UNKNOWN)
1655 {
1656 Init();
1657 AddToStateObject(ContainingStateObject);
1658 }
1659 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc)
1660 : m_Desc(desc)
1661 {
1662 Init();
1663 }
1664 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1665 : m_Desc(desc)
1666 {
1667 Init();
1668 AddToStateObject(ContainingStateObject);
1669 }
1670 void SetDepthStencilFormat(DXGI_FORMAT depthStencilFormat)
1671 {
1672 m_Desc = depthStencilFormat;
1673 }
1674 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1675 {
1676 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT;
1677 }
1678 operator const DXGI_FORMAT& () const noexcept { return m_Desc; }
1679 operator DXGI_FORMAT& () noexcept { return m_Desc; }
1680private:
1681 void Init() noexcept
1682 {
1683 SUBOBJECT_HELPER_BASE::Init();
1684 }
1685 void* Data() noexcept override { return &m_Desc; }
1686 DXGI_FORMAT m_Desc;
1687};
1688
1689//------------------------------------------------------------------------------------------------
1690class CD3DX12_SAMPLE_DESC_SUBOBJECT
1691 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1692{
1693public:
1694 CD3DX12_SAMPLE_DESC_SUBOBJECT()
1695 : m_Desc({1, 0})
1696 {
1697 Init();
1698 }
1699 CD3DX12_SAMPLE_DESC_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1700 : m_Desc({1, 0})
1701 {
1702 Init();
1703 AddToStateObject(ContainingStateObject);
1704 }
1705 CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc)
1706 : m_Desc(desc)
1707 {
1708 Init();
1709 }
1710 CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1711 : m_Desc(desc)
1712 {
1713 Init();
1714 AddToStateObject(ContainingStateObject);
1715 }
1716 void SetCount(UINT count)
1717 {
1718 m_Desc.Count = count;
1719 }
1720 void SetQuality(UINT quality)
1721 {
1722 m_Desc.Quality = quality;
1723 }
1724 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1725 {
1726 return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC;
1727 }
1728 operator const DXGI_SAMPLE_DESC& () const noexcept { return m_Desc; }
1729 operator DXGI_SAMPLE_DESC& () noexcept { return m_Desc; }
1730private:
1731 void Init() noexcept
1732 {
1733 SUBOBJECT_HELPER_BASE::Init();
1734 m_Desc = {};
1735 }
1736 void* Data() noexcept override { return &m_Desc; }
1737 DXGI_SAMPLE_DESC m_Desc;
1738};
1739
1740//------------------------------------------------------------------------------------------------
1741class CD3DX12_FLAGS_SUBOBJECT
1742 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1743{
1744public:
1745 CD3DX12_FLAGS_SUBOBJECT()
1746 : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
1747 {
1748 Init();
1749 }
1750 CD3DX12_FLAGS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1751 : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
1752 {
1753 Init();
1754 AddToStateObject(ContainingStateObject);
1755 }
1756 CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc)
1757 : m_Desc(desc)
1758 {
1759 Init();
1760 }
1761 CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1762 : m_Desc(desc)
1763 {
1764 Init();
1765 AddToStateObject(ContainingStateObject);
1766 }
1767 void SetFlags(D3D12_PIPELINE_STATE_FLAGS flags)
1768 {
1769 m_Desc = flags;
1770 }
1771 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1772 {
1773 return D3D12_STATE_SUBOBJECT_TYPE_FLAGS;
1774 }
1775 operator const D3D12_PIPELINE_STATE_FLAGS& () const noexcept { return m_Desc; }
1776 operator D3D12_PIPELINE_STATE_FLAGS& () noexcept { return m_Desc; }
1777private:
1778 void Init() noexcept
1779 {
1780 SUBOBJECT_HELPER_BASE::Init();
1781 }
1782 void* Data() noexcept override { return &m_Desc; }
1783 D3D12_PIPELINE_STATE_FLAGS m_Desc;
1784};
1785
1786//------------------------------------------------------------------------------------------------
1787class CD3DX12_VIEW_INSTANCING_SUBOBJECT
1788 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1789{
1790public:
1791 CD3DX12_VIEW_INSTANCING_SUBOBJECT()
1792 {
1793 Init();
1794 }
1795 CD3DX12_VIEW_INSTANCING_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1796 {
1797 Init();
1798 AddToStateObject(ContainingStateObject);
1799 }
1800 void AddViewInstanceLocation(D3D12_VIEW_INSTANCE_LOCATION viewInstanceLocation)
1801 {
1802 m_Desc.ViewInstanceCount++;
1803 m_viewInstanceLocations.emplace_back(
1804 D3D12_VIEW_INSTANCE_LOCATION
1805 {
1806 viewInstanceLocation.ViewportArrayIndex,
1807 viewInstanceLocation.RenderTargetArrayIndex
1808 }
1809 );
1810 // Below: using ugly way to get pointer in case .data() is not defined
1811 m_Desc.pViewInstanceLocations = &m_viewInstanceLocations[0];
1812 }
1813 void SetFlags(D3D12_VIEW_INSTANCING_FLAGS flags)
1814 {
1815 m_Desc.Flags = flags;
1816 }
1817 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1818 {
1819 return D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING;
1820 }
1821 operator const D3D12_VIEW_INSTANCING_DESC& () const noexcept { return m_Desc; }
1822private:
1823 void Init() noexcept
1824 {
1825 SUBOBJECT_HELPER_BASE::Init();
1826 m_Desc = CD3DX12_VIEW_INSTANCING_DESC(D3D12_DEFAULT);
1827 m_viewInstanceLocations.clear();
1828 }
1829 void* Data() noexcept override { return &m_Desc; }
1830 CD3DX12_VIEW_INSTANCING_DESC m_Desc;
1831 std::vector<D3D12_VIEW_INSTANCE_LOCATION> m_viewInstanceLocations;
1832};
1833
1834//------------------------------------------------------------------------------------------------
1835class CD3DX12_DEPTH_STENCIL_SUBOBJECT
1836 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1837{
1838public:
1839 CD3DX12_DEPTH_STENCIL_SUBOBJECT()
1840 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
1841 {
1842 Init();
1843 }
1844 CD3DX12_DEPTH_STENCIL_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1845 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
1846 {
1847 Init();
1848 AddToStateObject(ContainingStateObject);
1849 }
1850 CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc)
1851 : m_Desc(desc)
1852 {
1853 Init();
1854 }
1855 CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1856 : m_Desc(desc)
1857 {
1858 Init();
1859 AddToStateObject(ContainingStateObject);
1860 }
1861 void SetDepthEnable(BOOL depthEnable)
1862 {
1863 m_Desc.DepthEnable = depthEnable;
1864 }
1865 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1866 {
1867 m_Desc.DepthWriteMask = depthWriteMask;
1868 }
1869 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1870 {
1871 m_Desc.DepthFunc = depthFunc;
1872 }
1873 void SetStencilEnable(BOOL stencilEnable)
1874 {
1875 m_Desc.StencilEnable = stencilEnable;
1876 }
1877 void SetStencilReadMask(UINT8 stencilReadMask)
1878 {
1879 m_Desc.StencilReadMask = stencilReadMask;
1880 }
1881 void SetStencilWriteMask(UINT8 stencilWriteMask)
1882 {
1883 m_Desc.StencilWriteMask = stencilWriteMask;
1884 }
1885 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
1886 {
1887 m_Desc.FrontFace = {
1888 frontFace.StencilFailOp,
1889 frontFace.StencilDepthFailOp,
1890 frontFace.StencilPassOp,
1891 frontFace.StencilFunc
1892 };
1893 }
1894 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
1895 {
1896 m_Desc.BackFace = {
1897 backFace.StencilFailOp,
1898 backFace.StencilDepthFailOp,
1899 backFace.StencilPassOp,
1900 backFace.StencilFunc
1901 };
1902 }
1903 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1904 {
1905 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1906 }
1907 operator const D3D12_DEPTH_STENCIL_DESC& () const noexcept { return m_Desc; }
1908 operator D3D12_DEPTH_STENCIL_DESC& () noexcept { return m_Desc; }
1909private:
1910 void Init() noexcept
1911 {
1912 SUBOBJECT_HELPER_BASE::Init();
1913 }
1914 void* Data() noexcept override { return &m_Desc; }
1915 CD3DX12_DEPTH_STENCIL_DESC m_Desc;
1916};
1917
1918//------------------------------------------------------------------------------------------------
1919class CD3DX12_DEPTH_STENCIL1_SUBOBJECT
1920 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1921{
1922public:
1923 CD3DX12_DEPTH_STENCIL1_SUBOBJECT()
1924 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
1925 {
1926 Init();
1927 }
1928 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1929 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
1930 {
1931 Init();
1932 AddToStateObject(ContainingStateObject);
1933 }
1934 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc)
1935 : m_Desc(desc)
1936 {
1937 Init();
1938 }
1939 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1940 : m_Desc(desc)
1941 {
1942 Init();
1943 AddToStateObject(ContainingStateObject);
1944 }
1945 void SetDepthEnable(BOOL depthEnable)
1946 {
1947 m_Desc.DepthEnable = depthEnable;
1948 }
1949 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1950 {
1951 m_Desc.DepthWriteMask = depthWriteMask;
1952 }
1953 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1954 {
1955 m_Desc.DepthFunc = depthFunc;
1956 }
1957 void SetStencilEnable(BOOL stencilEnable)
1958 {
1959 m_Desc.StencilEnable = stencilEnable;
1960 }
1961 void SetStencilReadMask(UINT8 stencilReadMask)
1962 {
1963 m_Desc.StencilReadMask = stencilReadMask;
1964 }
1965 void SetStencilWriteMask(UINT8 stencilWriteMask)
1966 {
1967 m_Desc.StencilWriteMask = stencilWriteMask;
1968 }
1969 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
1970 {
1971 m_Desc.FrontFace = {
1972 frontFace.StencilFailOp,
1973 frontFace.StencilDepthFailOp,
1974 frontFace.StencilPassOp,
1975 frontFace.StencilFunc
1976 };
1977 }
1978 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
1979 {
1980 m_Desc.BackFace = {
1981 backFace.StencilFailOp,
1982 backFace.StencilDepthFailOp,
1983 backFace.StencilPassOp,
1984 backFace.StencilFunc
1985 };
1986 }
1987 void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
1988 {
1989 m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
1990 }
1991 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1992 {
1993 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1;
1994 }
1995 operator const D3D12_DEPTH_STENCIL_DESC1& () const noexcept { return m_Desc; }
1996 operator D3D12_DEPTH_STENCIL_DESC1& () noexcept { return m_Desc; }
1997private:
1998 void Init() noexcept
1999 {
2000 SUBOBJECT_HELPER_BASE::Init();
2001 }
2002 void* Data() noexcept override { return &m_Desc; }
2003 CD3DX12_DEPTH_STENCIL_DESC1 m_Desc;
2004};
2005
2006//------------------------------------------------------------------------------------------------
2007class CD3DX12_SAMPLE_MASK_SUBOBJECT
2008 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2009{
2010public:
2011 CD3DX12_SAMPLE_MASK_SUBOBJECT()
2012 : m_Desc(0xffffffffu)
2013 {
2014 Init();
2015 }
2016 CD3DX12_SAMPLE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2017 : m_Desc(0xffffffffu)
2018 {
2019 Init();
2020 AddToStateObject(ContainingStateObject);
2021 }
2022 CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc)
2023 : m_Desc(desc)
2024 {
2025 Init();
2026 }
2027 CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2028 : m_Desc(desc)
2029 {
2030 Init();
2031 AddToStateObject(ContainingStateObject);
2032 }
2033 void SetSampleMask(UINT sampleMask)
2034 {
2035 m_Desc = sampleMask;
2036 }
2037 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2038 {
2039 return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK;
2040 }
2041 operator const UINT& () const noexcept { return m_Desc; }
2042 operator UINT& () noexcept { return m_Desc; }
2043private:
2044 void Init() noexcept
2045 {
2046 SUBOBJECT_HELPER_BASE::Init();
2047 }
2048 void* Data() noexcept override { return &m_Desc; }
2049 UINT m_Desc;
2050};
2051
2052//------------------------------------------------------------------------------------------------
2053class CD3DX12_GENERIC_PROGRAM_SUBOBJECT
2054 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2055{
2056public:
2057 CD3DX12_GENERIC_PROGRAM_SUBOBJECT()
2058 {
2059 Init();
2060 }
2061 CD3DX12_GENERIC_PROGRAM_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2062 {
2063 Init();
2064 AddToStateObject(ContainingStateObject);
2065 }
2066 void SetProgramName(LPCWSTR ProgramName)
2067 {
2068 m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
2069 }
2070 void AddExport(LPCWSTR exportName)
2071 {
2072 m_Exports.emplace_back(m_Strings.LocalCopy(exportName));
2073 m_Desc.NumExports++;
2074 // Below: using ugly way to get pointer in case .data() is not defined
2075 m_Desc.pExports = &m_Exports[0];
2076 }
2077 void AddSubobject(const D3D12_STATE_SUBOBJECT& subobject)
2078 {
2079 m_Subobjects.emplace_back(&subobject);
2080 m_Desc.NumSubobjects++;
2081 // Below: using ugly way to get pointer in case .data() is not defined
2082 m_Desc.ppSubobjects = &m_Subobjects[0];
2083 }
2084 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2085 {
2086 return D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM;
2087 }
2088 operator const D3D12_GENERIC_PROGRAM_DESC& () const noexcept { return m_Desc; }
2089private:
2090 void Init() noexcept
2091 {
2092 SUBOBJECT_HELPER_BASE::Init();
2093 m_Desc = {};
2094 }
2095 void* Data() noexcept override { return &m_Desc; }
2096 D3D12_GENERIC_PROGRAM_DESC m_Desc;
2097 std::vector<LPCWSTR> m_Exports;
2098 std::vector<D3D12_STATE_SUBOBJECT const*> m_Subobjects;
2099 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2100};
2101
2102//------------------------------------------------------------------------------------------------
2103class CD3DX12_NODE_OUTPUT_OVERRIDES
2104{
2105public:
2106 CD3DX12_NODE_OUTPUT_OVERRIDES(const D3D12_NODE_OUTPUT_OVERRIDES** ppOwner, UINT* pNumOutputOverrides) noexcept
2107 {
2108 m_Desc.clear();
2109 m_ppOwner = ppOwner;
2110 *m_ppOwner = nullptr;
2111 m_pNumOutputOverrides = pNumOutputOverrides;
2112 *m_pNumOutputOverrides = 0;
2113 }
2114 void NewOutputOverride()
2115 {
2116 m_Desc.emplace_back(D3D12_NODE_OUTPUT_OVERRIDES{});
2117 *m_ppOwner = m_Desc.data();
2118 (*m_pNumOutputOverrides)++;
2119 }
2120 void OutputIndex(UINT index)
2121 {
2122 m_Desc.back().OutputIndex = index;
2123 }
2124 void NewName(LPCWSTR Name, UINT ArrayIndex = 0)
2125 {
2126 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(Name),ArrayIndex });
2127 m_Desc.back().pNewName = &m_NodeIDs.front();
2128 }
2129 void AllowSparseNodes(BOOL bAllow)
2130 {
2131 m_UINTs.emplace_front((UINT)bAllow);
2132 m_Desc.back().pAllowSparseNodes = (BOOL*)&m_UINTs.front();
2133 }
2134 void MaxOutputRecords(UINT maxOutputRecords) noexcept
2135 {
2136 m_UINTs.emplace_front(maxOutputRecords);
2137 m_Desc.back().pMaxRecords = &m_UINTs.front();
2138 }
2139 void MaxOutputRecordsSharedWith(UINT outputIndex) noexcept
2140 {
2141 m_UINTs.emplace_front(outputIndex);
2142 m_Desc.back().pMaxRecordsSharedWithOutputIndex = &m_UINTs.front();
2143 }
2144private:
2145 std::vector<D3D12_NODE_OUTPUT_OVERRIDES> m_Desc;
2146 // Cached parameters
2147 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2148 std::forward_list<UINT> m_UINTs;
2149 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2150 const D3D12_NODE_OUTPUT_OVERRIDES** m_ppOwner;
2151 UINT* m_pNumOutputOverrides;
2152};
2153
2154//------------------------------------------------------------------------------------------------
2155class CD3DX12_WORK_GRAPH_SUBOBJECT;
2156
2157//------------------------------------------------------------------------------------------------
2158class CD3DX12_NODE_HELPER_BASE
2159{
2160protected:
2161 struct Backreference
2162 {
2163 CD3DX12_WORK_GRAPH_SUBOBJECT *m_pGraph;
2164 UINT m_NodeIndex;
2165 };
2166public:
2167 CD3DX12_NODE_HELPER_BASE(const Backreference &BackRef)
2168 : m_BackRef(BackRef)
2169 {
2170 }
2171 virtual ~CD3DX12_NODE_HELPER_BASE() = default;
2172protected:
2173 D3D12_NODE *GetNode() const;
2174 const Backreference m_BackRef;
2175 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2176};
2177
2178//------------------------------------------------------------------------------------------------
2179class CD3DX12_SHADER_NODE // Not specifying launch mode.
2180 // Don't need to distinguish if no parameter overriding is happening
2181 : public CD3DX12_NODE_HELPER_BASE
2182{
2183public:
2184 CD3DX12_SHADER_NODE(
2185 const Backreference &BackRef,
2186 LPCWSTR _Shader = nullptr)
2187 : CD3DX12_NODE_HELPER_BASE(BackRef)
2188 {
2189 GetNode()->NodeType = D3D12_NODE_TYPE_SHADER;
2190 Shader(_Shader);
2191 }
2192 void Shader(LPCWSTR _Shader)
2193 {
2194 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2195 }
2196 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2197};
2198
2199#endif // D3D12_SDK_VERSION >= 612
2200
2201
2202#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
2203
2204//------------------------------------------------------------------------------------------------
2205// Use this class when defining a broadcasting launch node where configuration parameters
2206// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2207class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES
2208 : public CD3DX12_NODE_HELPER_BASE
2209{
2210public:
2211 CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES(
2212 const Backreference &BackRef,
2213 LPCWSTR _Shader = nullptr) :
2214 CD3DX12_NODE_HELPER_BASE(BackRef),
2215 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2216 {
2217 Overrides = {};
2218 D3D12_NODE *pNode = GetNode();
2219 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2220 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH;
2221 pNode->Shader.pBroadcastingLaunchOverrides = &Overrides;
2222 Shader(_Shader);
2223 }
2224 void Shader(LPCWSTR _Shader)
2225 {
2226 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2227 }
2228 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2229 void LocalRootArgumentsTableIndex(UINT index)
2230 {
2231 m_UINTs.emplace_front(index);
2232 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2233 }
2234 void ProgramEntry(BOOL bIsProgramEntry)
2235 {
2236 m_UINTs.emplace_front(bIsProgramEntry);
2237 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2238 }
2239 void NewName(D3D12_NODE_ID NodeID)
2240 {
2241 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2242 Overrides.pNewName = &m_NodeIDs.front();
2243 }
2244 void ShareInputOf(D3D12_NODE_ID NodeID)
2245 {
2246 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2247 Overrides.pShareInputOf = &m_NodeIDs.front();
2248 }
2249 void DispatchGrid(UINT x, UINT y, UINT z)
2250 {
2251 m_UINT3s.emplace_front(UINT3{ x,y,z });
2252 Overrides.pDispatchGrid = (UINT*)&m_UINT3s.front();
2253 }
2254 void MaxDispatchGrid(UINT x, UINT y, UINT z)
2255 {
2256 m_UINT3s.emplace_front(UINT3{x,y,z});
2257 Overrides.pMaxDispatchGrid = (UINT*)&m_UINT3s.front();
2258 }
2259 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2260 {
2261 return m_NodeOutputOverrides;
2262 }
2263 D3D12_BROADCASTING_LAUNCH_OVERRIDES Overrides;
2264private:
2265 // Cached parameters
2266 std::forward_list<UINT> m_UINTs;
2267 struct UINT3
2268 {
2269 UINT x;
2270 UINT y;
2271 UINT z;
2272 };
2273 std::forward_list<UINT3> m_UINT3s;
2274 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2275 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2276};
2277
2278//------------------------------------------------------------------------------------------------
2279// Use this class when defining a coalescing launch node where configuration parameters
2280// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2281class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES
2282 : public CD3DX12_NODE_HELPER_BASE
2283{
2284public:
2285 CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES(
2286 const Backreference &BackRef,
2287 LPCWSTR _Shader = nullptr) :
2288 CD3DX12_NODE_HELPER_BASE(BackRef),
2289 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2290 {
2291 Overrides = {};
2292 D3D12_NODE *pNode = GetNode();
2293 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2294 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH;
2295 pNode->Shader.pCoalescingLaunchOverrides = &Overrides;
2296 Shader(_Shader);
2297 }
2298 void Shader(LPCWSTR _Shader)
2299 {
2300 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2301 }
2302 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2303 void LocalRootArgumentsTableIndex(UINT index)
2304 {
2305 m_UINTs.emplace_front(index);
2306 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2307 }
2308 void ProgramEntry(BOOL bIsProgramEntry)
2309 {
2310 m_UINTs.emplace_front(bIsProgramEntry);
2311 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2312 }
2313 void NewName(D3D12_NODE_ID NodeID)
2314 {
2315 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2316 Overrides.pNewName = &m_NodeIDs.front();
2317 }
2318 void ShareInputOf(D3D12_NODE_ID NodeID)
2319 {
2320 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2321 Overrides.pShareInputOf = &m_NodeIDs.front();
2322 }
2323 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2324 {
2325 return m_NodeOutputOverrides;
2326 }
2327 D3D12_COALESCING_LAUNCH_OVERRIDES Overrides;
2328private:
2329 // Cached parameters
2330 std::forward_list<UINT> m_UINTs;
2331 struct UINT3
2332 {
2333 UINT x;
2334 UINT y;
2335 UINT z;
2336 };
2337 std::forward_list<UINT3> m_UINT3s;
2338 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2339 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2340};
2341
2342//------------------------------------------------------------------------------------------------
2343// Use this class when defining a thread launch node where configuration parameters
2344// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2345class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES
2346 : public CD3DX12_NODE_HELPER_BASE
2347{
2348public:
2349 CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES(
2350 const Backreference &BackRef,
2351 LPCWSTR _Shader = nullptr) :
2352 CD3DX12_NODE_HELPER_BASE(BackRef),
2353 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2354 {
2355 Overrides = {};
2356 D3D12_NODE *pNode = GetNode();
2357 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2358 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH;
2359 pNode->Shader.pThreadLaunchOverrides = &Overrides;
2360 Shader(_Shader);
2361 }
2362 void Shader(LPCWSTR _Shader)
2363 {
2364 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2365 }
2366 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2367 void LocalRootArgumentsTableIndex(UINT index)
2368 {
2369 m_UINTs.emplace_front(index);
2370 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2371 }
2372 void ProgramEntry(BOOL bIsProgramEntry)
2373 {
2374 m_UINTs.emplace_front(bIsProgramEntry);
2375 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2376 }
2377 void NewName(D3D12_NODE_ID NodeID)
2378 {
2379 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2380 Overrides.pNewName = &m_NodeIDs.front();
2381 }
2382 void ShareInputOf(D3D12_NODE_ID NodeID)
2383 {
2384 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2385 Overrides.pShareInputOf = &m_NodeIDs.front();
2386 }
2387 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2388 {
2389 return m_NodeOutputOverrides;
2390 }
2391 D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
2392private:
2393 // Cached parameters
2394 std::forward_list<UINT> m_UINTs;
2395 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2396 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2397};
2398
2399//------------------------------------------------------------------------------------------------
2400// Use this class when defining a node where configuration parameters
2401// need to be overridden for parameters that are common to all launch node types.
2402// This option is a convenience if you don't want to determine what the launch mode is
2403// and just want to override a setting that isn't specific to launch mode.
2404// If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2405class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES
2406 : public CD3DX12_NODE_HELPER_BASE
2407{
2408public:
2409 CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES(
2410 const Backreference &BackRef,
2411 LPCWSTR _Shader = nullptr) :
2412 CD3DX12_NODE_HELPER_BASE(BackRef),
2413 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2414 {
2415 Overrides = {};
2416 D3D12_NODE *pNode = GetNode();
2417 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2418 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE;
2419 pNode->Shader.pThreadLaunchOverrides = &Overrides;
2420 Shader(_Shader);
2421 }
2422 void Shader(LPCWSTR _Shader)
2423 {
2424 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2425 }
2426 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2427 void LocalRootArgumentsTableIndex(UINT index)
2428 {
2429 m_UINTs.emplace_front(index);
2430 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2431 }
2432 void ProgramEntry(BOOL bIsProgramEntry)
2433 {
2434 m_UINTs.emplace_front(bIsProgramEntry);
2435 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2436 }
2437 void NewName(D3D12_NODE_ID NodeID)
2438 {
2439 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2440 Overrides.pNewName = &m_NodeIDs.front();
2441 }
2442 void ShareInputOf(D3D12_NODE_ID NodeID)
2443 {
2444 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2445 Overrides.pShareInputOf = &m_NodeIDs.front();
2446 }
2447 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2448 {
2449 return m_NodeOutputOverrides;
2450 }
2451 D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
2452private:
2453 // Cached parameters
2454 std::forward_list<UINT> m_UINTs;
2455 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2456 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2457};
2458
2459//------------------------------------------------------------------------------------------------
2460class CD3DX12_WORK_GRAPH_SUBOBJECT
2461 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2462{
2463public:
2464 CD3DX12_WORK_GRAPH_SUBOBJECT() noexcept
2465 {
2466 Init();
2467 }
2468 CD3DX12_WORK_GRAPH_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2469 {
2470 Init();
2471 AddToStateObject(ContainingStateObject);
2472 }
2473 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2474 {
2475 return D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH;
2476 }
2477 void IncludeAllAvailableNodes()
2478 {
2479 m_Desc.Flags |= D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES;
2480 }
2481
2482
2483 void SetProgramName(LPCWSTR ProgramName)
2484 {
2485 m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
2486 }
2487 void AddEntrypoint(D3D12_NODE_ID Entrypoint)
2488 {
2489 m_Entrypoints.emplace_back(D3D12_NODE_ID{ m_Strings.LocalCopy(Entrypoint.Name),Entrypoint.ArrayIndex });
2490 m_Desc.NumEntrypoints++;
2491 m_Desc.pEntrypoints = m_Entrypoints.data();
2492 }
2493
2494 template<typename T>
2495 T* CreateNode()
2496 {
2497 m_NodeDescs.push_back({});
2498 m_Desc.NumExplicitlyDefinedNodes++;
2499 m_Desc.pExplicitlyDefinedNodes = m_NodeDescs.data();
2500 T* pNodeHelper = new T({this, (UINT)m_NodeDescs.size() - 1});
2501 m_OwnedNodeHelpers.emplace_back(pNodeHelper);
2502 return pNodeHelper;
2503 }
2504 CD3DX12_SHADER_NODE* CreateShaderNode(LPCWSTR Shader = nullptr)
2505 {
2506 auto pNode = CreateNode<CD3DX12_SHADER_NODE>();
2507 pNode->Shader(Shader);
2508 return pNode;
2509 }
2510 CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES* CreateBroadcastingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2511 {
2512 auto pNode = CreateNode<CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES>();
2513 pNode->Shader(Shader);
2514 return pNode;
2515 }
2516 CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES* CreateCoalescingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2517 {
2518 auto pNode = CreateNode<CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES>();
2519 pNode->Shader(Shader);
2520 return pNode;
2521 }
2522 CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES* CreateThreadLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2523 {
2524 auto pNode = CreateNode<CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES>();
2525 pNode->Shader(Shader);
2526 return pNode;
2527 }
2528 CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES* CreateCommonComputeNodeOverrides(LPCWSTR Shader = nullptr)
2529 {
2530 auto pNode = CreateNode<CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES>();
2531 pNode->Shader(Shader);
2532 return pNode;
2533 }
2534#endif // D3D12_SDK_VERSION >= 612
2535
2536
2537#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
2538
2539 operator const D3D12_WORK_GRAPH_DESC& () noexcept
2540 {
2541 return m_Desc;
2542 }
2543private:
2544 void Init() noexcept
2545 {
2546 SUBOBJECT_HELPER_BASE::Init();
2547 m_Desc = {};
2548 m_Entrypoints.clear();
2549 m_NodeDescs.clear();
2550 }
2551 void* Data() noexcept override { return &m_Desc; }
2552 D3D12_WORK_GRAPH_DESC m_Desc;
2553 std::vector<D3D12_NODE_ID> m_Entrypoints;
2554 std::vector<D3D12_NODE> m_NodeDescs;
2555 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2556 std::vector<std::unique_ptr<const CD3DX12_NODE_HELPER_BASE>> m_OwnedNodeHelpers;
2557 friend class CD3DX12_NODE_HELPER_BASE;
2558};
2559
2560inline D3D12_NODE * CD3DX12_NODE_HELPER_BASE::GetNode() const
2561{
2562 return &m_BackRef.m_pGraph->m_NodeDescs[m_BackRef.m_NodeIndex];
2563}
2564#endif // D3D12_SDK_VERSION >= 612
2565
2566#undef D3DX12_COM_PTR
2567#undef D3DX12_COM_PTR_GET
2568#undef D3DX12_COM_PTR_ADDRESSOF
2569
2570
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.h b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.h
new file mode 100644
index 0000000..83e6c07
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.h
@@ -0,0 +1,144 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgiformat_h__
7#define __dxgiformat_h__
8
9#define DXGI_FORMAT_DEFINED 1
10
11typedef enum DXGI_FORMAT
12{
13 DXGI_FORMAT_UNKNOWN = 0,
14 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
15 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
16 DXGI_FORMAT_R32G32B32A32_UINT = 3,
17 DXGI_FORMAT_R32G32B32A32_SINT = 4,
18 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
19 DXGI_FORMAT_R32G32B32_FLOAT = 6,
20 DXGI_FORMAT_R32G32B32_UINT = 7,
21 DXGI_FORMAT_R32G32B32_SINT = 8,
22 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
23 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
24 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
25 DXGI_FORMAT_R16G16B16A16_UINT = 12,
26 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
27 DXGI_FORMAT_R16G16B16A16_SINT = 14,
28 DXGI_FORMAT_R32G32_TYPELESS = 15,
29 DXGI_FORMAT_R32G32_FLOAT = 16,
30 DXGI_FORMAT_R32G32_UINT = 17,
31 DXGI_FORMAT_R32G32_SINT = 18,
32 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
33 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
34 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
35 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
36 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
37 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
38 DXGI_FORMAT_R10G10B10A2_UINT = 25,
39 DXGI_FORMAT_R11G11B10_FLOAT = 26,
40 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
41 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
42 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
43 DXGI_FORMAT_R8G8B8A8_UINT = 30,
44 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
45 DXGI_FORMAT_R8G8B8A8_SINT = 32,
46 DXGI_FORMAT_R16G16_TYPELESS = 33,
47 DXGI_FORMAT_R16G16_FLOAT = 34,
48 DXGI_FORMAT_R16G16_UNORM = 35,
49 DXGI_FORMAT_R16G16_UINT = 36,
50 DXGI_FORMAT_R16G16_SNORM = 37,
51 DXGI_FORMAT_R16G16_SINT = 38,
52 DXGI_FORMAT_R32_TYPELESS = 39,
53 DXGI_FORMAT_D32_FLOAT = 40,
54 DXGI_FORMAT_R32_FLOAT = 41,
55 DXGI_FORMAT_R32_UINT = 42,
56 DXGI_FORMAT_R32_SINT = 43,
57 DXGI_FORMAT_R24G8_TYPELESS = 44,
58 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
59 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
60 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
61 DXGI_FORMAT_R8G8_TYPELESS = 48,
62 DXGI_FORMAT_R8G8_UNORM = 49,
63 DXGI_FORMAT_R8G8_UINT = 50,
64 DXGI_FORMAT_R8G8_SNORM = 51,
65 DXGI_FORMAT_R8G8_SINT = 52,
66 DXGI_FORMAT_R16_TYPELESS = 53,
67 DXGI_FORMAT_R16_FLOAT = 54,
68 DXGI_FORMAT_D16_UNORM = 55,
69 DXGI_FORMAT_R16_UNORM = 56,
70 DXGI_FORMAT_R16_UINT = 57,
71 DXGI_FORMAT_R16_SNORM = 58,
72 DXGI_FORMAT_R16_SINT = 59,
73 DXGI_FORMAT_R8_TYPELESS = 60,
74 DXGI_FORMAT_R8_UNORM = 61,
75 DXGI_FORMAT_R8_UINT = 62,
76 DXGI_FORMAT_R8_SNORM = 63,
77 DXGI_FORMAT_R8_SINT = 64,
78 DXGI_FORMAT_A8_UNORM = 65,
79 DXGI_FORMAT_R1_UNORM = 66,
80 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
81 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
82 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
83 DXGI_FORMAT_BC1_TYPELESS = 70,
84 DXGI_FORMAT_BC1_UNORM = 71,
85 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
86 DXGI_FORMAT_BC2_TYPELESS = 73,
87 DXGI_FORMAT_BC2_UNORM = 74,
88 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
89 DXGI_FORMAT_BC3_TYPELESS = 76,
90 DXGI_FORMAT_BC3_UNORM = 77,
91 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
92 DXGI_FORMAT_BC4_TYPELESS = 79,
93 DXGI_FORMAT_BC4_UNORM = 80,
94 DXGI_FORMAT_BC4_SNORM = 81,
95 DXGI_FORMAT_BC5_TYPELESS = 82,
96 DXGI_FORMAT_BC5_UNORM = 83,
97 DXGI_FORMAT_BC5_SNORM = 84,
98 DXGI_FORMAT_B5G6R5_UNORM = 85,
99 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
100 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
101 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
102 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
103 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
104 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
105 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
106 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
107 DXGI_FORMAT_BC6H_TYPELESS = 94,
108 DXGI_FORMAT_BC6H_UF16 = 95,
109 DXGI_FORMAT_BC6H_SF16 = 96,
110 DXGI_FORMAT_BC7_TYPELESS = 97,
111 DXGI_FORMAT_BC7_UNORM = 98,
112 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
113 DXGI_FORMAT_AYUV = 100,
114 DXGI_FORMAT_Y410 = 101,
115 DXGI_FORMAT_Y416 = 102,
116 DXGI_FORMAT_NV12 = 103,
117 DXGI_FORMAT_P010 = 104,
118 DXGI_FORMAT_P016 = 105,
119 DXGI_FORMAT_420_OPAQUE = 106,
120 DXGI_FORMAT_YUY2 = 107,
121 DXGI_FORMAT_Y210 = 108,
122 DXGI_FORMAT_Y216 = 109,
123 DXGI_FORMAT_NV11 = 110,
124 DXGI_FORMAT_AI44 = 111,
125 DXGI_FORMAT_IA44 = 112,
126 DXGI_FORMAT_P8 = 113,
127 DXGI_FORMAT_A8P8 = 114,
128 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
129
130 DXGI_FORMAT_P208 = 130,
131 DXGI_FORMAT_V208 = 131,
132 DXGI_FORMAT_V408 = 132,
133
134
135 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
136 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
137
138 DXGI_FORMAT_A4B4G4R4_UNORM = 191,
139
140
141 DXGI_FORMAT_FORCE_UINT = 0xffffffff
142} DXGI_FORMAT;
143
144#endif // __dxgiformat_h__
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.idl b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.idl
new file mode 100644
index 0000000..34cc883
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/include/dxgiformat.idl
@@ -0,0 +1,139 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef enum DXGI_FORMAT
8{
9 DXGI_FORMAT_UNKNOWN = 0,
10 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
11 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
12 DXGI_FORMAT_R32G32B32A32_UINT = 3,
13 DXGI_FORMAT_R32G32B32A32_SINT = 4,
14 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
15 DXGI_FORMAT_R32G32B32_FLOAT = 6,
16 DXGI_FORMAT_R32G32B32_UINT = 7,
17 DXGI_FORMAT_R32G32B32_SINT = 8,
18 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
19 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
20 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
21 DXGI_FORMAT_R16G16B16A16_UINT = 12,
22 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
23 DXGI_FORMAT_R16G16B16A16_SINT = 14,
24 DXGI_FORMAT_R32G32_TYPELESS = 15,
25 DXGI_FORMAT_R32G32_FLOAT = 16,
26 DXGI_FORMAT_R32G32_UINT = 17,
27 DXGI_FORMAT_R32G32_SINT = 18,
28 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
29 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
30 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
31 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
32 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
33 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
34 DXGI_FORMAT_R10G10B10A2_UINT = 25,
35 DXGI_FORMAT_R11G11B10_FLOAT = 26,
36 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
37 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
38 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
39 DXGI_FORMAT_R8G8B8A8_UINT = 30,
40 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
41 DXGI_FORMAT_R8G8B8A8_SINT = 32,
42 DXGI_FORMAT_R16G16_TYPELESS = 33,
43 DXGI_FORMAT_R16G16_FLOAT = 34,
44 DXGI_FORMAT_R16G16_UNORM = 35,
45 DXGI_FORMAT_R16G16_UINT = 36,
46 DXGI_FORMAT_R16G16_SNORM = 37,
47 DXGI_FORMAT_R16G16_SINT = 38,
48 DXGI_FORMAT_R32_TYPELESS = 39,
49 DXGI_FORMAT_D32_FLOAT = 40,
50 DXGI_FORMAT_R32_FLOAT = 41,
51 DXGI_FORMAT_R32_UINT = 42,
52 DXGI_FORMAT_R32_SINT = 43,
53 DXGI_FORMAT_R24G8_TYPELESS = 44,
54 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
55 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
56 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
57 DXGI_FORMAT_R8G8_TYPELESS = 48,
58 DXGI_FORMAT_R8G8_UNORM = 49,
59 DXGI_FORMAT_R8G8_UINT = 50,
60 DXGI_FORMAT_R8G8_SNORM = 51,
61 DXGI_FORMAT_R8G8_SINT = 52,
62 DXGI_FORMAT_R16_TYPELESS = 53,
63 DXGI_FORMAT_R16_FLOAT = 54,
64 DXGI_FORMAT_D16_UNORM = 55,
65 DXGI_FORMAT_R16_UNORM = 56,
66 DXGI_FORMAT_R16_UINT = 57,
67 DXGI_FORMAT_R16_SNORM = 58,
68 DXGI_FORMAT_R16_SINT = 59,
69 DXGI_FORMAT_R8_TYPELESS = 60,
70 DXGI_FORMAT_R8_UNORM = 61,
71 DXGI_FORMAT_R8_UINT = 62,
72 DXGI_FORMAT_R8_SNORM = 63,
73 DXGI_FORMAT_R8_SINT = 64,
74 DXGI_FORMAT_A8_UNORM = 65,
75 DXGI_FORMAT_R1_UNORM = 66,
76 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
77 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
78 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
79 DXGI_FORMAT_BC1_TYPELESS = 70,
80 DXGI_FORMAT_BC1_UNORM = 71,
81 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
82 DXGI_FORMAT_BC2_TYPELESS = 73,
83 DXGI_FORMAT_BC2_UNORM = 74,
84 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
85 DXGI_FORMAT_BC3_TYPELESS = 76,
86 DXGI_FORMAT_BC3_UNORM = 77,
87 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
88 DXGI_FORMAT_BC4_TYPELESS = 79,
89 DXGI_FORMAT_BC4_UNORM = 80,
90 DXGI_FORMAT_BC4_SNORM = 81,
91 DXGI_FORMAT_BC5_TYPELESS = 82,
92 DXGI_FORMAT_BC5_UNORM = 83,
93 DXGI_FORMAT_BC5_SNORM = 84,
94 DXGI_FORMAT_B5G6R5_UNORM = 85,
95 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
96 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
97 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
98 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
99 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
100 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
101 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
102 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
103 DXGI_FORMAT_BC6H_TYPELESS = 94,
104 DXGI_FORMAT_BC6H_UF16 = 95,
105 DXGI_FORMAT_BC6H_SF16 = 96,
106 DXGI_FORMAT_BC7_TYPELESS = 97,
107 DXGI_FORMAT_BC7_UNORM = 98,
108 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
109 DXGI_FORMAT_AYUV = 100,
110 DXGI_FORMAT_Y410 = 101,
111 DXGI_FORMAT_Y416 = 102,
112 DXGI_FORMAT_NV12 = 103,
113 DXGI_FORMAT_P010 = 104,
114 DXGI_FORMAT_P016 = 105,
115 DXGI_FORMAT_420_OPAQUE = 106,
116 DXGI_FORMAT_YUY2 = 107,
117 DXGI_FORMAT_Y210 = 108,
118 DXGI_FORMAT_Y216 = 109,
119 DXGI_FORMAT_NV11 = 110,
120 DXGI_FORMAT_AI44 = 111,
121 DXGI_FORMAT_IA44 = 112,
122 DXGI_FORMAT_P8 = 113,
123 DXGI_FORMAT_A8P8 = 114,
124 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
125
126 DXGI_FORMAT_P208 = 130,
127 DXGI_FORMAT_V208 = 131,
128 DXGI_FORMAT_V408 = 132,
129
130
131 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
132 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
133
134 DXGI_FORMAT_A4B4G4R4_UNORM = 191,
135
136
137 DXGI_FORMAT_FORCE_UINT = 0xffffffff
138} DXGI_FORMAT;
139
diff --git a/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/src/d3dx12/d3dx12_property_format_table.cpp b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/src/d3dx12/d3dx12_property_format_table.cpp
new file mode 100644
index 0000000..549bf50
--- /dev/null
+++ b/contrib/microsoft.direct3d.d3d12.1.618.4/build/native/src/d3dx12/d3dx12_property_format_table.cpp
@@ -0,0 +1,2601 @@
1
2
3
4//*********************************************************
5//
6// Copyright (c) Microsoft Corporation.
7// Licensed under the MIT License (MIT).
8//
9//*********************************************************
10
11#ifndef WIN32_LEAN_AND_MEAN
12 #define WIN32_LEAN_AND_MEAN
13#endif
14#ifndef NOMINMAX
15 #define NOMINMAX 1
16#endif
17#ifdef __MINGW32__
18 #include <unknwn.h>
19#endif
20#ifndef _WIN32
21 #include <wsl/winadapter.h>
22#endif
23#include "d3dx12_property_format_table.h"
24#include <algorithm>
25#include <cassert>
26#include "D3D12TokenizedProgramFormat.hpp"
27#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
28#include <stdexcept>
29#endif
30#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
31#ifndef ASSUME
32 #define ASSUME(x) assert(x)
33#endif
34
35#define R D3DFCN_R
36#define G D3DFCN_G
37#define B D3DFCN_B
38#define A D3DFCN_A
39#define D D3DFCN_D
40#define S D3DFCN_S
41#define X D3DFCN_X
42
43#define _TYPELESS D3DFCI_TYPELESS
44#define _FLOAT D3DFCI_FLOAT
45#define _SNORM D3DFCI_SNORM
46#define _UNORM D3DFCI_UNORM
47#define _SINT D3DFCI_SINT
48#define _UINT D3DFCI_UINT
49#define _UNORM_SRGB D3DFCI_UNORM_SRGB
50#define _FIXED_2_8 D3DFCI_BIASED_FIXED_2_8
51
52#ifndef INTSAFE_E_ARITHMETIC_OVERFLOW
53 #define INTSAFE_E_ARITHMETIC_OVERFLOW ((HRESULT)0x80070216L)
54#endif
55
56//
57// UINT addition
58//
59inline HRESULT Safe_UIntAdd(UINT uAugend, UINT uAddend, UINT* puResult)
60{
61 if ((uAugend + uAddend) >= uAugend)
62 {
63 *puResult = (uAugend + uAddend);
64 return S_OK;
65 }
66 *puResult = UINT_MAX;
67 return E_FAIL;
68}
69
70//
71// UINT multiplication
72//
73inline HRESULT Safe_UIntMult(UINT uMultiplicand, UINT uMultiplier, UINT* puResult)
74{
75 ULONGLONG ull64Result = (ULONGLONG)uMultiplicand * (ULONGLONG)uMultiplier;
76
77 if (ull64Result <= UINT_MAX)
78 {
79 *puResult = (UINT)ull64Result;
80 return S_OK;
81 }
82 *puResult = UINT_MAX;
83 return E_FAIL;
84}
85
86const LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatNames[] = // separate from above structure so it can be compiled out of the runtime.
87{
88// Name
89 "UNKNOWN",
90 "R32G32B32A32_TYPELESS",
91 "R32G32B32A32_FLOAT",
92 "R32G32B32A32_UINT",
93 "R32G32B32A32_SINT",
94 "R32G32B32_TYPELESS",
95 "R32G32B32_FLOAT",
96 "R32G32B32_UINT",
97 "R32G32B32_SINT",
98 "R16G16B16A16_TYPELESS",
99 "R16G16B16A16_FLOAT",
100 "R16G16B16A16_UNORM",
101 "R16G16B16A16_UINT",
102 "R16G16B16A16_SNORM",
103 "R16G16B16A16_SINT",
104 "R32G32_TYPELESS",
105 "R32G32_FLOAT",
106 "R32G32_UINT",
107 "R32G32_SINT",
108 "R32G8X24_TYPELESS",
109 "D32_FLOAT_S8X24_UINT",
110 "R32_FLOAT_X8X24_TYPELESS",
111 "X32_TYPELESS_G8X24_UINT",
112 "R10G10B10A2_TYPELESS",
113 "R10G10B10A2_UNORM",
114 "R10G10B10A2_UINT",
115 "R11G11B10_FLOAT",
116 "R8G8B8A8_TYPELESS",
117 "R8G8B8A8_UNORM",
118 "R8G8B8A8_UNORM_SRGB",
119 "R8G8B8A8_UINT",
120 "R8G8B8A8_SNORM",
121 "R8G8B8A8_SINT",
122 "R16G16_TYPELESS",
123 "R16G16_FLOAT",
124 "R16G16_UNORM",
125 "R16G16_UINT",
126 "R16G16_SNORM",
127 "R16G16_SINT",
128 "R32_TYPELESS",
129 "D32_FLOAT",
130 "R32_FLOAT",
131 "R32_UINT",
132 "R32_SINT",
133 "R24G8_TYPELESS",
134 "D24_UNORM_S8_UINT",
135 "R24_UNORM_X8_TYPELESS",
136 "X24_TYPELESS_G8_UINT",
137 "R8G8_TYPELESS",
138 "R8G8_UNORM",
139 "R8G8_UINT",
140 "R8G8_SNORM",
141 "R8G8_SINT",
142 "R16_TYPELESS",
143 "R16_FLOAT",
144 "D16_UNORM",
145 "R16_UNORM",
146 "R16_UINT",
147 "R16_SNORM",
148 "R16_SINT",
149 "R8_TYPELESS",
150 "R8_UNORM",
151 "R8_UINT",
152 "R8_SNORM",
153 "R8_SINT",
154 "A8_UNORM",
155 "R1_UNORM",
156 "R9G9B9E5_SHAREDEXP",
157 "R8G8_B8G8_UNORM",
158 "G8R8_G8B8_UNORM",
159 "BC1_TYPELESS",
160 "BC1_UNORM",
161 "BC1_UNORM_SRGB",
162 "BC2_TYPELESS",
163 "BC2_UNORM",
164 "BC2_UNORM_SRGB",
165 "BC3_TYPELESS",
166 "BC3_UNORM",
167 "BC3_UNORM_SRGB",
168 "BC4_TYPELESS",
169 "BC4_UNORM",
170 "BC4_SNORM",
171 "BC5_TYPELESS",
172 "BC5_UNORM",
173 "BC5_SNORM",
174 "B5G6R5_UNORM",
175 "B5G5R5A1_UNORM",
176 "B8G8R8A8_UNORM",
177 "B8G8R8X8_UNORM",
178 "R10G10B10_XR_BIAS_A2_UNORM",
179 "B8G8R8A8_TYPELESS",
180 "B8G8R8A8_UNORM_SRGB",
181 "B8G8R8X8_TYPELESS",
182 "B8G8R8X8_UNORM_SRGB",
183 "BC6H_TYPELESS",
184 "BC6H_UF16",
185 "BC6H_SF16",
186 "BC7_TYPELESS",
187 "BC7_UNORM",
188 "BC7_UNORM_SRGB",
189 "AYUV",
190 "Y410",
191 "Y416",
192 "NV12",
193 "P010",
194 "P016",
195 "420_OPAQUE",
196 "YUY2",
197 "Y210",
198 "Y216",
199 "NV11",
200 "AI44",
201 "IA44",
202 "P8",
203 "A8P8",
204 "B4G4R4A4_UNORM",
205
206 nullptr, // 116
207 nullptr, // 117
208 nullptr, // 118
209 nullptr, // 119
210 nullptr, // 120
211 nullptr, // 121
212 nullptr, // 122
213 nullptr, // 123
214 nullptr, // 124
215 nullptr, // 125
216 nullptr, // 126
217 nullptr, // 127
218 nullptr, // 128
219 nullptr, // 129
220
221 "P208",
222 "V208",
223 "V408",
224
225 NULL, // 133
226 NULL, // 134
227 NULL, // 135
228 NULL, // 136
229 NULL, // 137
230 NULL, // 138
231 NULL, // 139
232 NULL, // 140
233 NULL, // 141
234 NULL, // 142
235 NULL, // 143
236 NULL, // 144
237 NULL, // 145
238 NULL, // 146
239 NULL, // 147
240 NULL, // 148
241 NULL, // 149
242 NULL, // 150
243 NULL, // 151
244 NULL, // 152
245 NULL, // 153
246 NULL, // 154
247 NULL, // 155
248 NULL, // 156
249 NULL, // 157
250 NULL, // 158
251 NULL, // 159
252 NULL, // 160
253 NULL, // 161
254 NULL, // 162
255 NULL, // 163
256 NULL, // 164
257 NULL, // 165
258 NULL, // 166
259 NULL, // 167
260 NULL, // 168
261 NULL, // 169
262 NULL, // 170
263 NULL, // 171
264 NULL, // 172
265 NULL, // 173
266 NULL, // 174
267 NULL, // 175
268 NULL, // 176
269 NULL, // 177
270 NULL, // 178
271 NULL, // 179
272 NULL, // 180
273 NULL, // 181
274 NULL, // 182
275 NULL, // 183
276 NULL, // 184
277 NULL, // 185
278 NULL, // 186
279 NULL, // 187
280 NULL, // 188
281
282 "SAMPLER_FEEDBACK_MIN_MIP_OPAQUE",
283 "SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE",
284 "A4B4G4R4_UNORM",
285};
286
287// --------------------------------------------------------------------------------------------------------------------------------
288// Format Cast Sets
289// --------------------------------------------------------------------------------------------------------------------------------
290constexpr DXGI_FORMAT D3DFCS_UNKNOWN[] =
291{
292 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
293};
294
295constexpr DXGI_FORMAT D3DFCS_R32G32B32A32[] =
296{
297 DXGI_FORMAT_R32G32B32A32_TYPELESS,
298 DXGI_FORMAT_R32G32B32A32_FLOAT,
299 DXGI_FORMAT_R32G32B32A32_UINT,
300 DXGI_FORMAT_R32G32B32A32_SINT,
301 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
302};
303
304constexpr DXGI_FORMAT D3DFCS_R32G32B32[] =
305{
306 DXGI_FORMAT_R32G32B32_TYPELESS,
307 DXGI_FORMAT_R32G32B32_FLOAT,
308 DXGI_FORMAT_R32G32B32_UINT,
309 DXGI_FORMAT_R32G32B32_SINT,
310 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
311};
312
313constexpr DXGI_FORMAT D3DFCS_R16G16B16A16[] =
314{
315 DXGI_FORMAT_R16G16B16A16_TYPELESS,
316 DXGI_FORMAT_R16G16B16A16_FLOAT,
317 DXGI_FORMAT_R16G16B16A16_UNORM,
318 DXGI_FORMAT_R16G16B16A16_UINT,
319 DXGI_FORMAT_R16G16B16A16_SNORM,
320 DXGI_FORMAT_R16G16B16A16_SINT,
321 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
322};
323
324constexpr DXGI_FORMAT D3DFCS_R32G32[] =
325{
326 DXGI_FORMAT_R32G32_TYPELESS,
327 DXGI_FORMAT_R32G32_FLOAT,
328 DXGI_FORMAT_R32G32_UINT,
329 DXGI_FORMAT_R32G32_SINT,
330 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
331};
332
333constexpr DXGI_FORMAT D3DFCS_R32G8X24[] =
334{
335 DXGI_FORMAT_R32G8X24_TYPELESS,
336 DXGI_FORMAT_D32_FLOAT_S8X24_UINT,
337 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS,
338 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT,
339 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
340};
341
342constexpr DXGI_FORMAT D3DFCS_R11G11B10[] =
343{
344 DXGI_FORMAT_R11G11B10_FLOAT,
345 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
346};
347
348constexpr DXGI_FORMAT D3DFCS_R8G8B8A8[] =
349{
350 DXGI_FORMAT_R8G8B8A8_TYPELESS,
351 DXGI_FORMAT_R8G8B8A8_UNORM,
352 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
353 DXGI_FORMAT_R8G8B8A8_UINT,
354 DXGI_FORMAT_R8G8B8A8_SNORM,
355 DXGI_FORMAT_R8G8B8A8_SINT,
356 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
357};
358
359constexpr DXGI_FORMAT D3DFCS_R16G16[] =
360{
361 DXGI_FORMAT_R16G16_TYPELESS,
362 DXGI_FORMAT_R16G16_FLOAT,
363 DXGI_FORMAT_R16G16_UNORM,
364 DXGI_FORMAT_R16G16_UINT,
365 DXGI_FORMAT_R16G16_SNORM,
366 DXGI_FORMAT_R16G16_SINT,
367 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
368};
369
370constexpr DXGI_FORMAT D3DFCS_R32[] =
371{
372 DXGI_FORMAT_R32_TYPELESS,
373 DXGI_FORMAT_D32_FLOAT,
374 DXGI_FORMAT_R32_FLOAT,
375 DXGI_FORMAT_R32_UINT,
376 DXGI_FORMAT_R32_SINT,
377 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
378};
379
380constexpr DXGI_FORMAT D3DFCS_R24G8[] =
381{
382 DXGI_FORMAT_R24G8_TYPELESS,
383 DXGI_FORMAT_D24_UNORM_S8_UINT,
384 DXGI_FORMAT_R24_UNORM_X8_TYPELESS,
385 DXGI_FORMAT_X24_TYPELESS_G8_UINT,
386 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
387};
388
389constexpr DXGI_FORMAT D3DFCS_R8G8[] =
390{
391 DXGI_FORMAT_R8G8_TYPELESS,
392 DXGI_FORMAT_R8G8_UNORM,
393 DXGI_FORMAT_R8G8_UINT,
394 DXGI_FORMAT_R8G8_SNORM,
395 DXGI_FORMAT_R8G8_SINT,
396 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
397};
398
399constexpr DXGI_FORMAT D3DFCS_R16[] =
400{
401 DXGI_FORMAT_R16_TYPELESS,
402 DXGI_FORMAT_R16_FLOAT,
403 DXGI_FORMAT_D16_UNORM,
404 DXGI_FORMAT_R16_UNORM,
405 DXGI_FORMAT_R16_UINT,
406 DXGI_FORMAT_R16_SNORM,
407 DXGI_FORMAT_R16_SINT,
408 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
409};
410
411constexpr DXGI_FORMAT D3DFCS_R8[] =
412{
413 DXGI_FORMAT_R8_TYPELESS,
414 DXGI_FORMAT_R8_UNORM,
415 DXGI_FORMAT_R8_UINT,
416 DXGI_FORMAT_R8_SNORM,
417 DXGI_FORMAT_R8_SINT,
418 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
419};
420
421constexpr DXGI_FORMAT D3DFCS_A8[] =
422{
423 DXGI_FORMAT_A8_UNORM,
424 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
425};
426
427constexpr DXGI_FORMAT D3DFCS_R1[] =
428{
429 DXGI_FORMAT_R1_UNORM,
430 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
431};
432
433constexpr DXGI_FORMAT D3DFCS_R9G9B9E5[] =
434{
435 DXGI_FORMAT_R9G9B9E5_SHAREDEXP,
436 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
437};
438
439constexpr DXGI_FORMAT D3DFCS_R8G8_B8G8[] =
440{
441 DXGI_FORMAT_R8G8_B8G8_UNORM,
442 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
443};
444
445constexpr DXGI_FORMAT D3DFCS_G8R8_G8B8[] =
446{
447 DXGI_FORMAT_G8R8_G8B8_UNORM,
448 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
449};
450
451constexpr DXGI_FORMAT D3DFCS_BC1[] =
452{
453 DXGI_FORMAT_BC1_TYPELESS,
454 DXGI_FORMAT_BC1_UNORM,
455 DXGI_FORMAT_BC1_UNORM_SRGB,
456 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
457};
458
459constexpr DXGI_FORMAT D3DFCS_BC2[] =
460{
461 DXGI_FORMAT_BC2_TYPELESS,
462 DXGI_FORMAT_BC2_UNORM,
463 DXGI_FORMAT_BC2_UNORM_SRGB,
464 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
465};
466
467constexpr DXGI_FORMAT D3DFCS_BC3[] =
468{
469 DXGI_FORMAT_BC3_TYPELESS,
470 DXGI_FORMAT_BC3_UNORM,
471 DXGI_FORMAT_BC3_UNORM_SRGB,
472 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
473};
474
475constexpr DXGI_FORMAT D3DFCS_BC4[] =
476{
477 DXGI_FORMAT_BC4_TYPELESS,
478 DXGI_FORMAT_BC4_UNORM,
479 DXGI_FORMAT_BC4_SNORM,
480 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
481};
482
483constexpr DXGI_FORMAT D3DFCS_BC5[] =
484{
485 DXGI_FORMAT_BC5_TYPELESS,
486 DXGI_FORMAT_BC5_UNORM,
487 DXGI_FORMAT_BC5_SNORM,
488 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
489};
490
491constexpr DXGI_FORMAT D3DFCS_B5G6R5[] =
492{
493 DXGI_FORMAT_B5G6R5_UNORM,
494 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
495};
496
497constexpr DXGI_FORMAT D3DFCS_B5G5R5A1[] =
498{
499 DXGI_FORMAT_B5G5R5A1_UNORM,
500 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
501};
502
503constexpr DXGI_FORMAT D3DFCS_B8G8R8A8[] =
504{
505 DXGI_FORMAT_B8G8R8A8_TYPELESS,
506 DXGI_FORMAT_B8G8R8A8_UNORM,
507 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB,
508 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
509};
510
511constexpr DXGI_FORMAT D3DFCS_B8G8R8X8[] =
512{
513 DXGI_FORMAT_B8G8R8X8_TYPELESS,
514 DXGI_FORMAT_B8G8R8X8_UNORM,
515 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB,
516 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
517};
518
519constexpr DXGI_FORMAT D3DFCS_R10G10B10A2[] =
520{
521 DXGI_FORMAT_R10G10B10A2_TYPELESS,
522 DXGI_FORMAT_R10G10B10A2_UNORM,
523 DXGI_FORMAT_R10G10B10A2_UINT,
524 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM,
525 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
526};
527
528constexpr DXGI_FORMAT D3DFCS_BC6H[] =
529{
530 DXGI_FORMAT_BC6H_TYPELESS,
531 DXGI_FORMAT_BC6H_UF16,
532 DXGI_FORMAT_BC6H_SF16,
533 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
534};
535
536constexpr DXGI_FORMAT D3DFCS_BC7[] =
537{
538 DXGI_FORMAT_BC7_TYPELESS,
539 DXGI_FORMAT_BC7_UNORM,
540 DXGI_FORMAT_BC7_UNORM_SRGB,
541 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
542};
543
544constexpr DXGI_FORMAT D3DFCS_AYUV[] =
545{
546 DXGI_FORMAT_AYUV,
547 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
548};
549
550constexpr DXGI_FORMAT D3DFCS_NV12[] =
551{
552 DXGI_FORMAT_NV12,
553 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
554};
555
556constexpr DXGI_FORMAT D3DFCS_YUY2[] =
557{
558 DXGI_FORMAT_YUY2,
559 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
560};
561
562constexpr DXGI_FORMAT D3DFCS_P010[] =
563{
564 DXGI_FORMAT_P010,
565 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
566};
567
568constexpr DXGI_FORMAT D3DFCS_P016[] =
569{
570 DXGI_FORMAT_P016,
571 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
572};
573
574constexpr DXGI_FORMAT D3DFCS_NV11[] =
575{
576 DXGI_FORMAT_NV11,
577 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
578};
579
580constexpr DXGI_FORMAT D3DFCS_420_OPAQUE[] =
581{
582 DXGI_FORMAT_420_OPAQUE,
583 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
584};
585
586constexpr DXGI_FORMAT D3DFCS_Y410[] =
587{
588 DXGI_FORMAT_Y410,
589 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
590};
591
592constexpr DXGI_FORMAT D3DFCS_Y416[] =
593{
594 DXGI_FORMAT_Y416,
595 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
596};
597
598constexpr DXGI_FORMAT D3DFCS_Y210[] =
599{
600 DXGI_FORMAT_Y210,
601 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
602};
603
604constexpr DXGI_FORMAT D3DFCS_Y216[] =
605{
606 DXGI_FORMAT_Y216,
607 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
608};
609
610constexpr DXGI_FORMAT D3DFCS_AI44[] =
611{
612 DXGI_FORMAT_AI44,
613 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
614};
615
616constexpr DXGI_FORMAT D3DFCS_IA44[] =
617{
618 DXGI_FORMAT_IA44,
619 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
620};
621
622constexpr DXGI_FORMAT D3DFCS_P8[] =
623{
624 DXGI_FORMAT_P8,
625 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
626};
627
628constexpr DXGI_FORMAT D3DFCS_A8P8[] =
629{
630 DXGI_FORMAT_A8P8,
631 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
632};
633
634constexpr DXGI_FORMAT D3DFCS_B4G4R4A4[] =
635{
636 DXGI_FORMAT_B4G4R4A4_UNORM,
637 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
638};
639
640constexpr DXGI_FORMAT D3DFCS_P208[] =
641{
642 DXGI_FORMAT_P208,
643 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
644};
645
646constexpr DXGI_FORMAT D3DFCS_V208[] =
647{
648 DXGI_FORMAT_V208,
649 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
650};
651
652constexpr DXGI_FORMAT D3DFCS_V408[] =
653{
654 DXGI_FORMAT_V408,
655 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
656};
657
658constexpr DXGI_FORMAT D3DFCS_A4B4G4R4[] =
659{
660 DXGI_FORMAT_A4B4G4R4_UNORM,
661 DXGI_FORMAT_UNKNOWN // not part of cast set, just the "null terminator"
662};
663
664constexpr D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail[] =
665{
666 // DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal
667 {DXGI_FORMAT_UNKNOWN ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
668 {DXGI_FORMAT_R32G32B32A32_TYPELESS ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
669 { DXGI_FORMAT_R32G32B32A32_FLOAT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FLOAT, _FLOAT, _FLOAT, _FLOAT, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
670 { DXGI_FORMAT_R32G32B32A32_UINT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
671 { DXGI_FORMAT_R32G32B32A32_SINT ,DXGI_FORMAT_R32G32B32A32_TYPELESS, D3DFCS_R32G32B32A32, {32,32,32,32}, 128, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
672 {DXGI_FORMAT_R32G32B32_TYPELESS ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
673 { DXGI_FORMAT_R32G32B32_FLOAT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
674 { DXGI_FORMAT_R32G32B32_UINT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _UINT, _UINT, _UINT, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
675 { DXGI_FORMAT_R32G32B32_SINT ,DXGI_FORMAT_R32G32B32_TYPELESS, D3DFCS_R32G32B32, {32,32,32,0}, 96, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _SINT, _SINT, _SINT, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
676 {DXGI_FORMAT_R16G16B16A16_TYPELESS ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
677 { DXGI_FORMAT_R16G16B16A16_FLOAT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FLOAT, _FLOAT, _FLOAT, _FLOAT, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
678 { DXGI_FORMAT_R16G16B16A16_UNORM ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
679 { DXGI_FORMAT_R16G16B16A16_UINT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
680 { DXGI_FORMAT_R16G16B16A16_SNORM ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SNORM, _SNORM, _SNORM, _SNORM, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
681 { DXGI_FORMAT_R16G16B16A16_SINT ,DXGI_FORMAT_R16G16B16A16_TYPELESS, D3DFCS_R16G16B16A16, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
682 {DXGI_FORMAT_R32G32_TYPELESS ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
683 { DXGI_FORMAT_R32G32_FLOAT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _FLOAT, _FLOAT, _TYPELESS, _TYPELESS, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
684 { DXGI_FORMAT_R32G32_UINT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
685 { DXGI_FORMAT_R32G32_SINT ,DXGI_FORMAT_R32G32_TYPELESS, D3DFCS_R32G32, {32,32,0,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
686 {DXGI_FORMAT_R32G8X24_TYPELESS ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
687 { DXGI_FORMAT_D32_FLOAT_S8X24_UINT ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,S,X,X, _FLOAT,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
688 { DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT,_TYPELESS,_TYPELESS,_TYPELESS, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, },
689 { DXGI_FORMAT_X32_TYPELESS_G8X24_UINT ,DXGI_FORMAT_R32G8X24_TYPELESS, D3DFCS_R32G8X24, {32,8,24,0}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,G,X,X, _TYPELESS,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
690 {DXGI_FORMAT_R10G10B10A2_TYPELESS ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, },
691 { DXGI_FORMAT_R10G10B10A2_UNORM ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, },
692 { DXGI_FORMAT_R10G10B10A2_UINT ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, },
693 {DXGI_FORMAT_R11G11B10_FLOAT ,DXGI_FORMAT_R11G11B10_FLOAT, D3DFCS_R11G11B10, {11,11,10,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
694 {DXGI_FORMAT_R8G8B8A8_TYPELESS ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
695 { DXGI_FORMAT_R8G8B8A8_UNORM ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
696 { DXGI_FORMAT_R8G8B8A8_UNORM_SRGB ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
697 { DXGI_FORMAT_R8G8B8A8_UINT ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _UINT, _UINT, _UINT, _UINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
698 { DXGI_FORMAT_R8G8B8A8_SNORM ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SNORM, _SNORM, _SNORM, _SNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
699 { DXGI_FORMAT_R8G8B8A8_SINT ,DXGI_FORMAT_R8G8B8A8_TYPELESS, D3DFCS_R8G8B8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _SINT, _SINT, _SINT, _SINT, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
700 {DXGI_FORMAT_R16G16_TYPELESS ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
701 { DXGI_FORMAT_R16G16_FLOAT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _FLOAT, _FLOAT, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
702 { DXGI_FORMAT_R16G16_UNORM ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
703 { DXGI_FORMAT_R16G16_UINT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
704 { DXGI_FORMAT_R16G16_SNORM ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
705 { DXGI_FORMAT_R16G16_SINT ,DXGI_FORMAT_R16G16_TYPELESS, D3DFCS_R16G16, {16,16,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
706 {DXGI_FORMAT_R32_TYPELESS ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
707 { DXGI_FORMAT_D32_FLOAT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
708 { DXGI_FORMAT_R32_FLOAT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
709 { DXGI_FORMAT_R32_UINT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
710 { DXGI_FORMAT_R32_SINT ,DXGI_FORMAT_R32_TYPELESS, D3DFCS_R32, {32,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
711 {DXGI_FORMAT_R24G8_TYPELESS ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
712 { DXGI_FORMAT_D24_UNORM_S8_UINT ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,S,X,X, _UNORM,_UINT,_TYPELESS,_TYPELESS, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, },
713 { DXGI_FORMAT_R24_UNORM_X8_TYPELESS ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM,_TYPELESS,_TYPELESS,_TYPELESS, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, },
714 { DXGI_FORMAT_X24_TYPELESS_G8_UINT ,DXGI_FORMAT_R24G8_TYPELESS, D3DFCS_R24G8, {24,8,0,0}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,G,X,X, _TYPELESS,_UINT,_TYPELESS,_TYPELESS, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, },
715 {DXGI_FORMAT_R8G8_TYPELESS ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
716 { DXGI_FORMAT_R8G8_UNORM ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
717 { DXGI_FORMAT_R8G8_UINT ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _UINT, _UINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
718 { DXGI_FORMAT_R8G8_SNORM ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
719 { DXGI_FORMAT_R8G8_SINT ,DXGI_FORMAT_R8G8_TYPELESS, D3DFCS_R8G8, {8,8,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,X,X, _SINT, _SINT, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
720 {DXGI_FORMAT_R16_TYPELESS ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
721 { DXGI_FORMAT_R16_FLOAT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _FLOAT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
722 { DXGI_FORMAT_D16_UNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, D,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
723 { DXGI_FORMAT_R16_UNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
724 { DXGI_FORMAT_R16_UINT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
725 { DXGI_FORMAT_R16_SNORM ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
726 { DXGI_FORMAT_R16_SINT ,DXGI_FORMAT_R16_TYPELESS, D3DFCS_R16, {16,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
727 {DXGI_FORMAT_R8_TYPELESS ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
728 { DXGI_FORMAT_R8_UNORM ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
729 { DXGI_FORMAT_R8_UINT ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
730 { DXGI_FORMAT_R8_SNORM ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
731 { DXGI_FORMAT_R8_SINT ,DXGI_FORMAT_R8_TYPELESS, D3DFCS_R8, {8,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _SINT, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
732 {DXGI_FORMAT_A8_UNORM ,DXGI_FORMAT_A8_UNORM, D3DFCS_A8, {0,0,0,8}, 8, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, X,X,X,A, _TYPELESS, _TYPELESS, _TYPELESS, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
733 {DXGI_FORMAT_R1_UNORM ,DXGI_FORMAT_R1_UNORM, D3DFCS_R1, {1,0,0,0}, 1, FALSE, 8, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
734 {DXGI_FORMAT_R9G9B9E5_SHAREDEXP ,DXGI_FORMAT_R9G9B9E5_SHAREDEXP, D3DFCS_R9G9B9E5, {0,0,0,0}, 32, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _FLOAT, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
735 {DXGI_FORMAT_R8G8_B8G8_UNORM ,DXGI_FORMAT_R8G8_B8G8_UNORM, D3DFCS_R8G8_B8G8, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
736 {DXGI_FORMAT_G8R8_G8B8_UNORM ,DXGI_FORMAT_G8R8_G8B8_UNORM, D3DFCS_G8R8_G8B8, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
737 {DXGI_FORMAT_BC1_TYPELESS ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
738 { DXGI_FORMAT_BC1_UNORM ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
739 { DXGI_FORMAT_BC1_UNORM_SRGB ,DXGI_FORMAT_BC1_TYPELESS, D3DFCS_BC1, {0,0,0,0}, 64, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
740 {DXGI_FORMAT_BC2_TYPELESS ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
741 { DXGI_FORMAT_BC2_UNORM ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
742 { DXGI_FORMAT_BC2_UNORM_SRGB ,DXGI_FORMAT_BC2_TYPELESS, D3DFCS_BC2, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
743 {DXGI_FORMAT_BC3_TYPELESS ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
744 { DXGI_FORMAT_BC3_UNORM ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
745 { DXGI_FORMAT_BC3_UNORM_SRGB ,DXGI_FORMAT_BC3_TYPELESS, D3DFCS_BC3, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
746 {DXGI_FORMAT_BC4_TYPELESS ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
747 { DXGI_FORMAT_BC4_UNORM ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
748 { DXGI_FORMAT_BC4_SNORM ,DXGI_FORMAT_BC4_TYPELESS, D3DFCS_BC4, {0,0,0,0}, 64, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _SNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
749 {DXGI_FORMAT_BC5_TYPELESS ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
750 { DXGI_FORMAT_BC5_UNORM ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,X,X, _UNORM, _UNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
751 { DXGI_FORMAT_BC5_SNORM ,DXGI_FORMAT_BC5_TYPELESS, D3DFCS_BC5, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,X,X, _SNORM, _SNORM, _TYPELESS, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
752 {DXGI_FORMAT_B5G6R5_UNORM ,DXGI_FORMAT_B5G6R5_UNORM, D3DFCS_B5G6R5, {5,6,5,0}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
753 {DXGI_FORMAT_B5G5R5A1_UNORM ,DXGI_FORMAT_B5G5R5A1_UNORM, D3DFCS_B5G5R5A1, {5,5,5,1}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
754 {DXGI_FORMAT_B8G8R8A8_UNORM ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
755 {DXGI_FORMAT_B8G8R8X8_UNORM ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
756 {DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM ,DXGI_FORMAT_R10G10B10A2_TYPELESS, D3DFCS_R10G10B10A2, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, R,G,B,A, _FIXED_2_8, _FIXED_2_8, _FIXED_2_8, _UNORM, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
757 {DXGI_FORMAT_B8G8R8A8_TYPELESS ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, B,G,R,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
758 { DXGI_FORMAT_B8G8R8A8_UNORM_SRGB ,DXGI_FORMAT_B8G8R8A8_TYPELESS, D3DFCS_B8G8R8A8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
759 {DXGI_FORMAT_B8G8R8X8_TYPELESS ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_PARTIAL_TYPE, B,G,R,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, },
760 { DXGI_FORMAT_B8G8R8X8_UNORM_SRGB ,DXGI_FORMAT_B8G8R8X8_TYPELESS, D3DFCS_B8G8R8X8, {8,8,8,8}, 32, TRUE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,X, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _TYPELESS, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
761 {DXGI_FORMAT_BC6H_TYPELESS ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
762 { DXGI_FORMAT_BC6H_UF16 ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
763 { DXGI_FORMAT_BC6H_SF16 ,DXGI_FORMAT_BC6H_TYPELESS, D3DFCS_BC6H, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _FLOAT, _FLOAT, _FLOAT, _TYPELESS, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
764 {DXGI_FORMAT_BC7_TYPELESS ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_PARTIAL_TYPE, R,G,B,A, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
765 { DXGI_FORMAT_BC7_UNORM ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, FALSE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
766 { DXGI_FORMAT_BC7_UNORM_SRGB ,DXGI_FORMAT_BC7_TYPELESS, D3DFCS_BC7, {0,0,0,0}, 128, TRUE, 4, 4, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,A, _UNORM_SRGB, _UNORM_SRGB, _UNORM_SRGB, _UNORM, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, },
767 // YUV 4:4:4 formats
768 { DXGI_FORMAT_AYUV ,DXGI_FORMAT_AYUV, D3DFCS_AYUV, {8,8,8,8}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
769 { DXGI_FORMAT_Y410 ,DXGI_FORMAT_Y410, D3DFCS_Y410, {10,10,10,2}, 32, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
770 { DXGI_FORMAT_Y416 ,DXGI_FORMAT_Y416, D3DFCS_Y416, {16,16,16,16}, 64, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
771 // YUV 4:2:0 formats
772 { DXGI_FORMAT_NV12 ,DXGI_FORMAT_NV12, D3DFCS_NV12, {0,0,0,0}, 8, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
773 { DXGI_FORMAT_P010 ,DXGI_FORMAT_P010, D3DFCS_P010, {0,0,0,0}, 16, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, },
774 { DXGI_FORMAT_P016 ,DXGI_FORMAT_P016, D3DFCS_P016, {0,0,0,0}, 16, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, },
775 { DXGI_FORMAT_420_OPAQUE ,DXGI_FORMAT_420_OPAQUE, D3DFCS_420_OPAQUE, {0,0,0,0}, 8, FALSE, 2, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
776 // YUV 4:2:2 formats
777 { DXGI_FORMAT_YUY2 ,DXGI_FORMAT_YUY2, D3DFCS_YUY2, {0,0,0,0}, 16, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
778 { DXGI_FORMAT_Y210 ,DXGI_FORMAT_Y210, D3DFCS_Y210, {0,0,0,0}, 32, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
779 { DXGI_FORMAT_Y216 ,DXGI_FORMAT_Y216, D3DFCS_Y216, {0,0,0,0}, 32, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,G,B,X, _UNORM, _UNORM, _UNORM, _TYPELESS, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, },
780 // YUV 4:1:1 formats
781 { DXGI_FORMAT_NV11 ,DXGI_FORMAT_NV11, D3DFCS_NV11, {0,0,0,0}, 8, FALSE, 4, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
782 // Legacy substream formats
783 { DXGI_FORMAT_AI44 ,DXGI_FORMAT_AI44, D3DFCS_AI44, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
784 { DXGI_FORMAT_IA44 ,DXGI_FORMAT_IA44, D3DFCS_IA44, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
785 { DXGI_FORMAT_P8 ,DXGI_FORMAT_P8, D3DFCS_P8, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
786 { DXGI_FORMAT_A8P8 ,DXGI_FORMAT_A8P8, D3DFCS_A8P8, {0,0,0,0}, 16, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, },
787 { DXGI_FORMAT_B4G4R4A4_UNORM ,DXGI_FORMAT_B4G4R4A4_UNORM, D3DFCS_B4G4R4A4, {4,4,4,4}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, B,G,R,A, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, },
788 { DXGI_FORMAT(116) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
789 { DXGI_FORMAT(117) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
790 { DXGI_FORMAT(118) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
791 { DXGI_FORMAT(119) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
792 { DXGI_FORMAT(120) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
793 { DXGI_FORMAT(121) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
794 { DXGI_FORMAT(122) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
795
796 { DXGI_FORMAT(123) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
797
798 { DXGI_FORMAT(124) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
799 { DXGI_FORMAT(125) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
800 { DXGI_FORMAT(126) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
801 { DXGI_FORMAT(127) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
802 { DXGI_FORMAT(128) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
803 { DXGI_FORMAT(129) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
804 { DXGI_FORMAT(DXGI_FORMAT_P208) ,DXGI_FORMAT_P208, D3DFCS_P208, {0,0,0,0}, 8, FALSE, 2, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
805 { DXGI_FORMAT(DXGI_FORMAT_V208) ,DXGI_FORMAT_V208, D3DFCS_V208, {0,0,0,0}, 8, FALSE, 1, 2, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
806 { DXGI_FORMAT(DXGI_FORMAT_V408) ,DXGI_FORMAT_V408, D3DFCS_V408, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, },
807
808 { DXGI_FORMAT(133) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
809 { DXGI_FORMAT(134) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
810 { DXGI_FORMAT(135) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
811 { DXGI_FORMAT(136) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
812 { DXGI_FORMAT(137) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
813 { DXGI_FORMAT(138) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
814 { DXGI_FORMAT(139) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
815 { DXGI_FORMAT(140) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
816 { DXGI_FORMAT(141) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
817 { DXGI_FORMAT(142) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
818 { DXGI_FORMAT(143) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
819 { DXGI_FORMAT(144) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
820 { DXGI_FORMAT(145) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
821 { DXGI_FORMAT(146) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
822 { DXGI_FORMAT(147) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
823 { DXGI_FORMAT(148) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
824 { DXGI_FORMAT(149) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
825 { DXGI_FORMAT(150) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
826 { DXGI_FORMAT(151) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
827 { DXGI_FORMAT(152) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
828 { DXGI_FORMAT(153) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
829 { DXGI_FORMAT(154) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
830 { DXGI_FORMAT(155) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
831 { DXGI_FORMAT(156) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
832 { DXGI_FORMAT(157) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
833 { DXGI_FORMAT(158) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
834 { DXGI_FORMAT(159) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
835 { DXGI_FORMAT(160) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
836 { DXGI_FORMAT(161) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
837 { DXGI_FORMAT(162) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
838 { DXGI_FORMAT(163) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
839 { DXGI_FORMAT(164) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
840 { DXGI_FORMAT(165) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
841 { DXGI_FORMAT(166) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
842 { DXGI_FORMAT(167) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
843 { DXGI_FORMAT(168) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
844 { DXGI_FORMAT(169) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
845 { DXGI_FORMAT(170) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
846 { DXGI_FORMAT(171) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
847 { DXGI_FORMAT(172) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
848 { DXGI_FORMAT(173) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
849 { DXGI_FORMAT(174) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
850 { DXGI_FORMAT(175) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
851 { DXGI_FORMAT(176) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
852 { DXGI_FORMAT(177) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
853 { DXGI_FORMAT(178) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
854 { DXGI_FORMAT(179) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
855 { DXGI_FORMAT(180) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
856 { DXGI_FORMAT(181) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
857 { DXGI_FORMAT(182) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
858 { DXGI_FORMAT(183) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
859 { DXGI_FORMAT(184) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
860 { DXGI_FORMAT(185) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
861 { DXGI_FORMAT(186) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
862 { DXGI_FORMAT(187) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
863 { DXGI_FORMAT(188) ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 0, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_NO_TYPE, X,X,X,X, _TYPELESS, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, },
864
865 { DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
866 { DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE ,DXGI_FORMAT_UNKNOWN, D3DFCS_UNKNOWN, {0,0,0,0}, 8, FALSE, 1, 1, 1, D3DFL_CUSTOM, D3DFTL_FULL_TYPE, R,X,X,X, _UNORM, _TYPELESS, _TYPELESS, _TYPELESS, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
867 { DXGI_FORMAT_A4B4G4R4_UNORM ,DXGI_FORMAT_A4B4G4R4_UNORM, D3DFCS_A4B4G4R4, {4,4,4,4}, 16, FALSE, 1, 1, 1, D3DFL_STANDARD, D3DFTL_FULL_TYPE, A,B,G,R, _UNORM, _UNORM, _UNORM, _UNORM, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, },
868 //DXGI_FORMAT ParentFormat pDefaultFormatCastSet BitsPerComponent[4], BitsPerUnit, SRGB, WidthAlignment, HeightAlignment, DepthAlignment, Layout, TypeLevel, ComponentName[4],ComponentInterpretation[4], bDX9VertexOrIndexFormat bDX9TextureFormat, bFloatNormFormat, bPlanar, bYUV bDependantFormatCastSet bInternal
869
870};
871
872const UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_NumFormats = (sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatDetail) / sizeof(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL));
873
874//---------------------------------------------------------------------------------------------------------------------------------
875// GetHighestDefinedFeatureLevel
876D3D_FEATURE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHighestDefinedFeatureLevel()
877{
878 return D3D_FEATURE_LEVEL_12_2;
879}
880
881//---------------------------------------------------------------------------------------------------------------------------------
882// GetNumFormats
883UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumFormats()
884{
885 return s_NumFormats;
886}
887
888//---------------------------------------------------------------------------------------------------------------------------------
889// GetFormatTable
890const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatTable()
891{
892 return &s_FormatDetail[0];
893}
894
895//---------------------------------------------------------------------------------------------------------------------------------
896// GetFormatTable
897BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Opaque(DXGI_FORMAT Format)
898{
899 return Format == DXGI_FORMAT_420_OPAQUE;
900}
901
902//---------------------------------------------------------------------------------------------------------------------------------
903// FormatExists
904bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(DXGI_FORMAT Format)
905{
906 return GetFormat( Format) != (DXGI_FORMAT) -1 ? true : false;
907}
908
909//---------------------------------------------------------------------------------------------------------------------------------
910// GetDetailTableIndex
911UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndex(DXGI_FORMAT Format )
912{
913 if( (UINT)Format < _countof( s_FormatDetail ) )
914 {
915 assert( s_FormatDetail[(UINT)Format].DXGIFormat == Format );
916 return static_cast<UINT>(Format);
917 }
918
919 return (UINT)-1;
920}
921
922//---------------------------------------------------------------------------------------------------------------------------------
923// IsBlockCompressFormat - returns true if format is block compressed. This function is a helper function for GetBitsPerUnit and
924// if this function returns true then GetBitsPerUnit returns block size.
925bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsBlockCompressFormat(DXGI_FORMAT Format)
926{
927 // Returns true if BC1, BC2, BC3, BC4, BC5, BC6, BC7, or ASTC
928 return (Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC5_SNORM) ||
929 (Format >= DXGI_FORMAT_BC6H_TYPELESS && Format <= DXGI_FORMAT_BC7_UNORM_SRGB);
930}
931
932//---------------------------------------------------------------------------------------------------------------------------------
933// GetByteAlignment
934UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetByteAlignment(DXGI_FORMAT Format)
935{
936 UINT bits = GetBitsPerUnit(Format);
937 if (!IsBlockCompressFormat(Format))
938 {
939 bits *= GetWidthAlignment(Format)*GetHeightAlignment(Format)*GetDepthAlignment(Format);
940 }
941
942 assert((bits & 0x7) == 0); // Unit must be byte-aligned
943 return bits >> 3;
944}
945
946//---------------------------------------------------------------------------------------------------------------------------------
947// GetBitsPerUnitThrow
948UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerUnitThrow(DXGI_FORMAT Format)
949{
950 return s_FormatDetail[GetDetailTableIndexThrow( Format )].BitsPerUnit;
951}
952
953//---------------------------------------------------------------------------------------------------------------------------------
954// FormatExistsInHeader
955bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExistsInHeader(DXGI_FORMAT Format, bool bExternalHeader)
956{
957 const UINT Index = GetDetailTableIndex( Format );
958 if (UINT( -1 ) == Index || (bExternalHeader && GetFormatDetail( Format )->bInternal))
959 {
960 return false;
961 }
962 else
963 {
964 return true;
965 }
966}
967
968//---------------------------------------------------------------------------------------------------------------------------------
969// GetName
970LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetName(DXGI_FORMAT Format, bool bHideInternalFormats)
971{
972 const UINT Index = GetDetailTableIndex( Format );
973 if (UINT( -1 ) == Index || (bHideInternalFormats && GetFormatDetail( Format )->bInternal) || !s_FormatNames[Index])
974 {
975 return "Unrecognized";
976 }
977 else
978 {
979 return s_FormatNames[ Index ];
980 }
981}
982
983//---------------------------------------------------------------------------------------------------------------------------------
984// IsSRGBFormat
985bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSRGBFormat(DXGI_FORMAT Format)
986{
987 const UINT Index = GetDetailTableIndex(Format);
988 if(UINT( -1 ) == Index )
989 {
990 return false;
991 }
992
993 return s_FormatDetail[Index].SRGBFormat ? true : false;
994}
995
996//----------------------------------------------------------------------------
997// DivideAndRoundUp
998inline HRESULT DivideAndRoundUp(UINT dividend, UINT divisor, _Out_ UINT& result)
999{
1000 HRESULT hr = S_OK;
1001
1002 UINT adjustedDividend;
1003 hr = Safe_UIntAdd(dividend, (divisor - 1), &adjustedDividend);
1004
1005 result = SUCCEEDED(hr) ? (adjustedDividend / divisor) : 0;
1006
1007 return hr;
1008}
1009
1010//----------------------------------------------------------------------------
1011// CalculateExtraPlanarRows
1012HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateExtraPlanarRows(
1013 DXGI_FORMAT format,
1014 UINT plane0Height,
1015 _Out_ UINT& totalHeight
1016 )
1017{
1018 if (!D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(format))
1019 {
1020 totalHeight = plane0Height;
1021 return S_OK;
1022 }
1023
1024 // blockWidth, blockHeight, and blockSize only reflect the size of plane 0. Each planar format has additonal planes that must
1025 // be counted. Each format increases size by another 0.5x, 1x, or 2x. Grab the number of "half allocation" increments so integer
1026 // math can be used to calculate the extra size.
1027 UINT extraHalfHeight;
1028 UINT round;
1029
1030 switch (D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetParentFormat(format))
1031 {
1032 case DXGI_FORMAT_NV12:
1033 case DXGI_FORMAT_P010:
1034 case DXGI_FORMAT_P016:
1035 case DXGI_FORMAT_420_OPAQUE:
1036 extraHalfHeight = 1;
1037 round = 1;
1038 break;
1039
1040 case DXGI_FORMAT_NV11:
1041 case DXGI_FORMAT_P208:
1042 extraHalfHeight = 2;
1043 round = 0;
1044 break;
1045 case DXGI_FORMAT_V208:
1046 extraHalfHeight = 2;
1047 round = 1;
1048 break;
1049
1050 case DXGI_FORMAT_V408:
1051 extraHalfHeight = 4;
1052 round = 0;
1053 break;
1054
1055 case DXGI_FORMAT_R24G8_TYPELESS:
1056 case DXGI_FORMAT_R32G8X24_TYPELESS:
1057 totalHeight = plane0Height;
1058 return S_OK;
1059
1060 default:
1061 assert(false);
1062 return S_OK;
1063 }
1064
1065 UINT extraPlaneHeight;
1066 if (FAILED(Safe_UIntMult(plane0Height, extraHalfHeight, &extraPlaneHeight))
1067 || FAILED(Safe_UIntAdd(extraPlaneHeight, round, &extraPlaneHeight))
1068 || FAILED(Safe_UIntAdd(plane0Height, (extraPlaneHeight >> 1), &totalHeight)))
1069 {
1070 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1071 }
1072
1073 return S_OK;
1074}
1075
1076//----------------------------------------------------------------------------
1077// CalculateResourceSize
1078HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize(
1079 UINT width,
1080 UINT height,
1081 UINT depth,
1082 DXGI_FORMAT format,
1083 UINT mipLevels,
1084 UINT subresources,
1085 _Out_ SIZE_T& totalByteSize,
1086 _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST *pDst)
1087{
1088 UINT tableIndex = GetDetailTableIndexNoThrow( format );
1089 if (tableIndex == UINT(-1))
1090 return E_INVALIDARG;
1091
1092 totalByteSize = 0;
1093
1094 const FORMAT_DETAIL& formatDetail = s_FormatDetail[tableIndex];
1095
1096 bool fIsBlockCompressedFormat = IsBlockCompressFormat(format );
1097
1098 // No format currently requires depth alignment.
1099 assert(formatDetail.DepthAlignment == 1);
1100
1101 UINT subWidth = width;
1102 UINT subHeight = height;
1103 UINT subDepth = depth;
1104 for (UINT s = 0, iM = 0; s < subresources; ++s)
1105 {
1106 UINT blockWidth;
1107 if (FAILED(DivideAndRoundUp(subWidth, formatDetail.WidthAlignment, /*_Out_*/ blockWidth)))
1108 {
1109 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1110 }
1111
1112 UINT blockSize, blockHeight;
1113 if (fIsBlockCompressedFormat)
1114 {
1115 if (FAILED(DivideAndRoundUp(subHeight, formatDetail.HeightAlignment, /*_Out_*/ blockHeight)))
1116 {
1117 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1118 }
1119
1120 // Block Compressed formats use BitsPerUnit as block size.
1121 blockSize = formatDetail.BitsPerUnit;
1122 }
1123 else
1124 {
1125 // The height must *not* be aligned to HeightAlign. As there is no plane pitch/stride, the expectation is that the 2nd plane
1126 // begins immediately after the first. The only formats with HeightAlignment other than 1 are planar or block compressed, and
1127 // block compressed is handled above.
1128 assert(formatDetail.bPlanar || formatDetail.HeightAlignment == 1);
1129 blockHeight = subHeight;
1130
1131 // Combined with the division os subWidth by the width alignment above, this helps achieve rounding the stride up to an even multiple of
1132 // block width. This is especially important for formats like NV12 and P208 whose chroma plane is wider than the luma.
1133 blockSize = formatDetail.BitsPerUnit * formatDetail.WidthAlignment;
1134 }
1135
1136 if (DXGI_FORMAT_UNKNOWN == formatDetail.DXGIFormat)
1137 {
1138 blockSize = 8;
1139 }
1140
1141 // Convert block width size to bytes.
1142 assert((blockSize & 0x7) == 0);
1143 blockSize = blockSize >> 3;
1144
1145 if (formatDetail.bPlanar)
1146 {
1147 if (FAILED(CalculateExtraPlanarRows(format, blockHeight, /*_Out_*/ blockHeight)))
1148 {
1149 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1150 }
1151 }
1152
1153 // Calculate rowPitch, depthPitch, and total subresource size.
1154 UINT rowPitch, depthPitch;
1155
1156 if ( FAILED(Safe_UIntMult(blockWidth, blockSize, &rowPitch))
1157 || FAILED(Safe_UIntMult(blockHeight, rowPitch, &depthPitch)))
1158 {
1159 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1160 }
1161 SIZE_T subresourceByteSize = SIZE_T(UINT64(subDepth) * UINT64(depthPitch));
1162
1163 if (pDst)
1164 {
1165 D3D12_MEMCPY_DEST& dst = pDst[s];
1166
1167 // This data will be returned straight from the API to satisfy Map. So, strides/ alignment must be API-correct.
1168 dst.pData = reinterpret_cast<void*>(totalByteSize);
1169 assert(s != 0 || dst.pData == nullptr);
1170
1171 dst.RowPitch = rowPitch;
1172 dst.SlicePitch = depthPitch;
1173 }
1174
1175 // Align the subresource size.
1176 static_assert((MAP_ALIGN_REQUIREMENT & (MAP_ALIGN_REQUIREMENT - 1)) == 0, "This code expects MAP_ALIGN_REQUIREMENT to be a power of 2.");
1177
1178 SIZE_T subresourceByteSizeAligned = subresourceByteSize + MAP_ALIGN_REQUIREMENT - 1;
1179 subresourceByteSizeAligned = subresourceByteSizeAligned & ~(MAP_ALIGN_REQUIREMENT - 1);
1180 totalByteSize = totalByteSize + subresourceByteSizeAligned;
1181
1182
1183 // Iterate over mip levels and array elements
1184 if (++iM >= mipLevels)
1185 {
1186 iM = 0;
1187
1188 subWidth = width;
1189 subHeight = height;
1190 subDepth = depth;
1191 }
1192 else
1193 {
1194 subWidth /= (1 == subWidth ? 1 : 2);
1195 subHeight /= (1 == subHeight ? 1 : 2);
1196 subDepth /= (1 == subDepth ? 1 : 2);
1197 }
1198 }
1199
1200 return S_OK;
1201}
1202
1203inline bool IsPow2( UINT Val )
1204{
1205 return 0 == (Val & (Val - 1));
1206}
1207
1208// This helper function calculates the Row Pitch for a given format. For Planar formats this function returns
1209// the row major RowPitch of the resource. The RowPitch is the same for all the planes. For Planar
1210// also use the CalculateExtraPlanarRows function to calculate the corresonding height or use the CalculateMinimumRowMajorSlicePitch
1211// function. For Block Compressed Formats, this function returns the RowPitch of a row of blocks. For packed subsampled formats and other formats,
1212// this function returns the row pitch of one single row of pixels.
1213HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(DXGI_FORMAT Format, UINT Width, _Out_ UINT &RowPitch)
1214{
1215 // Early out for DXGI_FORMAT_UNKNOWN special case.
1216 if (Format == DXGI_FORMAT_UNKNOWN)
1217 {
1218 RowPitch = Width;
1219 return S_OK;
1220 }
1221
1222 UINT WidthAlignment = GetWidthAlignment(Format);
1223
1224 UINT NumUnits;
1225 if (IsBlockCompressFormat(Format))
1226 {
1227 // This function calculates the minimum stride needed for a block row when the format
1228 // is block compressed.The GetBitsPerUnit value stored in the format table indicates
1229 // the size of a compressed block for block compressed formats.
1230 assert(WidthAlignment != 0);
1231 if (FAILED(DivideAndRoundUp(Width, WidthAlignment, NumUnits)))
1232 {
1233 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1234 }
1235 }
1236 else
1237 {
1238 // All other formats must have strides aligned to their width alignment requirements.
1239 // The Width may not be aligned to the WidthAlignment. This is not an error for this
1240 // function as we expect to allow formats like NV12 to have odd dimensions in the future.
1241
1242 // The following alignement code expects only pow2 alignment requirements. Only block
1243 // compressed formats currently have non-pow2 alignment requriements.
1244 assert(IsPow2(WidthAlignment));
1245
1246 UINT Mask = WidthAlignment - 1;
1247 if (FAILED(Safe_UIntAdd(Width, Mask, &NumUnits)))
1248 {
1249 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1250 }
1251
1252 NumUnits &= ~Mask;
1253 }
1254
1255 if (FAILED(Safe_UIntMult(NumUnits, GetBitsPerUnit(Format), &RowPitch)))
1256 {
1257 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1258 }
1259
1260 // This must to always be Byte aligned.
1261 assert((RowPitch & 7) == 0);
1262 RowPitch >>= 3;
1263
1264 return S_OK;
1265}
1266
1267// This helper function calculates the SlicePitch for a given format. For Planar formats the slice pitch includes the extra
1268// planes.
1269HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorSlicePitch(DXGI_FORMAT Format, UINT TightRowPitch, UINT Height, _Out_ UINT &SlicePitch)
1270{
1271 if (Planar(Format))
1272 {
1273 UINT PlanarHeight;
1274 if (FAILED(CalculateExtraPlanarRows(Format, Height, PlanarHeight)))
1275 {
1276 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1277 }
1278
1279 return Safe_UIntMult(TightRowPitch, PlanarHeight, &SlicePitch);
1280 }
1281 else if (Format == DXGI_FORMAT_UNKNOWN)
1282 {
1283 return Safe_UIntMult(TightRowPitch, Height, &SlicePitch);
1284 }
1285
1286 UINT HeightAlignment = GetHeightAlignment(Format);
1287
1288 // Caution assert to make sure that no new format breaks this assumption that all HeightAlignment formats are BC or Planar.
1289 // This is to make sure that Height handled correctly for this calculation.
1290 assert(HeightAlignment == 1 || IsBlockCompressFormat(Format));
1291
1292 UINT HeightOfPacked;
1293 if (FAILED(DivideAndRoundUp(Height, HeightAlignment, HeightOfPacked)))
1294 {
1295 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1296 }
1297
1298 if (FAILED(Safe_UIntMult(HeightOfPacked, TightRowPitch, &SlicePitch)))
1299 {
1300 return INTSAFE_E_ARITHMETIC_OVERFLOW;
1301 }
1302
1303 return S_OK;
1304}
1305
1306
1307
1308//---------------------------------------------------------------------------------------------------------------------------------
1309// GetBitsPerUnit - returns bits per pixel unless format is a block compress format then it returns bits per block.
1310// use IsBlockCompressFormat() to determine if block size is returned.
1311UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerUnit(DXGI_FORMAT Format)
1312{
1313 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerUnit;
1314}
1315
1316//---------------------------------------------------------------------------------------------------------------------------------
1317UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment(DXGI_FORMAT Format)
1318{
1319 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].WidthAlignment;
1320}
1321
1322UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment(DXGI_FORMAT Format)
1323{
1324 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].HeightAlignment;
1325}
1326
1327UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment(DXGI_FORMAT Format)
1328{
1329 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].DepthAlignment;
1330}
1331//---------------------------------------------------------------------------------------------------------------------------------
1332// GetFormat
1333DXGI_FORMAT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormat(SIZE_T Index)
1334{
1335 if( Index < GetNumFormats() )
1336 {
1337 return s_FormatDetail[Index].DXGIFormat;
1338 }
1339 return (DXGI_FORMAT)-1;
1340}
1341
1342//---------------------------------------------------------------------------------------------------------------------------------
1343// CanBeCastEvenFullyTyped
1344bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CanBeCastEvenFullyTyped(DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl)
1345{
1346 //SRGB can be cast away/back, and XR_BIAS can be cast to/from UNORM
1347 switch(fl)
1348 {
1349 case D3D_FEATURE_LEVEL_1_0_GENERIC:
1350 case D3D_FEATURE_LEVEL_1_0_CORE:
1351 return false;
1352 default:
1353 break;
1354 }
1355 switch( Format )
1356 {
1357 case DXGI_FORMAT_R8G8B8A8_UNORM:
1358 case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
1359 case DXGI_FORMAT_B8G8R8A8_UNORM:
1360 case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
1361 return true;
1362 case DXGI_FORMAT_R10G10B10A2_UNORM:
1363 case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
1364 return fl >= D3D_FEATURE_LEVEL_10_0;
1365 default:
1366 return false;
1367 }
1368}
1369
1370//---------------------------------------------------------------------------------------------------------------------------------
1371// GetFormatDetail
1372const D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FORMAT_DETAIL* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatDetail( DXGI_FORMAT Format )
1373{
1374 const UINT Index = GetDetailTableIndex(Format);
1375 if(UINT( -1 ) == Index )
1376 {
1377 return nullptr;
1378 }
1379
1380 return &s_FormatDetail[ Index ];
1381}
1382
1383//---------------------------------------------------------------------------------------------------------------------------------
1384// GetBitsPerStencil
1385UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerStencil(DXGI_FORMAT Format)
1386{
1387 const UINT Index = GetDetailTableIndexThrow( Format );
1388 if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) &&
1389 (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) )
1390 {
1391 return 0;
1392 }
1393 for( UINT comp = 0; comp < 4; comp++ )
1394 {
1395 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1396 switch(comp)
1397 {
1398 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1399 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1400 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1401 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1402 }
1403 if( name == D3DFCN_S )
1404 {
1405 return s_FormatDetail[Index].BitsPerComponent[comp];
1406 }
1407 }
1408 return 0;
1409}
1410
1411//---------------------------------------------------------------------------------------------------------------------------------
1412// GetBitsPerDepth
1413UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerDepth(DXGI_FORMAT Format)
1414{
1415 const UINT Index = GetDetailTableIndexThrow( Format );
1416 if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) &&
1417 (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) )
1418 {
1419 return 0;
1420 }
1421 for( UINT comp = 0; comp < 4; comp++ )
1422 {
1423 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1424 switch(comp)
1425 {
1426 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1427 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1428 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1429 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1430 }
1431 if( name == D3DFCN_D )
1432 {
1433 return s_FormatDetail[Index].BitsPerComponent[comp];
1434 }
1435 }
1436 return 0;
1437}
1438
1439//---------------------------------------------------------------------------------------------------------------------------------
1440// GetFormatReturnTypes
1441void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatReturnTypes(
1442 DXGI_FORMAT Format,
1443 D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations ) // return array with 4 entries
1444{
1445 const UINT Index = GetDetailTableIndexThrow(Format);
1446 pInterpretations[D3D10_SB_4_COMPONENT_R] = s_FormatDetail[Index].ComponentInterpretation0;
1447 pInterpretations[D3D10_SB_4_COMPONENT_G] = s_FormatDetail[Index].ComponentInterpretation1;
1448 pInterpretations[D3D10_SB_4_COMPONENT_B] = s_FormatDetail[Index].ComponentInterpretation2;
1449 pInterpretations[D3D10_SB_4_COMPONENT_A] = s_FormatDetail[Index].ComponentInterpretation3;
1450}
1451
1452//---------------------------------------------------------------------------------------------------------------------------------
1453// GetAddressingBitsPerAlignedSize
1454UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetAddressingBitsPerAlignedSize(DXGI_FORMAT Format)
1455{
1456 UINT byteAlignment = GetByteAlignment(Format);
1457 UINT8 addressBitsPerElement = 0;
1458
1459 switch(byteAlignment)
1460 {
1461 case 1: addressBitsPerElement = 0; break;
1462 case 2: addressBitsPerElement = 1; break;
1463 case 4: addressBitsPerElement = 2; break;
1464 case 8: addressBitsPerElement = 3; break;
1465 case 16: addressBitsPerElement = 4; break;
1466
1467 // The format is not supported
1468 default: return UINT8( -1 );
1469 }
1470
1471 return addressBitsPerElement;
1472}
1473
1474//---------------------------------------------------------------------------------------------------------------------------------
1475// GetNumComponentsInFormat
1476UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumComponentsInFormat( DXGI_FORMAT Format )
1477{
1478 UINT n = 0;
1479 const UINT Index = GetDetailTableIndexThrow(Format);
1480 for( UINT comp = 0; comp < 4; comp++ )
1481 {
1482 D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
1483 switch(comp)
1484 {
1485 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1486 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1487 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1488 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1489 }
1490 if( name != D3DFCN_X )
1491 {
1492 n++;
1493 }
1494 }
1495 return n;
1496}
1497
1498//---------------------------------------------------------------------------------------------------------------------------------
1499// GetMinNumComponentsInFormats
1500UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
1501{
1502 UINT NumComponentsFormatA = GetNumComponentsInFormat(FormatA);
1503 UINT NumComponentsFormatB = GetNumComponentsInFormat(FormatB);
1504 UINT NumComponents = NumComponentsFormatA < NumComponentsFormatB ? NumComponentsFormatA : NumComponentsFormatB;
1505 return NumComponents;
1506}
1507
1508//---------------------------------------------------------------------------------------------------------------------------------
1509// Sequential2AbsoluteComponentIndex
1510UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Sequential2AbsoluteComponentIndex( DXGI_FORMAT Format, UINT SequentialComponentIndex)
1511{
1512 UINT n = 0;
1513 const UINT Index = GetDetailTableIndexThrow(Format);
1514 for( UINT comp = 0; comp < 4; comp++ )
1515 {
1516 D3D_FORMAT_COMPONENT_NAME name = static_cast<D3D_FORMAT_COMPONENT_NAME>(0);
1517 switch(comp)
1518 {
1519 case 0: name = s_FormatDetail[Index].ComponentName0; break;
1520 case 1: name = s_FormatDetail[Index].ComponentName1; break;
1521 case 2: name = s_FormatDetail[Index].ComponentName2; break;
1522 case 3: name = s_FormatDetail[Index].ComponentName3; break;
1523 }
1524 if( name != D3DFCN_X )
1525 {
1526 if (SequentialComponentIndex == n)
1527 {
1528 return comp;
1529 }
1530 n++;
1531 }
1532 }
1533 return UINT( -1 );
1534}
1535
1536//---------------------------------------------------------------------------------------------------------------------------------
1537// Depth Only Format
1538bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DepthOnlyFormat(DXGI_FORMAT Format)
1539{
1540 switch( Format )
1541 {
1542 case DXGI_FORMAT_D32_FLOAT:
1543 case DXGI_FORMAT_D16_UNORM:
1544 return true;
1545 default:
1546 return false;
1547 }
1548}
1549
1550//---------------------------------------------------------------------------------------------------------------------------------
1551bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsSamplerFeedback(DXGI_FORMAT Format)
1552{
1553 switch (Format)
1554 {
1555 case DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE:
1556 case DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE:
1557 return true;
1558 default:
1559 return false;
1560 }
1561}
1562
1563//---------------------------------------------------------------------------------------------------------------------------------
1564// GetParentFormat
1565DXGI_FORMAT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetParentFormat(DXGI_FORMAT Format)
1566{
1567 return s_FormatDetail[Format].ParentFormat;
1568}
1569
1570//---------------------------------------------------------------------------------------------------------------------------------
1571// GetFormatCastSet
1572const DXGI_FORMAT* D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatCastSet(DXGI_FORMAT Format)
1573{
1574 return s_FormatDetail[Format].pDefaultFormatCastSet;
1575}
1576
1577//---------------------------------------------------------------------------------------------------------------------------------
1578// GetTypeLevel
1579D3D_FORMAT_TYPE_LEVEL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTypeLevel(DXGI_FORMAT Format)
1580{
1581 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].TypeLevel;
1582}
1583
1584//---------------------------------------------------------------------------------------------------------------------------------
1585// GetLayout
1586D3D_FORMAT_LAYOUT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetLayout(DXGI_FORMAT Format)
1587{
1588 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].Layout;
1589}
1590
1591//---------------------------------------------------------------------------------------------------------------------------------
1592// GetComponentName
1593D3D_FORMAT_COMPONENT_NAME D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetComponentName(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1594{
1595 D3D_FORMAT_COMPONENT_NAME name = {};
1596 switch( AbsoluteComponentIndex )
1597 {
1598 case 0: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName0; break;
1599 case 1: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName1; break;
1600 case 2: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName2; break;
1601 case 3: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName3; break;
1602#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1603 default: throw std::invalid_argument("AbsoluteComponentIndex");
1604#else
1605 default: break;
1606#endif
1607 }
1608 return name;
1609}
1610//---------------------------------------------------------------------------------------------------------------------------------
1611// GetBitsPerComponent
1612UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerComponent(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1613{
1614 if( AbsoluteComponentIndex > 3 )
1615 {
1616#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1617 throw std::invalid_argument("AbsoluteComponentIndex");
1618#else
1619 return UINT( -1 );
1620#endif
1621 }
1622 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerComponent[AbsoluteComponentIndex];
1623}
1624
1625//---------------------------------------------------------------------------------------------------------------------------------
1626// GetFormatComponentInterpretation
1627D3D_FORMAT_COMPONENT_INTERPRETATION D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatComponentInterpretation(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
1628{
1629 D3D_FORMAT_COMPONENT_INTERPRETATION interp {};
1630
1631 switch( AbsoluteComponentIndex )
1632 {
1633 case 0: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation0; break;
1634 case 1: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation1; break;
1635 case 2: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation2; break;
1636 case 3: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation3; break;
1637#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1638 default: throw std::invalid_argument("AbsoluteComponentIndex");
1639#else
1640 default: break;
1641#endif
1642 }
1643 return interp;
1644}
1645
1646//---------------------------------------------------------------------------------------------------------------------------------
1647// Planar
1648BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(DXGI_FORMAT Format)
1649{
1650 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].bPlanar;
1651}
1652
1653//---------------------------------------------------------------------------------------------------------------------------------
1654// Non-opaque Planar
1655BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlanar(DXGI_FORMAT Format)
1656{
1657 return Planar(Format) && !Opaque(Format);
1658}
1659
1660//---------------------------------------------------------------------------------------------------------------------------------
1661// YUV
1662BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::YUV(DXGI_FORMAT Format)
1663{
1664 return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].bYUV;
1665}
1666
1667//---------------------------------------------------------------------------------------------------------------------------------
1668// Format family supports stencil
1669bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FamilySupportsStencil(DXGI_FORMAT Format)
1670{
1671 switch( GetParentFormat(Format) )
1672 {
1673 case DXGI_FORMAT_R32G8X24_TYPELESS:
1674 case DXGI_FORMAT_R24G8_TYPELESS:
1675 return true;
1676 default:
1677 return false;
1678 }
1679}
1680
1681//---------------------------------------------------------------------------------------------------------------------------------
1682// GetDetailTableIndexThrow
1683UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(DXGI_FORMAT Format)
1684{
1685 UINT Index = GetDetailTableIndex( Format );
1686#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
1687 if(UINT( -1 ) == Index )
1688 {
1689 throw std::invalid_argument("Format");
1690 }
1691#endif
1692 return Index;
1693}
1694
1695//---------------------------------------------------------------------------------------------------------------------------------
1696// GetDetailTableIndexNoThrow
1697UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexNoThrow(DXGI_FORMAT Format)
1698{
1699 UINT Index = GetDetailTableIndex( Format );
1700 assert(UINT( -1 ) != Index ); // Needs to be validated externally.
1701 return Index;
1702}
1703
1704//---------------------------------------------------------------------------------------------------------------------------------
1705// GetYCbCrChromaSubsampling
1706void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetYCbCrChromaSubsampling(
1707 DXGI_FORMAT Format,
1708 _Out_ UINT& HorizontalSubsampling,
1709 _Out_ UINT& VerticalSubsampling
1710 )
1711{
1712 switch( Format)
1713 {
1714 // YCbCr 4:2:0
1715 case DXGI_FORMAT_NV12:
1716 case DXGI_FORMAT_P010:
1717 case DXGI_FORMAT_P016:
1718 case DXGI_FORMAT_420_OPAQUE:
1719 HorizontalSubsampling = 2;
1720 VerticalSubsampling = 2;
1721 break;
1722
1723 // YCbCr 4:2:2
1724 case DXGI_FORMAT_P208:
1725 case DXGI_FORMAT_YUY2:
1726 case DXGI_FORMAT_Y210:
1727 HorizontalSubsampling = 2;
1728 VerticalSubsampling = 1;
1729 break;
1730
1731 // YCbCr 4:4:0
1732 case DXGI_FORMAT_V208:
1733 HorizontalSubsampling = 1;
1734 VerticalSubsampling = 2;
1735 break;
1736
1737 // YCbCr 4:4:4
1738 case DXGI_FORMAT_AYUV:
1739 case DXGI_FORMAT_V408:
1740 case DXGI_FORMAT_Y410:
1741 case DXGI_FORMAT_Y416:
1742 // Fallthrough
1743
1744 // YCbCr palletized 4:4:4:
1745 case DXGI_FORMAT_AI44:
1746 case DXGI_FORMAT_IA44:
1747 case DXGI_FORMAT_P8:
1748 case DXGI_FORMAT_A8P8:
1749 HorizontalSubsampling = 1;
1750 VerticalSubsampling = 1;
1751 break;
1752
1753 // YCbCr 4:1:1
1754 case DXGI_FORMAT_NV11:
1755 HorizontalSubsampling = 4;
1756 VerticalSubsampling = 1;
1757 break;
1758
1759 default:
1760 // All YCbCr formats should be in this list.
1761 assert( !YUV(Format) );
1762 HorizontalSubsampling = 1;
1763 VerticalSubsampling = 1;
1764 break;
1765 };
1766}
1767
1768//---------------------------------------------------------------------------------------------------------------------------------
1769// Plane count for non-opaque planar formats
1770UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlaneCount(DXGI_FORMAT Format)
1771{
1772 if (!D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::NonOpaquePlanar(Format))
1773 {
1774 return 1;
1775 }
1776
1777 // V208 and V408 are the only 3-plane formats.
1778 return (Format == DXGI_FORMAT_V208 || Format == DXGI_FORMAT_V408) ? 3 : 2;
1779}
1780
1781//---------------------------------------------------------------------------------------------------------------------------------
1782// GetTileShape
1783//
1784// Retrieve 64K Tiled Resource tile shape
1785void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetTileShape(
1786 D3D12_TILE_SHAPE* pTileShape,
1787 DXGI_FORMAT Format,
1788 D3D12_RESOURCE_DIMENSION Dimension,
1789 UINT SampleCount
1790 )
1791{
1792 UINT BPU = GetBitsPerUnit(Format);
1793
1794 switch(Dimension)
1795 {
1796 case D3D12_RESOURCE_DIMENSION_UNKNOWN:
1797 case D3D12_RESOURCE_DIMENSION_BUFFER:
1798 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
1799 {
1800 assert(!IsBlockCompressFormat(Format));
1801 pTileShape->WidthInTexels = (BPU == 0) ? D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES : D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES*8 / BPU;
1802 pTileShape->HeightInTexels = 1;
1803 pTileShape->DepthInTexels = 1;
1804 }
1805 break;
1806 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
1807 {
1808 if (IsBlockCompressFormat(Format))
1809 {
1810 // Currently only supported block sizes are 64 and 128.
1811 // These equations calculate the size in texels for a tile. It relies on the fact that 64 * 64 blocks fit in a tile if the block size is 128 bits.
1812 assert(BPU == 64 || BPU == 128);
1813 pTileShape->WidthInTexels = 64 * GetWidthAlignment(Format);
1814 pTileShape->HeightInTexels = 64 * GetHeightAlignment(Format);
1815 pTileShape->DepthInTexels = 1;
1816 if (BPU == 64)
1817 {
1818 // If bits per block are 64 we double width so it takes up the full tile size.
1819 // This is only true for BC1 and BC4
1820 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1821 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1822 pTileShape->WidthInTexels *= 2;
1823 }
1824 }
1825 else
1826 {
1827 pTileShape->DepthInTexels = 1;
1828 if (BPU <= 8)
1829 {
1830 pTileShape->WidthInTexels = 256;
1831 pTileShape->HeightInTexels = 256;
1832 }
1833 else if (BPU <= 16)
1834 {
1835 pTileShape->WidthInTexels = 256;
1836 pTileShape->HeightInTexels = 128;
1837 }
1838 else if (BPU <= 32)
1839 {
1840 pTileShape->WidthInTexels = 128;
1841 pTileShape->HeightInTexels = 128;
1842 }
1843 else if (BPU <= 64)
1844 {
1845 pTileShape->WidthInTexels = 128;
1846 pTileShape->HeightInTexels = 64;
1847 }
1848 else if (BPU <= 128)
1849 {
1850 pTileShape->WidthInTexels = 64;
1851 pTileShape->HeightInTexels = 64;
1852 }
1853 else
1854 {
1855 ASSUME( FALSE );
1856 }
1857
1858 if (SampleCount <= 1)
1859 { /* Do nothing */ }
1860 else if (SampleCount <= 2)
1861 {
1862 pTileShape->WidthInTexels /= 2;
1863 pTileShape->HeightInTexels /= 1;
1864 }
1865 else if (SampleCount <= 4)
1866 {
1867 pTileShape->WidthInTexels /= 2;
1868 pTileShape->HeightInTexels /= 2;
1869 }
1870 else if (SampleCount <= 8)
1871 {
1872 pTileShape->WidthInTexels /= 4;
1873 pTileShape->HeightInTexels /= 2;
1874 }
1875 else if (SampleCount <= 16)
1876 {
1877 pTileShape->WidthInTexels /= 4;
1878 pTileShape->HeightInTexels /= 4;
1879 }
1880 else
1881 {
1882 ASSUME( FALSE );
1883 }
1884 }
1885 }
1886 break;
1887 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
1888 {
1889 if (IsBlockCompressFormat(Format))
1890 {
1891 // Currently only supported block sizes are 64 and 128.
1892 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
1893 assert(BPU == 64 || BPU == 128);
1894 pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format);
1895 pTileShape->HeightInTexels = 16 * GetHeightAlignment(Format);
1896 pTileShape->DepthInTexels = 16 * GetDepthAlignment(Format);
1897 if (BPU == 64)
1898 {
1899 // If bits per block are 64 we double width so it takes up the full tile size.
1900 // This is only true for BC1 and BC4
1901 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1902 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1903 pTileShape->WidthInTexels *= 2;
1904 }
1905 }
1906 else if (Format == DXGI_FORMAT_R8G8_B8G8_UNORM || Format == DXGI_FORMAT_G8R8_G8B8_UNORM)
1907 {
1908 //RGBG and GRGB are treated as 2x1 block format
1909 pTileShape->WidthInTexels = 64;
1910 pTileShape->HeightInTexels = 32;
1911 pTileShape->DepthInTexels = 16;
1912 }
1913 else
1914 {
1915 // Not a block format so BPU is bits per pixel.
1916 assert(GetWidthAlignment(Format) == 1 && GetHeightAlignment(Format) == 1 && GetDepthAlignment(Format));
1917 switch(BPU)
1918 {
1919 case 8:
1920 pTileShape->WidthInTexels = 64;
1921 pTileShape->HeightInTexels = 32;
1922 pTileShape->DepthInTexels = 32;
1923 break;
1924 case 16:
1925 pTileShape->WidthInTexels = 32;
1926 pTileShape->HeightInTexels = 32;
1927 pTileShape->DepthInTexels = 32;
1928 break;
1929 case 32:
1930 pTileShape->WidthInTexels = 32;
1931 pTileShape->HeightInTexels = 32;
1932 pTileShape->DepthInTexels = 16;
1933 break;
1934 case 64:
1935 pTileShape->WidthInTexels = 32;
1936 pTileShape->HeightInTexels = 16;
1937 pTileShape->DepthInTexels = 16;
1938 break;
1939 case 128:
1940 pTileShape->WidthInTexels = 16;
1941 pTileShape->HeightInTexels = 16;
1942 pTileShape->DepthInTexels = 16;
1943 break;
1944 }
1945 }
1946 break;
1947 }
1948 }
1949}
1950
1951//---------------------------------------------------------------------------------------------------------------------------------
1952// Get4KTileShape
1953//
1954// Retrieve 4K Tiled Resource tile shape
1955void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Get4KTileShape(
1956 D3D12_TILE_SHAPE* pTileShape,
1957 DXGI_FORMAT Format,
1958 D3D12_RESOURCE_DIMENSION Dimension,
1959 UINT SampleCount
1960 )
1961{
1962 UINT BPU = GetBitsPerUnit(Format);
1963
1964 switch(Dimension)
1965 {
1966 case D3D12_RESOURCE_DIMENSION_UNKNOWN:
1967 case D3D12_RESOURCE_DIMENSION_BUFFER:
1968 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
1969 {
1970 assert(!IsBlockCompressFormat(Format));
1971 pTileShape->WidthInTexels = (BPU == 0) ? 4096 : 4096*8 / BPU;
1972 pTileShape->HeightInTexels = 1;
1973 pTileShape->DepthInTexels = 1;
1974 }
1975 break;
1976 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
1977 {
1978 pTileShape->DepthInTexels = 1;
1979 if (IsBlockCompressFormat(Format))
1980 {
1981 // Currently only supported block sizes are 64 and 128.
1982 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
1983 assert(BPU == 64 || BPU == 128);
1984 pTileShape->WidthInTexels = 16 * GetWidthAlignment(Format);
1985 pTileShape->HeightInTexels = 16 * GetHeightAlignment(Format);
1986 if (BPU == 64)
1987 {
1988 // If bits per block are 64 we double width so it takes up the full tile size.
1989 // This is only true for BC1 and BC4
1990 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
1991 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
1992 pTileShape->WidthInTexels *= 2;
1993 }
1994 }
1995 else
1996 {
1997 if (BPU <= 8)
1998 {
1999 pTileShape->WidthInTexels = 64;
2000 pTileShape->HeightInTexels = 64;
2001 }
2002 else if (BPU <= 16)
2003 {
2004 pTileShape->WidthInTexels = 64;
2005 pTileShape->HeightInTexels = 32;
2006 }
2007 else if (BPU <= 32)
2008 {
2009 pTileShape->WidthInTexels = 32;
2010 pTileShape->HeightInTexels = 32;
2011 }
2012 else if (BPU <= 64)
2013 {
2014 pTileShape->WidthInTexels = 32;
2015 pTileShape->HeightInTexels = 16;
2016 }
2017 else if (BPU <= 128)
2018 {
2019 pTileShape->WidthInTexels = 16;
2020 pTileShape->HeightInTexels = 16;
2021 }
2022 else
2023 {
2024 ASSUME( FALSE );
2025 }
2026
2027 if (SampleCount <= 1)
2028 { /* Do nothing */ }
2029 else if (SampleCount <= 2)
2030 {
2031 pTileShape->WidthInTexels /= 2;
2032 pTileShape->HeightInTexels /= 1;
2033 }
2034 else if (SampleCount <= 4)
2035 {
2036 pTileShape->WidthInTexels /= 2;
2037 pTileShape->HeightInTexels /= 2;
2038 }
2039 else if (SampleCount <= 8)
2040 {
2041 pTileShape->WidthInTexels /= 4;
2042 pTileShape->HeightInTexels /= 2;
2043 }
2044 else if (SampleCount <= 16)
2045 {
2046 pTileShape->WidthInTexels /= 4;
2047 pTileShape->HeightInTexels /= 4;
2048 }
2049 else
2050 {
2051 ASSUME( FALSE );
2052 }
2053
2054 assert(GetWidthAlignment(Format) == 1);
2055 assert(GetHeightAlignment(Format) == 1);
2056 assert(GetDepthAlignment(Format) == 1);
2057 }
2058
2059 break;
2060 }
2061 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
2062 {
2063 if (IsBlockCompressFormat(Format))
2064 {
2065 // Currently only supported block sizes are 64 and 128.
2066 // These equations calculate the size in texels for a tile. It relies on the fact that 16*16*16 blocks fit in a tile if the block size is 128 bits.
2067 assert(BPU == 64 || BPU == 128);
2068 pTileShape->WidthInTexels = 8 * GetWidthAlignment(Format);
2069 pTileShape->HeightInTexels = 8 * GetHeightAlignment(Format);
2070 pTileShape->DepthInTexels = 4;
2071 if (BPU == 64)
2072 {
2073 // If bits per block are 64 we double width so it takes up the full tile size.
2074 // This is only true for BC1 and BC4
2075 assert((Format >= DXGI_FORMAT_BC1_TYPELESS && Format <= DXGI_FORMAT_BC1_UNORM_SRGB) ||
2076 (Format >= DXGI_FORMAT_BC4_TYPELESS && Format <= DXGI_FORMAT_BC4_SNORM));
2077 pTileShape->DepthInTexels *= 2;
2078 }
2079 }
2080 else
2081 {
2082 if (BPU <= 8)
2083 {
2084 pTileShape->WidthInTexels = 16;
2085 pTileShape->HeightInTexels = 16;
2086 pTileShape->DepthInTexels = 16;
2087 }
2088 else if (BPU <= 16)
2089 {
2090 pTileShape->WidthInTexels = 16;
2091 pTileShape->HeightInTexels = 16;
2092 pTileShape->DepthInTexels = 8;
2093 }
2094 else if (BPU <= 32)
2095 {
2096 pTileShape->WidthInTexels = 16;
2097 pTileShape->HeightInTexels = 8;
2098 pTileShape->DepthInTexels = 8;
2099 }
2100 else if (BPU <= 64)
2101 {
2102 pTileShape->WidthInTexels = 8;
2103 pTileShape->HeightInTexels = 8;
2104 pTileShape->DepthInTexels = 8;
2105 }
2106 else if (BPU <= 128)
2107 {
2108 pTileShape->WidthInTexels = 8;
2109 pTileShape->HeightInTexels = 8;
2110 pTileShape->DepthInTexels = 4;
2111 }
2112 else
2113 {
2114 ASSUME( FALSE );
2115 }
2116
2117 assert(GetWidthAlignment(Format) == 1);
2118 assert(GetHeightAlignment(Format) == 1);
2119 assert(GetDepthAlignment(Format) == 1);
2120 }
2121 }
2122 break;
2123 }
2124}
2125
2126//----------------------------------------------------------------------------------------------------------------------------------
2127// GetPlaneSliceFromViewFormat
2128// Maps resource format + view format to a plane index for resource formats where the plane index can be inferred from this information.
2129// For planar formats where the plane index is ambiguous given this information (examples: V208, V408), this function returns 0.
2130// This function returns 0 for non-planar formats.
2131UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSliceFromViewFormat(
2132 DXGI_FORMAT ResourceFormat,
2133 DXGI_FORMAT ViewFormat
2134 )
2135{
2136 switch(GetParentFormat(ResourceFormat))
2137 {
2138 case DXGI_FORMAT_R24G8_TYPELESS:
2139 switch(ViewFormat)
2140 {
2141 case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
2142 return 0;
2143 case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
2144 return 1;
2145 default:
2146 ASSUME( false );
2147 }
2148 break;
2149 case DXGI_FORMAT_R32G8X24_TYPELESS:
2150 switch(ViewFormat)
2151 {
2152 case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
2153 return 0;
2154 case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
2155 return 1;
2156 default:
2157 ASSUME( false );
2158 }
2159 break;
2160 case DXGI_FORMAT_NV12:
2161 case DXGI_FORMAT_NV11:
2162 case DXGI_FORMAT_P208:
2163 switch(ViewFormat)
2164 {
2165 case DXGI_FORMAT_R8_UNORM:
2166 case DXGI_FORMAT_R8_UINT:
2167 return 0;
2168 case DXGI_FORMAT_R8G8_UNORM:
2169 case DXGI_FORMAT_R8G8_UINT:
2170 return 1;
2171 default:
2172 ASSUME( false );
2173 }
2174 break;
2175 case DXGI_FORMAT_P016:
2176 case DXGI_FORMAT_P010:
2177 switch(ViewFormat)
2178 {
2179 case DXGI_FORMAT_R16_UNORM:
2180 case DXGI_FORMAT_R16_UINT:
2181 return 0;
2182 case DXGI_FORMAT_R16G16_UNORM:
2183 case DXGI_FORMAT_R16G16_UINT:
2184 case DXGI_FORMAT_R32_UINT:
2185 return 1;
2186 default:
2187 ASSUME( false );
2188 }
2189 break;
2190 default:
2191 break;
2192 }
2193 return 0;
2194}
2195
2196//----------------------------------------------------------------------------------------------------------------------------------
2197void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(
2198 UINT PlaneSlice,
2199 DXGI_FORMAT Format,
2200 UINT Width,
2201 UINT Height,
2202 _Out_ DXGI_FORMAT& PlaneFormat,
2203 _Out_ UINT& MinPlanePitchWidth,
2204 _Out_ UINT& PlaneWidth,
2205 _Out_ UINT& PlaneHeight)
2206{
2207 DXGI_FORMAT ParentFormat = GetParentFormat(Format);
2208
2209 if (Planar(ParentFormat))
2210 {
2211 switch (ParentFormat)
2212 {
2213 // YCbCr 4:2:0
2214 case DXGI_FORMAT_NV12:
2215 switch(PlaneSlice)
2216 {
2217 case 0:
2218 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2219 PlaneWidth = Width;
2220 PlaneHeight = Height;
2221 break;
2222 case 1:
2223 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2224 PlaneWidth = (Width + 1) >> 1;
2225 PlaneHeight = (Height + 1) >> 1;
2226 break;
2227 default:
2228 ASSUME(FALSE);
2229 };
2230
2231 MinPlanePitchWidth = PlaneWidth;
2232 break;
2233
2234 case DXGI_FORMAT_P010:
2235 case DXGI_FORMAT_P016:
2236 switch(PlaneSlice)
2237 {
2238 case 0:
2239 PlaneFormat = DXGI_FORMAT_R16_TYPELESS;
2240 PlaneWidth = Width;
2241 PlaneHeight = Height;
2242 break;
2243 case 1:
2244 PlaneFormat = DXGI_FORMAT_R16G16_TYPELESS;
2245 PlaneWidth = (Width + 1) >> 1;
2246 PlaneHeight = (Height + 1) >> 1;
2247 break;
2248 default:
2249 ASSUME(FALSE);
2250 };
2251
2252 MinPlanePitchWidth = PlaneWidth;
2253 break;
2254
2255 // YCbCr 4:2:2
2256 case DXGI_FORMAT_P208:
2257 switch(PlaneSlice)
2258 {
2259 case 0:
2260 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2261 PlaneWidth = Width;
2262 PlaneHeight = Height;
2263 break;
2264 case 1:
2265 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2266 PlaneWidth = (Width + 1) >> 1;
2267 PlaneHeight = Height;
2268 break;
2269 default:
2270 ASSUME(FALSE);
2271 };
2272
2273 MinPlanePitchWidth = PlaneWidth;
2274 break;
2275
2276 // YCbCr 4:4:0
2277 case DXGI_FORMAT_V208:
2278 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2279 switch(PlaneSlice)
2280 {
2281 case 0:
2282 PlaneWidth = Width;
2283 PlaneHeight = Height;
2284 break;
2285 case 1:
2286 case 2:
2287 PlaneWidth = Width;
2288 PlaneHeight = (Height + 1) >> 1;
2289 break;
2290 default:
2291 ASSUME(FALSE);
2292 };
2293
2294 MinPlanePitchWidth = PlaneWidth;
2295 break;
2296
2297 // YCbCr 4:4:4
2298 case DXGI_FORMAT_V408:
2299
2300 switch(PlaneSlice)
2301 {
2302 case 0:
2303 case 1:
2304 case 2:
2305 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2306 PlaneWidth = Width;
2307 PlaneHeight = Height;
2308 MinPlanePitchWidth = PlaneWidth;
2309 break;
2310 default:
2311 ASSUME(FALSE);
2312 };
2313 break;
2314
2315 // YCbCr 4:1:1
2316 case DXGI_FORMAT_NV11:
2317 switch(PlaneSlice)
2318 {
2319 case 0:
2320 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2321 PlaneWidth = Width;
2322 PlaneHeight = Height;
2323 MinPlanePitchWidth = Width;
2324 break;
2325 case 1:
2326 PlaneFormat = DXGI_FORMAT_R8G8_TYPELESS;
2327 PlaneWidth = (Width + 3) >> 2;
2328 PlaneHeight = Height;
2329
2330 // NV11 has unused padding to the right of the chroma plane in the RowMajor (linear) copyable layout.
2331 MinPlanePitchWidth = (Width + 1) >> 1;
2332 break;
2333 default:
2334 ASSUME(FALSE);
2335 };
2336
2337 break;
2338
2339 case DXGI_FORMAT_R32G8X24_TYPELESS:
2340 case DXGI_FORMAT_R24G8_TYPELESS:
2341 switch(PlaneSlice)
2342 {
2343 case 0:
2344 PlaneFormat = DXGI_FORMAT_R32_TYPELESS;
2345 PlaneWidth = Width;
2346 PlaneHeight = Height;
2347 MinPlanePitchWidth = Width;
2348 break;
2349 case 1:
2350 PlaneFormat = DXGI_FORMAT_R8_TYPELESS;
2351 PlaneWidth = Width;
2352 PlaneHeight = Height;
2353 MinPlanePitchWidth = Width;
2354 break;
2355 default:
2356 ASSUME(FALSE);
2357 };
2358 break;
2359
2360 default:
2361 ASSUME( FALSE );
2362 };
2363 }
2364 else
2365 {
2366 assert(PlaneSlice == 0);
2367 PlaneFormat = Format;
2368 PlaneWidth = Width;
2369 PlaneHeight = Height;
2370 MinPlanePitchWidth = PlaneWidth;
2371 }
2372}
2373
2374//---------------------------------------------------------------------------------------------------------------------------------
2375// GetPlaneCount
2376UINT8 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(DXGI_FORMAT Format)
2377{
2378 switch( GetParentFormat(Format) )
2379 {
2380 case DXGI_FORMAT_NV12:
2381 case DXGI_FORMAT_NV11:
2382 case DXGI_FORMAT_P208:
2383 case DXGI_FORMAT_P016:
2384 case DXGI_FORMAT_P010:
2385 case DXGI_FORMAT_R24G8_TYPELESS:
2386 case DXGI_FORMAT_R32G8X24_TYPELESS:
2387 return 2;
2388 case DXGI_FORMAT_V208:
2389 case DXGI_FORMAT_V408:
2390 return 3;
2391 default:
2392 return 1;
2393 }
2394}
2395
2396//---------------------------------------------------------------------------------------------------------------------------------
2397void D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMipDimensions(UINT8 mipSlice, _Inout_ UINT64 *pWidth, _Inout_opt_ UINT64 *pHeight, _Inout_opt_ UINT64 *pDepth)
2398{
2399 UINT denominator = (1 << mipSlice); // 2 ^ subresource
2400 UINT64 mipWidth = *pWidth / denominator;
2401 UINT64 mipHeight = pHeight ? *pHeight / denominator : 1;
2402 UINT64 mipDepth = pDepth ? *pDepth / denominator : 1;
2403
2404 // Adjust dimensions for degenerate mips
2405 if(mipHeight == 0 )
2406 mipHeight = 1;
2407 if(mipWidth == 0 )
2408 mipWidth = 1;
2409 if(mipDepth == 0)
2410 mipDepth = 1;
2411
2412 *pWidth = mipWidth;
2413 if(pHeight) *pHeight = mipHeight;
2414 if(pDepth) *pDepth = mipDepth;
2415}
2416
2417//---------------------------------------------------------------------------------------------------------------------------------
2418// DX9VertexOrIndexFormat
2419BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DX9VertexOrIndexFormat(DXGI_FORMAT Format)
2420{
2421 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bDX9VertexOrIndexFormat;
2422}
2423
2424//---------------------------------------------------------------------------------------------------------------------------------
2425// DX9TextureFormat
2426BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DX9TextureFormat(DXGI_FORMAT Format)
2427{
2428 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bDX9TextureFormat;
2429}
2430//---------------------------------------------------------------------------------------------------------------------------------
2431// FloatNormTextureFormat
2432BOOL D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatNormTextureFormat(DXGI_FORMAT Format)
2433{
2434 return s_FormatDetail[D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow( Format )].bFloatNormFormat;
2435}
2436
2437//---------------------------------------------------------------------------------------------------------------------------------
2438// ValidCastToR32UAV
2439//
2440// D3D11 has a limitation on typed UAVs (e.g. Texture1D/2D/3D) whereby the only format that can be read is R32_*. Lots of formats
2441// can be written though, with type conversion (e.g. R8G8B8A8_*). If an API user wants to do image processing in-place, in either
2442// the Compute Shader or the Pixel Shader, the only format available is R32_* (since it can be read and written at the same time).
2443//
2444// We were able to allow resources (Texture1D/2D/3D), created with a format from a small set of families that have 32 bits per element
2445// (such as R8G8B8A8_TYPELESS), to be cast to R32_* when creating a UAV. This means the Compute Shader or Pixel Shader can
2446// do simultaneous read+write on the resource when bound as an R32_* UAV, with the caveat that the shader code has to do manual
2447// type conversion manually, but later on the resource can be used as an SRV or RT as the desired type (e.g. R8G8B8A8_UNORM), and
2448// thus have access to filtering/blending where the hardware knows what the format is.
2449//
2450// If we didn't have this ability to cast some formats to R32_* UAVs, applications would have to keep an extra allocation around
2451// and do a rendering pass that copies from the R32_* UAV to whatever typed resource they really wanted. For formats not included
2452// in this list, such as any format that doesn't have 32-bits per component, as well as some 32-bit per component formats like
2453// R24G8 or R11G11B10_FLOAT there is no alternative for an application but to do the extra copy as mentioned, or avoid in-place
2454// image editing in favor of ping-ponging between buffers with multiple passes.
2455//
2456bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::ValidCastToR32UAV(DXGI_FORMAT from, DXGI_FORMAT to)
2457{
2458 // Allow casting of 32 bit formats to R32_*
2459 if(
2460 ((to == DXGI_FORMAT_R32_UINT)||(to == DXGI_FORMAT_R32_SINT)||(to == DXGI_FORMAT_R32_FLOAT))
2461 &&
2462 (
2463 (from == DXGI_FORMAT_R10G10B10A2_TYPELESS) ||
2464 (from == DXGI_FORMAT_R8G8B8A8_TYPELESS) ||
2465 (from == DXGI_FORMAT_B8G8R8A8_TYPELESS) ||
2466 (from == DXGI_FORMAT_B8G8R8X8_TYPELESS) ||
2467 (from == DXGI_FORMAT_R16G16_TYPELESS) ||
2468 (from == DXGI_FORMAT_R32_TYPELESS)
2469 )
2470 )
2471 {
2472 return true;
2473 }
2474 return false;
2475}
2476
2477//---------------------------------------------------------------------------------------------------------------------------------
2478// IsSupportedTextureDisplayableFormat
2479//
2480// List of formats associated with Feature_D3D1XDisplayable
2481bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSupportedTextureDisplayableFormat
2482 ( DXGI_FORMAT Format
2483 , bool bMediaFormatOnly
2484 )
2485{
2486 if (bMediaFormatOnly)
2487 {
2488 return (false
2489 || ( Format == DXGI_FORMAT_NV12
2490 || Format == DXGI_FORMAT_YUY2
2491 )
2492 );
2493 }
2494 else
2495 {
2496 return (false // eases evolution
2497 || ( Format == DXGI_FORMAT_B8G8R8A8_UNORM
2498 || Format == DXGI_FORMAT_R8G8B8A8_UNORM
2499 || Format == DXGI_FORMAT_R16G16B16A16_FLOAT
2500 || Format == DXGI_FORMAT_R10G10B10A2_UNORM
2501 || Format == DXGI_FORMAT_NV12
2502 || Format == DXGI_FORMAT_YUY2
2503 )
2504 );
2505 }
2506}
2507
2508//---------------------------------------------------------------------------------------------------------------------------------
2509bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatAndNotFloatFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
2510{
2511 UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB);
2512 for (UINT c = 0; c < NumComponents; c++)
2513 {
2514 D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c);
2515 D3D_FORMAT_COMPONENT_INTERPRETATION fciB = GetFormatComponentInterpretation(FormatB, c);
2516 if ((fciA != fciB) && ((fciA == D3DFCI_FLOAT) || (fciB == D3DFCI_FLOAT)))
2517 {
2518 return true;
2519 }
2520 }
2521 return false;
2522}
2523
2524//---------------------------------------------------------------------------------------------------------------------------------
2525bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SNORMAndUNORMFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
2526{
2527 UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB);
2528 for (UINT c = 0; c < NumComponents; c++)
2529 {
2530 D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c);
2531 D3D_FORMAT_COMPONENT_INTERPRETATION fciB = GetFormatComponentInterpretation(FormatB, c);
2532 if (((fciA == D3DFCI_SNORM) && (fciB == D3DFCI_UNORM)) ||
2533 ((fciB == D3DFCI_SNORM) && (fciA == D3DFCI_UNORM)))
2534 {
2535 return true;
2536 }
2537 }
2538 return false;
2539}
2540
2541//---------------------------------------------------------------------------------------------------------------------------------
2542// Formats allowed by runtime for decode histogram.
2543 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format)
2544 {
2545 return (
2546 /* YUV 4:2:0 */
2547 Format == DXGI_FORMAT_NV12
2548 || Format == DXGI_FORMAT_P010
2549 || Format == DXGI_FORMAT_P016
2550 /* YUV 4:2:2 */
2551 || Format == DXGI_FORMAT_YUY2
2552 || Format == DXGI_FORMAT_Y210
2553 || Format == DXGI_FORMAT_Y216
2554 /* YUV 4:4:4 */
2555 || Format == DXGI_FORMAT_AYUV
2556 || Format == DXGI_FORMAT_Y410
2557 || Format == DXGI_FORMAT_Y416
2558 );
2559 }
2560
2561//---------------------------------------------------------------------------------------------------------------------------------
2562// Formats allowed by runtime for decode histogram. Scopes to tested formats.
2563 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::MotionEstimatorAllowedInputFormat(DXGI_FORMAT Format)
2564 {
2565 return Format == DXGI_FORMAT_NV12;
2566 }
2567
2568//---------------------------------------------------------------------------------------------------------------------------------
2569 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsDepth(DXGI_FORMAT Format)
2570 {
2571 // If the number of bits associated with depth in the format is greater then 0, then the format supports depth
2572 return (GetComponentName(Format, 0) == D3DFCN_D);
2573 }
2574
2575 //---------------------------------------------------------------------------------------------------------------------------------
2576 bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsStencil(DXGI_FORMAT Format)
2577 {
2578 // If the number of bits associated with stencil in the format is greater then 0, then the format supports stencil
2579 return GetBitsPerStencil(Format) > 0;
2580 }
2581
2582#undef R
2583#undef G
2584#undef B
2585#undef A
2586#undef D
2587#undef S
2588#undef X
2589
2590#undef _TYPELESS
2591#undef _FLOAT
2592#undef _SNORM
2593#undef _UNORM
2594#undef _SINT
2595#undef _UINT
2596#undef _UNORM_SRGB
2597#undef _FIXED_2_8
2598
2599#endif // D3D12_SDK_VERSION >= 606
2600
2601