From 0307895ededc89e32305cd839288a8ce716cfdb4 Mon Sep 17 00:00:00 2001
From: Skyth <19259897+blueskythlikesclouds@users.noreply.github.com>
Date: Mon, 15 Dec 2025 13:11:04 +0300
Subject: [PATCH] Upgrade Agility SDK & DirectX Headers.
---
core/config/project_settings.cpp | 4 +-
doc/classes/ProjectSettings.xml | 4 +-
misc/scripts/install_d3d12_sdk_windows.py | 4 +-
thirdparty/README.md | 5 +-
.../include/directx/DirectML.h | 2651 ++++++++
.../directx_headers/include/directx/d3d12.h | 5448 ++++++++++++++++-
.../include/directx/d3d12compatibility.h | 168 +-
.../include/directx/d3d12compiler.h | 977 +++
.../include/directx/d3d12sdklayers.h | 55 +-
.../include/directx/d3d12shader.h | 9 +-
.../include/directx/d3d12video.h | 1639 ++++-
.../include/directx/d3dcommon.h | 18 +-
.../directx/d3dshadercacheregistration.h | 998 +++
.../directx_headers/include/directx/d3dx12.h | 1 +
.../include/directx/d3dx12_barriers.h | 1 +
.../directx/d3dx12_check_feature_support.h | 57 +-
.../include/directx/d3dx12_core.h | 551 +-
.../directx/d3dx12_pipeline_state_stream.h | 347 +-
.../directx/d3dx12_property_format_table.h | 4 +
.../include/directx/d3dx12_render_pass.h | 5 +-
.../include/directx/d3dx12_resource_helpers.h | 18 +-
.../include/directx/d3dx12_root_signature.h | 65 +-
.../include/directx/d3dx12_state_object.h | 1866 +++++-
.../include/directx/dxcore_interface.h | 187 +-
.../directx_headers/include/dxguids/dxguids.h | 6 +
.../patches/0001-mingw-pragma.patch | 25 -
...d.patch => 0001-win7-8-dynamic-load.patch} | 20 +-
27 files changed, 14693 insertions(+), 440 deletions(-)
create mode 100644 thirdparty/directx_headers/include/directx/DirectML.h
create mode 100644 thirdparty/directx_headers/include/directx/d3d12compiler.h
create mode 100644 thirdparty/directx_headers/include/directx/d3dshadercacheregistration.h
delete mode 100644 thirdparty/directx_headers/patches/0001-mingw-pragma.patch
rename thirdparty/directx_headers/patches/{0002-win7-8-dynamic-load.patch => 0001-win7-8-dynamic-load.patch} (84%)
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp
index 9cff93007ce..8f293a3000d 100644
--- a/core/config/project_settings.cpp
+++ b/core/config/project_settings.cpp
@@ -1827,8 +1827,8 @@ ProjectSettings::ProjectSettings() {
// The default value must match the minor part of the Agility SDK version
// installed by the scripts provided in the repository
// (check `misc/scripts/install_d3d12_sdk_windows.py`).
- // For example, if the script installs 1.613.3, the default value must be 613.
- GLOBAL_DEF_RST(PropertyInfo(Variant::INT, "rendering/rendering_device/d3d12/agility_sdk_version", PROPERTY_HINT_RANGE, "0,10000,1,or_greater,hide_control"), 613);
+ // For example, if the script installs 1.618.5, the default value must be 618.
+ GLOBAL_DEF_RST(PropertyInfo(Variant::INT, "rendering/rendering_device/d3d12/agility_sdk_version", PROPERTY_HINT_RANGE, "0,10000,1,or_greater,hide_control"), 618);
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "rendering/textures/canvas_textures/default_texture_filter", PROPERTY_HINT_ENUM, "Nearest,Linear,Linear Mipmap,Nearest Mipmap"), 1);
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "rendering/textures/canvas_textures/default_texture_repeat", PROPERTY_HINT_ENUM, "Disable,Enable,Mirror"), 0);
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 2b55cfe5329..a322ef87a08 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -3254,8 +3254,8 @@
Override for [member rendering/renderer/rendering_method] on web.
-
- Version code of the [url=https://devblogs.microsoft.com/directx/directx12agility/]Direct3D 12 Agility SDK[/url] to use ([code]D3D12SDKVersion[/code]). This must match the [i]minor[/i] version that is installed next to the editor binary and in the export templates directory for the current editor version. For example, if you have [code]1.613.3[/code] installed, you need to input [code]613[/code] here.
+
+ Version code of the [url=https://devblogs.microsoft.com/directx/directx12agility/]Direct3D 12 Agility SDK[/url] to use ([code]D3D12SDKVersion[/code]). This must match the [i]minor[/i] version that is installed next to the editor binary and in the export templates directory for the current editor version. For example, if you have [code]1.618.5[/code] installed, you need to input [code]618[/code] here.
The number of entries in the resource descriptor heap the Direct3D 12 rendering driver uses for most rendering operations.
diff --git a/misc/scripts/install_d3d12_sdk_windows.py b/misc/scripts/install_d3d12_sdk_windows.py
index ca350587976..9d4128b693b 100755
--- a/misc/scripts/install_d3d12_sdk_windows.py
+++ b/misc/scripts/install_d3d12_sdk_windows.py
@@ -41,8 +41,8 @@ pix_folder = os.path.join(deps_folder, "pix")
# DirectX 12 Agility SDK
# Check for latest version: https://www.nuget.org/api/v2/package/Microsoft.Direct3D.D3D12 (check downloaded filename)
# After updating this, remember to change the default value of the `rendering/rendering_device/d3d12/agility_sdk_version`
-# project setting to match the minor version (e.g. for `1.613.3`, it should be `613`).
-agility_sdk_version = "1.613.3"
+# project setting to match the minor version (e.g. for `1.618.5`, it should be `618`).
+agility_sdk_version = "1.618.5"
agility_sdk_archive = os.path.join(deps_folder, f"Agility_SDK_{agility_sdk_version}.nupkg")
agility_sdk_folder = os.path.join(deps_folder, "agility_sdk")
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 211e471619d..40bf2af4c2a 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -170,7 +170,7 @@ Patches:
## directx_headers
- Upstream: https://github.com/microsoft/DirectX-Headers
-- Version: 1.611.1 (48f23952bc08a6dce0727339c07cedbc4797356c, 2023)
+- Version: 1.618.2 (dde59d560da2760fec612d6634124edc2a26b82f, 2025)
- License: MIT
Files extracted from upstream source:
@@ -181,8 +181,7 @@ Files extracted from upstream source:
Patches:
-- `0001-mingw-pragma.patch` ([GH-83452](https://github.com/godotengine/godot/pull/83452))
-- `0002-win7-8-dynamic-load.patch` ([GH-88496](https://github.com/godotengine/godot/pull/88496))
+- `0001-win7-8-dynamic-load.patch` ([GH-88496](https://github.com/godotengine/godot/pull/88496))
## doctest
diff --git a/thirdparty/directx_headers/include/directx/DirectML.h b/thirdparty/directx_headers/include/directx/DirectML.h
new file mode 100644
index 00000000000..3bd1921bcba
--- /dev/null
+++ b/thirdparty/directx_headers/include/directx/DirectML.h
@@ -0,0 +1,2651 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+#ifndef DIRECTML_H
+#define DIRECTML_H
+#pragma once
+
+#ifdef _GAMING_XBOX_SCARLETT
+#include "d3d12_xs.h"
+#elif _GAMING_XBOX_XBOXONE
+#include "d3d12_x.h"
+#else
+#include "d3d12.h"
+#endif
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
+
+#ifndef DML_DECLARE_INTERFACE
+#define DML_DECLARE_INTERFACE(iid) DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE
+#endif
+
+#ifndef DML_TARGET_VERSION
+
+#if !defined(NTDDI_VERSION) || defined(DML_TARGET_VERSION_USE_LATEST) // Use the latest if using redist or no Windows target set.
+#define DML_TARGET_VERSION 0x6400
+#elif defined(NTDDI_WIN10_ZN) && NTDDI_VERSION >= NTDDI_WIN10_ZN
+#define DML_TARGET_VERSION 0x6000
+#elif defined(NTDDI_WIN10_NI) && NTDDI_VERSION >= NTDDI_WIN10_NI
+#define DML_TARGET_VERSION 0x5000
+#elif defined(NTDDI_WIN10_CO) && NTDDI_VERSION >= NTDDI_WIN10_CO
+#define DML_TARGET_VERSION 0x4000
+#elif defined(NTDDI_WIN10_FE) && NTDDI_VERSION >= NTDDI_WIN10_FE
+#define DML_TARGET_VERSION 0x3000
+#elif defined(NTDDI_WIN10_VB) && NTDDI_VERSION >= NTDDI_WIN10_VB // Windows 10 2004 Update
+#define DML_TARGET_VERSION 0x2000
+#else // defined(NTDDI_WIN10_19H1) && NTDDI_VERSION >= NTDDI_WIN10_19H1 // Windows 10 1903 Update
+#define DML_TARGET_VERSION 0x1000
+#endif
+
+#endif // !defined(DML_TARGET_VERSION)
+
+// ===================================================================================================================
+// DirectML constants
+// ===================================================================================================================
+
+static const UINT DML_TENSOR_DIMENSION_COUNT_MAX = 5;
+#if DML_TARGET_VERSION >= 0x3000
+static const UINT DML_TENSOR_DIMENSION_COUNT_MAX1 = 8;
+#endif
+
+static const UINT DML_TEMPORARY_BUFFER_ALIGNMENT = 256;
+static const UINT DML_PERSISTENT_BUFFER_ALIGNMENT = 256;
+
+static const UINT DML_MINIMUM_BUFFER_TENSOR_ALIGNMENT = 16;
+
+
+// ===================================================================================================================
+// Interface declarations
+// ===================================================================================================================
+
+interface IDMLObject;
+interface IDMLDevice;
+interface IDMLDeviceChild;
+interface IDMLPageable;
+interface IDMLDispatchable;
+interface IDMLOperator;
+interface IDMLCompiledOperator;
+interface IDMLOperatorInitializer;
+interface IDMLBindingTable;
+interface IDMLCommandRecorder;
+
+
+// ===================================================================================================================
+// Tensor descriptions
+// ===================================================================================================================
+
+enum DML_TENSOR_DATA_TYPE
+{
+ DML_TENSOR_DATA_TYPE_UNKNOWN,
+ DML_TENSOR_DATA_TYPE_FLOAT32,
+ DML_TENSOR_DATA_TYPE_FLOAT16,
+ DML_TENSOR_DATA_TYPE_UINT32,
+ DML_TENSOR_DATA_TYPE_UINT16,
+ DML_TENSOR_DATA_TYPE_UINT8,
+ DML_TENSOR_DATA_TYPE_INT32,
+ DML_TENSOR_DATA_TYPE_INT16,
+ DML_TENSOR_DATA_TYPE_INT8,
+ DML_TENSOR_DATA_TYPE_FLOAT64,
+ DML_TENSOR_DATA_TYPE_UINT64,
+ DML_TENSOR_DATA_TYPE_INT64,
+#if DML_TARGET_VERSION >= 0x6300
+ DML_TENSOR_DATA_TYPE_UINT4,
+ DML_TENSOR_DATA_TYPE_INT4,
+#endif // DML_TARGET_VERSION >= 0x6300
+};
+
+enum DML_TENSOR_TYPE
+{
+ DML_TENSOR_TYPE_INVALID,
+
+ DML_TENSOR_TYPE_BUFFER,
+};
+
+enum DML_TENSOR_FLAGS
+{
+ DML_TENSOR_FLAG_NONE = 0x0,
+ DML_TENSOR_FLAG_OWNED_BY_DML = 0x1,
+};
+
+DEFINE_ENUM_FLAG_OPERATORS(DML_TENSOR_FLAGS)
+
+struct DML_BUFFER_TENSOR_DESC
+{
+ DML_TENSOR_DATA_TYPE DataType;
+ DML_TENSOR_FLAGS Flags;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Sizes;
+ _Field_size_opt_(DimensionCount) const UINT* Strides;
+ UINT64 TotalTensorSizeInBytes;
+ UINT GuaranteedBaseOffsetAlignment;
+};
+
+struct DML_TENSOR_DESC
+{
+ DML_TENSOR_TYPE Type;
+ _Field_size_(_Inexpressible_("Dependent on tensor type")) const void* Desc;
+};
+
+
+// ===================================================================================================================
+// Operator types
+// ===================================================================================================================
+
+enum DML_OPERATOR_TYPE
+{
+ DML_OPERATOR_INVALID,
+
+ DML_OPERATOR_ELEMENT_WISE_IDENTITY,
+ DML_OPERATOR_ELEMENT_WISE_ABS,
+ DML_OPERATOR_ELEMENT_WISE_ACOS,
+ DML_OPERATOR_ELEMENT_WISE_ADD,
+ DML_OPERATOR_ELEMENT_WISE_ASIN,
+ DML_OPERATOR_ELEMENT_WISE_ATAN,
+ DML_OPERATOR_ELEMENT_WISE_CEIL,
+ DML_OPERATOR_ELEMENT_WISE_CLIP,
+ DML_OPERATOR_ELEMENT_WISE_COS,
+ DML_OPERATOR_ELEMENT_WISE_DIVIDE,
+ DML_OPERATOR_ELEMENT_WISE_EXP,
+ DML_OPERATOR_ELEMENT_WISE_FLOOR,
+ DML_OPERATOR_ELEMENT_WISE_LOG,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_AND,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_EQUALS,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_GREATER_THAN,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_LESS_THAN,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_NOT,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_OR,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_XOR,
+ DML_OPERATOR_ELEMENT_WISE_MAX,
+ DML_OPERATOR_ELEMENT_WISE_MEAN,
+ DML_OPERATOR_ELEMENT_WISE_MIN,
+ DML_OPERATOR_ELEMENT_WISE_MULTIPLY,
+ DML_OPERATOR_ELEMENT_WISE_POW,
+ DML_OPERATOR_ELEMENT_WISE_CONSTANT_POW,
+ DML_OPERATOR_ELEMENT_WISE_RECIP,
+ DML_OPERATOR_ELEMENT_WISE_SIN,
+ DML_OPERATOR_ELEMENT_WISE_SQRT,
+ DML_OPERATOR_ELEMENT_WISE_SUBTRACT,
+ DML_OPERATOR_ELEMENT_WISE_TAN,
+ DML_OPERATOR_ELEMENT_WISE_THRESHOLD,
+ DML_OPERATOR_ELEMENT_WISE_QUANTIZE_LINEAR,
+ DML_OPERATOR_ELEMENT_WISE_DEQUANTIZE_LINEAR,
+ DML_OPERATOR_ACTIVATION_ELU,
+ DML_OPERATOR_ACTIVATION_HARDMAX,
+ DML_OPERATOR_ACTIVATION_HARD_SIGMOID,
+ DML_OPERATOR_ACTIVATION_IDENTITY,
+ DML_OPERATOR_ACTIVATION_LEAKY_RELU,
+ DML_OPERATOR_ACTIVATION_LINEAR,
+ DML_OPERATOR_ACTIVATION_LOG_SOFTMAX,
+ DML_OPERATOR_ACTIVATION_PARAMETERIZED_RELU,
+ DML_OPERATOR_ACTIVATION_PARAMETRIC_SOFTPLUS,
+ DML_OPERATOR_ACTIVATION_RELU,
+ DML_OPERATOR_ACTIVATION_SCALED_ELU,
+ DML_OPERATOR_ACTIVATION_SCALED_TANH,
+ DML_OPERATOR_ACTIVATION_SIGMOID,
+ DML_OPERATOR_ACTIVATION_SOFTMAX,
+ DML_OPERATOR_ACTIVATION_SOFTPLUS,
+ DML_OPERATOR_ACTIVATION_SOFTSIGN,
+ DML_OPERATOR_ACTIVATION_TANH,
+ DML_OPERATOR_ACTIVATION_THRESHOLDED_RELU,
+ DML_OPERATOR_CONVOLUTION,
+ DML_OPERATOR_GEMM,
+ DML_OPERATOR_REDUCE,
+ DML_OPERATOR_AVERAGE_POOLING,
+ DML_OPERATOR_LP_POOLING,
+ DML_OPERATOR_MAX_POOLING,
+ DML_OPERATOR_ROI_POOLING,
+ DML_OPERATOR_SLICE,
+ DML_OPERATOR_CAST,
+ DML_OPERATOR_SPLIT,
+ DML_OPERATOR_JOIN,
+ DML_OPERATOR_PADDING,
+ DML_OPERATOR_VALUE_SCALE_2D,
+ DML_OPERATOR_UPSAMPLE_2D,
+ DML_OPERATOR_GATHER,
+ DML_OPERATOR_SPACE_TO_DEPTH,
+ DML_OPERATOR_DEPTH_TO_SPACE,
+ DML_OPERATOR_TILE,
+ DML_OPERATOR_TOP_K,
+ DML_OPERATOR_BATCH_NORMALIZATION,
+ DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION,
+ DML_OPERATOR_LOCAL_RESPONSE_NORMALIZATION,
+ DML_OPERATOR_LP_NORMALIZATION,
+ DML_OPERATOR_RNN,
+ DML_OPERATOR_LSTM,
+ DML_OPERATOR_GRU,
+
+#if DML_TARGET_VERSION >= 0x2000
+ DML_OPERATOR_ELEMENT_WISE_SIGN,
+ DML_OPERATOR_ELEMENT_WISE_IS_NAN,
+ DML_OPERATOR_ELEMENT_WISE_ERF,
+ DML_OPERATOR_ELEMENT_WISE_SINH,
+ DML_OPERATOR_ELEMENT_WISE_COSH,
+ DML_OPERATOR_ELEMENT_WISE_TANH,
+ DML_OPERATOR_ELEMENT_WISE_ASINH,
+ DML_OPERATOR_ELEMENT_WISE_ACOSH,
+ DML_OPERATOR_ELEMENT_WISE_ATANH,
+ DML_OPERATOR_ELEMENT_WISE_IF,
+ DML_OPERATOR_ELEMENT_WISE_ADD1,
+ DML_OPERATOR_ACTIVATION_SHRINK,
+ DML_OPERATOR_MAX_POOLING1,
+ DML_OPERATOR_MAX_UNPOOLING,
+ DML_OPERATOR_DIAGONAL_MATRIX,
+ DML_OPERATOR_SCATTER_ELEMENTS,
+ DML_OPERATOR_SCATTER = DML_OPERATOR_SCATTER_ELEMENTS, // Alias name for backwards compatibility.
+ DML_OPERATOR_ONE_HOT,
+ DML_OPERATOR_RESAMPLE,
+#endif // DML_TARGET_VERSION >= 0x2000
+
+#if DML_TARGET_VERSION >= 0x2100
+ DML_OPERATOR_ELEMENT_WISE_BIT_SHIFT_LEFT,
+ DML_OPERATOR_ELEMENT_WISE_BIT_SHIFT_RIGHT,
+ DML_OPERATOR_ELEMENT_WISE_ROUND,
+ DML_OPERATOR_ELEMENT_WISE_IS_INFINITY,
+ DML_OPERATOR_ELEMENT_WISE_MODULUS_TRUNCATE,
+ DML_OPERATOR_ELEMENT_WISE_MODULUS_FLOOR,
+ DML_OPERATOR_FILL_VALUE_CONSTANT,
+ DML_OPERATOR_FILL_VALUE_SEQUENCE,
+ DML_OPERATOR_CUMULATIVE_SUMMATION,
+ DML_OPERATOR_REVERSE_SUBSEQUENCES,
+ DML_OPERATOR_GATHER_ELEMENTS,
+ DML_OPERATOR_GATHER_ND,
+ DML_OPERATOR_SCATTER_ND,
+ DML_OPERATOR_MAX_POOLING2,
+ DML_OPERATOR_SLICE1,
+ DML_OPERATOR_TOP_K1,
+ DML_OPERATOR_DEPTH_TO_SPACE1,
+ DML_OPERATOR_SPACE_TO_DEPTH1,
+ DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION1,
+ DML_OPERATOR_RESAMPLE1,
+ DML_OPERATOR_MATRIX_MULTIPLY_INTEGER,
+ DML_OPERATOR_QUANTIZED_LINEAR_MATRIX_MULTIPLY,
+ DML_OPERATOR_CONVOLUTION_INTEGER,
+ DML_OPERATOR_QUANTIZED_LINEAR_CONVOLUTION,
+#endif // DML_TARGET_VERSION >= 0x2100
+
+#if DML_TARGET_VERSION >= 0x3000
+ DML_OPERATOR_ELEMENT_WISE_BIT_AND,
+ DML_OPERATOR_ELEMENT_WISE_BIT_OR,
+ DML_OPERATOR_ELEMENT_WISE_BIT_XOR,
+ DML_OPERATOR_ELEMENT_WISE_BIT_NOT,
+ DML_OPERATOR_ELEMENT_WISE_BIT_COUNT,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL,
+ DML_OPERATOR_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL,
+ DML_OPERATOR_ACTIVATION_CELU,
+ DML_OPERATOR_ACTIVATION_RELU_GRAD,
+ DML_OPERATOR_AVERAGE_POOLING_GRAD,
+ DML_OPERATOR_MAX_POOLING_GRAD,
+ DML_OPERATOR_RANDOM_GENERATOR,
+ DML_OPERATOR_NONZERO_COORDINATES,
+ DML_OPERATOR_RESAMPLE_GRAD,
+ DML_OPERATOR_SLICE_GRAD,
+ DML_OPERATOR_ADAM_OPTIMIZER,
+ DML_OPERATOR_ARGMIN,
+ DML_OPERATOR_ARGMAX,
+ DML_OPERATOR_ROI_ALIGN,
+ DML_OPERATOR_GATHER_ND1,
+#endif // DML_TARGET_VERSION >= 0x3000
+
+#if DML_TARGET_VERSION >= 0x3100
+ DML_OPERATOR_ELEMENT_WISE_ATAN_YX,
+ DML_OPERATOR_ELEMENT_WISE_CLIP_GRAD,
+ DML_OPERATOR_ELEMENT_WISE_DIFFERENCE_SQUARE,
+ DML_OPERATOR_LOCAL_RESPONSE_NORMALIZATION_GRAD,
+ DML_OPERATOR_CUMULATIVE_PRODUCT,
+ DML_OPERATOR_BATCH_NORMALIZATION_GRAD,
+#endif // DML_TARGET_VERSION >= 0x3100
+
+#if DML_TARGET_VERSION >= 0x4000
+ DML_OPERATOR_ELEMENT_WISE_QUANTIZED_LINEAR_ADD,
+ DML_OPERATOR_DYNAMIC_QUANTIZE_LINEAR,
+ DML_OPERATOR_ROI_ALIGN1,
+#endif // DML_TARGET_VERSION >= 0x4000
+
+#if DML_TARGET_VERSION >= 0x4100
+ DML_OPERATOR_ROI_ALIGN_GRAD,
+ DML_OPERATOR_BATCH_NORMALIZATION_TRAINING,
+ DML_OPERATOR_BATCH_NORMALIZATION_TRAINING_GRAD,
+#endif // DML_TARGET_VERSION >= 0x4100
+
+#if DML_TARGET_VERSION >= 0x5000
+ DML_OPERATOR_ELEMENT_WISE_CLIP1,
+ DML_OPERATOR_ELEMENT_WISE_CLIP_GRAD1,
+ DML_OPERATOR_PADDING1,
+ DML_OPERATOR_ELEMENT_WISE_NEGATE,
+#endif // DML_TARGET_VERSION >= 0x5000
+
+#if DML_TARGET_VERSION >= 0x5100
+ DML_OPERATOR_ACTIVATION_GELU,
+ DML_OPERATOR_ACTIVATION_SOFTMAX1,
+ DML_OPERATOR_ACTIVATION_LOG_SOFTMAX1,
+ DML_OPERATOR_ACTIVATION_HARDMAX1,
+ DML_OPERATOR_RESAMPLE2,
+ DML_OPERATOR_RESAMPLE_GRAD1,
+ DML_OPERATOR_DIAGONAL_MATRIX1,
+#endif // DML_TARGET_VERSION >= 0x5100
+
+#if DML_TARGET_VERSION >= 0x6100
+ DML_OPERATOR_MULTIHEAD_ATTENTION,
+#endif // DML_TARGET_VERSION >= 0x6100
+
+#if DML_TARGET_VERSION >= 0x6200
+ DML_OPERATOR_LP_POOLING1,
+ DML_OPERATOR_AVERAGE_POOLING1,
+ DML_OPERATOR_ACTIVATION_SWISH,
+ DML_OPERATOR_ACTIVATION_HARD_SWISH,
+ DML_OPERATOR_QUANTIZED_LINEAR_AVERAGE_POOLING,
+ DML_OPERATOR_MATRIX_MULTIPLY_INTEGER_TO_FLOAT,
+#endif // DML_TARGET_VERSION >= 0x6200
+
+#if DML_TARGET_VERSION >= 0x6300
+ DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION2,
+ DML_OPERATOR_MULTIHEAD_ATTENTION1,
+ DML_OPERATOR_QUANTIZE,
+ DML_OPERATOR_DEQUANTIZE,
+#endif // DML_TARGET_VERSION >= 0x6300
+
+#if DML_TARGET_VERSION >= 0x6400
+ DML_OPERATOR_RESAMPLE3,
+ DML_OPERATOR_FOLD,
+ DML_OPERATOR_UNFOLD,
+#endif // DML_TARGET_VERSION >= 0x6400
+};
+
+// ===================================================================================================================
+// Operator enumerations and structures
+// ===================================================================================================================
+
+enum DML_REDUCE_FUNCTION
+{
+ DML_REDUCE_FUNCTION_ARGMAX,
+ DML_REDUCE_FUNCTION_ARGMIN,
+ DML_REDUCE_FUNCTION_AVERAGE,
+ DML_REDUCE_FUNCTION_L1,
+ DML_REDUCE_FUNCTION_L2,
+ DML_REDUCE_FUNCTION_LOG_SUM,
+ DML_REDUCE_FUNCTION_LOG_SUM_EXP,
+ DML_REDUCE_FUNCTION_MAX,
+ DML_REDUCE_FUNCTION_MIN,
+ DML_REDUCE_FUNCTION_MULTIPLY,
+ DML_REDUCE_FUNCTION_SUM,
+ DML_REDUCE_FUNCTION_SUM_SQUARE,
+};
+
+enum DML_MATRIX_TRANSFORM
+{
+ DML_MATRIX_TRANSFORM_NONE,
+ DML_MATRIX_TRANSFORM_TRANSPOSE,
+};
+
+enum DML_CONVOLUTION_MODE
+{
+ DML_CONVOLUTION_MODE_CONVOLUTION,
+ DML_CONVOLUTION_MODE_CROSS_CORRELATION,
+};
+
+enum DML_CONVOLUTION_DIRECTION
+{
+ DML_CONVOLUTION_DIRECTION_FORWARD,
+ DML_CONVOLUTION_DIRECTION_BACKWARD,
+};
+
+enum DML_PADDING_MODE
+{
+ DML_PADDING_MODE_CONSTANT,
+ DML_PADDING_MODE_EDGE,
+ DML_PADDING_MODE_REFLECTION,
+
+#if DML_TARGET_VERSION >= 0x3000
+ DML_PADDING_MODE_SYMMETRIC,
+#endif
+
+#if DML_TARGET_VERSION >= 0x6400
+ DML_PADDING_MODE_WRAP,
+#endif
+};
+
+enum DML_INTERPOLATION_MODE
+{
+ DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR,
+ DML_INTERPOLATION_MODE_LINEAR,
+};
+
+struct DML_SCALE_BIAS
+{
+ FLOAT Scale;
+ FLOAT Bias;
+};
+
+struct DML_SIZE_2D
+{
+ UINT Width;
+ UINT Height;
+};
+
+enum DML_RECURRENT_NETWORK_DIRECTION
+{
+ DML_RECURRENT_NETWORK_DIRECTION_FORWARD,
+ DML_RECURRENT_NETWORK_DIRECTION_BACKWARD,
+ DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL,
+};
+
+#if DML_TARGET_VERSION >= 0x2100
+
+enum DML_ROUNDING_MODE
+{
+ DML_ROUNDING_MODE_HALVES_TO_NEAREST_EVEN,
+ DML_ROUNDING_MODE_TOWARD_ZERO,
+ DML_ROUNDING_MODE_TOWARD_INFINITY,
+};
+
+enum DML_IS_INFINITY_MODE
+{
+ DML_IS_INFINITY_MODE_EITHER = 0,
+ DML_IS_INFINITY_MODE_POSITIVE = 1,
+ DML_IS_INFINITY_MODE_NEGATIVE = 2,
+};
+
+enum DML_AXIS_DIRECTION
+{
+ DML_AXIS_DIRECTION_INCREASING = 0,
+ DML_AXIS_DIRECTION_DECREASING = 1,
+};
+
+enum DML_DEPTH_SPACE_ORDER
+{
+ DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW,
+ DML_DEPTH_SPACE_ORDER_COLUMN_ROW_DEPTH,
+};
+
+union DML_SCALAR_UNION
+{
+ BYTE Bytes[8];
+ INT8 Int8;
+ UINT8 UInt8;
+ INT16 Int16;
+ UINT16 UInt16;
+ INT32 Int32;
+ UINT32 UInt32;
+ INT64 Int64;
+ UINT64 UInt64;
+ FLOAT Float32;
+ DOUBLE Float64;
+};
+
+#endif // DML_TARGET_VERSION >= 0x2100
+
+#if DML_TARGET_VERSION >= 0x3000
+
+enum DML_RANDOM_GENERATOR_TYPE
+{
+ DML_RANDOM_GENERATOR_TYPE_PHILOX_4X32_10
+};
+
+#endif // DML_TARGET_VERSION >= 0x3000
+
+#if DML_TARGET_VERSION >= 0x6100
+
+enum DML_MULTIHEAD_ATTENTION_MASK_TYPE
+{
+ DML_MULTIHEAD_ATTENTION_MASK_TYPE_NONE,
+ DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_SEQUENCE_LENGTH,
+ DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_SEQUENCE_END_START,
+ DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_QUERY_SEQUENCE_LENGTH_START_END,
+ DML_MULTIHEAD_ATTENTION_MASK_TYPE_BOOLEAN,
+};
+
+#endif // DML_TARGET_VERSION >= 0x6100
+
+#if DML_TARGET_VERSION >= 0x6300
+
+enum DML_QUANTIZATION_TYPE
+{
+ DML_QUANTIZATION_TYPE_NONE,
+ DML_QUANTIZATION_TYPE_SCALE,
+ DML_QUANTIZATION_TYPE_SCALE_ZERO_POINT,
+};
+
+#endif // DML_TARGET_VERSION >= 0x6300
+
+// ===================================================================================================================
+// Operator descriptions
+// ===================================================================================================================
+
+struct DML_OPERATOR_DESC
+{
+ DML_OPERATOR_TYPE Type;
+ _Field_size_(_Inexpressible_("Dependent on operator type")) const void* Desc;
+};
+
+struct DML_ELEMENT_WISE_IDENTITY_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_ABS_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_ACOS_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_ADD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_ADD1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
+};
+
+struct DML_ELEMENT_WISE_ASIN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_ATAN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_CEIL_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_CLIP_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+ FLOAT Min;
+ FLOAT Max;
+};
+
+struct DML_ELEMENT_WISE_COS_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_DIVIDE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_EXP_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_FLOOR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_LOG_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_AND_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_EQUALS_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_NOT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_OR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_XOR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_MAX_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_MEAN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_MIN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_MULTIPLY_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_POW_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* ExponentTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_CONSTANT_POW_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+ FLOAT Exponent;
+};
+
+struct DML_ELEMENT_WISE_RECIP_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_SIN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_SQRT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_SUBTRACT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_TAN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_THRESHOLD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+ FLOAT Min;
+};
+
+struct DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* ScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* ZeroPointTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* ScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* ZeroPointTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_ELU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+};
+
+struct DML_ACTIVATION_HARDMAX_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_HARD_SIGMOID_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+ FLOAT Beta;
+};
+
+struct DML_ACTIVATION_IDENTITY_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_LEAKY_RELU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+};
+
+struct DML_ACTIVATION_LINEAR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+ FLOAT Beta;
+};
+
+struct DML_ACTIVATION_LOG_SOFTMAX_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_PARAMETERIZED_RELU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* SlopeTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_PARAMETRIC_SOFTPLUS_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+ FLOAT Beta;
+};
+
+struct DML_ACTIVATION_RELU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_SCALED_ELU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+ FLOAT Gamma;
+};
+
+struct DML_ACTIVATION_SCALED_TANH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+ FLOAT Beta;
+};
+
+struct DML_ACTIVATION_SIGMOID_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_SOFTMAX_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_SOFTPLUS_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Steepness;
+};
+
+struct DML_ACTIVATION_SOFTSIGN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_TANH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_THRESHOLDED_RELU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+};
+
+struct DML_CONVOLUTION_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* FilterTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_CONVOLUTION_MODE Mode;
+ DML_CONVOLUTION_DIRECTION Direction;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* Dilations;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ _Field_size_(DimensionCount) const UINT* OutputPadding;
+ UINT GroupCount;
+ _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
+};
+
+struct DML_GEMM_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ _Maybenull_ const DML_TENSOR_DESC* CTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_MATRIX_TRANSFORM TransA;
+ DML_MATRIX_TRANSFORM TransB;
+ FLOAT Alpha;
+ FLOAT Beta;
+ _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
+};
+
+struct DML_REDUCE_OPERATOR_DESC
+{
+ DML_REDUCE_FUNCTION Function;
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT AxisCount;
+ _Field_size_(AxisCount) const UINT* Axes;
+};
+
+struct DML_AVERAGE_POOLING_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ BOOL IncludePadding;
+};
+
+struct DML_LP_POOLING_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ UINT P;
+};
+
+struct DML_MAX_POOLING_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+};
+
+struct DML_ROI_POOLING_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* ROITensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT SpatialScale;
+ DML_SIZE_2D PooledSize;
+};
+
+struct DML_SLICE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Offsets;
+ _Field_size_(DimensionCount) const UINT* Sizes;
+ _Field_size_(DimensionCount) const UINT* Strides;
+};
+
+struct DML_CAST_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_SPLIT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ UINT OutputCount;
+ _Field_size_(OutputCount) const DML_TENSOR_DESC* OutputTensors;
+ UINT Axis;
+};
+
+struct DML_JOIN_OPERATOR_DESC
+{
+ UINT InputCount;
+ _Field_size_(InputCount) const DML_TENSOR_DESC* InputTensors;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+};
+
+struct DML_PADDING_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_PADDING_MODE PaddingMode;
+ FLOAT PaddingValue;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+};
+
+struct DML_VALUE_SCALE_2D_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Scale;
+ UINT ChannelCount;
+ _Field_size_(ChannelCount) const FLOAT* Bias;
+};
+
+struct DML_UPSAMPLE_2D_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_SIZE_2D ScaleSize;
+ DML_INTERPOLATION_MODE InterpolationMode;
+};
+
+struct DML_GATHER_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* IndicesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+ UINT IndexDimensions;
+};
+
+struct DML_SPACE_TO_DEPTH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT BlockSize;
+};
+
+struct DML_DEPTH_TO_SPACE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT BlockSize;
+};
+
+struct DML_TILE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT RepeatsCount;
+ _Field_size_(RepeatsCount) const UINT* Repeats;
+};
+
+struct DML_TOP_K_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputValueTensor;
+ const DML_TENSOR_DESC* OutputIndexTensor;
+ UINT Axis;
+ UINT K;
+};
+
+struct DML_BATCH_NORMALIZATION_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* MeanTensor;
+ const DML_TENSOR_DESC* VarianceTensor;
+ const DML_TENSOR_DESC* ScaleTensor;
+ const DML_TENSOR_DESC* BiasTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ BOOL Spatial;
+ FLOAT Epsilon;
+ _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
+};
+
+struct DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ BOOL CrossChannel;
+ BOOL NormalizeVariance;
+ FLOAT Epsilon;
+ _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
+};
+
+struct DML_LOCAL_RESPONSE_NORMALIZATION_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ BOOL CrossChannel;
+ UINT LocalSize;
+ FLOAT Alpha;
+ FLOAT Beta;
+ FLOAT Bias;
+};
+
+struct DML_LP_NORMALIZATION_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+ FLOAT Epsilon;
+ UINT P;
+};
+
+struct DML_RNN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* WeightTensor;
+ const DML_TENSOR_DESC* RecurrenceTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
+ _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
+ UINT ActivationDescCount;
+ _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
+ DML_RECURRENT_NETWORK_DIRECTION Direction;
+};
+
+struct DML_LSTM_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* WeightTensor;
+ const DML_TENSOR_DESC* RecurrenceTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
+ _Maybenull_ const DML_TENSOR_DESC* CellMemInitTensor;
+ _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
+ _Maybenull_ const DML_TENSOR_DESC* PeepholeTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputCellSingleTensor;
+ UINT ActivationDescCount;
+ _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
+ DML_RECURRENT_NETWORK_DIRECTION Direction;
+ float ClipThreshold;
+ BOOL UseClipThreshold;
+ BOOL CoupleInputForget;
+};
+
+struct DML_GRU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* WeightTensor;
+ const DML_TENSOR_DESC* RecurrenceTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
+ _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
+ UINT ActivationDescCount;
+ _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
+ DML_RECURRENT_NETWORK_DIRECTION Direction;
+ BOOL LinearBeforeReset;
+};
+
+#if DML_TARGET_VERSION >= 0x2000
+
+struct DML_ELEMENT_WISE_SIGN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_IS_NAN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_ERF_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_SINH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_COSH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_TANH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_ASINH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_ACOSH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_ATANH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+};
+
+struct DML_ELEMENT_WISE_IF_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ConditionTensor;
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_SHRINK_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Bias;
+ FLOAT Threshold;
+};
+
+struct DML_MAX_POOLING1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputIndicesTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+};
+
+struct DML_MAX_UNPOOLING_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* IndicesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_DIAGONAL_MATRIX_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* OutputTensor;
+ INT Offset;
+ FLOAT Value;
+};
+
+struct DML_SCATTER_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* IndicesTensor;
+ const DML_TENSOR_DESC* UpdatesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+};
+
+struct DML_ONE_HOT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* IndicesTensor;
+ const DML_TENSOR_DESC* ValuesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+};
+
+struct DML_RESAMPLE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ UINT ScaleCount;
+ _Field_size_(ScaleCount) const FLOAT* Scales;
+};
+
+#endif // DML_TARGET_VERSION >= 0x2000
+
+#if DML_TARGET_VERSION >= 0x2100
+
+struct DML_ELEMENT_WISE_BIT_SHIFT_LEFT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_BIT_SHIFT_RIGHT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_ROUND_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_ROUNDING_MODE RoundingMode;
+};
+
+struct DML_ELEMENT_WISE_IS_INFINITY_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_IS_INFINITY_MODE InfinityMode;
+};
+
+struct DML_ELEMENT_WISE_MODULUS_TRUNCATE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_MODULUS_FLOOR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_FILL_VALUE_CONSTANT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_TENSOR_DATA_TYPE ValueDataType;
+ DML_SCALAR_UNION Value;
+};
+
+struct DML_FILL_VALUE_SEQUENCE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_TENSOR_DATA_TYPE ValueDataType;
+ DML_SCALAR_UNION ValueStart;
+ DML_SCALAR_UNION ValueDelta;
+};
+
+struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+ DML_AXIS_DIRECTION AxisDirection;
+ BOOL HasExclusiveSum;
+};
+
+struct DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* SequenceLengthsTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+};
+
+struct DML_GATHER_ELEMENTS_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* IndicesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+};
+
+// Alias existing operator, symmetric with DML_GATHER_ELEMENTS_OPERATOR_DESC.
+using DML_SCATTER_ELEMENTS_OPERATOR_DESC = DML_SCATTER_OPERATOR_DESC;
+
+struct DML_GATHER_ND_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* IndicesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT InputDimensionCount;
+ UINT IndicesDimensionCount;
+};
+
+struct DML_SCATTER_ND_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* IndicesTensor;
+ const DML_TENSOR_DESC* UpdatesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT InputDimensionCount;
+ UINT IndicesDimensionCount;
+};
+
+struct DML_MAX_POOLING2_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputIndicesTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ _Field_size_(DimensionCount) const UINT* Dilations;
+};
+
+struct DML_SLICE1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* InputWindowOffsets;
+ _Field_size_(DimensionCount) const UINT* InputWindowSizes;
+ _Field_size_(DimensionCount) const INT* InputWindowStrides;
+};
+
+struct DML_TOP_K1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputValueTensor;
+ const DML_TENSOR_DESC* OutputIndexTensor;
+ UINT Axis;
+ UINT K;
+ DML_AXIS_DIRECTION AxisDirection;
+};
+
+struct DML_DEPTH_TO_SPACE1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT BlockSize;
+ DML_DEPTH_SPACE_ORDER Order;
+};
+
+struct DML_SPACE_TO_DEPTH1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT BlockSize;
+ DML_DEPTH_SPACE_ORDER Order;
+};
+
+struct DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT AxisCount;
+ _Field_size_(AxisCount) const UINT* Axes;
+ BOOL NormalizeVariance;
+ FLOAT Epsilon;
+ _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
+};
+
+struct DML_RESAMPLE1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const FLOAT* Scales;
+ _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
+ _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
+};
+
+struct DML_MATRIX_MULTIPLY_INTEGER_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
+ const DML_TENSOR_DESC* BTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* AScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* BScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
+ const DML_TENSOR_DESC* OutputScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_CONVOLUTION_INTEGER_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
+ const DML_TENSOR_DESC* FilterTensor;
+ _Maybenull_ const DML_TENSOR_DESC* FilterZeroPointTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* Dilations;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ UINT GroupCount;
+};
+
+struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
+ const DML_TENSOR_DESC* FilterTensor;
+ const DML_TENSOR_DESC* FilterScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* FilterZeroPointTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ const DML_TENSOR_DESC* OutputScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* Dilations;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ UINT GroupCount;
+};
+
+#endif // DML_TARGET_VERSION >= 0x2100
+
+#if DML_TARGET_VERSION >= 0x3000
+
+struct DML_ELEMENT_WISE_BIT_AND_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_BIT_OR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_BIT_XOR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_BIT_NOT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_BIT_COUNT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_CELU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+};
+
+struct DML_ACTIVATION_RELU_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+};
+
+struct DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ BOOL IncludePadding;
+};
+
+struct DML_MAX_POOLING_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ _Field_size_(DimensionCount) const UINT* Dilations;
+};
+
+struct DML_RANDOM_GENERATOR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputStateTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputStateTensor;
+ DML_RANDOM_GENERATOR_TYPE Type;
+};
+
+struct DML_NONZERO_COORDINATES_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputCountTensor;
+ const DML_TENSOR_DESC* OutputCoordinatesTensor;
+};
+
+struct DML_RESAMPLE_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const FLOAT* Scales;
+ _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
+ _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
+};
+
+struct DML_SLICE_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* InputWindowOffsets;
+ _Field_size_(DimensionCount) const UINT* InputWindowSizes;
+ _Field_size_(DimensionCount) const INT* InputWindowStrides;
+};
+
+struct DML_ADAM_OPTIMIZER_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputParametersTensor;
+ const DML_TENSOR_DESC* InputFirstMomentTensor;
+ const DML_TENSOR_DESC* InputSecondMomentTensor;
+ const DML_TENSOR_DESC* GradientTensor;
+ const DML_TENSOR_DESC* TrainingStepTensor;
+ const DML_TENSOR_DESC* OutputParametersTensor;
+ const DML_TENSOR_DESC* OutputFirstMomentTensor;
+ const DML_TENSOR_DESC* OutputSecondMomentTensor;
+ FLOAT LearningRate;
+ FLOAT Beta1;
+ FLOAT Beta2;
+ FLOAT Epsilon;
+};
+
+struct DML_ARGMIN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT AxisCount;
+ _Field_size_(AxisCount) const UINT* Axes;
+ DML_AXIS_DIRECTION AxisDirection;
+};
+
+struct DML_ARGMAX_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT AxisCount;
+ _Field_size_(AxisCount) const UINT* Axes;
+ DML_AXIS_DIRECTION AxisDirection;
+};
+
+struct DML_ROI_ALIGN_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* ROITensor;
+ const DML_TENSOR_DESC* BatchIndicesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_REDUCE_FUNCTION ReductionFunction;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ FLOAT SpatialScaleX;
+ FLOAT SpatialScaleY;
+ FLOAT OutOfBoundsInputValue;
+ UINT MinimumSamplesPerOutput;
+ UINT MaximumSamplesPerOutput;
+};
+
+struct DML_GATHER_ND1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* IndicesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT InputDimensionCount;
+ UINT IndicesDimensionCount;
+ UINT BatchDimensionCount;
+};
+
+#endif // DML_TARGET_VERSION >= 0x3000
+
+#if DML_TARGET_VERSION >= 0x3100
+
+struct DML_ELEMENT_WISE_ATAN_YX_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ELEMENT_WISE_CLIP_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ FLOAT Min;
+ FLOAT Max;
+};
+
+struct DML_ELEMENT_WISE_DIFFERENCE_SQUARE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_LOCAL_RESPONSE_NORMALIZATION_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ BOOL CrossChannel;
+ UINT LocalSize;
+ FLOAT Alpha;
+ FLOAT Beta;
+ FLOAT Bias;
+};
+
+struct DML_CUMULATIVE_PRODUCT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT Axis;
+ DML_AXIS_DIRECTION AxisDirection;
+ BOOL HasExclusiveProduct;
+};
+
+struct DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* MeanTensor;
+ const DML_TENSOR_DESC* VarianceTensor;
+ const DML_TENSOR_DESC* ScaleTensor;
+
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ const DML_TENSOR_DESC* OutputScaleGradientTensor;
+ const DML_TENSOR_DESC* OutputBiasGradientTensor;
+
+ FLOAT Epsilon;
+};
+
+#endif // DML_TARGET_VERSION >= 0x3100
+
+#if DML_TARGET_VERSION >= 0x4000
+struct DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* AScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* BScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
+ const DML_TENSOR_DESC* OutputScaleTensor; // This is an input tensor
+ _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor; // This is an input tensor
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_DYNAMIC_QUANTIZE_LINEAR_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ const DML_TENSOR_DESC* OutputScaleTensor; // This is an output tensor
+ const DML_TENSOR_DESC* OutputZeroPointTensor; // This is an output tensor
+};
+
+struct DML_ROI_ALIGN1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* ROITensor;
+ const DML_TENSOR_DESC* BatchIndicesTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_REDUCE_FUNCTION ReductionFunction;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ FLOAT SpatialScaleX;
+ FLOAT SpatialScaleY;
+ FLOAT InputPixelOffset;
+ FLOAT OutputPixelOffset;
+ FLOAT OutOfBoundsInputValue;
+ UINT MinimumSamplesPerOutput;
+ UINT MaximumSamplesPerOutput;
+ BOOL AlignRegionsToCorners;
+};
+
+#endif // DML_TARGET_VERSION >= 0x4000
+
+#if DML_TARGET_VERSION >= 0x4100
+
+struct DML_ROI_ALIGN_GRAD_OPERATOR_DESC
+{
+ _Maybenull_ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* ROITensor;
+ const DML_TENSOR_DESC* BatchIndicesTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputGradientTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputROIGradientTensor;
+ DML_REDUCE_FUNCTION ReductionFunction;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ FLOAT SpatialScaleX;
+ FLOAT SpatialScaleY;
+ FLOAT InputPixelOffset;
+ FLOAT OutputPixelOffset;
+ UINT MinimumSamplesPerOutput;
+ UINT MaximumSamplesPerOutput;
+ BOOL AlignRegionsToCorners;
+};
+
+struct DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* ScaleTensor;
+ const DML_TENSOR_DESC* BiasTensor;
+ _Maybenull_ const DML_TENSOR_DESC* FusedAddTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ const DML_TENSOR_DESC* OutputMeanTensor;
+ const DML_TENSOR_DESC* OutputVarianceTensor;
+ FLOAT Epsilon;
+ _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
+};
+
+struct DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* MeanTensor;
+ const DML_TENSOR_DESC* VarianceTensor;
+ const DML_TENSOR_DESC* ScaleTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ const DML_TENSOR_DESC* OutputScaleGradientTensor;
+ const DML_TENSOR_DESC* OutputBiasGradientTensor;
+ FLOAT Epsilon;
+};
+
+#endif // DML_TARGET_VERSION >= 0x4100
+
+#if DML_TARGET_VERSION >= 0x5000
+
+struct DML_ELEMENT_WISE_CLIP1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
+ DML_TENSOR_DATA_TYPE MinMaxDataType;
+ DML_SCALAR_UNION Min;
+ DML_SCALAR_UNION Max;
+};
+
+struct DML_ELEMENT_WISE_CLIP_GRAD1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ DML_TENSOR_DATA_TYPE MinMaxDataType;
+ DML_SCALAR_UNION Min;
+ DML_SCALAR_UNION Max;
+};
+
+struct DML_PADDING1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_PADDING_MODE PaddingMode;
+ DML_TENSOR_DATA_TYPE PaddingValueDataType;
+ DML_SCALAR_UNION PaddingValue;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+};
+
+struct DML_ELEMENT_WISE_NEGATE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+#endif // DML_TARGET_VERSION >= 0x5000
+
+#if DML_TARGET_VERSION >= 0x5100
+
+struct DML_ACTIVATION_GELU_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_ACTIVATION_SOFTMAX1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT AxisCount;
+ _Field_size_(AxisCount) const UINT* Axes;
+};
+
+struct DML_ACTIVATION_LOG_SOFTMAX1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT AxisCount;
+ _Field_size_(AxisCount) const UINT* Axes;
+};
+
+struct DML_ACTIVATION_HARDMAX1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT AxisCount;
+ _Field_size_(AxisCount) const UINT* Axes;
+};
+
+struct DML_RESAMPLE2_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ DML_AXIS_DIRECTION RoundingDirection;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const FLOAT* Scales;
+ _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
+ _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
+};
+
+struct DML_RESAMPLE_GRAD1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputGradientTensor;
+ const DML_TENSOR_DESC* OutputGradientTensor;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ DML_AXIS_DIRECTION RoundingDirection;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const FLOAT* Scales;
+ _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
+ _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
+};
+
+struct DML_DIAGONAL_MATRIX1_OPERATOR_DESC
+{
+ _Maybenull_ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_TENSOR_DATA_TYPE ValueDataType;
+ DML_SCALAR_UNION Value;
+ INT DiagonalFillBegin;
+ INT DiagonalFillEnd;
+};
+
+#endif // DML_TARGET_VERSION >= 0x5100
+
+#if DML_TARGET_VERSION >= 0x6100
+
+struct DML_MULTIHEAD_ATTENTION_OPERATOR_DESC
+{
+ _Maybenull_ const DML_TENSOR_DESC* QueryTensor;
+ _Maybenull_ const DML_TENSOR_DESC* KeyTensor;
+ _Maybenull_ const DML_TENSOR_DESC* ValueTensor;
+ _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyTensor;
+ _Maybenull_ const DML_TENSOR_DESC* StackedKeyValueTensor;
+ _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyValueTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ _Maybenull_ const DML_TENSOR_DESC* MaskTensor;
+ _Maybenull_ const DML_TENSOR_DESC* RelativePositionBiasTensor;
+ _Maybenull_ const DML_TENSOR_DESC* PastKeyTensor;
+ _Maybenull_ const DML_TENSOR_DESC* PastValueTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputPresentKeyTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputPresentValueTensor;
+ FLOAT Scale;
+ FLOAT MaskFilterValue;
+ UINT HeadCount;
+ DML_MULTIHEAD_ATTENTION_MASK_TYPE MaskType;
+};
+
+#endif // DML_TARGET_VERSION >= 0x6100
+
+#if DML_TARGET_VERSION >= 0x6200
+
+struct DML_LP_POOLING1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ _Field_size_(DimensionCount) const UINT* Dilations;
+ UINT P;
+};
+
+struct DML_AVERAGE_POOLING1_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ _Field_size_(DimensionCount) const UINT* Dilations;
+ BOOL IncludePadding;
+};
+
+struct DML_ACTIVATION_SWISH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT SigmoidInputScale;
+};
+
+struct DML_ACTIVATION_HARD_SWISH_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ FLOAT Alpha;
+ FLOAT Beta;
+};
+
+struct DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* InputScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
+ const DML_TENSOR_DESC* OutputScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* Strides;
+ _Field_size_(DimensionCount) const UINT* WindowSize;
+ _Field_size_(DimensionCount) const UINT* StartPadding;
+ _Field_size_(DimensionCount) const UINT* EndPadding;
+ _Field_size_(DimensionCount) const UINT* Dilations;
+ BOOL IncludePadding;
+};
+
+struct DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* ATensor;
+ const DML_TENSOR_DESC* AScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
+ const DML_TENSOR_DESC* BTensor;
+ const DML_TENSOR_DESC* BScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+#endif // DML_TARGET_VERSION >= 0x6200
+
+#if DML_TARGET_VERSION >= 0x6300
+
+struct DML_MEAN_VARIANCE_NORMALIZATION2_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT AxisCount;
+ _Field_size_(AxisCount) const UINT* Axes;
+ BOOL UseMean;
+ BOOL UseVariance;
+ FLOAT Epsilon;
+ _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
+};
+
+struct DML_MULTIHEAD_ATTENTION1_OPERATOR_DESC
+{
+ _Maybenull_ const DML_TENSOR_DESC* QueryTensor;
+ _Maybenull_ const DML_TENSOR_DESC* KeyTensor;
+ _Maybenull_ const DML_TENSOR_DESC* ValueTensor;
+ _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyTensor;
+ _Maybenull_ const DML_TENSOR_DESC* StackedKeyValueTensor;
+ _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyValueTensor;
+ _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
+ _Maybenull_ const DML_TENSOR_DESC* MaskTensor;
+ _Maybenull_ const DML_TENSOR_DESC* RelativePositionBiasTensor;
+ _Maybenull_ const DML_TENSOR_DESC* PastKeyTensor;
+ _Maybenull_ const DML_TENSOR_DESC* PastValueTensor;
+ _Maybenull_ const DML_TENSOR_DESC* PastSequenceLengthsTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputPresentKeyTensor;
+ _Maybenull_ const DML_TENSOR_DESC* OutputPresentValueTensor;
+ FLOAT Scale;
+ FLOAT MaskFilterValue;
+ UINT QueryHeadCount;
+ UINT KeyValueHeadCount;
+ DML_MULTIHEAD_ATTENTION_MASK_TYPE MaskType;
+};
+
+struct DML_QUANTIZE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ DML_QUANTIZATION_TYPE QuantizationType;
+ UINT QuantizationTensorCount;
+ _Field_size_(QuantizationTensorCount) const DML_TENSOR_DESC* QuantizationTensors;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+struct DML_DEQUANTIZE_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ DML_QUANTIZATION_TYPE QuantizationType;
+ UINT QuantizationTensorCount;
+ _Field_size_(QuantizationTensorCount) const DML_TENSOR_DESC* QuantizationTensors;
+ const DML_TENSOR_DESC* OutputTensor;
+};
+
+#endif // DML_TARGET_VERSION >= 0x6300
+
+#if DML_TARGET_VERSION >= 0x6400
+
+struct DML_RESAMPLE3_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ DML_INTERPOLATION_MODE InterpolationMode;
+ DML_AXIS_DIRECTION RoundingDirection;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const FLOAT* Scales;
+ _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
+ _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
+ BOOL Antialiased;
+};
+
+struct DML_FOLD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* WindowSizes; // Size of the extracted patch
+ _Field_size_(DimensionCount) const UINT* Strides; // Step size of the extracted patches
+ _Field_size_(DimensionCount) const UINT* Dilations; // Dialations of the extracted patch
+ _Field_size_(DimensionCount) const UINT* StartPadding; // Start padding of the "source tensor"
+ _Field_size_(DimensionCount) const UINT* EndPadding; // End padding of the "source tensor"
+};
+
+struct DML_UNFOLD_OPERATOR_DESC
+{
+ const DML_TENSOR_DESC* InputTensor;
+ const DML_TENSOR_DESC* OutputTensor;
+ UINT DimensionCount;
+ _Field_size_(DimensionCount) const UINT* WindowSizes; // Size of the extracted patch
+ _Field_size_(DimensionCount) const UINT* Strides; // Step size of the extracted patches
+ _Field_size_(DimensionCount) const UINT* Dilations; // Dialations of the extracted patch
+ _Field_size_(DimensionCount) const UINT* StartPadding; // Start padding of the "source tensor"
+ _Field_size_(DimensionCount) const UINT* EndPadding; // End padding of the "source tensor"
+};
+
+#endif // DML_TARGET_VERSION >= 0x6400
+
+// ===================================================================================================================
+// DML feature support queries
+// ===================================================================================================================
+
+#if DML_TARGET_VERSION >= 0x2000
+
+enum DML_FEATURE_LEVEL
+{
+ DML_FEATURE_LEVEL_1_0 = 0x1000,
+ DML_FEATURE_LEVEL_2_0 = 0x2000,
+ DML_FEATURE_LEVEL_2_1 = 0x2100,
+ DML_FEATURE_LEVEL_3_0 = 0x3000,
+ DML_FEATURE_LEVEL_3_1 = 0x3100,
+ DML_FEATURE_LEVEL_4_0 = 0x4000,
+ DML_FEATURE_LEVEL_4_1 = 0x4100,
+ DML_FEATURE_LEVEL_5_0 = 0x5000,
+ DML_FEATURE_LEVEL_5_1 = 0x5100,
+ DML_FEATURE_LEVEL_5_2 = 0x5200,
+ DML_FEATURE_LEVEL_6_0 = 0x6000,
+ DML_FEATURE_LEVEL_6_1 = 0x6100,
+ DML_FEATURE_LEVEL_6_2 = 0x6200,
+ DML_FEATURE_LEVEL_6_3 = 0x6300,
+ DML_FEATURE_LEVEL_6_4 = 0x6400,
+};
+
+#endif // DML_TARGET_VERSION >= 0x2000
+
+enum DML_FEATURE
+{
+ DML_FEATURE_TENSOR_DATA_TYPE_SUPPORT,
+
+#if DML_TARGET_VERSION >= 0x2000
+ DML_FEATURE_FEATURE_LEVELS,
+#endif // DML_TARGET_VERSION >= 0x2000
+};
+
+struct DML_FEATURE_QUERY_TENSOR_DATA_TYPE_SUPPORT
+{
+ DML_TENSOR_DATA_TYPE DataType;
+};
+
+struct DML_FEATURE_DATA_TENSOR_DATA_TYPE_SUPPORT
+{
+ BOOL IsSupported;
+};
+
+#if DML_TARGET_VERSION >= 0x2000
+
+struct DML_FEATURE_QUERY_FEATURE_LEVELS
+{
+ UINT RequestedFeatureLevelCount;
+ _Field_size_(RequestedFeatureLevelCount) const DML_FEATURE_LEVEL* RequestedFeatureLevels;
+};
+
+struct DML_FEATURE_DATA_FEATURE_LEVELS
+{
+ DML_FEATURE_LEVEL MaxSupportedFeatureLevel;
+};
+
+#endif // DML_TARGET_VERSION >= 0x2000
+
+// ===================================================================================================================
+// DML device functions, enumerations, and structures
+// ===================================================================================================================
+
+struct DML_BINDING_TABLE_DESC
+{
+ IDMLDispatchable* Dispatchable;
+ D3D12_CPU_DESCRIPTOR_HANDLE CPUDescriptorHandle;
+ D3D12_GPU_DESCRIPTOR_HANDLE GPUDescriptorHandle;
+ UINT SizeInDescriptors;
+};
+
+enum DML_EXECUTION_FLAGS
+{
+ DML_EXECUTION_FLAG_NONE = 0,
+ DML_EXECUTION_FLAG_ALLOW_HALF_PRECISION_COMPUTATION = 0x1,
+ DML_EXECUTION_FLAG_DISABLE_META_COMMANDS = 0x2,
+ DML_EXECUTION_FLAG_DESCRIPTORS_VOLATILE = 0x4,
+};
+
+DEFINE_ENUM_FLAG_OPERATORS(DML_EXECUTION_FLAGS)
+
+enum DML_CREATE_DEVICE_FLAGS
+{
+ DML_CREATE_DEVICE_FLAG_NONE = 0,
+ DML_CREATE_DEVICE_FLAG_DEBUG = 0x1,
+};
+
+DEFINE_ENUM_FLAG_OPERATORS(DML_CREATE_DEVICE_FLAGS)
+
+STDAPI DMLCreateDevice(
+ ID3D12Device* d3d12Device,
+ DML_CREATE_DEVICE_FLAGS flags,
+ REFIID riid, // Expected: IDMLDevice
+ _COM_Outptr_opt_ void** ppv
+ );
+
+#if DML_TARGET_VERSION >= 0x2000
+
+STDAPI DMLCreateDevice1(
+ ID3D12Device* d3d12Device,
+ DML_CREATE_DEVICE_FLAGS flags,
+ DML_FEATURE_LEVEL minimumFeatureLevel,
+ REFIID riid, // Expected: IDMLDevice
+ _COM_Outptr_opt_ void** ppv
+ );
+
+#endif // DML_TARGET_VERSION >= 0x2000
+
+// ===================================================================================================================
+// DML object
+// ===================================================================================================================
+
+interface DML_DECLARE_INTERFACE("c8263aac-9e0c-4a2d-9b8e-007521a3317c") IDMLObject : IUnknown
+{
+ IFACEMETHOD(GetPrivateData)(
+ REFGUID guid,
+ _Inout_ UINT* dataSize,
+ _Out_writes_bytes_opt_(*dataSize) void* data
+ ) = 0;
+
+ IFACEMETHOD(SetPrivateData)(
+ REFGUID guid,
+ UINT dataSize,
+ _In_reads_bytes_opt_(dataSize) const void* data
+ ) = 0;
+
+ IFACEMETHOD(SetPrivateDataInterface)(
+ REFGUID guid,
+ _In_opt_ IUnknown* data
+ ) = 0;
+
+ IFACEMETHOD(SetName)(
+ PCWSTR name
+ ) = 0;
+};
+
+// ===================================================================================================================
+// DML device
+// ===================================================================================================================
+
+interface DML_DECLARE_INTERFACE("6dbd6437-96fd-423f-a98c-ae5e7c2a573f") IDMLDevice : IDMLObject
+{
+ IFACEMETHOD(CheckFeatureSupport)(
+ DML_FEATURE feature,
+ UINT featureQueryDataSize,
+ _In_reads_bytes_opt_(featureQueryDataSize) const void* featureQueryData,
+ UINT featureSupportDataSize,
+ _Out_writes_bytes_(featureSupportDataSize) void* featureSupportData
+ ) = 0;
+
+ IFACEMETHOD(CreateOperator)(
+ const DML_OPERATOR_DESC* desc,
+ REFIID riid, // expected: IDMLOperator
+ _COM_Outptr_opt_ void** ppv
+ ) = 0;
+
+ IFACEMETHOD(CompileOperator)(
+ IDMLOperator* op,
+ DML_EXECUTION_FLAGS flags,
+ REFIID riid, // expected: IDMLCompiledOperator
+ _COM_Outptr_opt_ void** ppv
+ ) = 0;
+
+ IFACEMETHOD(CreateOperatorInitializer)(
+ UINT operatorCount,
+ _In_reads_opt_(operatorCount) IDMLCompiledOperator* const* operators,
+ REFIID riid, // expected: IDMLOperatorInitializer
+ _COM_Outptr_ void** ppv
+ ) = 0;
+
+ IFACEMETHOD(CreateCommandRecorder)(
+ REFIID riid, // expected: IDMLCommandRecorder
+ _COM_Outptr_ void** ppv
+ ) = 0;
+
+ IFACEMETHOD(CreateBindingTable)(
+ _In_opt_ const DML_BINDING_TABLE_DESC* desc,
+ REFIID riid, // expected: IDMLBindingTable
+ _COM_Outptr_ void** ppv
+ ) = 0;
+
+ IFACEMETHOD(Evict)(
+ UINT count,
+ _In_reads_(count) IDMLPageable* const* ppObjects
+ ) = 0;
+
+ IFACEMETHOD(MakeResident)(
+ UINT count,
+ _In_reads_(count) IDMLPageable* const* ppObjects
+ ) = 0;
+
+ IFACEMETHOD(GetDeviceRemovedReason)(
+ ) = 0;
+
+ IFACEMETHOD(GetParentDevice)(
+ REFIID riid,
+ _COM_Outptr_ void** ppv
+ ) = 0;
+};
+
+
+// ===================================================================================================================
+// DML device children
+// ===================================================================================================================
+
+interface DML_DECLARE_INTERFACE("27e83142-8165-49e3-974e-2fd66e4cb69d") IDMLDeviceChild : IDMLObject
+{
+ IFACEMETHOD(GetDevice)(
+ REFIID riid, // expected: IDMLDevice
+ _COM_Outptr_ void** ppv
+ ) = 0;
+};
+
+interface DML_DECLARE_INTERFACE("b1ab0825-4542-4a4b-8617-6dde6e8f6201") IDMLPageable : IDMLDeviceChild
+{
+};
+
+
+// ===================================================================================================================
+// DML operator
+// ===================================================================================================================
+
+interface DML_DECLARE_INTERFACE("26caae7a-3081-4633-9581-226fbe57695d") IDMLOperator : IDMLDeviceChild
+{
+};
+
+
+// ===================================================================================================================
+// DML dispatchable
+// ===================================================================================================================
+
+struct DML_BINDING_PROPERTIES
+{
+ UINT RequiredDescriptorCount;
+ UINT64 TemporaryResourceSize;
+ UINT64 PersistentResourceSize;
+};
+
+interface DML_DECLARE_INTERFACE("dcb821a8-1039-441e-9f1c-b1759c2f3cec") IDMLDispatchable : IDMLPageable
+{
+ IFACEMETHOD_(DML_BINDING_PROPERTIES, GetBindingProperties)() = 0;
+};
+
+
+// ===================================================================================================================
+// DML compiled operator
+// ===================================================================================================================
+
+interface DML_DECLARE_INTERFACE("6b15e56a-bf5c-4902-92d8-da3a650afea4") IDMLCompiledOperator : IDMLDispatchable
+{
+};
+
+
+// ===================================================================================================================
+// DML operator initializer
+// ===================================================================================================================
+
+interface DML_DECLARE_INTERFACE("427c1113-435c-469c-8676-4d5dd072f813") IDMLOperatorInitializer : IDMLDispatchable
+{
+ IFACEMETHOD(Reset)(
+ UINT operatorCount,
+ _In_reads_opt_(operatorCount) IDMLCompiledOperator* const* operators
+ ) = 0;
+};
+
+// ===================================================================================================================
+// DML binding table
+// ===================================================================================================================
+
+enum DML_BINDING_TYPE
+{
+ DML_BINDING_TYPE_NONE,
+ DML_BINDING_TYPE_BUFFER,
+ DML_BINDING_TYPE_BUFFER_ARRAY,
+};
+
+struct DML_BINDING_DESC
+{
+ DML_BINDING_TYPE Type;
+ _Field_size_opt_(_Inexpressible_("Dependent on binding type")) const void* Desc;
+};
+
+struct DML_BUFFER_BINDING
+{
+ _Maybenull_ ID3D12Resource* Buffer;
+ UINT64 Offset;
+ UINT64 SizeInBytes;
+};
+
+struct DML_BUFFER_ARRAY_BINDING
+{
+ UINT BindingCount;
+ _Field_size_(BindingCount) const DML_BUFFER_BINDING* Bindings;
+};
+
+interface DML_DECLARE_INTERFACE("29c687dc-de74-4e3b-ab00-1168f2fc3cfc") IDMLBindingTable : IDMLDeviceChild
+{
+ IFACEMETHOD_(void, BindInputs)(
+ UINT bindingCount,
+ _In_reads_opt_(bindingCount) const DML_BINDING_DESC* bindings
+ ) = 0;
+
+ IFACEMETHOD_(void, BindOutputs)(
+ UINT bindingCount,
+ _In_reads_opt_(bindingCount) const DML_BINDING_DESC* bindings
+ ) = 0;
+
+ IFACEMETHOD_(void, BindTemporaryResource)(
+ _In_opt_ const DML_BINDING_DESC* binding
+ ) = 0;
+
+ IFACEMETHOD_(void, BindPersistentResource)(
+ _In_opt_ const DML_BINDING_DESC* binding
+ ) = 0;
+
+ IFACEMETHOD(Reset)(
+ _In_opt_ const DML_BINDING_TABLE_DESC* desc
+ ) = 0;
+};
+
+
+// ===================================================================================================================
+// DML command recorder
+// ===================================================================================================================
+
+interface DML_DECLARE_INTERFACE("e6857a76-2e3e-4fdd-bff4-5d2ba10fb453") IDMLCommandRecorder : IDMLDeviceChild
+{
+ IFACEMETHOD_(void, RecordDispatch)(
+ ID3D12CommandList* commandList,
+ IDMLDispatchable* dispatchable,
+ IDMLBindingTable* bindings
+ ) = 0;
+};
+
+
+// ===================================================================================================================
+// DML debug
+// ===================================================================================================================
+
+interface DML_DECLARE_INTERFACE("7d6f3ac9-394a-4ac3-92a7-390cc57a8217") IDMLDebugDevice : IUnknown
+{
+ IFACEMETHOD_(void, SetMuteDebugOutput)(
+ BOOL mute
+ ) = 0;
+};
+
+
+// ===================================================================================================================
+// DML graph
+// ===================================================================================================================
+
+#if DML_TARGET_VERSION >= 0x2100
+
+enum DML_GRAPH_EDGE_TYPE
+{
+ DML_GRAPH_EDGE_TYPE_INVALID,
+ DML_GRAPH_EDGE_TYPE_INPUT,
+ DML_GRAPH_EDGE_TYPE_OUTPUT,
+ DML_GRAPH_EDGE_TYPE_INTERMEDIATE,
+};
+
+struct DML_GRAPH_EDGE_DESC
+{
+ DML_GRAPH_EDGE_TYPE Type;
+ _Field_size_(_Inexpressible_("Dependent on edge type")) const void* Desc;
+};
+
+struct DML_INPUT_GRAPH_EDGE_DESC
+{
+ UINT GraphInputIndex;
+ UINT ToNodeIndex;
+ UINT ToNodeInputIndex;
+ _Field_z_ _Maybenull_ const char* Name;
+};
+
+struct DML_OUTPUT_GRAPH_EDGE_DESC
+{
+ UINT FromNodeIndex;
+ UINT FromNodeOutputIndex;
+ UINT GraphOutputIndex;
+ _Field_z_ _Maybenull_ const char* Name;
+};
+
+struct DML_INTERMEDIATE_GRAPH_EDGE_DESC
+{
+ UINT FromNodeIndex;
+ UINT FromNodeOutputIndex;
+ UINT ToNodeIndex;
+ UINT ToNodeInputIndex;
+ _Field_z_ _Maybenull_ const char* Name;
+};
+
+enum DML_GRAPH_NODE_TYPE
+{
+ DML_GRAPH_NODE_TYPE_INVALID,
+ DML_GRAPH_NODE_TYPE_OPERATOR,
+#if DML_TARGET_VERSION >= 0x6200
+ DML_GRAPH_NODE_TYPE_CONSTANT
+#endif // DML_TARGET_VERSION >= 0x6200
+};
+
+struct DML_GRAPH_NODE_DESC
+{
+ DML_GRAPH_NODE_TYPE Type;
+ _Field_size_(_Inexpressible_("Dependent on node type")) const void* Desc;
+};
+
+struct DML_OPERATOR_GRAPH_NODE_DESC
+{
+ IDMLOperator* Operator;
+ _Field_z_ _Maybenull_ const char* Name;
+};
+
+#if DML_TARGET_VERSION >= 0x6200
+struct DML_CONSTANT_DATA_GRAPH_NODE_DESC
+{
+ _Field_size_bytes_(DataSize) const void* Data;
+ SIZE_T DataSize;
+ _Field_z_ _Maybenull_ const char* Name;
+};
+#endif // DML_TARGET_VERSION >= 0x6200
+
+struct DML_GRAPH_DESC
+{
+ UINT InputCount;
+ UINT OutputCount;
+
+ UINT NodeCount;
+ _Field_size_(NodeCount) const DML_GRAPH_NODE_DESC* Nodes;
+
+ UINT InputEdgeCount;
+ _Field_size_opt_(InputEdgeCount) const DML_GRAPH_EDGE_DESC* InputEdges;
+
+ UINT OutputEdgeCount;
+ _Field_size_(OutputEdgeCount) const DML_GRAPH_EDGE_DESC* OutputEdges;
+
+ UINT IntermediateEdgeCount;
+ _Field_size_opt_(IntermediateEdgeCount) const DML_GRAPH_EDGE_DESC* IntermediateEdges;
+};
+
+interface DML_DECLARE_INTERFACE("a0884f9a-d2be-4355-aa5d-5901281ad1d2") IDMLDevice1 : IDMLDevice
+{
+ IFACEMETHOD(CompileGraph)(
+ const DML_GRAPH_DESC* desc,
+ DML_EXECUTION_FLAGS flags,
+ REFIID riid, // expected: IDMLCompiledOperator
+ _COM_Outptr_opt_ void** ppv
+ ) = 0;
+};
+
+#endif // DML_TARGET_VERSION >= 0x2100
+
+#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
+#endif // DIRECTML_H
diff --git a/thirdparty/directx_headers/include/directx/d3d12.h b/thirdparty/directx_headers/include/directx/d3d12.h
index d57513b7f80..0d12a2b6acc 100644
--- a/thirdparty/directx_headers/include/directx/d3d12.h
+++ b/thirdparty/directx_headers/include/directx/d3d12.h
@@ -136,6 +136,13 @@ typedef interface ID3D12PipelineState ID3D12PipelineState;
#endif /* __ID3D12PipelineState_FWD_DEFINED__ */
+#ifndef __ID3D12PipelineState1_FWD_DEFINED__
+#define __ID3D12PipelineState1_FWD_DEFINED__
+typedef interface ID3D12PipelineState1 ID3D12PipelineState1;
+
+#endif /* __ID3D12PipelineState1_FWD_DEFINED__ */
+
+
#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
#define __ID3D12DescriptorHeap_FWD_DEFINED__
typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
@@ -192,6 +199,13 @@ typedef interface ID3D12CommandQueue ID3D12CommandQueue;
#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
+#ifndef __ID3D12CommandQueue1_FWD_DEFINED__
+#define __ID3D12CommandQueue1_FWD_DEFINED__
+typedef interface ID3D12CommandQueue1 ID3D12CommandQueue1;
+
+#endif /* __ID3D12CommandQueue1_FWD_DEFINED__ */
+
+
#ifndef __ID3D12Device_FWD_DEFINED__
#define __ID3D12Device_FWD_DEFINED__
typedef interface ID3D12Device ID3D12Device;
@@ -290,6 +304,27 @@ typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
+#ifndef __ID3D12StateObjectProperties1_FWD_DEFINED__
+#define __ID3D12StateObjectProperties1_FWD_DEFINED__
+typedef interface ID3D12StateObjectProperties1 ID3D12StateObjectProperties1;
+
+#endif /* __ID3D12StateObjectProperties1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectProperties2_FWD_DEFINED__
+#define __ID3D12StateObjectProperties2_FWD_DEFINED__
+typedef interface ID3D12StateObjectProperties2 ID3D12StateObjectProperties2;
+
+#endif /* __ID3D12StateObjectProperties2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12WorkGraphProperties_FWD_DEFINED__
+#define __ID3D12WorkGraphProperties_FWD_DEFINED__
+typedef interface ID3D12WorkGraphProperties ID3D12WorkGraphProperties;
+
+#endif /* __ID3D12WorkGraphProperties_FWD_DEFINED__ */
+
+
#ifndef __ID3D12Device5_FWD_DEFINED__
#define __ID3D12Device5_FWD_DEFINED__
typedef interface ID3D12Device5 ID3D12Device5;
@@ -451,6 +486,20 @@ typedef interface ID3D12Device13 ID3D12Device13;
#endif /* __ID3D12Device13_FWD_DEFINED__ */
+#ifndef __ID3D12Device14_FWD_DEFINED__
+#define __ID3D12Device14_FWD_DEFINED__
+typedef interface ID3D12Device14 ID3D12Device14;
+
+#endif /* __ID3D12Device14_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectDatabase_FWD_DEFINED__
+#define __ID3D12StateObjectDatabase_FWD_DEFINED__
+typedef interface ID3D12StateObjectDatabase ID3D12StateObjectDatabase;
+
+#endif /* __ID3D12StateObjectDatabase_FWD_DEFINED__ */
+
+
#ifndef __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
#define __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
typedef interface ID3D12VirtualizationGuestDevice ID3D12VirtualizationGuestDevice;
@@ -465,6 +514,41 @@ typedef interface ID3D12Tools ID3D12Tools;
#endif /* __ID3D12Tools_FWD_DEFINED__ */
+#ifndef __ID3D12Tools1_FWD_DEFINED__
+#define __ID3D12Tools1_FWD_DEFINED__
+typedef interface ID3D12Tools1 ID3D12Tools1;
+
+#endif /* __ID3D12Tools1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Tools2_FWD_DEFINED__
+#define __ID3D12Tools2_FWD_DEFINED__
+typedef interface ID3D12Tools2 ID3D12Tools2;
+
+#endif /* __ID3D12Tools2_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12PageableTools_FWD_DEFINED__
+#define __ID3D12PageableTools_FWD_DEFINED__
+typedef interface ID3D12PageableTools ID3D12PageableTools;
+
+#endif /* __ID3D12PageableTools_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceTools_FWD_DEFINED__
+#define __ID3D12DeviceTools_FWD_DEFINED__
+typedef interface ID3D12DeviceTools ID3D12DeviceTools;
+
+#endif /* __ID3D12DeviceTools_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceTools1_FWD_DEFINED__
+#define __ID3D12DeviceTools1_FWD_DEFINED__
+typedef interface ID3D12DeviceTools1 ID3D12DeviceTools1;
+
+#endif /* __ID3D12DeviceTools1_FWD_DEFINED__ */
+
+
#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
#define __ID3D12SDKConfiguration_FWD_DEFINED__
typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
@@ -493,6 +577,20 @@ typedef interface ID3D12DeviceConfiguration ID3D12DeviceConfiguration;
#endif /* __ID3D12DeviceConfiguration_FWD_DEFINED__ */
+#ifndef __ID3D12DeviceConfiguration1_FWD_DEFINED__
+#define __ID3D12DeviceConfiguration1_FWD_DEFINED__
+typedef interface ID3D12DeviceConfiguration1 ID3D12DeviceConfiguration1;
+
+#endif /* __ID3D12DeviceConfiguration1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
+#define __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
+typedef interface ID3D12StateObjectDatabaseFactory ID3D12StateObjectDatabaseFactory;
+
+#endif /* __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__ */
+
+
#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
@@ -528,6 +626,27 @@ typedef interface ID3D12GraphicsCommandList9 ID3D12GraphicsCommandList9;
#endif /* __ID3D12GraphicsCommandList9_FWD_DEFINED__ */
+#ifndef __ID3D12GraphicsCommandList10_FWD_DEFINED__
+#define __ID3D12GraphicsCommandList10_FWD_DEFINED__
+typedef interface ID3D12GraphicsCommandList10 ID3D12GraphicsCommandList10;
+
+#endif /* __ID3D12GraphicsCommandList10_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DSRDeviceFactory_FWD_DEFINED__
+#define __ID3D12DSRDeviceFactory_FWD_DEFINED__
+typedef interface ID3D12DSRDeviceFactory ID3D12DSRDeviceFactory;
+
+#endif /* __ID3D12DSRDeviceFactory_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12GBVDiagnostics_FWD_DEFINED__
+#define __ID3D12GBVDiagnostics_FWD_DEFINED__
+typedef interface ID3D12GBVDiagnostics ID3D12GBVDiagnostics;
+
+#endif /* __ID3D12GBVDiagnostics_FWD_DEFINED__ */
+
+
/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
@@ -1060,7 +1179,7 @@ extern "C"{
#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
-#define D3D12_PREVIEW_SDK_VERSION ( 712 )
+#define D3D12_PREVIEW_SDK_VERSION ( 717 )
#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
@@ -1130,6 +1249,10 @@ extern "C"{
#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
+#define D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT ( 128 )
+
+#define D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL ( 12 )
+
#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
@@ -1193,7 +1316,7 @@ extern "C"{
#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
-#define D3D12_SDK_VERSION ( 611 )
+#define D3D12_SDK_VERSION ( 618 )
#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
@@ -1291,6 +1414,10 @@ extern "C"{
#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
+#define D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT ( 4096 )
+
+#define D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT ( 8 )
+
#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
@@ -1355,6 +1482,10 @@ extern "C"{
#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
+#define D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES ( 8 )
+
+#define D3D12_WORK_GRAPHS_MAX_NODE_DEPTH ( 32 )
+
#endif
typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
@@ -1376,10 +1507,11 @@ typedef
enum D3D12_COMMAND_QUEUE_FLAGS
{
D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
- D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1
+ D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
+ D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2
} D3D12_COMMAND_QUEUE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )
typedef
enum D3D12_COMMAND_QUEUE_PRIORITY
{
@@ -1475,6 +1607,19 @@ typedef struct D3D12_BOX
UINT back;
} D3D12_BOX;
+#ifdef __midl
+#ifndef LUID_DEFINED
+#define LUID_DEFINED 1
+typedef struct __LUID
+ {
+ DWORD LowPart;
+ LONG HighPart;
+ } LUID;
+
+typedef struct __LUID *PLUID;
+
+#endif
+#endif
typedef
enum D3D12_COMPARISON_FUNC
{
@@ -2117,6 +2262,13 @@ enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
+typedef
+enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
+ {
+ D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
+ D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
+ } D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
+
typedef struct D3D12_CACHED_PIPELINE_STATE
{
_Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
@@ -2132,7 +2284,7 @@ enum D3D12_PIPELINE_STATE_FLAGS
D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8
} D3D12_PIPELINE_STATE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )
typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
{
ID3D12RootSignature *pRootSignature;
@@ -2167,6 +2319,31 @@ typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
D3D12_PIPELINE_STATE_FLAGS Flags;
} D3D12_COMPUTE_PIPELINE_STATE_DESC;
+typedef
+enum D3D_ROOT_SIGNATURE_VERSION
+ {
+ D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
+ D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
+ D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
+ D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3
+ } D3D_ROOT_SIGNATURE_VERSION;
+
+typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
+ {
+ _Field_size_bytes_full_(SerializedBlobSizeInBytes) const void *pSerializedBlob;
+ SIZE_T SerializedBlobSizeInBytes;
+ } D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
+
+typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
+ {
+ D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
+ } D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
+
+typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
+ {
+ D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
+ } D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
+
struct D3D12_RT_FORMAT_ARRAY
{
DXGI_FORMAT RTFormats[ 8 ];
@@ -2209,7 +2386,8 @@ enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26,
D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27,
D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28,
- D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 + 1 )
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29,
+ D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE + 1 )
} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
typedef
@@ -2257,7 +2435,12 @@ enum D3D12_FEATURE
D3D12_FEATURE_D3D12_OPTIONS20 = 49,
D3D12_FEATURE_PREDICATION = 50,
D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
- D3D12_FEATURE_HARDWARE_COPY = 52
+ D3D12_FEATURE_HARDWARE_COPY = 52,
+ D3D12_FEATURE_D3D12_OPTIONS21 = 53,
+ D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
+ D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
+ D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
+ D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61
} D3D12_FEATURE;
typedef
@@ -2268,7 +2451,7 @@ enum D3D12_SHADER_MIN_PRECISION_SUPPORT
D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
} D3D12_SHADER_MIN_PRECISION_SUPPORT;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )
typedef
enum D3D12_TILED_RESOURCES_TIER
{
@@ -2331,7 +2514,7 @@ enum D3D12_FORMAT_SUPPORT1
D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
} D3D12_FORMAT_SUPPORT1;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )
typedef
enum D3D12_FORMAT_SUPPORT2
{
@@ -2347,10 +2530,11 @@ enum D3D12_FORMAT_SUPPORT2
D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
D3D12_FORMAT_SUPPORT2_TILED = 0x200,
D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
- D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000
+ D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000,
+ D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x10000
} D3D12_FORMAT_SUPPORT2;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )
typedef
enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
{
@@ -2358,7 +2542,7 @@ enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )
typedef
enum D3D12_CROSS_NODE_SHARING_TIER
{
@@ -2393,6 +2577,13 @@ enum D3D12_VIEW_INSTANCING_TIER
D3D12_VIEW_INSTANCING_TIER_3 = 3
} D3D12_VIEW_INSTANCING_TIER;
+typedef
+enum D3D12_WORK_GRAPHS_TIER
+ {
+ D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
+ D3D12_WORK_GRAPHS_TIER_1_0 = 10
+ } D3D12_WORK_GRAPHS_TIER;
+
typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
{
_Out_ BOOL DoublePrecisionFloatShaderOps;
@@ -2428,15 +2619,6 @@ typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
_Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
-typedef
-enum D3D_ROOT_SIGNATURE_VERSION
- {
- D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
- D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
- D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
- D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3
- } D3D_ROOT_SIGNATURE_VERSION;
-
typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
{
_Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
@@ -2469,6 +2651,7 @@ typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
typedef
enum D3D_SHADER_MODEL
{
+ D3D_SHADER_MODEL_NONE = 0,
D3D_SHADER_MODEL_5_1 = 0x51,
D3D_SHADER_MODEL_6_0 = 0x60,
D3D_SHADER_MODEL_6_1 = 0x61,
@@ -2479,7 +2662,8 @@ enum D3D_SHADER_MODEL
D3D_SHADER_MODEL_6_6 = 0x66,
D3D_SHADER_MODEL_6_7 = 0x67,
D3D_SHADER_MODEL_6_8 = 0x68,
- D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_8
+ D3D_SHADER_MODEL_6_9 = 0x69,
+ D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
} D3D_SHADER_MODEL;
typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
@@ -2527,7 +2711,7 @@ enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )
typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
{
_Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
@@ -2553,7 +2737,7 @@ enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )
typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
{
_Out_ BOOL CopyQueueTimestampQueriesSupported;
@@ -2621,7 +2805,8 @@ enum D3D12_RAYTRACING_TIER
{
D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
D3D12_RAYTRACING_TIER_1_0 = 10,
- D3D12_RAYTRACING_TIER_1_1 = 11
+ D3D12_RAYTRACING_TIER_1_1 = 11,
+ D3D12_RAYTRACING_TIER_1_2 = 12
} D3D12_RAYTRACING_TIER;
typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
@@ -2794,6 +2979,33 @@ typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
D3D12_RECREATE_AT_TIER RecreateAtTier;
} D3D12_FEATURE_DATA_D3D12_OPTIONS20;
+typedef
+enum D3D12_EXECUTE_INDIRECT_TIER
+ {
+ D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
+ D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11
+ } D3D12_EXECUTE_INDIRECT_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
+ {
+ _Out_ D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
+ _Out_ D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
+ _Out_ BOOL SampleCmpGradientAndBiasSupported;
+ _Out_ BOOL ExtendedCommandInfoSupported;
+ } D3D12_FEATURE_DATA_D3D12_OPTIONS21;
+
+typedef
+enum D3D12_TIGHT_ALIGNMENT_TIER
+ {
+ D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED = 0,
+ D3D12_TIGHT_ALIGNMENT_TIER_1 = ( D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED + 1 )
+ } D3D12_TIGHT_ALIGNMENT_TIER;
+
+typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
+ {
+ _Out_ D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
+ } D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
+
typedef struct D3D12_FEATURE_DATA_PREDICATION
{
_Out_ BOOL Supported;
@@ -2804,6 +3016,16 @@ typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
_Out_ BOOL Supported;
} D3D12_FEATURE_DATA_HARDWARE_COPY;
+typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
+ {
+ _Out_ BOOL Supported;
+ } D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
+
+typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
+ {
+ _Out_ BOOL Supported;
+ } D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
+
typedef struct D3D12_RESOURCE_ALLOCATION_INFO
{
UINT64 SizeInBytes;
@@ -2875,7 +3097,7 @@ enum D3D12_HEAP_FLAGS
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
} D3D12_HEAP_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )
typedef struct D3D12_HEAP_DESC
{
UINT64 SizeInBytes;
@@ -2923,10 +3145,11 @@ enum D3D12_RESOURCE_FLAGS
D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
- D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100
+ D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
+ D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400
} D3D12_RESOURCE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )
typedef struct D3D12_MIP_REGION
{
UINT Width;
@@ -3060,7 +3283,7 @@ enum D3D12_TILE_MAPPING_FLAGS
D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
} D3D12_TILE_MAPPING_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )
typedef
enum D3D12_TILE_COPY_FLAGS
{
@@ -3070,7 +3293,7 @@ enum D3D12_TILE_COPY_FLAGS
D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
} D3D12_TILE_COPY_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )
typedef
enum D3D12_RESOURCE_STATES
{
@@ -3108,7 +3331,7 @@ enum D3D12_RESOURCE_STATES
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
} D3D12_RESOURCE_STATES;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )
typedef
enum D3D12_RESOURCE_BARRIER_TYPE
{
@@ -3145,7 +3368,7 @@ enum D3D12_RESOURCE_BARRIER_FLAGS
D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
} D3D12_RESOURCE_BARRIER_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )
typedef struct D3D12_RESOURCE_BARRIER
{
D3D12_RESOURCE_BARRIER_TYPE Type;
@@ -3221,7 +3444,7 @@ enum D3D12_VIEW_INSTANCING_FLAGS
D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
} D3D12_VIEW_INSTANCING_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )
typedef struct D3D12_VIEW_INSTANCING_DESC
{
UINT ViewInstanceCount;
@@ -3257,7 +3480,7 @@ enum D3D12_BUFFER_SRV_FLAGS
D3D12_BUFFER_SRV_FLAG_RAW = 0x1
} D3D12_BUFFER_SRV_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )
typedef struct D3D12_BUFFER_SRV
{
UINT64 FirstElement;
@@ -3528,7 +3751,7 @@ enum D3D12_SAMPLER_FLAGS
D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x2
} D3D12_SAMPLER_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )
typedef struct D3D12_SAMPLER_DESC2
{
D3D12_FILTER Filter;
@@ -3555,7 +3778,7 @@ enum D3D12_BUFFER_UAV_FLAGS
D3D12_BUFFER_UAV_FLAG_RAW = 0x1
} D3D12_BUFFER_UAV_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )
typedef struct D3D12_BUFFER_UAV
{
UINT64 FirstElement;
@@ -3764,7 +3987,7 @@ enum D3D12_DSV_FLAGS
D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
} D3D12_DSV_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )
typedef
enum D3D12_DSV_DIMENSION
{
@@ -3800,7 +4023,7 @@ enum D3D12_CLEAR_FLAGS
D3D12_CLEAR_FLAG_STENCIL = 0x2
} D3D12_CLEAR_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )
typedef
enum D3D12_FENCE_FLAGS
{
@@ -3810,7 +4033,7 @@ enum D3D12_FENCE_FLAGS
D3D12_FENCE_FLAG_NON_MONITORED = 0x4
} D3D12_FENCE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )
typedef
enum D3D12_DESCRIPTOR_HEAP_TYPE
{
@@ -3828,7 +4051,7 @@ enum D3D12_DESCRIPTOR_HEAP_FLAGS
D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
} D3D12_DESCRIPTOR_HEAP_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )
typedef struct D3D12_DESCRIPTOR_HEAP_DESC
{
D3D12_DESCRIPTOR_HEAP_TYPE Type;
@@ -3927,7 +4150,7 @@ enum D3D12_ROOT_SIGNATURE_FLAGS
D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
} D3D12_ROOT_SIGNATURE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )
typedef
enum D3D12_STATIC_BORDER_COLOR
{
@@ -3993,7 +4216,7 @@ enum D3D12_DESCRIPTOR_RANGE_FLAGS
D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
} D3D12_DESCRIPTOR_RANGE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )
typedef struct D3D12_DESCRIPTOR_RANGE1
{
D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
@@ -4019,7 +4242,7 @@ enum D3D12_ROOT_DESCRIPTOR_FLAGS
D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
} D3D12_ROOT_DESCRIPTOR_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )
typedef struct D3D12_ROOT_DESCRIPTOR1
{
UINT ShaderRegister;
@@ -4297,6 +4520,20 @@ HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
_In_ REFIID pRootSignatureDeserializerInterface,
_Out_ void** ppRootSignatureDeserializer);
+typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(
+ _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+ _In_ SIZE_T SrcDataSizeInBytes,
+ _In_ LPCWSTR RootSignatureSubobjectName,
+ _In_ REFIID pRootSignatureDeserializerInterface,
+ _Out_ void** ppRootSignatureDeserializer);
+
+HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
+ _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+ _In_ SIZE_T SrcDataSizeInBytes,
+ _In_opt_ LPCWSTR RootSignatureSubobjectName,
+ _In_ REFIID pRootSignatureDeserializerInterface,
+ _Out_ void** ppRootSignatureDeserializer);
+
typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
{
SIZE_T ptr;
@@ -4455,7 +4692,8 @@ enum D3D12_INDIRECT_ARGUMENT_TYPE
D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
- D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 )
+ D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 ) ,
+ D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH + 1 )
} D3D12_INDIRECT_ARGUMENT_TYPE;
typedef struct D3D12_INDIRECT_ARGUMENT_DESC
@@ -4485,6 +4723,11 @@ typedef struct D3D12_INDIRECT_ARGUMENT_DESC
{
UINT RootParameterIndex;
} UnorderedAccessView;
+ struct
+ {
+ UINT RootParameterIndex;
+ UINT DestOffsetIn32BitValues;
+ } IncrementingConstant;
} ;
} D3D12_INDIRECT_ARGUMENT_DESC;
@@ -5577,6 +5820,149 @@ EXTERN_C const IID IID_ID3D12PipelineState;
#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
+#ifndef __ID3D12PipelineState1_INTERFACE_DEFINED__
+#define __ID3D12PipelineState1_INTERFACE_DEFINED__
+
+/* interface ID3D12PipelineState1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12PipelineState1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5646804c-9638-48f7-9182-b3ee5a6b60fb")
+ ID3D12PipelineState1 : public ID3D12PipelineState
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetRootSignature(
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12PipelineState1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12PipelineState1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12PipelineState1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12PipelineState1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12PipelineState1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12PipelineState1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12PipelineState1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12PipelineState1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12PipelineState1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
+ HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
+ ID3D12PipelineState1 * This,
+ _COM_Outptr_ ID3DBlob **ppBlob);
+
+ DECLSPEC_XFGVIRT(ID3D12PipelineState1, GetRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *GetRootSignature )(
+ ID3D12PipelineState1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ END_INTERFACE
+ } ID3D12PipelineState1Vtbl;
+
+ interface ID3D12PipelineState1
+ {
+ CONST_VTBL struct ID3D12PipelineState1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12PipelineState1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12PipelineState1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12PipelineState1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12PipelineState1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12PipelineState1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12PipelineState1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12PipelineState1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12PipelineState1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12PipelineState1_GetCachedBlob(This,ppBlob) \
+ ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
+
+
+#define ID3D12PipelineState1_GetRootSignature(This,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> GetRootSignature(This,riid,ppvRootSignature) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12PipelineState1_INTERFACE_DEFINED__ */
+
+
#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
@@ -7773,7 +8159,7 @@ EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0018 */
+/* interface __MIDL_itf_d3d12_0000_0019 */
/* [local] */
typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
@@ -7792,8 +8178,8 @@ enum D3D12_WRITEBUFFERIMMEDIATE_MODE
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_s_ifspec;
#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
@@ -8814,26 +9200,335 @@ EXTERN_C const IID IID_ID3D12CommandQueue;
#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0020 */
+/* interface __MIDL_itf_d3d12_0000_0021 */
/* [local] */
-#ifdef __midl
-#ifndef LUID_DEFINED
-#define LUID_DEFINED 1
-typedef struct __LUID
+typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
{
- DWORD LowPart;
- LONG HighPart;
- } LUID;
+ _Out_ UINT ComputeQueuesPer3DQueue;
+ } D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
-typedef struct __LUID *PLUID;
+typedef
+enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
+ {
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1
+ } D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
+typedef
+enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
+ {
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32
+ } D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_s_ifspec;
+
+#ifndef __ID3D12CommandQueue1_INTERFACE_DEFINED__
+#define __ID3D12CommandQueue1_INTERFACE_DEFINED__
+
+/* interface ID3D12CommandQueue1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CommandQueue1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9")
+ ID3D12CommandQueue1 : public ID3D12CommandQueue
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetProcessPriority(
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetProcessPriority(
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetGlobalPriority(
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGlobalPriority(
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CommandQueue1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CommandQueue1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CommandQueue1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CommandQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12CommandQueue1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12CommandQueue1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12CommandQueue1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12CommandQueue1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12CommandQueue1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
+ void ( STDMETHODCALLTYPE *UpdateTileMappings )(
+ ID3D12CommandQueue1 * This,
+ _In_ ID3D12Resource *pResource,
+ UINT NumResourceRegions,
+ _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
+ _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
+ _In_opt_ ID3D12Heap *pHeap,
+ UINT NumRanges,
+ _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
+ _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
+ _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
+ D3D12_TILE_MAPPING_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
+ void ( STDMETHODCALLTYPE *CopyTileMappings )(
+ ID3D12CommandQueue1 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
+ D3D12_TILE_MAPPING_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
+ void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
+ ID3D12CommandQueue1 * This,
+ _In_ UINT NumCommandLists,
+ _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12CommandQueue1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12CommandQueue1 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12CommandQueue1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
+ HRESULT ( STDMETHODCALLTYPE *Signal )(
+ ID3D12CommandQueue1 * This,
+ ID3D12Fence *pFence,
+ UINT64 Value);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
+ HRESULT ( STDMETHODCALLTYPE *Wait )(
+ ID3D12CommandQueue1 * This,
+ ID3D12Fence *pFence,
+ UINT64 Value);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
+ HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
+ ID3D12CommandQueue1 * This,
+ _Out_ UINT64 *pFrequency);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
+ HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
+ ID3D12CommandQueue1 * This,
+ _Out_ UINT64 *pGpuTimestamp,
+ _Out_ UINT64 *pCpuTimestamp);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
+#if !defined(_WIN32)
+ D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12CommandQueue1 * This);
+
+#else
+ D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_DESC * RetVal);
+
#endif
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetProcessPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetProcessPriority )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetProcessPriority)
+ HRESULT ( STDMETHODCALLTYPE *GetProcessPriority )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetGlobalPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetGlobalPriority )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetGlobalPriority)
+ HRESULT ( STDMETHODCALLTYPE *GetGlobalPriority )(
+ ID3D12CommandQueue1 * This,
+ D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue);
+
+ END_INTERFACE
+ } ID3D12CommandQueue1Vtbl;
+
+ interface ID3D12CommandQueue1
+ {
+ CONST_VTBL struct ID3D12CommandQueue1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CommandQueue1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CommandQueue1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CommandQueue1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CommandQueue1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12CommandQueue1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12CommandQueue1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12CommandQueue1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12CommandQueue1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12CommandQueue1_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
+ ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
+
+#define ID3D12CommandQueue1_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
+ ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
+
+#define ID3D12CommandQueue1_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
+ ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
+
+#define ID3D12CommandQueue1_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12CommandQueue1_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12CommandQueue1_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12CommandQueue1_Signal(This,pFence,Value) \
+ ( (This)->lpVtbl -> Signal(This,pFence,Value) )
+
+#define ID3D12CommandQueue1_Wait(This,pFence,Value) \
+ ( (This)->lpVtbl -> Wait(This,pFence,Value) )
+
+#define ID3D12CommandQueue1_GetTimestampFrequency(This,pFrequency) \
+ ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
+
+#define ID3D12CommandQueue1_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
+ ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
+#if !defined(_WIN32)
+
+#define ID3D12CommandQueue1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12CommandQueue1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
#endif
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_s_ifspec;
+#define ID3D12CommandQueue1_SetProcessPriority(This,Priority) \
+ ( (This)->lpVtbl -> SetProcessPriority(This,Priority) )
+
+#define ID3D12CommandQueue1_GetProcessPriority(This,pOutValue) \
+ ( (This)->lpVtbl -> GetProcessPriority(This,pOutValue) )
+
+#define ID3D12CommandQueue1_SetGlobalPriority(This,Priority) \
+ ( (This)->lpVtbl -> SetGlobalPriority(This,Priority) )
+
+#define ID3D12CommandQueue1_GetGlobalPriority(This,pOutValue) \
+ ( (This)->lpVtbl -> GetGlobalPriority(This,pOutValue) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CommandQueue1_INTERFACE_DEFINED__ */
+
#ifndef __ID3D12Device_INTERFACE_DEFINED__
#define __ID3D12Device_INTERFACE_DEFINED__
@@ -9972,7 +10667,7 @@ EXTERN_C const IID IID_ID3D12PipelineLibrary1;
#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0023 */
+/* interface __MIDL_itf_d3d12_0000_0025 */
/* [local] */
typedef
@@ -9983,7 +10678,7 @@ enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )
typedef
enum D3D12_RESIDENCY_PRIORITY
{
@@ -9996,8 +10691,8 @@ enum D3D12_RESIDENCY_PRIORITY
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0023_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
#ifndef __ID3D12Device1_INTERFACE_DEFINED__
#define __ID3D12Device1_INTERFACE_DEFINED__
@@ -11183,7 +11878,7 @@ EXTERN_C const IID IID_ID3D12Device2;
#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0025 */
+/* interface __MIDL_itf_d3d12_0000_0027 */
/* [local] */
typedef
@@ -11193,11 +11888,11 @@ enum D3D12_RESIDENCY_FLAGS
D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
} D3D12_RESIDENCY_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
#ifndef __ID3D12Device3_INTERFACE_DEFINED__
#define __ID3D12Device3_INTERFACE_DEFINED__
@@ -11835,7 +12530,7 @@ EXTERN_C const IID IID_ID3D12Device3;
#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0026 */
+/* interface __MIDL_itf_d3d12_0000_0028 */
/* [local] */
typedef
@@ -11844,21 +12539,21 @@ enum D3D12_COMMAND_LIST_FLAGS
D3D12_COMMAND_LIST_FLAG_NONE = 0
} D3D12_COMMAND_LIST_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )
typedef
enum D3D12_COMMAND_POOL_FLAGS
{
D3D12_COMMAND_POOL_FLAG_NONE = 0
} D3D12_COMMAND_POOL_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )
typedef
enum D3D12_COMMAND_RECORDER_FLAGS
{
D3D12_COMMAND_RECORDER_FLAG_NONE = 0
} D3D12_COMMAND_RECORDER_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )
typedef
enum D3D12_PROTECTED_SESSION_STATUS
{
@@ -11868,8 +12563,8 @@ enum D3D12_PROTECTED_SESSION_STATUS
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0026_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_s_ifspec;
#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
@@ -12013,7 +12708,7 @@ EXTERN_C const IID IID_ID3D12ProtectedSession;
#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0027 */
+/* interface __MIDL_itf_d3d12_0000_0029 */
/* [local] */
typedef
@@ -12023,7 +12718,7 @@ enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )
typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
{
UINT NodeIndex;
@@ -12036,7 +12731,7 @@ enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )
typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
{
UINT NodeMask;
@@ -12045,8 +12740,8 @@ typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
@@ -12972,7 +13667,7 @@ EXTERN_C const IID IID_ID3D12Device4;
#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0029 */
+/* interface __MIDL_itf_d3d12_0000_0031 */
/* [local] */
typedef
@@ -12985,8 +13680,8 @@ enum D3D12_LIFETIME_STATE
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_s_ifspec;
#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
@@ -13340,7 +14035,7 @@ EXTERN_C const IID IID_ID3D12LifetimeTracker;
#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0032 */
+/* interface __MIDL_itf_d3d12_0000_0034 */
/* [local] */
typedef
@@ -13360,7 +14055,7 @@ enum D3D12_META_COMMAND_PARAMETER_FLAGS
D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
} D3D12_META_COMMAND_PARAMETER_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )
typedef
enum D3D12_META_COMMAND_PARAMETER_STAGE
{
@@ -13401,7 +14096,7 @@ enum D3D12_GRAPHICS_STATES
D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
} D3D12_GRAPHICS_STATES;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )
typedef struct D3D12_META_COMMAND_DESC
{
GUID Id;
@@ -13412,8 +14107,8 @@ typedef struct D3D12_META_COMMAND_DESC
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0032_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
#define __ID3D12StateObject_INTERFACE_DEFINED__
@@ -13650,7 +14345,606 @@ EXTERN_C const IID IID_ID3D12StateObjectProperties;
#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0034 */
+/* interface __MIDL_itf_d3d12_0000_0036 */
+/* [local] */
+
+typedef struct D3D12_PROGRAM_IDENTIFIER
+ {
+ UINT64 OpaqueData[ 4 ];
+ } D3D12_PROGRAM_IDENTIFIER;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_s_ifspec;
+
+#ifndef __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
+#define __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectProperties1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectProperties1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("460caac7-1d24-446a-a184-ca67db494138")
+ ID3D12StateObjectProperties1 : public ID3D12StateObjectProperties
+ {
+ public:
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_PROGRAM_IDENTIFIER STDMETHODCALLTYPE GetProgramIdentifier(
+ LPCWSTR pProgramName) = 0;
+#else
+ virtual D3D12_PROGRAM_IDENTIFIER *STDMETHODCALLTYPE GetProgramIdentifier(
+ D3D12_PROGRAM_IDENTIFIER * RetVal,
+ LPCWSTR pProgramName) = 0;
+#endif
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectProperties1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectProperties1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectProperties1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectProperties1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
+ void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
+ ID3D12StateObjectProperties1 * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
+ ID3D12StateObjectProperties1 * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
+ ID3D12StateObjectProperties1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
+ void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
+ ID3D12StateObjectProperties1 * This,
+ UINT64 PipelineStackSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
+#if !defined(_WIN32)
+ D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
+ ID3D12StateObjectProperties1 * This,
+ LPCWSTR pProgramName);
+
+#else
+ D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
+ ID3D12StateObjectProperties1 * This,
+ D3D12_PROGRAM_IDENTIFIER * RetVal,
+ LPCWSTR pProgramName);
+
+#endif
+
+ END_INTERFACE
+ } ID3D12StateObjectProperties1Vtbl;
+
+ interface ID3D12StateObjectProperties1
+ {
+ CONST_VTBL struct ID3D12StateObjectProperties1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectProperties1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectProperties1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectProperties1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectProperties1_GetShaderIdentifier(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
+
+#define ID3D12StateObjectProperties1_GetShaderStackSize(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
+
+#define ID3D12StateObjectProperties1_GetPipelineStackSize(This) \
+ ( (This)->lpVtbl -> GetPipelineStackSize(This) )
+
+#define ID3D12StateObjectProperties1_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
+ ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
+
+#if !defined(_WIN32)
+
+#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,pProgramName) \
+ ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
+#else
+#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,RetVal,pProgramName) \
+ ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
+#endif
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectProperties1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
+#define __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectProperties2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectProperties2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("d5e82917-f0f1-44cf-ae5e-ce222dd0b884")
+ ID3D12StateObjectProperties2 : public ID3D12StateObjectProperties1
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForProgram(
+ LPCWSTR pProgramName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForShader(
+ LPCWSTR pExportName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectProperties2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectProperties2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectProperties2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectProperties2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
+ void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
+ ID3D12StateObjectProperties2 * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
+ ID3D12StateObjectProperties2 * This,
+ _In_ LPCWSTR pExportName);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
+ UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
+ ID3D12StateObjectProperties2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
+ void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
+ ID3D12StateObjectProperties2 * This,
+ UINT64 PipelineStackSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
+#if !defined(_WIN32)
+ D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
+ ID3D12StateObjectProperties2 * This,
+ LPCWSTR pProgramName);
+
+#else
+ D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
+ ID3D12StateObjectProperties2 * This,
+ D3D12_PROGRAM_IDENTIFIER * RetVal,
+ LPCWSTR pProgramName);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForProgram)
+ HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForProgram )(
+ ID3D12StateObjectProperties2 * This,
+ LPCWSTR pProgramName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForShader)
+ HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForShader )(
+ ID3D12StateObjectProperties2 * This,
+ LPCWSTR pExportName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ END_INTERFACE
+ } ID3D12StateObjectProperties2Vtbl;
+
+ interface ID3D12StateObjectProperties2
+ {
+ CONST_VTBL struct ID3D12StateObjectProperties2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectProperties2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectProperties2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectProperties2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectProperties2_GetShaderIdentifier(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
+
+#define ID3D12StateObjectProperties2_GetShaderStackSize(This,pExportName) \
+ ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
+
+#define ID3D12StateObjectProperties2_GetPipelineStackSize(This) \
+ ( (This)->lpVtbl -> GetPipelineStackSize(This) )
+
+#define ID3D12StateObjectProperties2_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
+ ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
+
+#if !defined(_WIN32)
+
+#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,pProgramName) \
+ ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
+#else
+#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,RetVal,pProgramName) \
+ ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
+#endif
+
+
+#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) )
+
+#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectProperties2_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0038 */
+/* [local] */
+
+typedef struct D3D12_NODE_ID
+ {
+ LPCWSTR Name;
+ UINT ArrayIndex;
+ } D3D12_NODE_ID;
+
+typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
+ {
+ UINT64 MinSizeInBytes;
+ UINT64 MaxSizeInBytes;
+ UINT SizeGranularityInBytes;
+ } D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_s_ifspec;
+
+#ifndef __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
+#define __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
+
+/* interface ID3D12WorkGraphProperties */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12WorkGraphProperties;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("065acf71-f863-4b89-82f4-02e4d5886757")
+ ID3D12WorkGraphProperties : public IUnknown
+ {
+ public:
+ virtual UINT STDMETHODCALLTYPE GetNumWorkGraphs( void) = 0;
+
+ virtual LPCWSTR STDMETHODCALLTYPE GetProgramName(
+ UINT WorkGraphIndex) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetWorkGraphIndex(
+ LPCWSTR pProgramName) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetNumNodes(
+ UINT WorkGraphIndex) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_NODE_ID STDMETHODCALLTYPE GetNodeID(
+ UINT WorkGraphIndex,
+ UINT NodeIndex) = 0;
+#else
+ virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetNodeID(
+ D3D12_NODE_ID * RetVal,
+ UINT WorkGraphIndex,
+ UINT NodeIndex) = 0;
+#endif
+
+ virtual UINT STDMETHODCALLTYPE GetNodeIndex(
+ UINT WorkGraphIndex,
+ D3D12_NODE_ID NodeID) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetNodeLocalRootArgumentsTableIndex(
+ UINT WorkGraphIndex,
+ UINT NodeIndex) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetNumEntrypoints(
+ UINT WorkGraphIndex) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_NODE_ID STDMETHODCALLTYPE GetEntrypointID(
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex) = 0;
+#else
+ virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetEntrypointID(
+ D3D12_NODE_ID * RetVal,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex) = 0;
+#endif
+
+ virtual UINT STDMETHODCALLTYPE GetEntrypointIndex(
+ UINT WorkGraphIndex,
+ D3D12_NODE_ID NodeID) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetEntrypointRecordSizeInBytes(
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex) = 0;
+
+ virtual void STDMETHODCALLTYPE GetWorkGraphMemoryRequirements(
+ UINT WorkGraphIndex,
+ _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetEntrypointRecordAlignmentInBytes(
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12WorkGraphPropertiesVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12WorkGraphProperties * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12WorkGraphProperties * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12WorkGraphProperties * This);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumWorkGraphs)
+ UINT ( STDMETHODCALLTYPE *GetNumWorkGraphs )(
+ ID3D12WorkGraphProperties * This);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetProgramName)
+ LPCWSTR ( STDMETHODCALLTYPE *GetProgramName )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphIndex)
+ UINT ( STDMETHODCALLTYPE *GetWorkGraphIndex )(
+ ID3D12WorkGraphProperties * This,
+ LPCWSTR pProgramName);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumNodes)
+ UINT ( STDMETHODCALLTYPE *GetNumNodes )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeID)
+#if !defined(_WIN32)
+ D3D12_NODE_ID ( STDMETHODCALLTYPE *GetNodeID )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT NodeIndex);
+
+#else
+ D3D12_NODE_ID *( STDMETHODCALLTYPE *GetNodeID )(
+ ID3D12WorkGraphProperties * This,
+ D3D12_NODE_ID * RetVal,
+ UINT WorkGraphIndex,
+ UINT NodeIndex);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeIndex)
+ UINT ( STDMETHODCALLTYPE *GetNodeIndex )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ D3D12_NODE_ID NodeID);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeLocalRootArgumentsTableIndex)
+ UINT ( STDMETHODCALLTYPE *GetNodeLocalRootArgumentsTableIndex )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT NodeIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumEntrypoints)
+ UINT ( STDMETHODCALLTYPE *GetNumEntrypoints )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointID)
+#if !defined(_WIN32)
+ D3D12_NODE_ID ( STDMETHODCALLTYPE *GetEntrypointID )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex);
+
+#else
+ D3D12_NODE_ID *( STDMETHODCALLTYPE *GetEntrypointID )(
+ ID3D12WorkGraphProperties * This,
+ D3D12_NODE_ID * RetVal,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointIndex)
+ UINT ( STDMETHODCALLTYPE *GetEntrypointIndex )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ D3D12_NODE_ID NodeID);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordSizeInBytes)
+ UINT ( STDMETHODCALLTYPE *GetEntrypointRecordSizeInBytes )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphMemoryRequirements)
+ void ( STDMETHODCALLTYPE *GetWorkGraphMemoryRequirements )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements);
+
+ DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordAlignmentInBytes)
+ UINT ( STDMETHODCALLTYPE *GetEntrypointRecordAlignmentInBytes )(
+ ID3D12WorkGraphProperties * This,
+ UINT WorkGraphIndex,
+ UINT EntrypointIndex);
+
+ END_INTERFACE
+ } ID3D12WorkGraphPropertiesVtbl;
+
+ interface ID3D12WorkGraphProperties
+ {
+ CONST_VTBL struct ID3D12WorkGraphPropertiesVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12WorkGraphProperties_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12WorkGraphProperties_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12WorkGraphProperties_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12WorkGraphProperties_GetNumWorkGraphs(This) \
+ ( (This)->lpVtbl -> GetNumWorkGraphs(This) )
+
+#define ID3D12WorkGraphProperties_GetProgramName(This,WorkGraphIndex) \
+ ( (This)->lpVtbl -> GetProgramName(This,WorkGraphIndex) )
+
+#define ID3D12WorkGraphProperties_GetWorkGraphIndex(This,pProgramName) \
+ ( (This)->lpVtbl -> GetWorkGraphIndex(This,pProgramName) )
+
+#define ID3D12WorkGraphProperties_GetNumNodes(This,WorkGraphIndex) \
+ ( (This)->lpVtbl -> GetNumNodes(This,WorkGraphIndex) )
+#if !defined(_WIN32)
+
+#define ID3D12WorkGraphProperties_GetNodeID(This,WorkGraphIndex,NodeIndex) \
+ ( (This)->lpVtbl -> GetNodeID(This,WorkGraphIndex,NodeIndex) )
+#else
+#define ID3D12WorkGraphProperties_GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) \
+ ( (This)->lpVtbl -> GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) )
+#endif
+
+#define ID3D12WorkGraphProperties_GetNodeIndex(This,WorkGraphIndex,NodeID) \
+ ( (This)->lpVtbl -> GetNodeIndex(This,WorkGraphIndex,NodeID) )
+
+#define ID3D12WorkGraphProperties_GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) \
+ ( (This)->lpVtbl -> GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) )
+
+#define ID3D12WorkGraphProperties_GetNumEntrypoints(This,WorkGraphIndex) \
+ ( (This)->lpVtbl -> GetNumEntrypoints(This,WorkGraphIndex) )
+#if !defined(_WIN32)
+
+#define ID3D12WorkGraphProperties_GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) \
+ ( (This)->lpVtbl -> GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) )
+#else
+#define ID3D12WorkGraphProperties_GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) \
+ ( (This)->lpVtbl -> GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) )
+#endif
+
+#define ID3D12WorkGraphProperties_GetEntrypointIndex(This,WorkGraphIndex,NodeID) \
+ ( (This)->lpVtbl -> GetEntrypointIndex(This,WorkGraphIndex,NodeID) )
+
+#define ID3D12WorkGraphProperties_GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) \
+ ( (This)->lpVtbl -> GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) )
+
+#define ID3D12WorkGraphProperties_GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) \
+ ( (This)->lpVtbl -> GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) )
+
+#define ID3D12WorkGraphProperties_GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) \
+ ( (This)->lpVtbl -> GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12WorkGraphProperties_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0039 */
/* [local] */
typedef
@@ -13668,7 +14962,28 @@ enum D3D12_STATE_SUBOBJECT_TYPE
D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
- D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 + 1 )
+ D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13,
+ D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14,
+ D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15,
+ D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16,
+ D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17,
+ D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18,
+ D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19,
+ D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20,
+ D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21,
+ D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22,
+ D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23,
+ D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24,
+ D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26,
+ D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27,
+ D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28,
+ D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29,
+ D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30,
+ D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31,
+ D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32,
+ D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33,
+ D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36,
+ D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY + 1 )
} D3D12_STATE_SUBOBJECT_TYPE;
typedef struct D3D12_STATE_SUBOBJECT
@@ -13686,7 +15001,7 @@ enum D3D12_STATE_OBJECT_FLAGS
D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
} D3D12_STATE_OBJECT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )
typedef struct D3D12_STATE_OBJECT_CONFIG
{
D3D12_STATE_OBJECT_FLAGS Flags;
@@ -13707,13 +15022,33 @@ typedef struct D3D12_NODE_MASK
UINT NodeMask;
} D3D12_NODE_MASK;
+typedef struct D3D12_SAMPLE_MASK
+ {
+ UINT SampleMask;
+ } D3D12_SAMPLE_MASK;
+
+typedef struct D3D12_IB_STRIP_CUT_VALUE
+ {
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
+ } D3D12_IB_STRIP_CUT_VALUE;
+
+typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
+ {
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
+ } D3D12_PRIMITIVE_TOPOLOGY_DESC;
+
+typedef struct D3D12_DEPTH_STENCIL_FORMAT
+ {
+ DXGI_FORMAT DepthStencilFormat;
+ } D3D12_DEPTH_STENCIL_FORMAT;
+
typedef
enum D3D12_EXPORT_FLAGS
{
D3D12_EXPORT_FLAG_NONE = 0
} D3D12_EXPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )
typedef struct D3D12_EXPORT_DESC
{
LPCWSTR Name;
@@ -13781,21 +15116,139 @@ enum D3D12_RAYTRACING_PIPELINE_FLAGS
{
D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
- D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
+ D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
+ D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400
} D3D12_RAYTRACING_PIPELINE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )
typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
{
UINT MaxTraceRecursionDepth;
D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
} D3D12_RAYTRACING_PIPELINE_CONFIG1;
+typedef struct D3D12_NODE_OUTPUT_OVERRIDES
+ {
+ UINT OutputIndex;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const BOOL *pAllowSparseNodes;
+ _In_opt_ const UINT *pMaxRecords;
+ _In_opt_ const UINT *pMaxRecordsSharedWithOutputIndex;
+ } D3D12_NODE_OUTPUT_OVERRIDES;
+
+typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
+ {
+ _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
+ _In_opt_ const BOOL *pProgramEntry;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const D3D12_NODE_ID *pShareInputOf;
+ _In_reads_opt_(3) const UINT *pDispatchGrid;
+ _In_reads_opt_(3) const UINT *pMaxDispatchGrid;
+ UINT NumOutputOverrides;
+ _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
+ } D3D12_BROADCASTING_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
+ {
+ _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
+ _In_opt_ const BOOL *pProgramEntry;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const D3D12_NODE_ID *pShareInputOf;
+ UINT NumOutputOverrides;
+ _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
+ } D3D12_COALESCING_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
+ {
+ _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
+ _In_opt_ const BOOL *pProgramEntry;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const D3D12_NODE_ID *pShareInputOf;
+ UINT NumOutputOverrides;
+ _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
+ } D3D12_THREAD_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
+ {
+ _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
+ _In_opt_ const BOOL *pProgramEntry;
+ _In_opt_ const D3D12_NODE_ID *pNewName;
+ _In_opt_ const D3D12_NODE_ID *pShareInputOf;
+ UINT NumOutputOverrides;
+ _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
+ } D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
+
+typedef
+enum D3D12_NODE_OVERRIDES_TYPE
+ {
+ D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
+ D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
+ D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
+ D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
+ D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4
+ } D3D12_NODE_OVERRIDES_TYPE;
+
+typedef struct D3D12_SHADER_NODE
+ {
+ LPCWSTR Shader;
+ D3D12_NODE_OVERRIDES_TYPE OverridesType;
+ union
+ {
+ const D3D12_BROADCASTING_LAUNCH_OVERRIDES *pBroadcastingLaunchOverrides;
+ const D3D12_COALESCING_LAUNCH_OVERRIDES *pCoalescingLaunchOverrides;
+ const D3D12_THREAD_LAUNCH_OVERRIDES *pThreadLaunchOverrides;
+ const D3D12_COMMON_COMPUTE_NODE_OVERRIDES *pCommonComputeNodeOverrides;
+ } ;
+ } D3D12_SHADER_NODE;
+
+typedef
+enum D3D12_NODE_TYPE
+ {
+ D3D12_NODE_TYPE_SHADER = 0
+ } D3D12_NODE_TYPE;
+
+typedef struct D3D12_NODE
+ {
+ D3D12_NODE_TYPE NodeType;
+ union
+ {
+ D3D12_SHADER_NODE Shader;
+ } ;
+ } D3D12_NODE;
+
+typedef
+enum D3D12_WORK_GRAPH_FLAGS
+ {
+ D3D12_WORK_GRAPH_FLAG_NONE = 0,
+ D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1
+ } D3D12_WORK_GRAPH_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )
+typedef struct D3D12_WORK_GRAPH_DESC
+ {
+ LPCWSTR ProgramName;
+ D3D12_WORK_GRAPH_FLAGS Flags;
+ UINT NumEntrypoints;
+ _In_reads_opt_(NumEntrypoints) const D3D12_NODE_ID *pEntrypoints;
+ UINT NumExplicitlyDefinedNodes;
+ _In_reads_opt_(NumExplicitlyDefinedNodes) const D3D12_NODE *pExplicitlyDefinedNodes;
+ } D3D12_WORK_GRAPH_DESC;
+
+typedef struct D3D12_GENERIC_PROGRAM_DESC
+ {
+ LPCWSTR ProgramName;
+ UINT NumExports;
+ _In_reads_(NumExports) LPCWSTR *pExports;
+ UINT NumSubobjects;
+ _In_reads_opt_(NumSubobjects) const D3D12_STATE_SUBOBJECT *const *ppSubobjects;
+ } D3D12_GENERIC_PROGRAM_DESC;
+
typedef
enum D3D12_STATE_OBJECT_TYPE
{
D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
- D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3
+ D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
+ D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
} D3D12_STATE_OBJECT_TYPE;
typedef struct D3D12_STATE_OBJECT_DESC
@@ -13813,12 +15266,13 @@ enum D3D12_RAYTRACING_GEOMETRY_FLAGS
D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
} D3D12_RAYTRACING_GEOMETRY_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )
typedef
enum D3D12_RAYTRACING_GEOMETRY_TYPE
{
D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
- D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 )
+ D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 ) ,
+ D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES = ( D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS + 1 )
} D3D12_RAYTRACING_GEOMETRY_TYPE;
typedef
@@ -13828,10 +15282,12 @@ enum D3D12_RAYTRACING_INSTANCE_FLAGS
D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
- D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
+ D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
+ D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
+ D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
} D3D12_RAYTRACING_INSTANCE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )
typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
{
D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
@@ -13878,6 +15334,51 @@ typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
+typedef
+enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
+ {
+ D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
+
+typedef
+enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
+ {
+ D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
+
+typedef
+enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
+ {
+ D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC
+{
+ UINT ByteOffset;
+ UINT SubdivisionLevel : 16;
+ D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;
+} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;
+typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
+ DXGI_FORMAT OpacityMicromapIndexFormat;
+ UINT OpacityMicromapBaseLocation;
+ D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
+ } D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
+
+typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
+ {
+ const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC *pTriangles;
+ const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC *pOmmLinkage;
+ } D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
+
typedef
enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
{
@@ -13887,10 +15388,12 @@ enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
- D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )
typedef
enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
{
@@ -13905,7 +15408,8 @@ typedef
enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
- D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
+ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
typedef
@@ -13950,12 +15454,20 @@ typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION
// depending on Type field, NumDescs above is followed by either:
// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
+// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).
+//
+// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer
+//
// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
{
UINT64 SerializedSizeInBytes;
- UINT64 NumBottomLevelAccelerationStructurePointers;
+ union
+ {
+ UINT64 NumBottomLevelAccelerationStructurePointers;
+ UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
+ } ;
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
@@ -13967,7 +15479,8 @@ typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
typedef
enum D3D12_SERIALIZED_DATA_TYPE
{
- D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0
+ D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0,
+ D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1
} D3D12_SERIALIZED_DATA_TYPE;
typedef
@@ -13988,6 +15501,39 @@ typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
+typedef
+enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
+ {
+ D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
+ D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
+ D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
+ } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
+
+typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
+ {
+ D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
+ UINT64 SerializedSizeInBytesIncludingHeader;
+ UINT64 DeserializedSizeInBytes;
+ union
+ {
+ UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
+ UINT NumBlocks;
+ } ;
+ D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
+ } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
+
+typedef
+enum D3D12_SERIALIZED_BLOCK_TYPE
+ {
+ D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0
+ } D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
+
+typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
+ {
+ D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
+ UINT64 NumBlockPointersAfterHeader;
+ } D3D12_RAYTRACING_SERIALIZED_BLOCK;
+
typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
{
UINT64 CurrentSizeInBytes;
@@ -14011,9 +15557,25 @@ typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
{
D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
+ D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
} ;
} D3D12_RAYTRACING_GEOMETRY_DESC;
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
+ {
+ UINT Count;
+ UINT SubdivisionLevel;
+ D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
+ {
+ UINT NumOmmHistogramEntries;
+ const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY *pOmmHistogram;
+ D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
+
typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
@@ -14025,6 +15587,7 @@ typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
+ const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC *pOpacityMicromapArrayDesc;
} ;
} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
@@ -14043,6 +15606,29 @@ typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
UINT64 UpdateScratchDataSizeInBytes;
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
+typedef
+enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
+ {
+ D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0,
+ D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
+ {
+ D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
+ D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
+ {
+ UINT64 CurrentSizeInBytes;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
+
+typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
+ {
+ UINT64 DecodedSizeInBytes;
+ } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
+
typedef
enum D3D12_RAY_FLAGS
{
@@ -14056,10 +15642,11 @@ enum D3D12_RAY_FLAGS
D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
- D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200
+ D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
+ D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400
} D3D12_RAY_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )
typedef
enum D3D12_HIT_KIND
{
@@ -14069,8 +15656,8 @@ enum D3D12_HIT_KIND
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_s_ifspec;
#ifndef __ID3D12Device5_INTERFACE_DEFINED__
#define __ID3D12Device5_INTERFACE_DEFINED__
@@ -14900,59 +16487,125 @@ EXTERN_C const IID IID_ID3D12Device5;
#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0035 */
+/* interface __MIDL_itf_d3d12_0000_0040 */
/* [local] */
+typedef
+enum D3D12_MARKER_API
+ {
+ D3D12_MARKER_API_SETMARKER = 0,
+ D3D12_MARKER_API_BEGINEVENT = 1,
+ D3D12_MARKER_API_ENDEVENT = 2,
+ D3D12_MARKER_API_DRAWINSTANCED = 3,
+ D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
+ D3D12_MARKER_API_EXECUTEINDIRECT = 5,
+ D3D12_MARKER_API_DISPATCH = 6,
+ D3D12_MARKER_API_COPYBUFFERREGION = 7,
+ D3D12_MARKER_API_COPYTEXTUREREGION = 8,
+ D3D12_MARKER_API_COPYRESOURCE = 9,
+ D3D12_MARKER_API_COPYTILES = 10,
+ D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
+ D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
+ D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
+ D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
+ D3D12_MARKER_API_RESOURCEBARRIER = 15,
+ D3D12_MARKER_API_EXECUTEBUNDLE = 16,
+ D3D12_MARKER_API_PRESENT = 17,
+ D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
+ D3D12_MARKER_API_BEGINSUBMISSION = 19,
+ D3D12_MARKER_API_ENDSUBMISSION = 20,
+ D3D12_MARKER_API_DECODEFRAME = 21,
+ D3D12_MARKER_API_PROCESSFRAMES = 22,
+ D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
+ D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
+ D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
+ D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
+ D3D12_MARKER_API_DECODEFRAME1 = 27,
+ D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
+ D3D12_MARKER_API_DECODEFRAME2 = 29,
+ D3D12_MARKER_API_PROCESSFRAMES1 = 30,
+ D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
+ D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
+ D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
+ D3D12_MARKER_API_DISPATCHRAYS = 34,
+ D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
+ D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
+ D3D12_MARKER_API_ESTIMATEMOTION = 37,
+ D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
+ D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
+ D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
+ D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
+ D3D12_MARKER_API_DISPATCHMESH = 42,
+ D3D12_MARKER_API_ENCODEFRAME = 43,
+ D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
+ D3D12_MARKER_API_BARRIER = 45,
+ D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
+ D3D12_MARKER_API_DISPATCHGRAPH = 47,
+ D3D12_MARKER_API_SETPROGRAM = 48,
+ D3D12_MARKER_API_ENCODEFRAME1 = 49,
+ D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
+ D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
+ D3D12_MARKER_API_PROCESSFRAMES2 = 52,
+ D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53
+ } D3D12_MARKER_API;
+
typedef
enum D3D12_AUTO_BREADCRUMB_OP
{
- D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
- D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
- D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
- D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
- D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
- D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
- D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
- D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
- D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
- D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
- D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
- D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
- D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
- D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
- D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
- D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
- D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
- D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
- D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
- D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
- D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
- D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
- D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
- D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
- D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
- D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
- D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
- D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
- D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
- D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
- D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
- D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
- D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
- D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
- D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
- D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
- D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
- D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
- D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
- D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
- D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
- D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
- D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
- D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
- D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44,
- D3D12_AUTO_BREADCRUMB_OP_BARRIER = 45,
- D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = 46
+ D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
+ D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
+ D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
+ D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
+ D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
+ D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
+ D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
+ D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
+ D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
+ D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
+ D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
+ D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
+ D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
+ D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
+ D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
+ D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
+ D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
+ D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
+ D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
+ D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
+ D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
+ D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
+ D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
+ D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
+ D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
+ D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
+ D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
+ D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
+ D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
+ D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
+ D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
+ D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
+ D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
+ D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
+ D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
+ D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
+ D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
+ D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
+ D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
+ D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
+ D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
+ D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
+ D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
+ D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
+ D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
+ D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
+ D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
+ D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS
} D3D12_AUTO_BREADCRUMB_OP;
typedef struct D3D12_AUTO_BREADCRUMB_NODE
@@ -15008,7 +16661,7 @@ enum D3D12_DRED_FLAGS
D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
} D3D12_DRED_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )
typedef
enum D3D12_DRED_ENABLEMENT
{
@@ -15104,7 +16757,7 @@ enum D3D12_DRED_PAGE_FAULT_FLAGS
D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
} D3D12_DRED_PAGE_FAULT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )
typedef
enum D3D12_DRED_DEVICE_STATE
{
@@ -15158,8 +16811,8 @@ typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0035_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
@@ -15822,7 +17475,7 @@ EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0041 */
+/* interface __MIDL_itf_d3d12_0000_0046 */
/* [local] */
typedef
@@ -15845,8 +17498,8 @@ enum D3D12_MEASUREMENTS_ACTION
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0041_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_s_ifspec;
#ifndef __ID3D12Device6_INTERFACE_DEFINED__
#define __ID3D12Device6_INTERFACE_DEFINED__
@@ -16655,7 +18308,7 @@ EXTERN_C const IID IID_ID3D12Device6;
#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0042 */
+/* interface __MIDL_itf_d3d12_0000_0047 */
/* [local] */
DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
@@ -16681,8 +18334,8 @@ typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0042_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0042_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_s_ifspec;
#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
@@ -19991,7 +21644,7 @@ EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0049 */
+/* interface __MIDL_itf_d3d12_0000_0054 */
/* [local] */
typedef
@@ -20102,11 +21755,11 @@ enum D3D12_RENDER_PASS_FLAGS
D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
} D3D12_RENDER_PASS_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0049_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0049_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
#define __ID3D12MetaCommand_INTERFACE_DEFINED__
@@ -20242,7 +21895,7 @@ EXTERN_C const IID IID_ID3D12MetaCommand;
#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0050 */
+/* interface __MIDL_itf_d3d12_0000_0055 */
/* [local] */
typedef struct D3D12_DISPATCH_RAYS_DESC
@@ -20256,10 +21909,104 @@ typedef struct D3D12_DISPATCH_RAYS_DESC
UINT Depth;
} D3D12_DISPATCH_RAYS_DESC;
+typedef
+enum D3D12_SET_WORK_GRAPH_FLAGS
+ {
+ D3D12_SET_WORK_GRAPH_FLAG_NONE = 0,
+ D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1
+ } D3D12_SET_WORK_GRAPH_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )
+typedef struct D3D12_SET_WORK_GRAPH_DESC
+ {
+ D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+ D3D12_SET_WORK_GRAPH_FLAGS Flags;
+ D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
+ D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
+ } D3D12_SET_WORK_GRAPH_DESC;
+
+typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
+ {
+ D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+ } D3D12_SET_RAYTRACING_PIPELINE_DESC;
+
+typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
+ {
+ D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+ } D3D12_SET_GENERIC_PIPELINE_DESC;
+
+typedef
+enum D3D12_PROGRAM_TYPE
+ {
+ D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
+ D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
+ D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
+ } D3D12_PROGRAM_TYPE;
+
+typedef struct D3D12_SET_PROGRAM_DESC
+ {
+ D3D12_PROGRAM_TYPE Type;
+ union
+ {
+ D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
+ D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
+ D3D12_SET_WORK_GRAPH_DESC WorkGraph;
+ } ;
+ } D3D12_SET_PROGRAM_DESC;
+
+typedef
+enum D3D12_DISPATCH_MODE
+ {
+ D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0,
+ D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1,
+ D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2,
+ D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3
+ } D3D12_DISPATCH_MODE;
+
+typedef struct D3D12_NODE_CPU_INPUT
+ {
+ UINT EntrypointIndex;
+ UINT NumRecords;
+ const void *pRecords;
+ UINT64 RecordStrideInBytes;
+ } D3D12_NODE_CPU_INPUT;
+
+typedef struct D3D12_NODE_GPU_INPUT
+ {
+ UINT EntrypointIndex;
+ UINT NumRecords;
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
+ } D3D12_NODE_GPU_INPUT;
+
+typedef struct D3D12_MULTI_NODE_CPU_INPUT
+ {
+ UINT NumNodeInputs;
+ const D3D12_NODE_CPU_INPUT *pNodeInputs;
+ UINT64 NodeInputStrideInBytes;
+ } D3D12_MULTI_NODE_CPU_INPUT;
+
+typedef struct D3D12_MULTI_NODE_GPU_INPUT
+ {
+ UINT NumNodeInputs;
+ D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs;
+ } D3D12_MULTI_NODE_GPU_INPUT;
+
+typedef struct D3D12_DISPATCH_GRAPH_DESC
+ {
+ D3D12_DISPATCH_MODE Mode;
+ union
+ {
+ D3D12_NODE_CPU_INPUT NodeCPUInput;
+ D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
+ D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
+ D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
+ } ;
+ } D3D12_DISPATCH_GRAPH_DESC;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0050_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0050_v0_0_s_ifspec;
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
@@ -21108,7 +22855,7 @@ EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0051 */
+/* interface __MIDL_itf_d3d12_0000_0056 */
/* [local] */
typedef
@@ -21126,7 +22873,7 @@ enum D3D12_SHADER_CACHE_FLAGS
D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
} D3D12_SHADER_CACHE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )
typedef struct D3D12_SHADER_CACHE_SESSION_DESC
{
GUID Identifier;
@@ -21144,36 +22891,36 @@ enum D3D12_BARRIER_LAYOUT
D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
D3D12_BARRIER_LAYOUT_COMMON = 0,
D3D12_BARRIER_LAYOUT_PRESENT = 0,
- D3D12_BARRIER_LAYOUT_GENERIC_READ = ( D3D12_BARRIER_LAYOUT_PRESENT + 1 ) ,
- D3D12_BARRIER_LAYOUT_RENDER_TARGET = ( D3D12_BARRIER_LAYOUT_GENERIC_READ + 1 ) ,
- D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = ( D3D12_BARRIER_LAYOUT_RENDER_TARGET + 1 ) ,
- D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = ( D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS + 1 ) ,
- D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = ( D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE + 1 ) ,
- D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = ( D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ + 1 ) ,
- D3D12_BARRIER_LAYOUT_COPY_SOURCE = ( D3D12_BARRIER_LAYOUT_SHADER_RESOURCE + 1 ) ,
- D3D12_BARRIER_LAYOUT_COPY_DEST = ( D3D12_BARRIER_LAYOUT_COPY_SOURCE + 1 ) ,
- D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = ( D3D12_BARRIER_LAYOUT_COPY_DEST + 1 ) ,
- D3D12_BARRIER_LAYOUT_RESOLVE_DEST = ( D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE + 1 ) ,
- D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = ( D3D12_BARRIER_LAYOUT_RESOLVE_DEST + 1 ) ,
- D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = ( D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE + 1 ) ,
- D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = ( D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ + 1 ) ,
- D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = ( D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE + 1 ) ,
- D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = ( D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ + 1 ) ,
- D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = ( D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE + 1 ) ,
- D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = ( D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ + 1 ) ,
- D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = ( D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE + 1 ) ,
- D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = ( D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON + 1 ) ,
- D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = ( D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ + 1 ) ,
- D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = ( D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS + 1 ) ,
- D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = ( D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE + 1 ) ,
- D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = ( D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE + 1 ) ,
- D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = ( D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST + 1 ) ,
- D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = ( D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON + 1 ) ,
- D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = ( D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ + 1 ) ,
- D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = ( D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS + 1 ) ,
- D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = ( D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE + 1 ) ,
- D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = ( D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE + 1 ) ,
- D3D12_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON = ( D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST + 1 )
+ D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
+ D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
+ D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
+ D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
+ D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
+ D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
+ D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
+ D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
+ D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
+ D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
+ D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
+ D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
+ D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
+ D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
+ D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
+ D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
+ D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
+ D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
+ D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31
} D3D12_BARRIER_LAYOUT;
typedef
@@ -21205,7 +22952,7 @@ enum D3D12_BARRIER_SYNC
D3D12_BARRIER_SYNC_SPLIT = 0x80000000
} D3D12_BARRIER_SYNC;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )
typedef
enum D3D12_BARRIER_ACCESS
{
@@ -21237,7 +22984,7 @@ enum D3D12_BARRIER_ACCESS
D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000
} D3D12_BARRIER_ACCESS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )
typedef
enum D3D12_BARRIER_TYPE
{
@@ -21253,7 +23000,7 @@ enum D3D12_TEXTURE_BARRIER_FLAGS
D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1
} D3D12_TEXTURE_BARRIER_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )
typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
{
UINT IndexOrFirstMipLevel;
@@ -21310,8 +23057,8 @@ typedef struct D3D12_BARRIER_GROUP
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0051_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0051_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
@@ -21511,7 +23258,7 @@ EXTERN_C const IID IID_ID3D12ShaderCacheSession;
#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0052 */
+/* interface __MIDL_itf_d3d12_0000_0057 */
/* [local] */
typedef
@@ -21523,7 +23270,7 @@ enum D3D12_SHADER_CACHE_KIND_FLAGS
D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
} D3D12_SHADER_CACHE_KIND_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )
typedef
enum D3D12_SHADER_CACHE_CONTROL_FLAGS
{
@@ -21532,11 +23279,11 @@ enum D3D12_SHADER_CACHE_CONTROL_FLAGS
D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
} D3D12_SHADER_CACHE_CONTROL_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0052_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0052_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_s_ifspec;
#ifndef __ID3D12Device9_INTERFACE_DEFINED__
#define __ID3D12Device9_INTERFACE_DEFINED__
@@ -26604,6 +28351,1312 @@ EXTERN_C const IID IID_ID3D12Device13;
#endif /* __ID3D12Device13_INTERFACE_DEFINED__ */
+#ifndef __ID3D12Device14_INTERFACE_DEFINED__
+#define __ID3D12Device14_INTERFACE_DEFINED__
+
+/* interface ID3D12Device14 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Device14;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5f6e592d-d895-44c2-8e4a-88ad4926d323")
+ ID3D12Device14 : public ID3D12Device13
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateRootSignatureFromSubobjectInLibrary(
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
+ _In_ SIZE_T blobLengthInBytes,
+ _In_opt_ LPCWSTR subobjectName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Device14Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Device14 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12Device14 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12Device14 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12Device14 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12Device14 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
+ UINT ( STDMETHODCALLTYPE *GetNodeCount )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
+ ID3D12Device14 * This,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ ID3D12CommandAllocator *pCommandAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12Device14 * This,
+ D3D12_FEATURE Feature,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
+ UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
+ ID3D12Device14 * This,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
+ _In_ SIZE_T blobLengthInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
+ void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
+ ID3D12Device14 * This,
+ _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
+ void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ ID3D12Resource *pCounterResource,
+ _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
+ void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
+ void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
+ void ( STDMETHODCALLTYPE *CreateSampler )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_SAMPLER_DESC *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
+ void ( STDMETHODCALLTYPE *CopyDescriptors )(
+ ID3D12Device14 * This,
+ _In_ UINT NumDestDescriptorRanges,
+ _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
+ _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
+ _In_ UINT NumSrcDescriptorRanges,
+ _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
+ _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
+ void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
+ ID3D12Device14 * This,
+ _In_ UINT NumDescriptors,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+ _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device14 * This,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
+ ID3D12Device14 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ _In_ UINT visibleMask,
+ _In_ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
+#if !defined(_WIN32)
+ D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#else
+ D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
+ ID3D12Device14 * This,
+ D3D12_HEAP_PROPERTIES * RetVal,
+ _In_ UINT nodeMask,
+ D3D12_HEAP_TYPE heapType);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
+ ID3D12Device14 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
+ ID3D12Device14 * This,
+ _In_ ID3D12DeviceChild *pObject,
+ _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
+ DWORD Access,
+ _In_opt_ LPCWSTR Name,
+ _Out_ HANDLE *pHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
+ ID3D12Device14 * This,
+ _In_ HANDLE NTHandle,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvObj);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
+ HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
+ ID3D12Device14 * This,
+ _In_ LPCWSTR Name,
+ DWORD Access,
+ /* [annotation][out] */
+ _Out_ HANDLE *pNTHandle);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
+ HRESULT ( STDMETHODCALLTYPE *MakeResident )(
+ ID3D12Device14 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, Evict)
+ HRESULT ( STDMETHODCALLTYPE *Evict )(
+ ID3D12Device14 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
+ HRESULT ( STDMETHODCALLTYPE *CreateFence )(
+ ID3D12Device14 * This,
+ UINT64 InitialValue,
+ D3D12_FENCE_FLAGS Flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppFence);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
+ HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
+ HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
+ ID3D12Device14 * This,
+ BOOL Enable);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
+ _In_opt_ ID3D12RootSignature *pRootSignature,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvCommandSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
+ void ( STDMETHODCALLTYPE *GetResourceTiling )(
+ ID3D12Device14 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _Out_opt_ UINT *pNumTilesForEntireResource,
+ _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
+ _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
+ _Inout_opt_ UINT *pNumSubresourceTilings,
+ _In_ UINT FirstSubresourceTilingToGet,
+ _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
+
+ DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
+#if !defined(_WIN32)
+ LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device14 * This);
+
+#else
+ LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
+ ID3D12Device14 * This,
+ LUID * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
+ ID3D12Device14 * This,
+ _In_reads_(BlobLength) const void *pLibraryBlob,
+ SIZE_T BlobLength,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineLibrary);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
+ HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
+ ID3D12Device14 * This,
+ _In_reads_(NumFences) ID3D12Fence *const *ppFences,
+ _In_reads_(NumFences) const UINT64 *pFenceValues,
+ UINT NumFences,
+ D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+ HANDLE hEvent);
+
+ DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
+ HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
+ ID3D12Device14 * This,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
+
+ DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
+ ID3D12Device14 * This,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
+ ID3D12Device14 * This,
+ _In_ const void *pAddress,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
+ ID3D12Device14 * This,
+ _In_ HANDLE hFileMapping,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
+ HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
+ ID3D12Device14 * This,
+ D3D12_RESIDENCY_FLAGS Flags,
+ UINT NumObjects,
+ _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
+ _In_ ID3D12Fence *pFenceToSignal,
+ UINT64 FenceValueToSignal);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ _In_ D3D12_COMMAND_LIST_TYPE type,
+ _In_ D3D12_COMMAND_LIST_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device14 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
+ ID3D12Device14 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
+ HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
+ ID3D12Device14 * This,
+ _In_ ID3D12LifetimeOwner *pOwner,
+ REFIID riid,
+ _COM_Outptr_ void **ppvTracker);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
+ void ( STDMETHODCALLTYPE *RemoveDevice )(
+ ID3D12Device14 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
+ ID3D12Device14 * This,
+ _Inout_ UINT *pNumMetaCommands,
+ _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
+ ID3D12Device14 * This,
+ _In_ REFGUID CommandId,
+ _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+ _Out_opt_ UINT *pTotalStructureSizeInBytes,
+ _Inout_ UINT *pParameterCount,
+ _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
+ ID3D12Device14 * This,
+ _In_ REFGUID CommandId,
+ _In_ UINT NodeMask,
+ _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
+ _In_ SIZE_T CreationParametersDataSizeInBytes,
+ REFIID riid,
+ _COM_Outptr_ void **ppMetaCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
+ ID3D12Device14 * This,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
+ void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
+ _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
+
+ DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
+ D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
+ ID3D12Device14 * This,
+ _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+ _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
+
+ DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
+ HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
+ ID3D12Device14 * This,
+ D3D12_BACKGROUND_PROCESSING_MODE Mode,
+ D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+ _In_opt_ HANDLE hEventToSignalUponCompletion,
+ _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
+ ID3D12Device14 * This,
+ const D3D12_STATE_OBJECT_DESC *pAddition,
+ ID3D12StateObject *pStateObjectToGrowFrom,
+ REFIID riid,
+ _COM_Outptr_ void **ppNewStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
+ HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device14 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
+ ID3D12Device14 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialResourceState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
+ ID3D12Device14 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_RESOURCE_STATES InitialState,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
+ ID3D12Device14 * This,
+ _In_opt_ ID3D12Resource *pTargetedResource,
+ _In_opt_ ID3D12Resource *pFeedbackResource,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
+ void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
+ _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
+ UINT64 BaseOffset,
+ _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
+ _Out_writes_opt_(NumSubresources) UINT *pNumRows,
+ _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
+ _Out_opt_ UINT64 *pTotalBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvSession);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
+ HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
+ ID3D12Device14 * This,
+ D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+ D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
+
+ DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
+ REFIID CreatorID,
+ REFIID riid,
+ _COM_Outptr_ void **ppCommandQueue);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
+ HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
+ D3D12_HEAP_FLAGS HeapFlags,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riidResource,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
+ ID3D12Device14 * This,
+ _In_ ID3D12Heap *pHeap,
+ UINT64 HeapOffset,
+ _In_ const D3D12_RESOURCE_DESC1 *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
+ HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_RESOURCE_DESC *pDesc,
+ D3D12_BARRIER_LAYOUT InitialLayout,
+ _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
+ UINT32 NumCastableFormats,
+ _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvResource);
+
+ DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
+ void ( STDMETHODCALLTYPE *CreateSampler2 )(
+ ID3D12Device14 * This,
+ _In_ const D3D12_SAMPLER_DESC2 *pDesc,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
+#if !defined(_WIN32)
+ D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
+ ID3D12Device14 * This,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#else
+ D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
+ ID3D12Device14 * This,
+ D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
+ UINT visibleMask,
+ UINT numResourceDescs,
+ _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
+ _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
+ _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
+ _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
+ HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
+ ID3D12Device14 * This,
+ _In_ const void *pAddress,
+ SIZE_T size,
+ REFIID riid,
+ _COM_Outptr_ void **ppvHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12Device14, CreateRootSignatureFromSubobjectInLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreateRootSignatureFromSubobjectInLibrary )(
+ ID3D12Device14 * This,
+ _In_ UINT nodeMask,
+ _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
+ _In_ SIZE_T blobLengthInBytes,
+ _In_opt_ LPCWSTR subobjectName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvRootSignature);
+
+ END_INTERFACE
+ } ID3D12Device14Vtbl;
+
+ interface ID3D12Device14
+ {
+ CONST_VTBL struct ID3D12Device14Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Device14_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Device14_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Device14_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Device14_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12Device14_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12Device14_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12Device14_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12Device14_GetNodeCount(This) \
+ ( (This)->lpVtbl -> GetNodeCount(This) )
+
+#define ID3D12Device14_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
+
+#define ID3D12Device14_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
+ ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
+
+#define ID3D12Device14_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device14_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
+
+#define ID3D12Device14_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
+
+#define ID3D12Device14_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12Device14_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
+
+#define ID3D12Device14_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
+ ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
+
+#define ID3D12Device14_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
+
+#define ID3D12Device14_CreateConstantBufferView(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CreateSampler(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
+
+#define ID3D12Device14_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
+
+#define ID3D12Device14_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
+ ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
+#else
+#define ID3D12Device14_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
+#endif
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetCustomHeapProperties(This,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
+#else
+#define ID3D12Device14_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
+ ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
+#endif
+
+#define ID3D12Device14_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
+
+#define ID3D12Device14_CreateHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device14_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device14_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device14_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
+ ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
+
+#define ID3D12Device14_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
+ ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
+
+#define ID3D12Device14_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
+ ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
+
+#define ID3D12Device14_MakeResident(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
+
+#define ID3D12Device14_Evict(This,NumObjects,ppObjects) \
+ ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
+
+#define ID3D12Device14_CreateFence(This,InitialValue,Flags,riid,ppFence) \
+ ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
+
+#define ID3D12Device14_GetDeviceRemovedReason(This) \
+ ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
+
+#define ID3D12Device14_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+#define ID3D12Device14_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
+
+#define ID3D12Device14_SetStablePowerState(This,Enable) \
+ ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
+
+#define ID3D12Device14_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
+ ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
+
+#define ID3D12Device14_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
+ ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetAdapterLuid(This) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This) )
+#else
+#define ID3D12Device14_GetAdapterLuid(This,RetVal) \
+ ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
+#endif
+
+
+#define ID3D12Device14_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
+ ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
+
+#define ID3D12Device14_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
+ ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
+
+#define ID3D12Device14_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
+ ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
+
+
+#define ID3D12Device14_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
+ ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
+
+
+#define ID3D12Device14_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
+
+#define ID3D12Device14_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
+
+#define ID3D12Device14_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
+ ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
+
+
+#define ID3D12Device14_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
+ ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
+
+#define ID3D12Device14_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
+
+#define ID3D12Device14_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device14_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
+ ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
+
+#define ID3D12Device14_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device14_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device14_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
+ ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
+
+#define ID3D12Device14_RemoveDevice(This) \
+ ( (This)->lpVtbl -> RemoveDevice(This) )
+
+#define ID3D12Device14_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
+
+#define ID3D12Device14_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
+ ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
+
+#define ID3D12Device14_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
+ ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
+
+#define ID3D12Device14_CreateStateObject(This,pDesc,riid,ppStateObject) \
+ ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
+
+#define ID3D12Device14_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
+ ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
+
+#define ID3D12Device14_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
+ ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
+
+
+#define ID3D12Device14_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
+ ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
+
+
+#define ID3D12Device14_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
+ ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
+
+#define ID3D12Device14_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
+ ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device14_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
+#endif
+
+#define ID3D12Device14_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
+
+#define ID3D12Device14_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
+
+#define ID3D12Device14_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
+
+#define ID3D12Device14_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
+ ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
+
+
+#define ID3D12Device14_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
+ ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
+
+#define ID3D12Device14_ShaderCacheControl(This,Kinds,Control) \
+ ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
+
+#define ID3D12Device14_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
+ ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
+
+
+#define ID3D12Device14_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
+ ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
+
+#define ID3D12Device14_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+#define ID3D12Device14_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
+ ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
+
+
+#define ID3D12Device14_CreateSampler2(This,pDesc,DestDescriptor) \
+ ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
+
+#if !defined(_WIN32)
+
+#define ID3D12Device14_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
+#else
+#define ID3D12Device14_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
+ ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
+#endif
+
+
+#define ID3D12Device14_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
+ ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
+
+
+#define ID3D12Device14_CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) \
+ ( (This)->lpVtbl -> CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Device14_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0063 */
+/* [local] */
+
+typedef union D3D12_VERSION_NUMBER
+ {
+ UINT64 Version;
+ UINT16 VersionParts[ 4 ];
+ } D3D12_VERSION_NUMBER;
+
+typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
+ {
+ WCHAR szAdapterFamily[ 128 ];
+ UINT64 MinimumABISupportVersion;
+ UINT64 MaximumABISupportVersion;
+ D3D12_VERSION_NUMBER CompilerVersion;
+ D3D12_VERSION_NUMBER ApplicationProfileVersion;
+ } D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
+
+typedef void ( __stdcall *D3D12PipelineStateFunc )(
+ _In_reads_bytes_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
+ _Inout_opt_ void *pContext);
+
+typedef void ( __stdcall *D3D12StateObjectFunc )(
+ _In_reads_bytes_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_reads_bytes_(ParentKeySize) const void *pParentKey,
+ UINT ParentKeySize,
+ _Inout_opt_ void *pContext);
+
+typedef struct D3D12_APPLICATION_DESC
+ {
+ LPCWSTR pExeFilename;
+ LPCWSTR pName;
+ D3D12_VERSION_NUMBER Version;
+ LPCWSTR pEngineName;
+ D3D12_VERSION_NUMBER EngineVersion;
+ } D3D12_APPLICATION_DESC;
+
+typedef void ( __stdcall *D3D12ApplicationDescFunc )(
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _Inout_opt_ void *pContext);
+
+typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
+ {
+ _Field_size_bytes_full_(KeySize) const void *pKey;
+ UINT KeySize;
+ UINT NumExports;
+ _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
+ } D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_s_ifspec;
+
+#ifndef __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
+#define __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectDatabase */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectDatabase;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c56060b7-b5fc-4135-98e0-a1e9997eace0")
+ ID3D12StateObjectDatabase : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetApplicationDesc(
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetApplicationDesc(
+ _In_ D3D12ApplicationDescFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StorePipelineStateDesc(
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindPipelineStateDesc(
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ _In_ D3D12PipelineStateFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StoreStateObjectDesc(
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
+ UINT StateObjectToGrowFromKeySize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindStateObjectDesc(
+ _In_reads_(keySize) const void *pKey,
+ UINT KeySize,
+ D3D12StateObjectFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindObjectVersion(
+ _In_reads_(keySize) const void *pKey,
+ UINT KeySize,
+ _Out_ UINT *pVersion) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectDatabaseVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectDatabase * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectDatabase * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectDatabase * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, SetApplicationDesc)
+ HRESULT ( STDMETHODCALLTYPE *SetApplicationDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, GetApplicationDesc)
+ HRESULT ( STDMETHODCALLTYPE *GetApplicationDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_ D3D12ApplicationDescFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StorePipelineStateDesc)
+ HRESULT ( STDMETHODCALLTYPE *StorePipelineStateDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindPipelineStateDesc)
+ HRESULT ( STDMETHODCALLTYPE *FindPipelineStateDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ _In_ D3D12PipelineStateFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StoreStateObjectDesc)
+ HRESULT ( STDMETHODCALLTYPE *StoreStateObjectDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(KeySize) const void *pKey,
+ UINT KeySize,
+ UINT Version,
+ _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
+ UINT StateObjectToGrowFromKeySize);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindStateObjectDesc)
+ HRESULT ( STDMETHODCALLTYPE *FindStateObjectDesc )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(keySize) const void *pKey,
+ UINT KeySize,
+ D3D12StateObjectFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindObjectVersion)
+ HRESULT ( STDMETHODCALLTYPE *FindObjectVersion )(
+ ID3D12StateObjectDatabase * This,
+ _In_reads_(keySize) const void *pKey,
+ UINT KeySize,
+ _Out_ UINT *pVersion);
+
+ END_INTERFACE
+ } ID3D12StateObjectDatabaseVtbl;
+
+ interface ID3D12StateObjectDatabase
+ {
+ CONST_VTBL struct ID3D12StateObjectDatabaseVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectDatabase_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectDatabase_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectDatabase_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectDatabase_SetApplicationDesc(This,pApplicationDesc) \
+ ( (This)->lpVtbl -> SetApplicationDesc(This,pApplicationDesc) )
+
+#define ID3D12StateObjectDatabase_GetApplicationDesc(This,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> GetApplicationDesc(This,CallbackFunc,pContext) )
+
+#define ID3D12StateObjectDatabase_StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) \
+ ( (This)->lpVtbl -> StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) )
+
+#define ID3D12StateObjectDatabase_FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) )
+
+#define ID3D12StateObjectDatabase_StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) \
+ ( (This)->lpVtbl -> StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) )
+
+#define ID3D12StateObjectDatabase_FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) )
+
+#define ID3D12StateObjectDatabase_FindObjectVersion(This,pKey,KeySize,pVersion) \
+ ( (This)->lpVtbl -> FindObjectVersion(This,pKey,KeySize,pVersion) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectDatabase_INTERFACE_DEFINED__ */
+
+
#ifndef __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
#define __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
@@ -26796,7 +29849,519 @@ EXTERN_C const IID IID_ID3D12Tools;
#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0059 */
+#ifndef __ID3D12Tools1_INTERFACE_DEFINED__
+#define __ID3D12Tools1_INTERFACE_DEFINED__
+
+/* interface ID3D12Tools1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Tools1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e4fbc019-dd3c-43e1-8f32-7f649575f0a0")
+ ID3D12Tools1 : public ID3D12Tools
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE ReserveGPUVARangesAtCreate(
+ _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
+ _In_ UINT uiNumRanges) = 0;
+
+ virtual void STDMETHODCALLTYPE ClearReservedGPUVARangesList( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Tools1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Tools1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Tools1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Tools1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
+ void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
+ ID3D12Tools1 * This,
+ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
+ BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
+ ID3D12Tools1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
+ HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
+ ID3D12Tools1 * This,
+ _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
+ _In_ UINT uiNumRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
+ void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
+ ID3D12Tools1 * This);
+
+ END_INTERFACE
+ } ID3D12Tools1Vtbl;
+
+ interface ID3D12Tools1
+ {
+ CONST_VTBL struct ID3D12Tools1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Tools1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Tools1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Tools1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Tools1_EnableShaderInstrumentation(This,bEnable) \
+ ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
+
+#define ID3D12Tools1_ShaderInstrumentationEnabled(This) \
+ ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
+
+
+#define ID3D12Tools1_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
+ ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
+
+#define ID3D12Tools1_ClearReservedGPUVARangesList(This) \
+ ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Tools1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12Tools2_INTERFACE_DEFINED__
+#define __ID3D12Tools2_INTERFACE_DEFINED__
+
+/* interface ID3D12Tools2 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Tools2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("01d393c5-c9b0-42a1-958c-c26b02d4d097")
+ ID3D12Tools2 : public ID3D12Tools1
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE SetApplicationSpecificDriverState(
+ _In_ IUnknown *pAdapter,
+ _In_opt_ ID3DBlob *pBlob) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12Tools2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Tools2 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Tools2 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Tools2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
+ void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
+ ID3D12Tools2 * This,
+ BOOL bEnable);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
+ BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
+ ID3D12Tools2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
+ HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
+ ID3D12Tools2 * This,
+ _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
+ _In_ UINT uiNumRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
+ void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
+ ID3D12Tools2 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Tools2, SetApplicationSpecificDriverState)
+ HRESULT ( STDMETHODCALLTYPE *SetApplicationSpecificDriverState )(
+ ID3D12Tools2 * This,
+ _In_ IUnknown *pAdapter,
+ _In_opt_ ID3DBlob *pBlob);
+
+ END_INTERFACE
+ } ID3D12Tools2Vtbl;
+
+ interface ID3D12Tools2
+ {
+ CONST_VTBL struct ID3D12Tools2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Tools2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Tools2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Tools2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Tools2_EnableShaderInstrumentation(This,bEnable) \
+ ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
+
+#define ID3D12Tools2_ShaderInstrumentationEnabled(This) \
+ ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
+
+
+#define ID3D12Tools2_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
+ ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
+
+#define ID3D12Tools2_ClearReservedGPUVARangesList(This) \
+ ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
+
+
+#define ID3D12Tools2_SetApplicationSpecificDriverState(This,pAdapter,pBlob) \
+ ( (This)->lpVtbl -> SetApplicationSpecificDriverState(This,pAdapter,pBlob) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Tools2_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12PageableTools_INTERFACE_DEFINED__
+#define __ID3D12PageableTools_INTERFACE_DEFINED__
+
+/* interface ID3D12PageableTools */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12PageableTools;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d")
+ ID3D12PageableTools : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetAllocation(
+ _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12PageableToolsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12PageableTools * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12PageableTools * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12PageableTools * This);
+
+ DECLSPEC_XFGVIRT(ID3D12PageableTools, GetAllocation)
+ HRESULT ( STDMETHODCALLTYPE *GetAllocation )(
+ ID3D12PageableTools * This,
+ _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation);
+
+ END_INTERFACE
+ } ID3D12PageableToolsVtbl;
+
+ interface ID3D12PageableTools
+ {
+ CONST_VTBL struct ID3D12PageableToolsVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12PageableTools_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12PageableTools_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12PageableTools_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12PageableTools_GetAllocation(This,pAllocation) \
+ ( (This)->lpVtbl -> GetAllocation(This,pAllocation) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12PageableTools_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceTools_INTERFACE_DEFINED__
+#define __ID3D12DeviceTools_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceTools */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceTools;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("2ea68e9c-19c3-4e47-a109-6cdadff0aca9")
+ ID3D12DeviceTools : public IUnknown
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetNextAllocationAddress(
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceToolsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceTools * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceTools * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceTools * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
+ void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
+ ID3D12DeviceTools * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
+
+ END_INTERFACE
+ } ID3D12DeviceToolsVtbl;
+
+ interface ID3D12DeviceTools
+ {
+ CONST_VTBL struct ID3D12DeviceToolsVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceTools_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceTools_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceTools_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceTools_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
+ ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceTools_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0070 */
+/* [local] */
+
+typedef
+enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
+ {
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4
+ } D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_s_ifspec;
+
+#ifndef __ID3D12DeviceTools1_INTERFACE_DEFINED__
+#define __ID3D12DeviceTools1_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceTools1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceTools1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e30e9fc7-e641-4d6e-8a81-9dd9206ec47a")
+ ID3D12DeviceTools1 : public ID3D12DeviceTools
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetApplicationSpecificDriverState(
+ _COM_Outptr_ ID3DBlob **ppBlob) = 0;
+
+ virtual D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS STDMETHODCALLTYPE GetApplicationSpecificDriverBlobStatus( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceTools1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceTools1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceTools1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceTools1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
+ void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
+ ID3D12DeviceTools1 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverState)
+ HRESULT ( STDMETHODCALLTYPE *GetApplicationSpecificDriverState )(
+ ID3D12DeviceTools1 * This,
+ _COM_Outptr_ ID3DBlob **ppBlob);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverBlobStatus)
+ D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS ( STDMETHODCALLTYPE *GetApplicationSpecificDriverBlobStatus )(
+ ID3D12DeviceTools1 * This);
+
+ END_INTERFACE
+ } ID3D12DeviceTools1Vtbl;
+
+ interface ID3D12DeviceTools1
+ {
+ CONST_VTBL struct ID3D12DeviceTools1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceTools1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceTools1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceTools1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DeviceTools1_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
+ ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
+
+
+#define ID3D12DeviceTools1_GetApplicationSpecificDriverState(This,ppBlob) \
+ ( (This)->lpVtbl -> GetApplicationSpecificDriverState(This,ppBlob) )
+
+#define ID3D12DeviceTools1_GetApplicationSpecificDriverBlobStatus(This) \
+ ( (This)->lpVtbl -> GetApplicationSpecificDriverBlobStatus(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceTools1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0071 */
/* [local] */
typedef struct D3D12_SUBRESOURCE_DATA
@@ -26914,6 +30479,21 @@ static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d
{ 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
};
// --------------------------------------------------------------------------------------------------------------------------------
+// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS
+//
+// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS,
+// driver support is still required for this feature.
+//
+// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.
+//
+// --------------------------------------------------------------------------------------------------------------------------------
+static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */
+ 0x45dc51f3,
+ 0x767f,
+ 0x4588,
+ { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }
+};
+// --------------------------------------------------------------------------------------------------------------------------------
// D3D12GetInterface
//
// Retrieve Global D3D12 Interface.
@@ -26924,6 +30504,8 @@ DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833,
DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);
+DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);
+DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);
typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
@@ -26931,8 +30513,8 @@ HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_O
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0059_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0059_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_s_ifspec;
#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
@@ -27127,7 +30709,7 @@ EXTERN_C const IID IID_ID3D12SDKConfiguration1;
#endif /* __ID3D12SDKConfiguration1_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0061 */
+/* interface __MIDL_itf_d3d12_0000_0073 */
/* [local] */
typedef
@@ -27139,11 +30721,11 @@ enum D3D12_DEVICE_FACTORY_FLAGS
D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4
} D3D12_DEVICE_FACTORY_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0061_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0061_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_s_ifspec;
#ifndef __ID3D12DeviceFactory_INTERFACE_DEFINED__
#define __ID3D12DeviceFactory_INTERFACE_DEFINED__
@@ -27304,7 +30886,7 @@ EXTERN_C const IID IID_ID3D12DeviceFactory;
#endif /* __ID3D12DeviceFactory_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0062 */
+/* interface __MIDL_itf_d3d12_0000_0074 */
/* [local] */
typedef
@@ -27324,7 +30906,7 @@ enum D3D12_DEVICE_FLAGS
D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400
} D3D12_DEVICE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )
typedef struct D3D12_DEVICE_CONFIGURATION_DESC
{
D3D12_DEVICE_FLAGS Flags;
@@ -27335,8 +30917,8 @@ typedef struct D3D12_DEVICE_CONFIGURATION_DESC
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0062_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0062_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_s_ifspec;
#ifndef __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
#define __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
@@ -27482,7 +31064,254 @@ EXTERN_C const IID IID_ID3D12DeviceConfiguration;
#endif /* __ID3D12DeviceConfiguration_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0063 */
+#ifndef __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
+#define __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceConfiguration1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DeviceConfiguration1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ed342442-6343-4e16-bb82-a3a577874e56")
+ ID3D12DeviceConfiguration1 : public ID3D12DeviceConfiguration
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
+ _In_reads_bytes_(Size) const void *pLibraryBlob,
+ SIZE_T Size,
+ LPCWSTR RootSignatureSubobjectName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDeserializer) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DeviceConfiguration1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DeviceConfiguration1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DeviceConfiguration1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DeviceConfiguration1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
+#if !defined(_WIN32)
+ D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12DeviceConfiguration1 * This);
+
+#else
+ D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
+ ID3D12DeviceConfiguration1 * This,
+ D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
+ HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
+ ID3D12DeviceConfiguration1 * This,
+ _Out_writes_(NumGuids) GUID *pGuids,
+ UINT NumGuids);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
+ HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
+ ID3D12DeviceConfiguration1 * This,
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
+ _COM_Outptr_ ID3DBlob **ppResult,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
+ HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
+ ID3D12DeviceConfiguration1 * This,
+ _In_reads_bytes_(Size) const void *pBlob,
+ SIZE_T Size,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDeserializer);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration1, CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary)
+ HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary )(
+ ID3D12DeviceConfiguration1 * This,
+ _In_reads_bytes_(Size) const void *pLibraryBlob,
+ SIZE_T Size,
+ LPCWSTR RootSignatureSubobjectName,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDeserializer);
+
+ END_INTERFACE
+ } ID3D12DeviceConfiguration1Vtbl;
+
+ interface ID3D12DeviceConfiguration1
+ {
+ CONST_VTBL struct ID3D12DeviceConfiguration1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceConfiguration1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DeviceConfiguration1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DeviceConfiguration1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+#if !defined(_WIN32)
+
+#define ID3D12DeviceConfiguration1_GetDesc(This) \
+ ( (This)->lpVtbl -> GetDesc(This) )
+#else
+#define ID3D12DeviceConfiguration1_GetDesc(This,RetVal) \
+ ( (This)->lpVtbl -> GetDesc(This,RetVal) )
+#endif
+
+#define ID3D12DeviceConfiguration1_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
+ ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
+
+#define ID3D12DeviceConfiguration1_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
+ ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
+
+#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
+ ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
+
+
+#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) \
+ ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0076 */
+/* [local] */
+
+typedef
+enum D3D12_STATE_OBJECT_DATABASE_FLAGS
+ {
+ D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0,
+ D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1
+ } D3D12_STATE_OBJECT_DATABASE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_s_ifspec;
+
+#ifndef __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
+#define __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
+
+/* interface ID3D12StateObjectDatabaseFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12StateObjectDatabaseFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f5b066f0-648a-4611-bd41-27fd0948b9eb")
+ ID3D12StateObjectDatabaseFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateStateObjectDatabaseFromFile(
+ LPCWSTR pDatabaseFile,
+ D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppvStateObjectDatabase) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12StateObjectDatabaseFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12StateObjectDatabaseFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12StateObjectDatabaseFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12StateObjectDatabaseFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12StateObjectDatabaseFactory, CreateStateObjectDatabaseFromFile)
+ HRESULT ( STDMETHODCALLTYPE *CreateStateObjectDatabaseFromFile )(
+ ID3D12StateObjectDatabaseFactory * This,
+ LPCWSTR pDatabaseFile,
+ D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
+ REFIID riid,
+ _COM_Outptr_ void **ppvStateObjectDatabase);
+
+ END_INTERFACE
+ } ID3D12StateObjectDatabaseFactoryVtbl;
+
+ interface ID3D12StateObjectDatabaseFactory
+ {
+ CONST_VTBL struct ID3D12StateObjectDatabaseFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12StateObjectDatabaseFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12StateObjectDatabaseFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12StateObjectDatabaseFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12StateObjectDatabaseFactory_CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) \
+ ( (This)->lpVtbl -> CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0077 */
/* [local] */
typedef
@@ -27522,8 +31351,8 @@ enum D3D12_SHADING_RATE_COMBINER
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_s_ifspec;
#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
@@ -28358,7 +32187,7 @@ EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0064 */
+/* interface __MIDL_itf_d3d12_0000_0078 */
/* [local] */
typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
@@ -28370,8 +32199,8 @@ typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0064_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0064_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_s_ifspec;
#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
@@ -31811,7 +35640,1145 @@ EXTERN_C const IID IID_ID3D12GraphicsCommandList9;
#endif /* __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12_0000_0068 */
+#ifndef __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
+#define __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
+
+/* interface ID3D12GraphicsCommandList10 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GraphicsCommandList10;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7013c015-d161-4b63-a08c-238552dd8acc")
+ ID3D12GraphicsCommandList10 : public ID3D12GraphicsCommandList9
+ {
+ public:
+ virtual void STDMETHODCALLTYPE SetProgram(
+ _In_ const D3D12_SET_PROGRAM_DESC *pDesc) = 0;
+
+ virtual void STDMETHODCALLTYPE DispatchGraph(
+ _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GraphicsCommandList10Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GraphicsCommandList10 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12GraphicsCommandList10 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12CommandAllocator *pAllocator,
+ _In_opt_ ID3D12PipelineState *pInitialState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
+ void ( STDMETHODCALLTYPE *DrawInstanced )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT VertexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
+ void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT IndexCountPerInstance,
+ _In_ UINT InstanceCount,
+ _In_ UINT StartIndexLocation,
+ _In_ INT BaseVertexLocation,
+ _In_ UINT StartInstanceLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
+ void ( STDMETHODCALLTYPE *Dispatch )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
+ void ( STDMETHODCALLTYPE *CopyBufferRegion )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT64 NumBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
+ void ( STDMETHODCALLTYPE *CopyTextureRegion )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
+ UINT DstX,
+ UINT DstY,
+ UINT DstZ,
+ _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
+ _In_opt_ const D3D12_BOX *pSrcBox);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
+ void ( STDMETHODCALLTYPE *CopyResource )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ ID3D12Resource *pSrcResource);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
+ void ( STDMETHODCALLTYPE *CopyTiles )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pTiledResource,
+ _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
+ _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
+ _In_ ID3D12Resource *pBuffer,
+ UINT64 BufferStartOffsetInBytes,
+ D3D12_TILE_COPY_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
+ void ( STDMETHODCALLTYPE *ResolveSubresource )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_ DXGI_FORMAT Format);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
+ void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
+ void ( STDMETHODCALLTYPE *RSSetViewports )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
+ _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
+ void ( STDMETHODCALLTYPE *RSSetScissorRects )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
+ _In_reads_( NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
+ void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetStencilRef )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT StencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
+ void ( STDMETHODCALLTYPE *SetPipelineState )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12PipelineState *pPipelineState);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
+ void ( STDMETHODCALLTYPE *ExecuteBundle )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12GraphicsCommandList *pCommandList);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
+ void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumDescriptorHeaps,
+ _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
+ void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12RootSignature *pRootSignature);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT SrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
+ void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ UINT Num32BitValuesToSet,
+ _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
+ _In_ UINT DestOffsetIn32BitValues);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
+ void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT RootParameterIndex,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
+ void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
+ void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
+ void ( STDMETHODCALLTYPE *SOSetTargets )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT StartSlot,
+ _In_ UINT NumViews,
+ _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
+ void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumRenderTargetDescriptors,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
+ _In_ BOOL RTsSingleHandleToDescriptorRange,
+ _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
+ void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+ _In_ D3D12_CLEAR_FLAGS ClearFlags,
+ _In_ FLOAT Depth,
+ _In_ UINT8 Stencil,
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
+ void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+ _In_ const FLOAT ColorRGBA[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const UINT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
+ void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+ _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+ _In_ ID3D12Resource *pResource,
+ _In_ const FLOAT Values[ 4 ],
+ _In_ UINT NumRects,
+ _In_reads_(NumRects) const D3D12_RECT *pRects);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12GraphicsCommandList10 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12GraphicsCommandList10 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
+ void ( STDMETHODCALLTYPE *ExecuteIndirect )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12CommandSignature *pCommandSignature,
+ _In_ UINT MaxCommandCount,
+ _In_ ID3D12Resource *pArgumentBuffer,
+ _In_ UINT64 ArgumentBufferOffset,
+ _In_opt_ ID3D12Resource *pCountBuffer,
+ _In_ UINT64 CountBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
+ void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstBuffer,
+ UINT64 DstOffset,
+ _In_ ID3D12Resource *pSrcBuffer,
+ UINT64 SrcOffset,
+ UINT Dependencies,
+ _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
+ _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
+ void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ FLOAT Min,
+ _In_ FLOAT Max);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
+ void ( STDMETHODCALLTYPE *SetSamplePositions )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumSamplesPerPixel,
+ _In_ UINT NumPixels,
+ _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
+ void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12Resource *pDstResource,
+ _In_ UINT DstSubresource,
+ _In_ UINT DstX,
+ _In_ UINT DstY,
+ _In_ ID3D12Resource *pSrcResource,
+ _In_ UINT SrcSubresource,
+ _In_opt_ D3D12_RECT *pSrcRect,
+ _In_ DXGI_FORMAT Format,
+ _In_ D3D12_RESOLVE_MODE ResolveMode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
+ void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT Mask);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12GraphicsCommandList10 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
+ void ( STDMETHODCALLTYPE *BeginRenderPass )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT NumRenderTargets,
+ _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
+ _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
+ D3D12_RENDER_PASS_FLAGS Flags);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
+ void ( STDMETHODCALLTYPE *EndRenderPass )(
+ ID3D12GraphicsCommandList10 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
+ void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
+ _In_ SIZE_T InitializationParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
+ void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12MetaCommand *pMetaCommand,
+ _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
+ _In_ SIZE_T ExecutionParametersDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
+ _In_ UINT NumPostbuildInfoDescs,
+ _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
+ void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
+ _In_ UINT NumSourceAccelerationStructures,
+ _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
+ void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+ _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+ _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
+ void ( STDMETHODCALLTYPE *SetPipelineState1 )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ ID3D12StateObject *pStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
+ void ( STDMETHODCALLTYPE *DispatchRays )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
+ void ( STDMETHODCALLTYPE *RSSetShadingRate )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_SHADING_RATE baseShadingRate,
+ _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
+ void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_opt_ ID3D12Resource *shadingRateImage);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
+ void ( STDMETHODCALLTYPE *DispatchMesh )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT ThreadGroupCountX,
+ _In_ UINT ThreadGroupCountY,
+ _In_ UINT ThreadGroupCountZ);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12GraphicsCommandList10 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
+ void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ UINT FrontStencilRef,
+ _In_ UINT BackStencilRef);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
+ void ( STDMETHODCALLTYPE *RSSetDepthBias )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ FLOAT DepthBias,
+ _In_ FLOAT DepthBiasClamp,
+ _In_ FLOAT SlopeScaledDepthBias);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
+ void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, SetProgram)
+ void ( STDMETHODCALLTYPE *SetProgram )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_SET_PROGRAM_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, DispatchGraph)
+ void ( STDMETHODCALLTYPE *DispatchGraph )(
+ ID3D12GraphicsCommandList10 * This,
+ _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc);
+
+ END_INTERFACE
+ } ID3D12GraphicsCommandList10Vtbl;
+
+ interface ID3D12GraphicsCommandList10
+ {
+ CONST_VTBL struct ID3D12GraphicsCommandList10Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GraphicsCommandList10_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GraphicsCommandList10_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GraphicsCommandList10_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GraphicsCommandList10_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12GraphicsCommandList10_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12GraphicsCommandList10_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12GraphicsCommandList10_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12GraphicsCommandList10_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12GraphicsCommandList10_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12GraphicsCommandList10_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12GraphicsCommandList10_Reset(This,pAllocator,pInitialState) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
+
+#define ID3D12GraphicsCommandList10_ClearState(This,pPipelineState) \
+ ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList10_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList10_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
+ ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
+
+#define ID3D12GraphicsCommandList10_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+#define ID3D12GraphicsCommandList10_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
+ ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
+
+#define ID3D12GraphicsCommandList10_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
+ ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
+
+#define ID3D12GraphicsCommandList10_CopyResource(This,pDstResource,pSrcResource) \
+ ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
+
+#define ID3D12GraphicsCommandList10_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
+ ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
+
+#define ID3D12GraphicsCommandList10_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
+ ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
+
+#define ID3D12GraphicsCommandList10_IASetPrimitiveTopology(This,PrimitiveTopology) \
+ ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
+
+#define ID3D12GraphicsCommandList10_RSSetViewports(This,NumViewports,pViewports) \
+ ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
+
+#define ID3D12GraphicsCommandList10_RSSetScissorRects(This,NumRects,pRects) \
+ ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_OMSetBlendFactor(This,BlendFactor) \
+ ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
+
+#define ID3D12GraphicsCommandList10_OMSetStencilRef(This,StencilRef) \
+ ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
+
+#define ID3D12GraphicsCommandList10_SetPipelineState(This,pPipelineState) \
+ ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
+
+#define ID3D12GraphicsCommandList10_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12GraphicsCommandList10_ExecuteBundle(This,pCommandList) \
+ ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
+
+#define ID3D12GraphicsCommandList10_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
+ ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootSignature(This,pRootSignature) \
+ ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
+ ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
+ ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
+ ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
+
+#define ID3D12GraphicsCommandList10_IASetIndexBuffer(This,pView) \
+ ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
+
+#define ID3D12GraphicsCommandList10_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList10_SOSetTargets(This,StartSlot,NumViews,pViews) \
+ ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
+
+#define ID3D12GraphicsCommandList10_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
+ ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
+
+#define ID3D12GraphicsCommandList10_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
+ ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
+
+#define ID3D12GraphicsCommandList10_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12GraphicsCommandList10_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList10_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12GraphicsCommandList10_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12GraphicsCommandList10_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12GraphicsCommandList10_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList10_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12GraphicsCommandList10_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12GraphicsCommandList10_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
+ ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
+
+
+#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
+ ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
+
+#define ID3D12GraphicsCommandList10_OMSetDepthBounds(This,Min,Max) \
+ ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
+
+#define ID3D12GraphicsCommandList10_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
+ ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
+
+#define ID3D12GraphicsCommandList10_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
+ ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
+
+#define ID3D12GraphicsCommandList10_SetViewInstanceMask(This,Mask) \
+ ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
+
+
+#define ID3D12GraphicsCommandList10_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+
+#define ID3D12GraphicsCommandList10_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12GraphicsCommandList10_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
+ ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
+
+#define ID3D12GraphicsCommandList10_EndRenderPass(This) \
+ ( (This)->lpVtbl -> EndRenderPass(This) )
+
+#define ID3D12GraphicsCommandList10_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList10_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
+
+#define ID3D12GraphicsCommandList10_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
+ ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
+
+#define ID3D12GraphicsCommandList10_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
+ ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
+
+#define ID3D12GraphicsCommandList10_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
+ ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
+
+#define ID3D12GraphicsCommandList10_SetPipelineState1(This,pStateObject) \
+ ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
+
+#define ID3D12GraphicsCommandList10_DispatchRays(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
+
+
+#define ID3D12GraphicsCommandList10_RSSetShadingRate(This,baseShadingRate,combiners) \
+ ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
+
+#define ID3D12GraphicsCommandList10_RSSetShadingRateImage(This,shadingRateImage) \
+ ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
+
+
+#define ID3D12GraphicsCommandList10_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
+ ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
+
+
+#define ID3D12GraphicsCommandList10_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+
+#define ID3D12GraphicsCommandList10_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
+ ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
+
+
+#define ID3D12GraphicsCommandList10_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
+ ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
+
+#define ID3D12GraphicsCommandList10_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
+ ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
+
+
+#define ID3D12GraphicsCommandList10_SetProgram(This,pDesc) \
+ ( (This)->lpVtbl -> SetProgram(This,pDesc) )
+
+#define ID3D12GraphicsCommandList10_DispatchGraph(This,pDesc) \
+ ( (This)->lpVtbl -> DispatchGraph(This,pDesc) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
+#define __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
+
+/* interface ID3D12DSRDeviceFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12DSRDeviceFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("f343d1a0-afe3-439f-b13d-cd87a43b70ca")
+ ID3D12DSRDeviceFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateDSRDevice(
+ ID3D12Device *pD3D12Device,
+ UINT NodeMask,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDSRDevice) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12DSRDeviceFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12DSRDeviceFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12DSRDeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12DSRDeviceFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12DSRDeviceFactory, CreateDSRDevice)
+ HRESULT ( STDMETHODCALLTYPE *CreateDSRDevice )(
+ ID3D12DSRDeviceFactory * This,
+ ID3D12Device *pD3D12Device,
+ UINT NodeMask,
+ REFIID riid,
+ _COM_Outptr_ void **ppvDSRDevice);
+
+ END_INTERFACE
+ } ID3D12DSRDeviceFactoryVtbl;
+
+ interface ID3D12DSRDeviceFactory
+ {
+ CONST_VTBL struct ID3D12DSRDeviceFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DSRDeviceFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12DSRDeviceFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12DSRDeviceFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12DSRDeviceFactory_CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) \
+ ( (This)->lpVtbl -> CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
+#define __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
+
+/* interface ID3D12GBVDiagnostics */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12GBVDiagnostics;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("597985ab-9b75-4dbb-be23-0761195bebee")
+ ID3D12GBVDiagnostics : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetGBVEntireSubresourceStatesData(
+ _In_ ID3D12Resource *pResource,
+ _Out_writes_bytes_(DataSize) int *pData,
+ UINT DataSize) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGBVSubresourceState(
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ _Out_ int *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGBVResourceUniformState(
+ _In_ ID3D12Resource *pResource,
+ _Out_ int *pData) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetGBVResourceInfo(
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_opt_ UINT32 *pResourceHash,
+ _In_opt_ UINT32 *pSubresourceStatesByteOffset) = 0;
+
+ virtual void STDMETHODCALLTYPE GBVReserved0( void) = 0;
+
+ virtual void STDMETHODCALLTYPE GBVReserved1( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12GBVDiagnosticsVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12GBVDiagnostics * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12GBVDiagnostics * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12GBVDiagnostics * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVEntireSubresourceStatesData)
+ HRESULT ( STDMETHODCALLTYPE *GetGBVEntireSubresourceStatesData )(
+ ID3D12GBVDiagnostics * This,
+ _In_ ID3D12Resource *pResource,
+ _Out_writes_bytes_(DataSize) int *pData,
+ UINT DataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVSubresourceState)
+ HRESULT ( STDMETHODCALLTYPE *GetGBVSubresourceState )(
+ ID3D12GBVDiagnostics * This,
+ _In_ ID3D12Resource *pResource,
+ UINT Subresource,
+ _Out_ int *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceUniformState)
+ HRESULT ( STDMETHODCALLTYPE *GetGBVResourceUniformState )(
+ ID3D12GBVDiagnostics * This,
+ _In_ ID3D12Resource *pResource,
+ _Out_ int *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceInfo)
+ HRESULT ( STDMETHODCALLTYPE *GetGBVResourceInfo )(
+ ID3D12GBVDiagnostics * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
+ _In_opt_ UINT32 *pResourceHash,
+ _In_opt_ UINT32 *pSubresourceStatesByteOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved0)
+ void ( STDMETHODCALLTYPE *GBVReserved0 )(
+ ID3D12GBVDiagnostics * This);
+
+ DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved1)
+ void ( STDMETHODCALLTYPE *GBVReserved1 )(
+ ID3D12GBVDiagnostics * This);
+
+ END_INTERFACE
+ } ID3D12GBVDiagnosticsVtbl;
+
+ interface ID3D12GBVDiagnostics
+ {
+ CONST_VTBL struct ID3D12GBVDiagnosticsVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12GBVDiagnostics_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12GBVDiagnostics_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12GBVDiagnostics_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12GBVDiagnostics_GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) \
+ ( (This)->lpVtbl -> GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) )
+
+#define ID3D12GBVDiagnostics_GetGBVSubresourceState(This,pResource,Subresource,pData) \
+ ( (This)->lpVtbl -> GetGBVSubresourceState(This,pResource,Subresource,pData) )
+
+#define ID3D12GBVDiagnostics_GetGBVResourceUniformState(This,pResource,pData) \
+ ( (This)->lpVtbl -> GetGBVResourceUniformState(This,pResource,pData) )
+
+#define ID3D12GBVDiagnostics_GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) \
+ ( (This)->lpVtbl -> GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) )
+
+#define ID3D12GBVDiagnostics_GBVReserved0(This) \
+ ( (This)->lpVtbl -> GBVReserved0(This) )
+
+#define ID3D12GBVDiagnostics_GBVReserved1(This) \
+ ( (This)->lpVtbl -> GBVReserved1(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12GBVDiagnostics_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0085 */
/* [local] */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
@@ -31828,6 +36795,7 @@ DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0
DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
+DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);
DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
@@ -31836,6 +36804,7 @@ DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb
DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
+DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);
DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
@@ -31850,6 +36819,9 @@ DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0
DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
+DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);
+DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);
+DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);
DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
@@ -31873,21 +36845,33 @@ DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89
DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);
DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);
DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);
+DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);
+DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);
DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);
DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
+DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);
+DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);
+DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);
+DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);
+DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);
DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);
DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);
DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);
+DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);
+DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);
DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);
DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);
DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);
+DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);
+DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);
+DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0068_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0068_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_s_ifspec;
/* Additional Prototypes for ALL interfaces */
diff --git a/thirdparty/directx_headers/include/directx/d3d12compatibility.h b/thirdparty/directx_headers/include/directx/d3d12compatibility.h
index 1a9430e5c92..ec9ff5f971f 100644
--- a/thirdparty/directx_headers/include/directx/d3d12compatibility.h
+++ b/thirdparty/directx_headers/include/directx/d3d12compatibility.h
@@ -87,6 +87,13 @@ typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
+#ifndef __VulkanOn12CreatorID_FWD_DEFINED__
+#define __VulkanOn12CreatorID_FWD_DEFINED__
+typedef interface VulkanOn12CreatorID VulkanOn12CreatorID;
+
+#endif /* __VulkanOn12CreatorID_FWD_DEFINED__ */
+
+
#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
@@ -101,6 +108,13 @@ typedef interface DirectMLPyTorchCreatorID DirectMLPyTorchCreatorID;
#endif /* __DirectMLPyTorchCreatorID_FWD_DEFINED__ */
+#ifndef __DirectMLWebNNCreatorID_FWD_DEFINED__
+#define __DirectMLWebNNCreatorID_FWD_DEFINED__
+typedef interface DirectMLWebNNCreatorID DirectMLWebNNCreatorID;
+
+#endif /* __DirectMLWebNNCreatorID_FWD_DEFINED__ */
+
+
/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
@@ -126,7 +140,7 @@ enum D3D12_COMPATIBILITY_SHARED_FLAGS
D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
} D3D12_COMPATIBILITY_SHARED_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )
typedef
enum D3D12_REFLECT_SHARED_PROPERTY
{
@@ -565,6 +579,78 @@ EXTERN_C const IID IID_OpenCLOn12CreatorID;
#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
+#ifndef __VulkanOn12CreatorID_INTERFACE_DEFINED__
+#define __VulkanOn12CreatorID_INTERFACE_DEFINED__
+
+/* interface VulkanOn12CreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_VulkanOn12CreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("bc806e01-3052-406c-a3e8-9fc07f048f98")
+ VulkanOn12CreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct VulkanOn12CreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ VulkanOn12CreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ VulkanOn12CreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ VulkanOn12CreatorID * This);
+
+ END_INTERFACE
+ } VulkanOn12CreatorIDVtbl;
+
+ interface VulkanOn12CreatorID
+ {
+ CONST_VTBL struct VulkanOn12CreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define VulkanOn12CreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define VulkanOn12CreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define VulkanOn12CreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __VulkanOn12CreatorID_INTERFACE_DEFINED__ */
+
+
#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
@@ -709,7 +795,79 @@ EXTERN_C const IID IID_DirectMLPyTorchCreatorID;
#endif /* __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_d3d12compatibility_0000_0007 */
+#ifndef __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
+#define __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
+
+/* interface DirectMLWebNNCreatorID */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_DirectMLWebNNCreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fdf01a76-1e11-450f-902b-74f04ea08094")
+ DirectMLWebNNCreatorID : public IUnknown
+ {
+ public:
+ };
+
+
+#else /* C style interface */
+
+ typedef struct DirectMLWebNNCreatorIDVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ DirectMLWebNNCreatorID * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ DirectMLWebNNCreatorID * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ DirectMLWebNNCreatorID * This);
+
+ END_INTERFACE
+ } DirectMLWebNNCreatorIDVtbl;
+
+ interface DirectMLWebNNCreatorID
+ {
+ CONST_VTBL struct DirectMLWebNNCreatorIDVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define DirectMLWebNNCreatorID_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define DirectMLWebNNCreatorID_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define DirectMLWebNNCreatorID_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __DirectMLWebNNCreatorID_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compatibility_0000_0009 */
/* [local] */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
@@ -719,12 +877,14 @@ DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,
DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
+DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);
DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);
+DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);
-extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0007_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0007_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_s_ifspec;
/* Additional Prototypes for ALL interfaces */
diff --git a/thirdparty/directx_headers/include/directx/d3d12compiler.h b/thirdparty/directx_headers/include/directx/d3d12compiler.h
new file mode 100644
index 00000000000..1d8fe3be6d1
--- /dev/null
+++ b/thirdparty/directx_headers/include/directx/d3d12compiler.h
@@ -0,0 +1,977 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3d12compiler_h__
+#define __d3d12compiler_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3D12CompilerFactoryChild_FWD_DEFINED__
+#define __ID3D12CompilerFactoryChild_FWD_DEFINED__
+typedef interface ID3D12CompilerFactoryChild ID3D12CompilerFactoryChild;
+
+#endif /* __ID3D12CompilerFactoryChild_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerCacheSession_FWD_DEFINED__
+#define __ID3D12CompilerCacheSession_FWD_DEFINED__
+typedef interface ID3D12CompilerCacheSession ID3D12CompilerCacheSession;
+
+#endif /* __ID3D12CompilerCacheSession_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerStateObject_FWD_DEFINED__
+#define __ID3D12CompilerStateObject_FWD_DEFINED__
+typedef interface ID3D12CompilerStateObject ID3D12CompilerStateObject;
+
+#endif /* __ID3D12CompilerStateObject_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12Compiler_FWD_DEFINED__
+#define __ID3D12Compiler_FWD_DEFINED__
+typedef interface ID3D12Compiler ID3D12Compiler;
+
+#endif /* __ID3D12Compiler_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerFactory_FWD_DEFINED__
+#define __ID3D12CompilerFactory_FWD_DEFINED__
+typedef interface ID3D12CompilerFactory ID3D12CompilerFactory;
+
+#endif /* __ID3D12CompilerFactory_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+#include "dxgicommon.h"
+#include "d3d12.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3d12compiler_0000_0000 */
+/* [local] */
+
+#include
+#pragma region App Family
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
+typedef struct D3D12_ADAPTER_FAMILY
+ {
+ WCHAR szAdapterFamily[ 128 ];
+ } D3D12_ADAPTER_FAMILY;
+
+typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)(
+ _In_ LPCWSTR pPluginCompilerDllPath,
+ _In_ REFIID riid,
+ _COM_Outptr_opt_ void** ppFactory );
+
+HRESULT WINAPI D3D12CompilerCreateFactory(
+ _In_ LPCWSTR pPluginCompilerDllPath,
+ _In_ REFIID riid, // Expected: ID3D12CompilerFactory
+ _COM_Outptr_opt_ void** ppFactory );
+
+typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
+ _Out_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
+
+HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(
+ _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
+ _Out_ ID3DBlob** ppBlob,
+ _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
+#define __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
+
+/* interface ID3D12CompilerFactoryChild */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompilerFactoryChild;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc")
+ ID3D12CompilerFactoryChild : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetFactory(
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerFactory) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerFactoryChildVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompilerFactoryChild * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompilerFactoryChild * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompilerFactoryChild * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
+ HRESULT ( STDMETHODCALLTYPE *GetFactory )(
+ ID3D12CompilerFactoryChild * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerFactory);
+
+ END_INTERFACE
+ } ID3D12CompilerFactoryChildVtbl;
+
+ interface ID3D12CompilerFactoryChild
+ {
+ CONST_VTBL struct ID3D12CompilerFactoryChildVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompilerFactoryChild_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompilerFactoryChild_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompilerFactoryChild_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompilerFactoryChild_GetFactory(This,riid,ppCompilerFactory) \
+ ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compiler_0000_0001 */
+/* [local] */
+
+typedef
+enum D3D12_COMPILER_VALUE_TYPE
+ {
+ D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
+ D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
+ D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
+ D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3
+ } D3D12_COMPILER_VALUE_TYPE;
+
+typedef
+enum D3D12_COMPILER_VALUE_TYPE_FLAGS
+ {
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = ( 1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE ) ,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_METADATA ) ,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = ( 1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB ) ,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA )
+ } D3D12_COMPILER_VALUE_TYPE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )
+typedef struct D3D12_COMPILER_DATABASE_PATH
+ {
+ D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
+ LPCWSTR pPath;
+ } D3D12_COMPILER_DATABASE_PATH;
+
+typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
+ {
+ _Field_size_bytes_full_(KeySize) const void *pKey;
+ UINT KeySize;
+ } D3D12_COMPILER_CACHE_GROUP_KEY;
+
+typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
+ {
+ _Field_size_bytes_full_(KeySize) const void *pKey;
+ UINT KeySize;
+ } D3D12_COMPILER_CACHE_VALUE_KEY;
+
+typedef struct D3D12_COMPILER_CACHE_VALUE
+ {
+ _Field_size_bytes_full_(ValueSize) void *pValue;
+ UINT ValueSize;
+ } D3D12_COMPILER_CACHE_VALUE;
+
+typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
+ {
+ D3D12_COMPILER_VALUE_TYPE Type;
+ D3D12_COMPILER_CACHE_VALUE Value;
+ } D3D12_COMPILER_CACHE_TYPED_VALUE;
+
+typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
+ {
+ _Field_size_bytes_full_(ValueSize) const void *pValue;
+ UINT ValueSize;
+ } D3D12_COMPILER_CACHE_CONST_VALUE;
+
+typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
+ {
+ D3D12_COMPILER_VALUE_TYPE Type;
+ D3D12_COMPILER_CACHE_CONST_VALUE Value;
+ } D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
+
+typedef struct D3D12_COMPILER_TARGET
+ {
+ UINT AdapterFamilyIndex;
+ UINT64 ABIVersion;
+ } D3D12_COMPILER_TARGET;
+
+typedef void *( __stdcall *D3D12CompilerCacheSessionAllocationFunc )(
+ SIZE_T SizeInBytes,
+ _Inout_opt_ void *pContext);
+
+typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValueKeysFunc )(
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _Inout_opt_ void *pContext);
+
+typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValuesFunc )(
+ UINT ValueKeyIndex,
+ _In_ const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValue,
+ _Inout_opt_ void *pContext);
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
+#define __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
+
+/* interface ID3D12CompilerCacheSession */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompilerCacheSession;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5704e5e6-054b-4738-b661-7b0d68d8dde2")
+ ID3D12CompilerCacheSession : public ID3D12CompilerFactoryChild
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE FindGroup(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _Out_opt_ UINT *pGroupVersion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindGroupValueKeys(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _In_opt_ const UINT *pExpectedGroupVersion,
+ _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindGroupValues(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _In_opt_ const UINT *pExpectedGroupVersion,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
+ _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE FindValue(
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
+ UINT NumTypedValues,
+ _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
+ _Inout_opt_ void *pContext) = 0;
+
+ virtual const D3D12_APPLICATION_DESC *STDMETHODCALLTYPE GetApplicationDesc( void) = 0;
+
+#if defined(_MSC_VER) || !defined(_WIN32)
+ virtual D3D12_COMPILER_TARGET STDMETHODCALLTYPE GetCompilerTarget( void) = 0;
+#else
+ virtual D3D12_COMPILER_TARGET *STDMETHODCALLTYPE GetCompilerTarget(
+ D3D12_COMPILER_TARGET * RetVal) = 0;
+#endif
+
+ virtual D3D12_COMPILER_VALUE_TYPE_FLAGS STDMETHODCALLTYPE GetValueTypes( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StoreGroupValueKeys(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
+ UINT NumValueKeys) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE StoreValue(
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
+ UINT NumTypedValues) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerCacheSessionVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompilerCacheSession * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompilerCacheSession * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompilerCacheSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
+ HRESULT ( STDMETHODCALLTYPE *GetFactory )(
+ ID3D12CompilerCacheSession * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerFactory);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroup)
+ HRESULT ( STDMETHODCALLTYPE *FindGroup )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _Out_opt_ UINT *pGroupVersion);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValueKeys)
+ HRESULT ( STDMETHODCALLTYPE *FindGroupValueKeys )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _In_opt_ const UINT *pExpectedGroupVersion,
+ _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValues)
+ HRESULT ( STDMETHODCALLTYPE *FindGroupValues )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ _In_opt_ const UINT *pExpectedGroupVersion,
+ D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
+ _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindValue)
+ HRESULT ( STDMETHODCALLTYPE *FindValue )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
+ UINT NumTypedValues,
+ _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
+ _Inout_opt_ void *pContext);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetApplicationDesc)
+ const D3D12_APPLICATION_DESC *( STDMETHODCALLTYPE *GetApplicationDesc )(
+ ID3D12CompilerCacheSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetCompilerTarget)
+#if !defined(_WIN32)
+ D3D12_COMPILER_TARGET ( STDMETHODCALLTYPE *GetCompilerTarget )(
+ ID3D12CompilerCacheSession * This);
+
+#else
+ D3D12_COMPILER_TARGET *( STDMETHODCALLTYPE *GetCompilerTarget )(
+ ID3D12CompilerCacheSession * This,
+ D3D12_COMPILER_TARGET * RetVal);
+
+#endif
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetValueTypes)
+ D3D12_COMPILER_VALUE_TYPE_FLAGS ( STDMETHODCALLTYPE *GetValueTypes )(
+ ID3D12CompilerCacheSession * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreGroupValueKeys)
+ HRESULT ( STDMETHODCALLTYPE *StoreGroupValueKeys )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
+ UINT NumValueKeys);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreValue)
+ HRESULT ( STDMETHODCALLTYPE *StoreValue )(
+ ID3D12CompilerCacheSession * This,
+ _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
+ _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
+ UINT NumTypedValues);
+
+ END_INTERFACE
+ } ID3D12CompilerCacheSessionVtbl;
+
+ interface ID3D12CompilerCacheSession
+ {
+ CONST_VTBL struct ID3D12CompilerCacheSessionVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompilerCacheSession_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompilerCacheSession_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompilerCacheSession_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompilerCacheSession_GetFactory(This,riid,ppCompilerFactory) \
+ ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
+
+
+#define ID3D12CompilerCacheSession_FindGroup(This,pGroupKey,pGroupVersion) \
+ ( (This)->lpVtbl -> FindGroup(This,pGroupKey,pGroupVersion) )
+
+#define ID3D12CompilerCacheSession_FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) )
+
+#define ID3D12CompilerCacheSession_FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) )
+
+#define ID3D12CompilerCacheSession_FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) \
+ ( (This)->lpVtbl -> FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) )
+
+#define ID3D12CompilerCacheSession_GetApplicationDesc(This) \
+ ( (This)->lpVtbl -> GetApplicationDesc(This) )
+#if !defined(_WIN32)
+
+#define ID3D12CompilerCacheSession_GetCompilerTarget(This) \
+ ( (This)->lpVtbl -> GetCompilerTarget(This) )
+#else
+#define ID3D12CompilerCacheSession_GetCompilerTarget(This,RetVal) \
+ ( (This)->lpVtbl -> GetCompilerTarget(This,RetVal) )
+#endif
+
+#define ID3D12CompilerCacheSession_GetValueTypes(This) \
+ ( (This)->lpVtbl -> GetValueTypes(This) )
+
+#define ID3D12CompilerCacheSession_StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) \
+ ( (This)->lpVtbl -> StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) )
+
+#define ID3D12CompilerCacheSession_StoreValue(This,pValueKey,pTypedValues,NumTypedValues) \
+ ( (This)->lpVtbl -> StoreValue(This,pValueKey,pTypedValues,NumTypedValues) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompilerCacheSession_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerStateObject_INTERFACE_DEFINED__
+#define __ID3D12CompilerStateObject_INTERFACE_DEFINED__
+
+/* interface ID3D12CompilerStateObject */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompilerStateObject;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a")
+ ID3D12CompilerStateObject : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetCompiler(
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompiler) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerStateObjectVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompilerStateObject * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompilerStateObject * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompilerStateObject * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerStateObject, GetCompiler)
+ HRESULT ( STDMETHODCALLTYPE *GetCompiler )(
+ ID3D12CompilerStateObject * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompiler);
+
+ END_INTERFACE
+ } ID3D12CompilerStateObjectVtbl;
+
+ interface ID3D12CompilerStateObject
+ {
+ CONST_VTBL struct ID3D12CompilerStateObjectVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompilerStateObject_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompilerStateObject_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompilerStateObject_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompilerStateObject_GetCompiler(This,riid,ppCompiler) \
+ ( (This)->lpVtbl -> GetCompiler(This,riid,ppCompiler) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompilerStateObject_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compiler_0000_0003 */
+/* [local] */
+
+typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
+ {
+ ID3D12CompilerStateObject *pExistingCollection;
+ UINT NumExports;
+ _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
+ } D3D12_COMPILER_EXISTING_COLLECTION_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_s_ifspec;
+
+#ifndef __ID3D12Compiler_INTERFACE_DEFINED__
+#define __ID3D12Compiler_INTERFACE_DEFINED__
+
+/* interface ID3D12Compiler */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12Compiler;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("8c403c12-993b-4583-80f1-6824138fa68e")
+ ID3D12Compiler : public ID3D12CompilerFactoryChild
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CompilePipelineState(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CompileStateObject(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerStateObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CompileAddToStateObject(
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
+ _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppNewCompilerStateObject) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetCacheSession(
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerCacheSession) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12Compiler * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12Compiler * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12Compiler * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
+ HRESULT ( STDMETHODCALLTYPE *GetFactory )(
+ ID3D12Compiler * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerFactory);
+
+ DECLSPEC_XFGVIRT(ID3D12Compiler, CompilePipelineState)
+ HRESULT ( STDMETHODCALLTYPE *CompilePipelineState )(
+ ID3D12Compiler * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
+
+ DECLSPEC_XFGVIRT(ID3D12Compiler, CompileStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CompileStateObject )(
+ ID3D12Compiler * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Compiler, CompileAddToStateObject)
+ HRESULT ( STDMETHODCALLTYPE *CompileAddToStateObject )(
+ ID3D12Compiler * This,
+ _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
+ UINT GroupVersion,
+ _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
+ _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppNewCompilerStateObject);
+
+ DECLSPEC_XFGVIRT(ID3D12Compiler, GetCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *GetCacheSession )(
+ ID3D12Compiler * This,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerCacheSession);
+
+ END_INTERFACE
+ } ID3D12CompilerVtbl;
+
+ interface ID3D12Compiler
+ {
+ CONST_VTBL struct ID3D12CompilerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Compiler_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12Compiler_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12Compiler_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12Compiler_GetFactory(This,riid,ppCompilerFactory) \
+ ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
+
+
+#define ID3D12Compiler_CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) \
+ ( (This)->lpVtbl -> CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) )
+
+#define ID3D12Compiler_CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) \
+ ( (This)->lpVtbl -> CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) )
+
+#define ID3D12Compiler_CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) \
+ ( (This)->lpVtbl -> CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) )
+
+#define ID3D12Compiler_GetCacheSession(This,riid,ppCompilerCacheSession) \
+ ( (This)->lpVtbl -> GetCacheSession(This,riid,ppCompilerCacheSession) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12Compiler_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12CompilerFactory_INTERFACE_DEFINED__
+#define __ID3D12CompilerFactory_INTERFACE_DEFINED__
+
+/* interface ID3D12CompilerFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12CompilerFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("c1ee4b59-3f59-47a5-9b4e-a855c858a878")
+ ID3D12CompilerFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilies(
+ UINT AdapterFamilyIndex,
+ _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyABIVersions(
+ UINT AdapterFamilyIndex,
+ _Inout_ UINT32 *pNumABIVersions,
+ _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyCompilerVersion(
+ UINT AdapterFamilyIndex,
+ _Out_ D3D12_VERSION_NUMBER *pCompilerVersion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetApplicationProfileVersion(
+ _In_ const D3D12_COMPILER_TARGET *pTarget,
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCompilerCacheSession(
+ _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
+ UINT NumPaths,
+ _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
+ _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerCacheSession) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateCompiler(
+ _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompiler) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12CompilerFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12CompilerFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12CompilerFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12CompilerFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilies)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilies )(
+ ID3D12CompilerFactory * This,
+ UINT AdapterFamilyIndex,
+ _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyABIVersions)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyABIVersions )(
+ ID3D12CompilerFactory * This,
+ UINT AdapterFamilyIndex,
+ _Inout_ UINT32 *pNumABIVersions,
+ _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyCompilerVersion)
+ HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyCompilerVersion )(
+ ID3D12CompilerFactory * This,
+ UINT AdapterFamilyIndex,
+ _Out_ D3D12_VERSION_NUMBER *pCompilerVersion);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, GetApplicationProfileVersion)
+ HRESULT ( STDMETHODCALLTYPE *GetApplicationProfileVersion )(
+ ID3D12CompilerFactory * This,
+ _In_ const D3D12_COMPILER_TARGET *pTarget,
+ _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompilerCacheSession)
+ HRESULT ( STDMETHODCALLTYPE *CreateCompilerCacheSession )(
+ ID3D12CompilerFactory * This,
+ _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
+ UINT NumPaths,
+ _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
+ _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompilerCacheSession);
+
+ DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompiler)
+ HRESULT ( STDMETHODCALLTYPE *CreateCompiler )(
+ ID3D12CompilerFactory * This,
+ _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppCompiler);
+
+ END_INTERFACE
+ } ID3D12CompilerFactoryVtbl;
+
+ interface ID3D12CompilerFactory
+ {
+ CONST_VTBL struct ID3D12CompilerFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12CompilerFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12CompilerFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12CompilerFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12CompilerFactory_EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) \
+ ( (This)->lpVtbl -> EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) )
+
+#define ID3D12CompilerFactory_EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) \
+ ( (This)->lpVtbl -> EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) )
+
+#define ID3D12CompilerFactory_EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) \
+ ( (This)->lpVtbl -> EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) )
+
+#define ID3D12CompilerFactory_GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) \
+ ( (This)->lpVtbl -> GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) )
+
+#define ID3D12CompilerFactory_CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) \
+ ( (This)->lpVtbl -> CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) )
+
+#define ID3D12CompilerFactory_CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) \
+ ( (This)->lpVtbl -> CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12CompilerFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compiler_0000_0005 */
+/* [local] */
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
+#pragma endregion
+DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);
+DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);
+DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);
+DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);
+DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/thirdparty/directx_headers/include/directx/d3d12sdklayers.h b/thirdparty/directx_headers/include/directx/d3d12sdklayers.h
index 06aa091b558..96c812b148f 100644
--- a/thirdparty/directx_headers/include/directx/d3d12sdklayers.h
+++ b/thirdparty/directx_headers/include/directx/d3d12sdklayers.h
@@ -999,7 +999,8 @@ enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
{
D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
- D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 )
+ D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) ,
+ D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR + 1 )
} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
typedef
@@ -1046,6 +1047,15 @@ typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
FLOAT SlowdownFactor;
} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
+typedef
+enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
+ {
+ D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED = 0,
+ D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED + 1 ) ,
+ D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED + 1 ) ,
+ D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT = D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
+ } D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
+
extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_c_ifspec;
@@ -3312,7 +3322,48 @@ enum D3D12_MESSAGE_ID
D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
- D3D12_MESSAGE_ID_D3D12_MESSAGES_END = ( D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT + 1 )
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
+ D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
+ D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
+ D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
+ D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
+ D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
+ D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
+ D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
+ D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
+ D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
+ D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
+ D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
+ D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
+ D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
+ D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
+ D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
+ D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442
} D3D12_MESSAGE_ID;
typedef struct D3D12_MESSAGE
diff --git a/thirdparty/directx_headers/include/directx/d3d12shader.h b/thirdparty/directx_headers/include/directx/d3d12shader.h
index 0acf584e324..56455b5ed74 100644
--- a/thirdparty/directx_headers/include/directx/d3d12shader.h
+++ b/thirdparty/directx_headers/include/directx/d3d12shader.h
@@ -37,6 +37,8 @@ typedef enum D3D12_SHADER_VERSION_TYPE
D3D12_SHVER_MESH_SHADER = 13,
D3D12_SHVER_AMPLIFICATION_SHADER = 14,
+ D3D12_SHVER_NODE_SHADER = 15,
+
D3D12_SHVER_RESERVED0 = 0xFFF0,
} D3D12_SHADER_VERSION_TYPE;
@@ -201,8 +203,10 @@ typedef struct _D3D12_SHADER_INPUT_BIND_DESC
#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
-#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000
-#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000
+#define D3D_SHADER_REQUIRES_ADVANCED_TEXTURE_OPS 0x20000000
+#define D3D_SHADER_REQUIRES_WRITEABLE_MSAA_TEXTURES 0x40000000
+#define D3D_SHADER_REQUIRES_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
+#define D3D_SHADER_REQUIRES_EXTENDED_COMMAND_INFO 0x100000000ull
typedef struct _D3D12_LIBRARY_DESC
@@ -488,3 +492,4 @@ extern "C" {
#endif //__D3D12SHADER_H__
+
diff --git a/thirdparty/directx_headers/include/directx/d3d12video.h b/thirdparty/directx_headers/include/directx/d3d12video.h
index fe9a17377c9..843e78decf2 100644
--- a/thirdparty/directx_headers/include/directx/d3d12video.h
+++ b/thirdparty/directx_headers/include/directx/d3d12video.h
@@ -241,6 +241,27 @@ typedef interface ID3D12VideoEncodeCommandList3 ID3D12VideoEncodeCommandList3;
#endif /* __ID3D12VideoEncodeCommandList3_FWD_DEFINED__ */
+#ifndef __ID3D12VideoEncoderHeap1_FWD_DEFINED__
+#define __ID3D12VideoEncoderHeap1_FWD_DEFINED__
+typedef interface ID3D12VideoEncoderHeap1 ID3D12VideoEncoderHeap1;
+
+#endif /* __ID3D12VideoEncoderHeap1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice4_FWD_DEFINED__
+#define __ID3D12VideoDevice4_FWD_DEFINED__
+typedef interface ID3D12VideoDevice4 ID3D12VideoDevice4;
+
+#endif /* __ID3D12VideoDevice4_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
+#define __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
+typedef interface ID3D12VideoEncodeCommandList4 ID3D12VideoEncodeCommandList4;
+
+#endif /* __ID3D12VideoEncodeCommandList4_FWD_DEFINED__ */
+
+
/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
@@ -340,7 +361,15 @@ enum D3D12_FEATURE_VIDEO
D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
- D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47
+ D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
+ D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
+ D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
+ D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
+ D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
+ D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
+ D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
+ D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
+ D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57
} D3D12_FEATURE_VIDEO;
typedef
@@ -409,7 +438,7 @@ enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )
typedef
enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
{
@@ -418,7 +447,7 @@ enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )
typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
{
BOOL Enable;
@@ -931,7 +960,7 @@ enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )
typedef
enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
{
@@ -942,7 +971,7 @@ enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )
typedef
enum D3D12_VIDEO_DECODE_STATUS
{
@@ -959,7 +988,7 @@ enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
- D3D12_VIDEO_DECODE_ARGUMENT_TYPE_MAX_VALID = 3
+ D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3
} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
@@ -1034,7 +1063,7 @@ enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )
typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
{
UINT NodeIndex;
@@ -1054,16 +1083,17 @@ enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )
typedef
enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
{
D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
- D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2
+ D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
+ D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4
} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )
typedef struct D3D12_VIDEO_SCALE_SUPPORT
{
D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
@@ -1354,7 +1384,7 @@ enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )
typedef
enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
{
@@ -1370,7 +1400,7 @@ enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )
typedef
enum D3D12_VIDEO_PROCESS_ORIENTATION
{
@@ -1392,7 +1422,7 @@ enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )
typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
{
INT Minimum;
@@ -1408,7 +1438,7 @@ enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )
typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
{
UINT NodeIndex;
@@ -2763,7 +2793,7 @@ enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )
typedef
enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
{
@@ -2777,7 +2807,7 @@ enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )
typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
{
UINT NodeIndex;
@@ -3707,7 +3737,7 @@ enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )
typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
{
UINT NodeIndex;
@@ -3782,7 +3812,7 @@ enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS );
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )
typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
{
UINT NodeIndex;
@@ -6331,6 +6361,13 @@ DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163,
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
+DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
typedef
enum D3D12_VIDEO_ENCODER_AV1_PROFILE
{
@@ -6413,7 +6450,7 @@ enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000
} D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_AV1_TX_MODE
{
@@ -6431,7 +6468,7 @@ enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS
D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT )
} D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS
{
@@ -6453,7 +6490,7 @@ enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS
D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE )
} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE
{
@@ -6493,7 +6530,7 @@ enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV )
} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE
{
@@ -6523,7 +6560,7 @@ enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS
D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8
} D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
{
@@ -6543,7 +6580,7 @@ enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS
D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE )
} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS
{
@@ -6559,7 +6596,7 @@ enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS
D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100
} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
{
D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
@@ -6593,7 +6630,7 @@ enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS
D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME )
} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
{
@@ -6660,7 +6697,7 @@ enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000
} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
{
D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[ 3 ];
@@ -6809,10 +6846,11 @@ enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
- D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100
} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP
{
UINT ConstantQP_FullIntracodedFrame;
@@ -6958,7 +6996,14 @@ typedef
enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
{
D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
- D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
+ D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8
} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
@@ -7124,7 +7169,8 @@ enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
- D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7
} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
@@ -7151,7 +7197,7 @@ enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80
} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
{
BOOL Use128SuperBlocks;
@@ -7192,10 +7238,14 @@ typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
typedef
enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
{
- D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
+ D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8
} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
{
UINT NodeMask;
@@ -7225,10 +7275,11 @@ enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
- D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES
{
@@ -7254,7 +7305,7 @@ enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING )
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264
{
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
@@ -7273,10 +7324,33 @@ enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
- D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE
{
@@ -7306,6 +7380,34 @@ typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC
UCHAR max_transform_hierarchy_depth_intra;
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
+typedef
+enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
+ {
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
+ UCHAR max_transform_hierarchy_depth_inter;
+ UCHAR max_transform_hierarchy_depth_intra;
+ UINT allowed_diff_cu_chroma_qp_offset_depth_values;
+ UINT allowed_log2_sao_offset_scale_luma_values;
+ UINT allowed_log2_sao_offset_scale_chroma_values;
+ UINT allowed_log2_max_transform_skip_block_size_minus2_values;
+ UINT allowed_chroma_qp_offset_list_len_minus1_values;
+ UINT allowed_cb_qp_offset_list_values[ 6 ];
+ UINT allowed_cr_qp_offset_list_values[ 6 ];
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
+ } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
+
typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
{
UINT DataSize;
@@ -7313,6 +7415,7 @@ typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
{
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 *pHEVCSupport1;
D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT *pAV1Support;
} ;
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
@@ -7382,10 +7485,19 @@ enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
- D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000
} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
{
@@ -7396,7 +7508,7 @@ enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)
typedef
enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES
{
@@ -7422,10 +7534,20 @@ enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
- D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
{
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
@@ -7485,10 +7607,14 @@ enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
- D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000
} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
{
UINT GOPLength;
@@ -7599,7 +7725,7 @@ enum D3D12_VIDEO_ENCODER_FLAGS
D3D12_VIDEO_ENCODER_FLAG_NONE = 0
} D3D12_VIDEO_ENCODER_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_DESC
{
UINT NodeMask;
@@ -8253,10 +8379,11 @@ typedef
enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
{
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0,
- D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
{
UCHAR memory_management_control_operation;
@@ -8321,10 +8448,13 @@ typedef
enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
{
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0,
- D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
{
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
@@ -8346,6 +8476,34 @@ typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
_Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
+ UINT slice_pic_parameter_set_id;
+ UINT PictureOrderCountNumber;
+ UINT TemporalLayerIndex;
+ UINT List0ReferenceFramesCount;
+ _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
+ UINT List1ReferenceFramesCount;
+ _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
+ UINT ReferenceFramesReconPictureDescriptorsCount;
+ _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
+ UINT List0RefPicModificationsCount;
+ _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
+ UINT List1RefPicModificationsCount;
+ _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
+ UINT QPMapValuesCount;
+ _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
+ UCHAR diff_cu_chroma_qp_offset_depth;
+ UCHAR log2_sao_offset_scale_luma;
+ UCHAR log2_sao_offset_scale_chroma;
+ UCHAR log2_max_transform_skip_block_size_minus2;
+ UCHAR chroma_qp_offset_list_len_minus1;
+ CHAR cb_qp_offset_list[ 6 ];
+ CHAR cr_qp_offset_list[ 6 ];
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
+
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
{
UINT DataSize;
@@ -8353,6 +8511,7 @@ typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
{
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 *pHEVCPicData1;
D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
} ;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
@@ -8368,10 +8527,13 @@ typedef
enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
{
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0,
- D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
{
UINT IntraRefreshFrameIndex;
@@ -8391,7 +8553,7 @@ enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
{
D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
@@ -8442,7 +8604,7 @@ enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
-DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS);
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)
typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
{
UINT64 AverageQP;
@@ -9154,6 +9316,1366 @@ EXTERN_C const IID IID_ID3D12VideoEncodeCommandList3;
/* interface __MIDL_itf_d3d12video_0000_0027 */
/* [local] */
+typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
+ {
+ UINT NodeMask;
+ D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
+ UINT ResolutionsListCount;
+ _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
+ UINT Pow2DownscaleFactor;
+ } D3D12_VIDEO_ENCODER_HEAP_DESC1;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
+#define __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncoderHeap1 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncoderHeap1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9")
+ ID3D12VideoEncoderHeap1 : public ID3D12VideoEncoderHeap
+ {
+ public:
+ virtual UINT STDMETHODCALLTYPE GetPow2DownscaleFactor( void) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncoderHeap1Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncoderHeap1 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncoderHeap1 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncoderHeap1 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncoderHeap1 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncoderHeap1 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncoderHeap1 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
+ UINT ( STDMETHODCALLTYPE *GetNodeMask )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
+ D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
+ D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
+ HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
+ ID3D12VideoEncoderHeap1 * This,
+ _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
+ HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
+ ID3D12VideoEncoderHeap1 * This,
+ _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
+ UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
+ HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
+ ID3D12VideoEncoderHeap1 * This,
+ const UINT ResolutionsListCount,
+ _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap1, GetPow2DownscaleFactor)
+ UINT ( STDMETHODCALLTYPE *GetPow2DownscaleFactor )(
+ ID3D12VideoEncoderHeap1 * This);
+
+ END_INTERFACE
+ } ID3D12VideoEncoderHeap1Vtbl;
+
+ interface ID3D12VideoEncoderHeap1
+ {
+ CONST_VTBL struct ID3D12VideoEncoderHeap1Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncoderHeap1_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncoderHeap1_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncoderHeap1_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncoderHeap1_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncoderHeap1_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncoderHeap1_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+
+#define ID3D12VideoEncoderHeap1_GetNodeMask(This) \
+ ( (This)->lpVtbl -> GetNodeMask(This) )
+
+#define ID3D12VideoEncoderHeap1_GetEncoderHeapFlags(This) \
+ ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
+
+#define ID3D12VideoEncoderHeap1_GetCodec(This) \
+ ( (This)->lpVtbl -> GetCodec(This) )
+
+#define ID3D12VideoEncoderHeap1_GetCodecProfile(This,dstProfile) \
+ ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
+
+#define ID3D12VideoEncoderHeap1_GetCodecLevel(This,dstLevel) \
+ ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
+
+#define ID3D12VideoEncoderHeap1_GetResolutionListCount(This) \
+ ( (This)->lpVtbl -> GetResolutionListCount(This) )
+
+#define ID3D12VideoEncoderHeap1_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
+ ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
+
+
+#define ID3D12VideoEncoderHeap1_GetPow2DownscaleFactor(This) \
+ ( (This)->lpVtbl -> GetPow2DownscaleFactor(This) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12VideoDevice4_INTERFACE_DEFINED__
+#define __ID3D12VideoDevice4_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoDevice4 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoDevice4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("e59ad09e-f1ae-42bb-8983-9f6e5586c4eb")
+ ID3D12VideoDevice4 : public ID3D12VideoDevice3
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap1(
+ _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoDevice4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoDevice4 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoDevice4 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoDevice4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
+ HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
+ ID3D12VideoDevice4 * This,
+ D3D12_FEATURE_VIDEO FeatureVideo,
+ _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
+ UINT FeatureSupportDataSize);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
+ ID3D12VideoDevice4 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionEstimator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoMotionVectorHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoDecoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
+ ID3D12VideoDevice4 * This,
+ UINT NodeMask,
+ _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
+ UINT NumInputStreamDescs,
+ _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoProcessor);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
+ _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
+ SIZE_T CreationParametersDataSizeInBytes,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoExtensionCommand);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
+ HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoDevice4 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes,
+ _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
+ SIZE_T OutputDataSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoder);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoderHeap);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoDevice4, CreateVideoEncoderHeap1)
+ HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap1 )(
+ ID3D12VideoDevice4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
+ _In_ REFIID riid,
+ _COM_Outptr_ void **ppVideoEncoderHeap);
+
+ END_INTERFACE
+ } ID3D12VideoDevice4Vtbl;
+
+ interface ID3D12VideoDevice4
+ {
+ CONST_VTBL struct ID3D12VideoDevice4Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoDevice4_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoDevice4_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoDevice4_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoDevice4_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
+ ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
+
+#define ID3D12VideoDevice4_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice4_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice4_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
+
+
+#define ID3D12VideoDevice4_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
+ ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
+
+#define ID3D12VideoDevice4_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
+ ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
+
+
+#define ID3D12VideoDevice4_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
+ ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
+
+#define ID3D12VideoDevice4_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
+
+#define ID3D12VideoDevice4_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
+ ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
+
+#define ID3D12VideoDevice4_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
+ ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
+
+#define ID3D12VideoDevice4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
+
+
+#define ID3D12VideoDevice4_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
+ ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
+
+#define ID3D12VideoDevice4_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
+
+
+#define ID3D12VideoDevice4_CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) \
+ ( (This)->lpVtbl -> CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoDevice4_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0029 */
+/* [local] */
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1
+ {
+ D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc;
+ BOOL IsSupported;
+ UINT64 MemoryPoolL0Size;
+ UINT64 MemoryPoolL1Size;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
+
+typedef
+enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10
+ } D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
+ BOOL IsSupported;
+ UINT CompressedBitstreamBufferAccessAlignment;
+ UINT EncoderMetadataBufferAccessAlignment;
+ UINT MaxEncoderOutputMetadataBufferSize;
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions;
+ UINT EncoderOutputMetadataFramePSNRComponentsNumber;
+ UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber;
+ UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
+ {
+ float PSNRY;
+ float PSNRU;
+ float PSNRV;
+ } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
+
+typedef
+enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
+ {
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1
+ } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
+ {
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
+
+typedef
+enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
+ {
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2
+ } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ BOOL IsSupported;
+ UINT MapSourcePreferenceRanking;
+ UINT BlockSize;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
+
+typedef
+enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4
+ } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
+ UINT MapSourcePreferenceRanking;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
+ {
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2
+ } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
+
+typedef
+enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL ) ,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL ) ,
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL )
+ } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )
+typedef
+enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4
+ } D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ BOOL BidirectionalRefFrameEnabled;
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
+ UINT MaxMotionHints;
+ UINT MinDeviation;
+ UINT MaxDeviation;
+ UINT MapSourcePreferenceRanking;
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
+ BOOL IsSupported;
+ UINT64 MaxResolvedBufferAllocationSize;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
+
+typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
+ {
+ BOOL Enabled;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ } D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
+ {
+ UINT MapSourcePreferenceRanking;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
+
+typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
+ {
+ BOOL Enabled;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
+ } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
+ {
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
+ UINT MapSourcePreferenceRanking;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
+
+typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
+ {
+ BOOL Enabled;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
+ BOOL BidirectionalRefFrameEnabled;
+ } D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
+ {
+ UINT MaxMotionHints;
+ UINT MinDeviation;
+ UINT MaxDeviation;
+ UINT MapSourcePreferenceRanking;
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
+
+typedef
+enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED = ( ( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED ) | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED )
+ } D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
+ D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
+ UINT Pow2DownscaleFactor;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
+ {
+ D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
+ {
+ UINT MaxSubregionsNumber;
+ UINT MaxIntraRefreshFrameDuration;
+ UINT SubregionBlockPixelsSize;
+ UINT QPMapRegionPixelsSize;
+ D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
+ D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
+ D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
+ D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
+ {
+ BOOL Enabled;
+ UINT Pow2DownscaleFactor;
+ } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
+ {
+ UINT NodeIndex;
+ D3D12_VIDEO_ENCODER_CODEC Codec;
+ DXGI_FORMAT InputFormat;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
+ D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
+ D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
+ D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+ UINT ResolutionsListCount;
+ const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
+ UINT MaxReferenceFramesInDPB;
+ D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
+ D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
+ D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
+ _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 *pResolutionDependentSupport;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
+ UINT MaxQualityVsSpeed;
+ D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
+ D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
+ D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
+ } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
+
+typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
+ {
+ BOOL FullFrameIdentical;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
+ UINT NumDirtyRects;
+ _Field_size_full_(NumDirtyRects) RECT *pDirtyRects;
+ UINT SourceDPBFrameReference;
+ } D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
+
+typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ union
+ {
+ ID3D12Resource *pOpaqueLayoutBuffer;
+ D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO *pCPUBuffer;
+ } ;
+ } D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
+
+typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
+ {
+ ID3D12Resource *pOpaqueQuantizationMap;
+ } D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
+ {
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
+ UINT SearchDeviationLimit;
+ } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
+ {
+ POINT SourcePoint;
+ RECT DestRect;
+ } D3D12_VIDEO_ENCODER_MOVE_RECT;
+
+typedef
+enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
+ {
+ D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0,
+ D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1
+ } D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
+
+typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
+ {
+ UINT NumMoveRegions;
+ _Field_size_full_(NumMoveRegions) D3D12_VIDEO_ENCODER_MOVE_RECT *pMoveRegions;
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
+ UINT SourceDPBFrameReference;
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
+ D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
+ } D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
+ union
+ {
+ ID3D12Resource *pOpaqueLayoutBuffer;
+ D3D12_VIDEO_ENCODER_MOVEREGION_INFO *pCPUBuffer;
+ } ;
+ } D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
+ UINT slice_pic_parameter_set_id;
+ UINT PictureOrderCountNumber;
+ UINT TemporalLayerIndex;
+ UINT List0ReferenceFramesCount;
+ _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
+ UINT List1ReferenceFramesCount;
+ _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
+ UINT ReferenceFramesReconPictureDescriptorsCount;
+ _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
+ UINT List0RefPicModificationsCount;
+ _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
+ UINT List1RefPicModificationsCount;
+ _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
+ UINT QPMapValuesCount;
+ _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
+ UCHAR diff_cu_chroma_qp_offset_depth;
+ UCHAR log2_sao_offset_scale_luma;
+ UCHAR log2_sao_offset_scale_chroma;
+ UCHAR log2_max_transform_skip_block_size_minus2;
+ UCHAR chroma_qp_offset_list_len_minus1;
+ CHAR cb_qp_offset_list[ 6 ];
+ CHAR cr_qp_offset_list[ 6 ];
+ UINT num_ref_idx_l0_active_minus1;
+ UINT num_ref_idx_l1_active_minus1;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
+ {
+ UINT DataSize;
+ union
+ {
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 *pHEVCPicData;
+ D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
+ } ;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
+ {
+ ID3D12Resource *pDownscaledFrame;
+ UINT64 Subresource;
+ D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
+ } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
+ {
+ UINT IntraRefreshFrameIndex;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
+ D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
+ D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
+ D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
+ } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
+ {
+ D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
+ ID3D12Resource *pInputFrame;
+ UINT InputFrameSubresource;
+ UINT CurrentFrameBitstreamMetadataSize;
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
+ } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
+
+typedef
+enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
+ {
+ D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
+ D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1
+ } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
+
+typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
+ {
+ D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
+ UINT ExpectedSubregionCount;
+ UINT64 *pSubregionBitstreamsBaseOffsets;
+ ID3D12Resource **ppSubregionBitstreams;
+ ID3D12Resource **ppSubregionSizes;
+ ID3D12Resource **ppSubregionOffsets;
+ ID3D12Fence **ppSubregionFences;
+ UINT64 *pSubregionFenceValues;
+ } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
+
+typedef
+enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1
+ } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
+
+typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
+ union
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
+ D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
+ } ;
+ } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
+ {
+ D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
+ D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
+ D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
+ } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
+ {
+ D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
+ D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
+ DXGI_FORMAT EncoderInputFormat;
+ D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
+ D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
+ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+ } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
+ {
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
+ ID3D12Resource *pOutputQPMap;
+ ID3D12Resource *pOutputSATDMap;
+ ID3D12Resource *pOutputBitAllocationMap;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
+ D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
+ } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
+ {
+ ID3D12Resource *pQuantizationMap;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
+ {
+ BOOL FullFrameIdentical;
+ D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
+ ID3D12Resource *pDirtyRegionsMap;
+ UINT SourceDPBFrameReference;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
+ {
+ D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
+ UINT NumHintsPerPixel;
+ _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMaps;
+ _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsSubresources;
+ _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMapsMetadata;
+ _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsMetadataSubresources;
+ D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
+ D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
+
+typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
+ union
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
+ } ;
+ } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
+ {
+ D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
+ D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
+ } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
+ {
+ ID3D12Resource *pOpaqueLayoutBuffer;
+ } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_s_ifspec;
+
+#ifndef __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
+#define __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
+
+/* interface ID3D12VideoEncodeCommandList4 */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3D12VideoEncodeCommandList4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("69aeb5b7-55f2-4012-8b73-3a88d65a204c")
+ ID3D12VideoEncodeCommandList4 : public ID3D12VideoEncodeCommandList3
+ {
+ public:
+ virtual void STDMETHODCALLTYPE EncodeFrame1(
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap1 *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata1(
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
+
+ virtual void STDMETHODCALLTYPE ResolveInputParamLayout(
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3D12VideoEncodeCommandList4Vtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3D12VideoEncodeCommandList4 * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ REFGUID guid,
+ _Inout_ UINT *pDataSize,
+ _Out_writes_bytes_opt_( *pDataSize ) void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ REFGUID guid,
+ _In_ UINT DataSize,
+ _In_reads_bytes_opt_( DataSize ) const void *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
+ HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ REFGUID guid,
+ _In_opt_ const IUnknown *pData);
+
+ DECLSPEC_XFGVIRT(ID3D12Object, SetName)
+ HRESULT ( STDMETHODCALLTYPE *SetName )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_z_ LPCWSTR Name);
+
+ DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
+ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
+ ID3D12VideoEncodeCommandList4 * This,
+ REFIID riid,
+ _COM_Outptr_opt_ void **ppvDevice);
+
+ DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
+ D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
+ HRESULT ( STDMETHODCALLTYPE *Close )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12CommandAllocator *pAllocator);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
+ void ( STDMETHODCALLTYPE *ClearState )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
+ void ( STDMETHODCALLTYPE *ResourceBarrier )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ UINT NumBarriers,
+ _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
+ void ( STDMETHODCALLTYPE *DiscardResource )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12Resource *pResource,
+ _In_opt_ const D3D12_DISCARD_REGION *pRegion);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
+ void ( STDMETHODCALLTYPE *BeginQuery )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
+ void ( STDMETHODCALLTYPE *EndQuery )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT Index);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
+ void ( STDMETHODCALLTYPE *ResolveQueryData )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12QueryHeap *pQueryHeap,
+ _In_ D3D12_QUERY_TYPE Type,
+ _In_ UINT StartIndex,
+ _In_ UINT NumQueries,
+ _In_ ID3D12Resource *pDestinationBuffer,
+ _In_ UINT64 AlignedDestinationBufferOffset);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
+ void ( STDMETHODCALLTYPE *SetPredication )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_opt_ ID3D12Resource *pBuffer,
+ _In_ UINT64 AlignedBufferOffset,
+ _In_ D3D12_PREDICATION_OP Operation);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
+ void ( STDMETHODCALLTYPE *SetMarker )(
+ ID3D12VideoEncodeCommandList4 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
+ void ( STDMETHODCALLTYPE *BeginEvent )(
+ ID3D12VideoEncodeCommandList4 * This,
+ UINT Metadata,
+ _In_reads_bytes_opt_(Size) const void *pData,
+ UINT Size);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
+ void ( STDMETHODCALLTYPE *EndEvent )(
+ ID3D12VideoEncodeCommandList4 * This);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
+ void ( STDMETHODCALLTYPE *EstimateMotion )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
+ _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
+ void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
+ ID3D12VideoEncodeCommandList4 * This,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
+ const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
+ void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
+ ID3D12VideoEncodeCommandList4 * This,
+ UINT Count,
+ _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+ _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
+ void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
+ void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
+ SIZE_T InitializationParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
+ void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
+ _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
+ SIZE_T ExecutionParametersSizeInBytes);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
+ void ( STDMETHODCALLTYPE *EncodeFrame )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
+ void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
+ void ( STDMETHODCALLTYPE *Barrier )(
+ ID3D12VideoEncodeCommandList4 * This,
+ UINT32 NumBarrierGroups,
+ _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, EncodeFrame1)
+ void ( STDMETHODCALLTYPE *EncodeFrame1 )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ ID3D12VideoEncoder *pEncoder,
+ _In_ ID3D12VideoEncoderHeap1 *pHeap,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveEncoderOutputMetadata1)
+ void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata1 )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments);
+
+ DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveInputParamLayout)
+ void ( STDMETHODCALLTYPE *ResolveInputParamLayout )(
+ ID3D12VideoEncodeCommandList4 * This,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
+ _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments);
+
+ END_INTERFACE
+ } ID3D12VideoEncodeCommandList4Vtbl;
+
+ interface ID3D12VideoEncodeCommandList4
+ {
+ CONST_VTBL struct ID3D12VideoEncodeCommandList4Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3D12VideoEncodeCommandList4_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3D12VideoEncodeCommandList4_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3D12VideoEncodeCommandList4_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3D12VideoEncodeCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
+ ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList4_SetPrivateData(This,guid,DataSize,pData) \
+ ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
+
+#define ID3D12VideoEncodeCommandList4_SetPrivateDataInterface(This,guid,pData) \
+ ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
+
+#define ID3D12VideoEncodeCommandList4_SetName(This,Name) \
+ ( (This)->lpVtbl -> SetName(This,Name) )
+
+
+#define ID3D12VideoEncodeCommandList4_GetDevice(This,riid,ppvDevice) \
+ ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
+
+
+#define ID3D12VideoEncodeCommandList4_GetType(This) \
+ ( (This)->lpVtbl -> GetType(This) )
+
+
+#define ID3D12VideoEncodeCommandList4_Close(This) \
+ ( (This)->lpVtbl -> Close(This) )
+
+#define ID3D12VideoEncodeCommandList4_Reset(This,pAllocator) \
+ ( (This)->lpVtbl -> Reset(This,pAllocator) )
+
+#define ID3D12VideoEncodeCommandList4_ClearState(This) \
+ ( (This)->lpVtbl -> ClearState(This) )
+
+#define ID3D12VideoEncodeCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
+ ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
+
+#define ID3D12VideoEncodeCommandList4_DiscardResource(This,pResource,pRegion) \
+ ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
+
+#define ID3D12VideoEncodeCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
+ ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
+ ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
+
+#define ID3D12VideoEncodeCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
+ ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
+
+#define ID3D12VideoEncodeCommandList4_SetMarker(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList4_BeginEvent(This,Metadata,pData,Size) \
+ ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
+
+#define ID3D12VideoEncodeCommandList4_EndEvent(This) \
+ ( (This)->lpVtbl -> EndEvent(This) )
+
+#define ID3D12VideoEncodeCommandList4_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
+ ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
+ ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
+
+#define ID3D12VideoEncodeCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
+ ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
+
+
+#define ID3D12VideoEncodeCommandList4_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
+ ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
+
+#define ID3D12VideoEncodeCommandList4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
+ ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
+
+
+#define ID3D12VideoEncodeCommandList4_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
+
+
+#define ID3D12VideoEncodeCommandList4_Barrier(This,NumBarrierGroups,pBarrierGroups) \
+ ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
+
+
+#define ID3D12VideoEncodeCommandList4_EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) )
+
+#define ID3D12VideoEncodeCommandList4_ResolveInputParamLayout(This,pInputArguments,pOutputArguments) \
+ ( (This)->lpVtbl -> ResolveInputParamLayout(This,pInputArguments,pOutputArguments) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12video_0000_0030 */
+/* [local] */
+
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
#pragma endregion
DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
@@ -9183,10 +10705,13 @@ DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0
DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
+DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
+DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
+DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
-extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_s_ifspec;
/* Additional Prototypes for ALL interfaces */
diff --git a/thirdparty/directx_headers/include/directx/d3dcommon.h b/thirdparty/directx_headers/include/directx/d3dcommon.h
index 974f205a604..2e2418dc166 100644
--- a/thirdparty/directx_headers/include/directx/d3dcommon.h
+++ b/thirdparty/directx_headers/include/directx/d3dcommon.h
@@ -390,6 +390,10 @@ enum D3D_SRV_DIMENSION
#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000
#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000
+#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
+#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull
+#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull
+#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull
typedef struct _D3D_SHADER_MACRO
{
LPCSTR Name;
@@ -961,10 +965,22 @@ enum D3D_REGISTER_COMPONENT_TYPE
D3D_REGISTER_COMPONENT_UINT32 = 1,
D3D_REGISTER_COMPONENT_SINT32 = 2,
D3D_REGISTER_COMPONENT_FLOAT32 = 3,
+ D3D_REGISTER_COMPONENT_UINT16 = 4,
+ D3D_REGISTER_COMPONENT_SINT16 = 5,
+ D3D_REGISTER_COMPONENT_FLOAT16 = 6,
+ D3D_REGISTER_COMPONENT_UINT64 = 7,
+ D3D_REGISTER_COMPONENT_SINT64 = 8,
+ D3D_REGISTER_COMPONENT_FLOAT64 = 9,
D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
- D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32
+ D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
+ D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
+ D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
+ D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
+ D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
+ D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
+ D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64
} D3D_REGISTER_COMPONENT_TYPE;
typedef
diff --git a/thirdparty/directx_headers/include/directx/d3dshadercacheregistration.h b/thirdparty/directx_headers/include/directx/d3dshadercacheregistration.h
new file mode 100644
index 00000000000..671866a18c2
--- /dev/null
+++ b/thirdparty/directx_headers/include/directx/d3dshadercacheregistration.h
@@ -0,0 +1,998 @@
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 8.01.0628 */
+
+
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 500
+#endif
+
+/* verify that the version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCSAL_H_VERSION__
+#define __REQUIRED_RPCSAL_H_VERSION__ 100
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of
+#endif /* __RPCNDR_H_VERSION__ */
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __d3dshadercacheregistration_h__
+#define __d3dshadercacheregistration_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+#ifndef DECLSPEC_XFGVIRT
+#if defined(_CONTROL_FLOW_GUARD_XFG)
+#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
+#else
+#define DECLSPEC_XFGVIRT(base, func)
+#endif
+#endif
+
+/* Forward Declarations */
+
+#ifndef __ID3DShaderCacheInstallerClient_FWD_DEFINED__
+#define __ID3DShaderCacheInstallerClient_FWD_DEFINED__
+typedef interface ID3DShaderCacheInstallerClient ID3DShaderCacheInstallerClient;
+
+#endif /* __ID3DShaderCacheInstallerClient_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheComponent_FWD_DEFINED__
+#define __ID3DShaderCacheComponent_FWD_DEFINED__
+typedef interface ID3DShaderCacheComponent ID3DShaderCacheComponent;
+
+#endif /* __ID3DShaderCacheComponent_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheApplication_FWD_DEFINED__
+#define __ID3DShaderCacheApplication_FWD_DEFINED__
+typedef interface ID3DShaderCacheApplication ID3DShaderCacheApplication;
+
+#endif /* __ID3DShaderCacheApplication_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheInstaller_FWD_DEFINED__
+#define __ID3DShaderCacheInstaller_FWD_DEFINED__
+typedef interface ID3DShaderCacheInstaller ID3DShaderCacheInstaller;
+
+#endif /* __ID3DShaderCacheInstaller_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheExplorer_FWD_DEFINED__
+#define __ID3DShaderCacheExplorer_FWD_DEFINED__
+typedef interface ID3DShaderCacheExplorer ID3DShaderCacheExplorer;
+
+#endif /* __ID3DShaderCacheExplorer_FWD_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
+#define __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
+typedef interface ID3DShaderCacheInstallerFactory ID3DShaderCacheInstallerFactory;
+
+#endif /* __ID3DShaderCacheInstallerFactory_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0000 */
+/* [local] */
+
+#pragma once
+DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);
+typedef
+enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
+ {
+ D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER = 0,
+ D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM = ( D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER + 1 )
+ } D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
+
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_s_ifspec;
+
+#ifndef __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
+#define __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheInstallerClient */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheInstallerClient;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("a16ee930-d9f6-4222-a514-244473e5d266")
+ ID3DShaderCacheInstallerClient
+ {
+ public:
+ BEGIN_INTERFACE
+ virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
+ _Inout_ SIZE_T *pNameLength,
+ _Out_writes_opt_(*pNameLength) wchar_t *pName) = 0;
+
+ virtual D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE STDMETHODCALLTYPE GetInstallerScope( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE HandleDriverUpdate(
+ _In_ ID3DShaderCacheInstaller *pInstaller) = 0;
+
+ END_INTERFACE
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheInstallerClientVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerName)
+ HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
+ ID3DShaderCacheInstallerClient * This,
+ _Inout_ SIZE_T *pNameLength,
+ _Out_writes_opt_(*pNameLength) wchar_t *pName);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerScope)
+ D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE ( STDMETHODCALLTYPE *GetInstallerScope )(
+ ID3DShaderCacheInstallerClient * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, HandleDriverUpdate)
+ HRESULT ( STDMETHODCALLTYPE *HandleDriverUpdate )(
+ ID3DShaderCacheInstallerClient * This,
+ _In_ ID3DShaderCacheInstaller *pInstaller);
+
+ END_INTERFACE
+ } ID3DShaderCacheInstallerClientVtbl;
+
+ interface ID3DShaderCacheInstallerClient
+ {
+ CONST_VTBL struct ID3DShaderCacheInstallerClientVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheInstallerClient_GetInstallerName(This,pNameLength,pName) \
+ ( (This)->lpVtbl -> GetInstallerName(This,pNameLength,pName) )
+
+#define ID3DShaderCacheInstallerClient_GetInstallerScope(This) \
+ ( (This)->lpVtbl -> GetInstallerScope(This) )
+
+#define ID3DShaderCacheInstallerClient_HandleDriverUpdate(This,pInstaller) \
+ ( (This)->lpVtbl -> HandleDriverUpdate(This,pInstaller) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0001 */
+/* [local] */
+
+typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
+ {
+ const wchar_t *pAdapterFamily;
+ const wchar_t *pPsdbPath;
+ } D3D_SHADER_CACHE_PSDB_PROPERTIES;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_s_ifspec;
+
+#ifndef __ID3DShaderCacheComponent_INTERFACE_DEFINED__
+#define __ID3DShaderCacheComponent_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheComponent */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheComponent;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828")
+ ID3DShaderCacheComponent : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetComponentName(
+ _Out_ const wchar_t **pName) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetStateObjectDatabasePath(
+ _Out_ const wchar_t **pPath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrecompiledCachePath(
+ _In_ const wchar_t *pAdapterFamily,
+ _Inout_ const wchar_t **pPath) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetPrecompiledShaderDatabaseCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrecompiledShaderDatabases(
+ UINT ArraySize,
+ _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheComponentVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheComponent * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheComponent * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheComponent * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetComponentName)
+ HRESULT ( STDMETHODCALLTYPE *GetComponentName )(
+ ID3DShaderCacheComponent * This,
+ _Out_ const wchar_t **pName);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetStateObjectDatabasePath)
+ HRESULT ( STDMETHODCALLTYPE *GetStateObjectDatabasePath )(
+ ID3DShaderCacheComponent * This,
+ _Out_ const wchar_t **pPath);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledCachePath)
+ HRESULT ( STDMETHODCALLTYPE *GetPrecompiledCachePath )(
+ ID3DShaderCacheComponent * This,
+ _In_ const wchar_t *pAdapterFamily,
+ _Inout_ const wchar_t **pPath);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabaseCount)
+ UINT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabaseCount )(
+ ID3DShaderCacheComponent * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabases)
+ HRESULT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabases )(
+ ID3DShaderCacheComponent * This,
+ UINT ArraySize,
+ _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs);
+
+ END_INTERFACE
+ } ID3DShaderCacheComponentVtbl;
+
+ interface ID3DShaderCacheComponent
+ {
+ CONST_VTBL struct ID3DShaderCacheComponentVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheComponent_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheComponent_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheComponent_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheComponent_GetComponentName(This,pName) \
+ ( (This)->lpVtbl -> GetComponentName(This,pName) )
+
+#define ID3DShaderCacheComponent_GetStateObjectDatabasePath(This,pPath) \
+ ( (This)->lpVtbl -> GetStateObjectDatabasePath(This,pPath) )
+
+#define ID3DShaderCacheComponent_GetPrecompiledCachePath(This,pAdapterFamily,pPath) \
+ ( (This)->lpVtbl -> GetPrecompiledCachePath(This,pAdapterFamily,pPath) )
+
+#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabaseCount(This) \
+ ( (This)->lpVtbl -> GetPrecompiledShaderDatabaseCount(This) )
+
+#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) \
+ ( (This)->lpVtbl -> GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheComponent_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0002 */
+/* [local] */
+
+typedef
+enum D3D_SHADER_CACHE_TARGET_FLAGS
+ {
+ D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0
+ } D3D_SHADER_CACHE_TARGET_FLAGS;
+
+DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )
+typedef union D3D_VERSION_NUMBER
+ {
+ UINT64 Version;
+ UINT16 VersionParts[ 4 ];
+ } D3D_VERSION_NUMBER;
+
+typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
+ {
+ wchar_t szAdapterFamily[ 128 ];
+ UINT64 MinimumABISupportVersion;
+ UINT64 MaximumABISupportVersion;
+ D3D_VERSION_NUMBER CompilerVersion;
+ D3D_VERSION_NUMBER ApplicationProfileVersion;
+ } D3D_SHADER_CACHE_COMPILER_PROPERTIES;
+
+typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
+ {
+ const wchar_t *pExeFilename;
+ const wchar_t *pName;
+ D3D_VERSION_NUMBER Version;
+ const wchar_t *pEngineName;
+ D3D_VERSION_NUMBER EngineVersion;
+ } D3D_SHADER_CACHE_APPLICATION_DESC;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_s_ifspec;
+
+#ifndef __ID3DShaderCacheApplication_INTERFACE_DEFINED__
+#define __ID3DShaderCacheApplication_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheApplication */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheApplication;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("fc688ee2-1b35-4913-93be-1ca3fa7df39e")
+ ID3DShaderCacheApplication : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetExePath(
+ _Out_ const wchar_t **pExePath) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetDesc(
+ _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterComponent(
+ _In_ const wchar_t *pName,
+ _In_ const wchar_t *pStateObjectDBPath,
+ _In_ UINT NumPSDB,
+ _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
+ REFIID riid,
+ _COM_Outptr_ void **ppvComponent) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveComponent(
+ _In_ ID3DShaderCacheComponent *pComponent) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetComponentCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetComponent(
+ _In_ UINT index,
+ REFIID riid,
+ _COM_Outptr_ void **ppvComponent) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetPrecompileTargetCount(
+ D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
+ _In_ UINT ArraySize,
+ _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
+ _Out_ const wchar_t **pInstallerName) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheApplicationVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheApplication * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheApplication * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheApplication * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetExePath)
+ HRESULT ( STDMETHODCALLTYPE *GetExePath )(
+ ID3DShaderCacheApplication * This,
+ _Out_ const wchar_t **pExePath);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetDesc)
+ HRESULT ( STDMETHODCALLTYPE *GetDesc )(
+ ID3DShaderCacheApplication * This,
+ _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RegisterComponent)
+ HRESULT ( STDMETHODCALLTYPE *RegisterComponent )(
+ ID3DShaderCacheApplication * This,
+ _In_ const wchar_t *pName,
+ _In_ const wchar_t *pStateObjectDBPath,
+ _In_ UINT NumPSDB,
+ _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
+ REFIID riid,
+ _COM_Outptr_ void **ppvComponent);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RemoveComponent)
+ HRESULT ( STDMETHODCALLTYPE *RemoveComponent )(
+ ID3DShaderCacheApplication * This,
+ _In_ ID3DShaderCacheComponent *pComponent);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponentCount)
+ UINT ( STDMETHODCALLTYPE *GetComponentCount )(
+ ID3DShaderCacheApplication * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponent)
+ HRESULT ( STDMETHODCALLTYPE *GetComponent )(
+ ID3DShaderCacheApplication * This,
+ _In_ UINT index,
+ REFIID riid,
+ _COM_Outptr_ void **ppvComponent);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargetCount)
+ UINT ( STDMETHODCALLTYPE *GetPrecompileTargetCount )(
+ ID3DShaderCacheApplication * This,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargets)
+ HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
+ ID3DShaderCacheApplication * This,
+ _In_ UINT ArraySize,
+ _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetInstallerName)
+ HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
+ ID3DShaderCacheApplication * This,
+ _Out_ const wchar_t **pInstallerName);
+
+ END_INTERFACE
+ } ID3DShaderCacheApplicationVtbl;
+
+ interface ID3DShaderCacheApplication
+ {
+ CONST_VTBL struct ID3DShaderCacheApplicationVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheApplication_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheApplication_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheApplication_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheApplication_GetExePath(This,pExePath) \
+ ( (This)->lpVtbl -> GetExePath(This,pExePath) )
+
+#define ID3DShaderCacheApplication_GetDesc(This,pApplicationDesc) \
+ ( (This)->lpVtbl -> GetDesc(This,pApplicationDesc) )
+
+#define ID3DShaderCacheApplication_RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) \
+ ( (This)->lpVtbl -> RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) )
+
+#define ID3DShaderCacheApplication_RemoveComponent(This,pComponent) \
+ ( (This)->lpVtbl -> RemoveComponent(This,pComponent) )
+
+#define ID3DShaderCacheApplication_GetComponentCount(This) \
+ ( (This)->lpVtbl -> GetComponentCount(This) )
+
+#define ID3DShaderCacheApplication_GetComponent(This,index,riid,ppvComponent) \
+ ( (This)->lpVtbl -> GetComponent(This,index,riid,ppvComponent) )
+
+#define ID3DShaderCacheApplication_GetPrecompileTargetCount(This,flags) \
+ ( (This)->lpVtbl -> GetPrecompileTargetCount(This,flags) )
+
+#define ID3DShaderCacheApplication_GetPrecompileTargets(This,ArraySize,pArray,flags) \
+ ( (This)->lpVtbl -> GetPrecompileTargets(This,ArraySize,pArray,flags) )
+
+#define ID3DShaderCacheApplication_GetInstallerName(This,pInstallerName) \
+ ( (This)->lpVtbl -> GetInstallerName(This,pInstallerName) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheApplication_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0003 */
+/* [local] */
+
+typedef struct SC_HANDLE__ *SC_HANDLE;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_s_ifspec;
+
+#ifndef __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
+#define __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheInstaller */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheInstaller;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("bbe30de1-6318-4526-ae17-776693191bb4")
+ ID3DShaderCacheInstaller : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE RegisterDriverUpdateListener( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnregisterDriverUpdateListener( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterServiceDriverUpdateTrigger(
+ SC_HANDLE hServiceHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE UnregisterServiceDriverUpdateTrigger(
+ SC_HANDLE hServiceHandle) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RegisterApplication(
+ _In_ const wchar_t *pExePath,
+ _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE RemoveApplication(
+ _In_ ID3DShaderCacheApplication *pApplication) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetApplicationCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetApplication(
+ _In_ UINT index,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE ClearAllState( void) = 0;
+
+ virtual UINT STDMETHODCALLTYPE GetMaxPrecompileTargetCount( void) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
+ _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
+ _Inout_ UINT *pArraySize,
+ _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheInstallerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheInstaller * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterDriverUpdateListener)
+ HRESULT ( STDMETHODCALLTYPE *RegisterDriverUpdateListener )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterDriverUpdateListener)
+ HRESULT ( STDMETHODCALLTYPE *UnregisterDriverUpdateListener )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterServiceDriverUpdateTrigger)
+ HRESULT ( STDMETHODCALLTYPE *RegisterServiceDriverUpdateTrigger )(
+ ID3DShaderCacheInstaller * This,
+ SC_HANDLE hServiceHandle);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterServiceDriverUpdateTrigger)
+ HRESULT ( STDMETHODCALLTYPE *UnregisterServiceDriverUpdateTrigger )(
+ ID3DShaderCacheInstaller * This,
+ SC_HANDLE hServiceHandle);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterApplication)
+ HRESULT ( STDMETHODCALLTYPE *RegisterApplication )(
+ ID3DShaderCacheInstaller * This,
+ _In_ const wchar_t *pExePath,
+ _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RemoveApplication)
+ HRESULT ( STDMETHODCALLTYPE *RemoveApplication )(
+ ID3DShaderCacheInstaller * This,
+ _In_ ID3DShaderCacheApplication *pApplication);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplicationCount)
+ UINT ( STDMETHODCALLTYPE *GetApplicationCount )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplication)
+ HRESULT ( STDMETHODCALLTYPE *GetApplication )(
+ ID3DShaderCacheInstaller * This,
+ _In_ UINT index,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, ClearAllState)
+ HRESULT ( STDMETHODCALLTYPE *ClearAllState )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetMaxPrecompileTargetCount)
+ UINT ( STDMETHODCALLTYPE *GetMaxPrecompileTargetCount )(
+ ID3DShaderCacheInstaller * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetPrecompileTargets)
+ HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
+ ID3DShaderCacheInstaller * This,
+ _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
+ _Inout_ UINT *pArraySize,
+ _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
+ D3D_SHADER_CACHE_TARGET_FLAGS flags);
+
+ END_INTERFACE
+ } ID3DShaderCacheInstallerVtbl;
+
+ interface ID3DShaderCacheInstaller
+ {
+ CONST_VTBL struct ID3DShaderCacheInstallerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheInstaller_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheInstaller_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheInstaller_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheInstaller_RegisterDriverUpdateListener(This) \
+ ( (This)->lpVtbl -> RegisterDriverUpdateListener(This) )
+
+#define ID3DShaderCacheInstaller_UnregisterDriverUpdateListener(This) \
+ ( (This)->lpVtbl -> UnregisterDriverUpdateListener(This) )
+
+#define ID3DShaderCacheInstaller_RegisterServiceDriverUpdateTrigger(This,hServiceHandle) \
+ ( (This)->lpVtbl -> RegisterServiceDriverUpdateTrigger(This,hServiceHandle) )
+
+#define ID3DShaderCacheInstaller_UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) \
+ ( (This)->lpVtbl -> UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) )
+
+#define ID3DShaderCacheInstaller_RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) \
+ ( (This)->lpVtbl -> RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) )
+
+#define ID3DShaderCacheInstaller_RemoveApplication(This,pApplication) \
+ ( (This)->lpVtbl -> RemoveApplication(This,pApplication) )
+
+#define ID3DShaderCacheInstaller_GetApplicationCount(This) \
+ ( (This)->lpVtbl -> GetApplicationCount(This) )
+
+#define ID3DShaderCacheInstaller_GetApplication(This,index,riid,ppvApp) \
+ ( (This)->lpVtbl -> GetApplication(This,index,riid,ppvApp) )
+
+#define ID3DShaderCacheInstaller_ClearAllState(This) \
+ ( (This)->lpVtbl -> ClearAllState(This) )
+
+#define ID3DShaderCacheInstaller_GetMaxPrecompileTargetCount(This) \
+ ( (This)->lpVtbl -> GetMaxPrecompileTargetCount(This) )
+
+#define ID3DShaderCacheInstaller_GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) \
+ ( (This)->lpVtbl -> GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheInstaller_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
+#define __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheExplorer */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheExplorer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("90432322-32f5-487f-9264-e9390fa58b2a")
+ ID3DShaderCacheExplorer : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetApplicationFromExePath(
+ _In_ const wchar_t *pFullExePath,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheExplorerVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheExplorer * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheExplorer * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheExplorer * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheExplorer, GetApplicationFromExePath)
+ HRESULT ( STDMETHODCALLTYPE *GetApplicationFromExePath )(
+ ID3DShaderCacheExplorer * This,
+ _In_ const wchar_t *pFullExePath,
+ REFIID riid,
+ _COM_Outptr_ void **ppvApp);
+
+ END_INTERFACE
+ } ID3DShaderCacheExplorerVtbl;
+
+ interface ID3DShaderCacheExplorer
+ {
+ CONST_VTBL struct ID3DShaderCacheExplorerVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheExplorer_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheExplorer_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheExplorer_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheExplorer_GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) \
+ ( (This)->lpVtbl -> GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheExplorer_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
+#define __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
+
+/* interface ID3DShaderCacheInstallerFactory */
+/* [unique][local][object][uuid] */
+
+
+EXTERN_C const IID IID_ID3DShaderCacheInstallerFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("09b2dfe4-840f-401a-804c-0dd8aadc9e9f")
+ ID3DShaderCacheInstallerFactory : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE CreateInstaller(
+ _In_ ID3DShaderCacheInstallerClient *pClient,
+ REFIID riid,
+ _COM_Outptr_ void **ppvInstaller) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE CreateExplorer(
+ IUnknown *pUnknown,
+ REFIID riid,
+ _COM_Outptr_ void **ppvExplorer) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ID3DShaderCacheInstallerFactoryVtbl
+ {
+ BEGIN_INTERFACE
+
+ DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ID3DShaderCacheInstallerFactory * This,
+ REFIID riid,
+ _COM_Outptr_ void **ppvObject);
+
+ DECLSPEC_XFGVIRT(IUnknown, AddRef)
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ID3DShaderCacheInstallerFactory * This);
+
+ DECLSPEC_XFGVIRT(IUnknown, Release)
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ID3DShaderCacheInstallerFactory * This);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateInstaller)
+ HRESULT ( STDMETHODCALLTYPE *CreateInstaller )(
+ ID3DShaderCacheInstallerFactory * This,
+ _In_ ID3DShaderCacheInstallerClient *pClient,
+ REFIID riid,
+ _COM_Outptr_ void **ppvInstaller);
+
+ DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateExplorer)
+ HRESULT ( STDMETHODCALLTYPE *CreateExplorer )(
+ ID3DShaderCacheInstallerFactory * This,
+ IUnknown *pUnknown,
+ REFIID riid,
+ _COM_Outptr_ void **ppvExplorer);
+
+ END_INTERFACE
+ } ID3DShaderCacheInstallerFactoryVtbl;
+
+ interface ID3DShaderCacheInstallerFactory
+ {
+ CONST_VTBL struct ID3DShaderCacheInstallerFactoryVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ID3DShaderCacheInstallerFactory_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ID3DShaderCacheInstallerFactory_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ID3DShaderCacheInstallerFactory_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ID3DShaderCacheInstallerFactory_CreateInstaller(This,pClient,riid,ppvInstaller) \
+ ( (This)->lpVtbl -> CreateInstaller(This,pClient,riid,ppvInstaller) )
+
+#define ID3DShaderCacheInstallerFactory_CreateExplorer(This,pUnknown,riid,ppvExplorer) \
+ ( (This)->lpVtbl -> CreateExplorer(This,pUnknown,riid,ppvExplorer) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3dshadercacheregistration_0000_0006 */
+/* [local] */
+
+DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);
+DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);
+DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);
+DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);
+DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);
+DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);
+
+
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_s_ifspec;
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/thirdparty/directx_headers/include/directx/d3dx12.h b/thirdparty/directx_headers/include/directx/d3dx12.h
index 1187816c1e4..e8ec24e379b 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12.h
@@ -33,3 +33,4 @@
#endif //__D3DX12_H__
+
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_barriers.h b/thirdparty/directx_headers/include/directx/d3dx12_barriers.h
index 2c2b135a62c..1bd7a749779 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_barriers.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_barriers.h
@@ -190,3 +190,4 @@ public:
#endif // defined( __cplusplus )
#endif // __D3DX12_BARRIERS_H__
+
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_check_feature_support.h b/thirdparty/directx_headers/include/directx/d3dx12_check_feature_support.h
index 433a4ee79ad..725fb7fbbee 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_check_feature_support.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_check_feature_support.h
@@ -1,4 +1,4 @@
-//*********************************************************
+//*********************************************************
//
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License (MIT).
@@ -231,6 +231,15 @@ public: // Function declaration
BOOL ComputeOnlyWriteWatchSupported() const noexcept;
#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier() const noexcept;
+ D3D12_WORK_GRAPHS_TIER WorkGraphsTier() const noexcept;
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+ D3D12_TIGHT_ALIGNMENT_TIER TightAlignmentSupportTier() const noexcept;
+#endif
+
private: // Private structs and helpers declaration
struct ProtectedResourceSessionTypesLocal : D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
{
@@ -317,6 +326,12 @@ private: // Member data
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
D3D12_FEATURE_DATA_D3D12_OPTIONS20 m_dOptions20;
#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ D3D12_FEATURE_DATA_D3D12_OPTIONS21 m_dOptions21;
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+ D3D12_FEATURE_DATA_TIGHT_ALIGNMENT m_dTightAlignment;
+#endif
};
// Implementations for CD3DX12FeatureSupport functions
@@ -408,6 +423,12 @@ inline CD3DX12FeatureSupport::CD3DX12FeatureSupport() noexcept
#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
, m_dOptions20{}
#endif
+#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+, m_dOptions21{}
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+, m_dTightAlignment{}
+#endif
{}
inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
@@ -576,6 +597,20 @@ inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
}
#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS21, &m_dOptions21, sizeof(m_dOptions21))))
+ {
+ m_dOptions21 = {};
+ }
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+ if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT, &m_dTightAlignment, sizeof(m_dTightAlignment))))
+ {
+ m_dTightAlignment = {};
+ }
+#endif
+
// Initialize per-node feature support data structures
const UINT uNodeCount = m_pDevice->GetNodeCount();
m_dProtectedResourceSessionSupport.resize(uNodeCount);
@@ -948,6 +983,17 @@ FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxViewDescriptorHeapSize);
FEATURE_SUPPORT_GET(BOOL, m_dOptions20, ComputeOnlyWriteWatchSupported);
#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+// 50: Options21
+FEATURE_SUPPORT_GET(D3D12_EXECUTE_INDIRECT_TIER, m_dOptions21, ExecuteIndirectTier);
+FEATURE_SUPPORT_GET(D3D12_WORK_GRAPHS_TIER, m_dOptions21, WorkGraphsTier);
+#endif
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
+// 51: TightAlignment
+FEATURE_SUPPORT_GET_NAME(D3D12_TIGHT_ALIGNMENT_TIER, m_dTightAlignment, SupportTier, TightAlignmentSupportTier);
+#endif
+
// Helper function to decide the highest shader model supported by the system
// Stores the result in m_dShaderModel
// Must be updated whenever a new shader model is added to the d3d12.h header
@@ -958,6 +1004,9 @@ inline HRESULT CD3DX12FeatureSupport::QueryHighestShaderModel()
const D3D_SHADER_MODEL allModelVersions[] =
{
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ D3D_SHADER_MODEL_6_9,
+#endif
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
D3D_SHADER_MODEL_6_8,
#endif
@@ -1054,8 +1103,12 @@ inline HRESULT CD3DX12FeatureSupport::QueryHighestFeatureLevel()
D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_1,
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 5)
D3D_FEATURE_LEVEL_1_0_CORE,
+#endif
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
D3D_FEATURE_LEVEL_1_0_GENERIC
+#endif
};
D3D12_FEATURE_DATA_FEATURE_LEVELS dFeatureLevel;
@@ -1105,3 +1158,5 @@ inline HRESULT CD3DX12FeatureSupport::QueryProtectedResourceSessionTypes(UINT No
#undef FEATURE_SUPPORT_GET_NODE_INDEXED_NAME
// end CD3DX12FeatureSupport
+
+
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_core.h b/thirdparty/directx_headers/include/directx/d3dx12_core.h
index 593f7637a32..092a039a943 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_core.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_core.h
@@ -35,6 +35,126 @@ inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * p
return reinterpret_cast(pp);
}
+#ifdef D3DX12_USE_ARRAY_COM_PTR
+#include
+//------------------------------------------------------------------------------------------------
+// CArrayComPtr - Useful RAII container of raw IUnknown pointers.
+template
+class CArrayComPtr
+{
+ std::vector<_T *> m_array;
+
+public:
+ class CProxyPtr
+ {
+ _T *&pObj;
+
+ CProxyPtr(_T *&obj) :
+ pObj(obj) {}
+
+ public:
+ operator _T*() { return pObj; }
+ _T **operator&() { return &pObj; }
+ CProxyPtr &operator=(_T*&obj)
+ {
+ if(pObj)
+ pObj->Release();
+
+ pObj = obj;
+
+ if(pObj)
+ pObj->AddRef();
+ }
+
+ friend class CArrayComPtr<_T>;
+ };
+
+public:
+ CArrayComPtr() = default;
+
+ CArrayComPtr(size_t size) :
+ m_array(size) {
+ }
+
+ CArrayComPtr(const CArrayComPtr &o)
+ {
+ m_array = o.m_array;
+ for (size_t i = 0; i < m_array.size(); ++i)
+ {
+ m_array[i]->AddRef();
+ }
+ }
+
+ CArrayComPtr(CArrayComPtr &&o) = default;
+
+ ~CArrayComPtr()
+ {
+ for (auto ptr : m_array)
+ {
+ if (ptr)
+ {
+ ptr->Release();
+ }
+ }
+ }
+
+ _T *const *Get() { return m_array.data(); }
+
+ void Assign(size_t index, _T *ptr)
+ {
+ if (index >= m_array.size())
+ {
+ Resize(index + 1);
+ }
+
+ // Release the old pointer if it exists
+ if (m_array[index])
+ {
+ m_array[index]->Release();
+ }
+
+ // Assign the new pointer and AddRef it if not null
+ m_array[index] = ptr;
+ if (ptr)
+ {
+ ptr->AddRef();
+ }
+ }
+
+ void Resize(size_t size)
+ {
+ // If shrinking, release any pointers that will be discarded
+ if (size < m_array.size())
+ {
+ for (size_t i = size; i < m_array.size(); ++i)
+ {
+ if (m_array[i])
+ {
+ m_array[i]->Release();
+ }
+ }
+ }
+
+ // Resize the vector, initializing new elements to nullptr
+ m_array.resize(size, nullptr);
+ }
+
+ void PushBack(_T *ptr)
+ {
+ // AddRef if not null
+ if (ptr)
+ {
+ ptr->AddRef();
+ }
+ m_array.push_back(ptr);
+ }
+
+ CProxyPtr operator[](size_t index)
+ {
+ return CProxyPtr(m_array[index]);
+ }
+};
+#endif
//------------------------------------------------------------------------------------------------
inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
{
@@ -721,7 +841,7 @@ struct CD3DX12_RASTERIZER_DESC2 : public D3D12_RASTERIZER_DESC2
}
operator D3D12_RASTERIZER_DESC() const noexcept
{
- return (D3D12_RASTERIZER_DESC)CD3DX12_RASTERIZER_DESC1((D3D12_RASTERIZER_DESC1)*this);
+ return static_cast(CD3DX12_RASTERIZER_DESC1(static_cast(*this)));
}
};
#endif // D3D12_SDK_VERSION >= 610
@@ -1446,7 +1566,9 @@ inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC
// If expansion has occured, returns LclDesc, else returns the original pDesc
inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
CD3DX12_RESOURCE_DESC1& LclDesc,
- const CD3DX12_RESOURCE_DESC1* pDesc)
+ const CD3DX12_RESOURCE_DESC1* pDesc,
+ const bool tightAlignmentSupported = false,
+ const bool alignAsCommitted = false)
{
// Expand mip levels:
if (pDesc->MipLevels == 0 || pDesc->Alignment == 0)
@@ -1464,7 +1586,7 @@ inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
}
return uiRet;
};
- auto Max = [](UINT64 const & a, UINT64 const & b)
+ auto Max = [](UINT64 const& a, UINT64 const& b)
{
return (a < b) ? b : a;
};
@@ -1481,11 +1603,20 @@ inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
{
LclDesc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
}
+ else if (!(tightAlignmentSupported && (pDesc->Flags & D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT))
+ || (pDesc->Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER))
+ {
+ LclDesc.Alignment =
+ (pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
+ }
else
{
- LclDesc.Alignment =
- (pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
- }
+ // Tight alignment is supported and we aren't a cross adapter resource, now just need to set the alignment field to the minimum alignment for each type
+ if(alignAsCommitted)
+ LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT;
+ else
+ LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT;
+ }
}
return &LclDesc;
}
@@ -1495,6 +1626,390 @@ inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
}
}
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_SHADER_RESOURCE_VIEW_DESC : public D3D12_SHADER_RESOURCE_VIEW_DESC
+{
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC() = default;
+ explicit CD3DX12_SHADER_RESOURCE_VIEW_DESC( const D3D12_SHADER_RESOURCE_VIEW_DESC& o ) noexcept :
+ D3D12_SHADER_RESOURCE_VIEW_DESC(o)
+ {}
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC StructuredBuffer(
+ UINT NumElements,
+ UINT StructureByteStride,
+ UINT64 FirstElement = 0) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_UNKNOWN;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
+ desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = StructureByteStride;
+ desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RawBuffer(
+ UINT NumElements,
+ UINT64 FirstElement = 0) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_R32_UINT;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
+ desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = 0;
+ desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_RAW;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TypedBuffer(
+ DXGI_FORMAT Format,
+ UINT NumElements,
+ UINT64 FirstElement = 0,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = 0;
+ desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1D(
+ DXGI_FORMAT Format,
+ UINT MipLevels = -1,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1D;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture1D.MostDetailedMip = MostDetailedMip;
+ desc.Texture1D.MipLevels = MipLevels;
+ desc.Texture1D.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1DArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT MipLevels = -1,
+ UINT FirstArraySlice = 0,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1DARRAY;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture1DArray.MostDetailedMip = MostDetailedMip;
+ desc.Texture1DArray.MipLevels = MipLevels;
+ desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture1DArray.ArraySize = ArraySize;
+ desc.Texture1DArray.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2D(
+ DXGI_FORMAT Format,
+ UINT MipLevels = -1,
+ UINT MostDetailedMip = 0,
+ UINT PlaneSlice = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture2D.MostDetailedMip = MostDetailedMip;
+ desc.Texture2D.MipLevels = MipLevels;
+ desc.Texture2D.PlaneSlice = PlaneSlice;
+ desc.Texture2D.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT MipLevels = -1,
+ UINT FirstArraySlice = 0,
+ UINT MostDetailedMip = 0,
+ UINT PlaneSlice = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture2DArray.MostDetailedMip = MostDetailedMip;
+ desc.Texture2DArray.MipLevels = MipLevels;
+ desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture2DArray.ArraySize = ArraySize;
+ desc.Texture2DArray.PlaneSlice = PlaneSlice;
+ desc.Texture2DArray.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMS(
+ DXGI_FORMAT Format,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMS;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ // desc.Texture2DMS.UnusedField_NothingToDefine = 0;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMSArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize,
+ UINT FirstArraySlice = 0,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture2DMSArray.ArraySize = ArraySize;
+ desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex3D(
+ DXGI_FORMAT Format,
+ UINT MipLevels = -1,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE3D;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.Texture3D.MostDetailedMip = MostDetailedMip;
+ desc.Texture3D.MipLevels = MipLevels;
+ desc.Texture3D.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCube(
+ DXGI_FORMAT Format,
+ UINT MipLevels = -1,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBE;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.TextureCube.MostDetailedMip = MostDetailedMip;
+ desc.TextureCube.MipLevels = MipLevels;
+ desc.TextureCube.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCubeArray(
+ DXGI_FORMAT Format,
+ UINT NumCubes,
+ UINT MipLevels = -1,
+ UINT First2DArrayFace = 0,
+ UINT MostDetailedMip = 0,
+ FLOAT ResourceMinLODClamp = 0.0f,
+ UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBEARRAY;
+ desc.Shader4ComponentMapping = Shader4ComponentMapping;
+ desc.TextureCubeArray.NumCubes = NumCubes;
+ desc.TextureCubeArray.MostDetailedMip = MostDetailedMip;
+ desc.TextureCubeArray.MipLevels = MipLevels;
+ desc.TextureCubeArray.First2DArrayFace = First2DArrayFace;
+ desc.TextureCubeArray.ResourceMinLODClamp = ResourceMinLODClamp;
+ return desc;
+ }
+
+ static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RaytracingAccelStruct(
+ D3D12_GPU_VIRTUAL_ADDRESS Location) noexcept
+ {
+ CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_UNKNOWN;
+ desc.ViewDimension = D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE;
+ desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+ desc.RaytracingAccelerationStructure.Location = Location;
+ return desc;
+ }
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_UNORDERED_ACCESS_VIEW_DESC : public D3D12_UNORDERED_ACCESS_VIEW_DESC
+{
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC() = default;
+ explicit CD3DX12_UNORDERED_ACCESS_VIEW_DESC( const D3D12_UNORDERED_ACCESS_VIEW_DESC& o ) noexcept :
+ D3D12_UNORDERED_ACCESS_VIEW_DESC(o)
+ {}
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC StructuredBuffer(
+ UINT NumElements,
+ UINT StructureByteStride,
+ UINT64 FirstElement = 0,
+ UINT64 CounterOffsetInBytes = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_UNKNOWN;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = StructureByteStride;
+ desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
+ desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC RawBuffer(
+ UINT NumElements,
+ UINT64 FirstElement = 0,
+ UINT64 CounterOffsetInBytes = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = DXGI_FORMAT_R32_UINT;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = 0;
+ desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_RAW;
+ desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC TypedBuffer(
+ DXGI_FORMAT Format,
+ UINT NumElements,
+ UINT64 FirstElement = 0,
+ UINT64 CounterOffsetInBytes = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
+ desc.Buffer.FirstElement = FirstElement;
+ desc.Buffer.NumElements = NumElements;
+ desc.Buffer.StructureByteStride = 0;
+ desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
+ desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1D(
+ DXGI_FORMAT Format,
+ UINT MipSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1D;
+ desc.Texture1D.MipSlice = MipSlice;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1DArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT FirstArraySlice = 0,
+ UINT MipSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1DARRAY;
+ desc.Texture1DArray.MipSlice = MipSlice;
+ desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture1DArray.ArraySize = ArraySize;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2D(
+ DXGI_FORMAT Format,
+ UINT MipSlice = 0,
+ UINT PlaneSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D;
+ desc.Texture2D.MipSlice = MipSlice;
+ desc.Texture2D.PlaneSlice = PlaneSlice;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT FirstArraySlice = 0,
+ UINT MipSlice = 0,
+ UINT PlaneSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DARRAY;
+ desc.Texture2DArray.MipSlice = MipSlice;
+ desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture2DArray.ArraySize = ArraySize;
+ desc.Texture2DArray.PlaneSlice = PlaneSlice;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMS(
+ DXGI_FORMAT Format) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMS;
+ //desc.Texture2DMS.UnusedField_NothingToDefine = 0;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMSArray(
+ DXGI_FORMAT Format,
+ UINT ArraySize = -1,
+ UINT FirstArraySlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY;
+ desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
+ desc.Texture2DMSArray.ArraySize = ArraySize;
+ return desc;
+ }
+
+ static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex3D(
+ DXGI_FORMAT Format,
+ UINT WSize = -1,
+ UINT FirstWSlice = 0,
+ UINT MipSlice = 0) noexcept
+ {
+ CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
+ desc.Format = Format;
+ desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE3D;
+ desc.Texture3D.MipSlice = MipSlice;
+ desc.Texture3D.FirstWSlice = FirstWSlice;
+ desc.Texture3D.WSize = WSize;
+ return desc;
+ }
+};
+
//------------------------------------------------------------------------------------------------
struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
{
@@ -1532,4 +2047,26 @@ struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
memcpy(RTFormats, pFormats, sizeof(RTFormats));
// assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
}
-};
\ No newline at end of file
+};
+
+//------------------------------------------------------------------------------------------------
+struct CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC : public D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
+{
+ CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC() = default;
+ explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& o) noexcept :
+ D3D12_SERIALIZED_ROOT_SIGNATURE_DESC(o)
+ {
+ }
+ explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( CD3DX12_DEFAULT ) noexcept
+ {
+ pSerializedBlob = nullptr;
+ SerializedBlobSizeInBytes = 0;
+ }
+ explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( const void* pData, SIZE_T size) noexcept
+ {
+ pSerializedBlob = pData;
+ SerializedBlobSizeInBytes = size;
+ }
+};
+
+
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_pipeline_state_stream.h b/thirdparty/directx_headers/include/directx/d3dx12_pipeline_state_stream.h
index 27c7f204485..456583bb7e6 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_pipeline_state_stream.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_pipeline_state_stream.h
@@ -11,8 +11,8 @@
#error D3DX12 requires C++
#endif
-#include "d3d12.h"
#include "d3dx12_default.h"
+#include "d3d12.h"
#include "d3dx12_core.h"
//------------------------------------------------------------------------------------------------
@@ -25,7 +25,7 @@
struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
-#if defined(_MSC_VER)
+#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable : 4324)
#endif
@@ -44,7 +44,7 @@ public:
InnerStructType* operator&() noexcept { return &pssInner; }
InnerStructType const* operator&() const noexcept { return &pssInner; }
};
-#if defined(_MSC_VER)
+#ifdef _MSC_VER
#pragma warning(pop)
#endif
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
@@ -81,6 +81,9 @@ typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC,
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE;
+#endif
//------------------------------------------------------------------------------------------------
// Stream Parser Helpers
@@ -122,11 +125,17 @@ struct ID3DX12PipelineParserCallbacks
virtual void SampleMaskCb(UINT) {}
virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+ virtual void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC&) {}
+#endif
// Error Callbacks
virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
+ virtual void FinalizeCb() {}
+#endif
virtual ~ID3DX12PipelineParserCallbacks() = default;
};
@@ -151,6 +160,131 @@ struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
D3D12_PIPELINE_STATE_FLAGS Flags;
};
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+struct CD3DX12_PIPELINE_STATE_STREAM6
+{
+ CD3DX12_PIPELINE_STATE_STREAM6() = default;
+ // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
+ CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , InputLayout(Desc.InputLayout)
+ , IBStripCutValue(Desc.IBStripCutValue)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , VS(Desc.VS)
+ , GS(Desc.GS)
+ , StreamOutput(Desc.StreamOutput)
+ , HS(Desc.HS)
+ , DS(Desc.DS)
+ , PS(Desc.PS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
+ {
+ }
+ CD3DX12_PIPELINE_STATE_STREAM6(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
+ , PS(Desc.PS)
+ , AS(Desc.AS)
+ , MS(Desc.MS)
+ , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
+ , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
+ , DSVFormat(Desc.DSVFormat)
+ , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
+ , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
+ , SampleDesc(Desc.SampleDesc)
+ , SampleMask(Desc.SampleMask)
+ , CachedPSO(Desc.CachedPSO)
+ , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
+ , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
+ {
+ }
+ CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
+ : Flags(Desc.Flags)
+ , NodeMask(Desc.NodeMask)
+ , pRootSignature(Desc.pRootSignature)
+ , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
+ , CachedPSO(Desc.CachedPSO)
+ , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
+ {
+ static_cast(DepthStencilState).DepthEnable = false;
+ }
+ CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
+ CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
+ CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
+ CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
+ CD3DX12_PIPELINE_STATE_STREAM_VS VS;
+ CD3DX12_PIPELINE_STATE_STREAM_GS GS;
+ CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
+ CD3DX12_PIPELINE_STATE_STREAM_HS HS;
+ CD3DX12_PIPELINE_STATE_STREAM_DS DS;
+ CD3DX12_PIPELINE_STATE_STREAM_PS PS;
+ CD3DX12_PIPELINE_STATE_STREAM_AS AS;
+ CD3DX12_PIPELINE_STATE_STREAM_MS MS;
+ CD3DX12_PIPELINE_STATE_STREAM_CS CS;
+ CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
+ CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
+ CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
+ CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
+ CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
+ CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
+ CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE SerializedRootSignature;
+
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
+ {
+ D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.InputLayout = this->InputLayout;
+ D.IBStripCutValue = this->IBStripCutValue;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.VS = this->VS;
+ D.GS = this->GS;
+ D.StreamOutput = this->StreamOutput;
+ D.HS = this->HS;
+ D.DS = this->DS;
+ D.PS = this->PS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+ D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
+ {
+ D3D12_COMPUTE_PIPELINE_STATE_DESC D;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.CS = this->CS;
+ D.CachedPSO = this->CachedPSO;
+ return D;
+ }
+};
+#endif
+
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
// Use CD3DX12_PIPELINE_STATE_STREAM5 for D3D12_RASTERIZER_DESC2 when CheckFeatureSupport returns true for Options19::RasterizerDesc2Supported is true
// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
@@ -764,6 +898,7 @@ struct CD3DX12_PIPELINE_MESH_STATE_STREAM
: Flags(Desc.Flags)
, NodeMask(Desc.NodeMask)
, pRootSignature(Desc.pRootSignature)
+ , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
, PS(Desc.PS)
, AS(Desc.AS)
, MS(Desc.MS)
@@ -780,6 +915,7 @@ struct CD3DX12_PIPELINE_MESH_STATE_STREAM
CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
+ CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
CD3DX12_PIPELINE_STATE_STREAM_PS PS;
CD3DX12_PIPELINE_STATE_STREAM_AS AS;
CD3DX12_PIPELINE_STATE_STREAM_MS MS;
@@ -795,21 +931,22 @@ struct CD3DX12_PIPELINE_MESH_STATE_STREAM
D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
{
D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
- D.Flags = this->Flags;
- D.NodeMask = this->NodeMask;
- D.pRootSignature = this->pRootSignature;
- D.PS = this->PS;
- D.AS = this->AS;
- D.MS = this->MS;
- D.BlendState = this->BlendState;
- D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
- D.DSVFormat = this->DSVFormat;
- D.RasterizerState = this->RasterizerState;
- D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
+ D.Flags = this->Flags;
+ D.NodeMask = this->NodeMask;
+ D.pRootSignature = this->pRootSignature;
+ D.PrimitiveTopologyType = this->PrimitiveTopologyType;
+ D.PS = this->PS;
+ D.AS = this->AS;
+ D.MS = this->MS;
+ D.BlendState = this->BlendState;
+ D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
+ D.DSVFormat = this->DSVFormat;
+ D.RasterizerState = this->RasterizerState;
+ D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
- D.SampleDesc = this->SampleDesc;
- D.SampleMask = this->SampleMask;
- D.CachedPSO = this->CachedPSO;
+ D.SampleDesc = this->SampleDesc;
+ D.SampleMask = this->SampleMask;
+ D.CachedPSO = this->CachedPSO;
return D;
}
};
@@ -907,6 +1044,7 @@ struct CD3DX12_PIPELINE_STATE_STREAM
}
};
+
struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
{
CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
@@ -1102,7 +1240,87 @@ private:
};
#endif // D3D12_SDK_VERSION >= 608
-#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
+// This SDK 613 version has better primitive topology default handling than the v610 equivalent below.
+struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
+ : SeenDSS(false),
+ SeenMS(false),
+ SeenTopology(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
+ void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
+ {
+ PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
+ SeenTopology = true;
+ }
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
+ void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
+ void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override {PipelineStream.DSVFormat = DSVFormat;}
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
+ void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
+ void FinalizeCb() override
+ {
+ if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ if (!SeenTopology && SeenMS)
+ {
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
+ }
+ }
+
+private:
+ bool SeenDSS;
+ bool SeenMS;
+ bool SeenTopology;
+};
+#elif defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
{
CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
@@ -1171,6 +1389,88 @@ private:
};
#endif // D3D12_SDK_VERSION >= 610
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+struct CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
+{
+ CD3DX12_PIPELINE_STATE_STREAM6 PipelineStream;
+ CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER() noexcept
+ : SeenDSS(false),
+ SeenMS(false),
+ SeenTopology(false)
+ {
+ // Adjust defaults to account for absent members.
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+
+ // Depth disabled if no DSV format specified.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = false;
+ }
+
+ // ID3DX12PipelineParserCallbacks
+ void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
+ void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
+ void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
+ void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
+ void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
+ void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
+ {
+ PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
+ SeenTopology = true;
+ }
+ void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
+ void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
+ void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
+ void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
+ void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
+ void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
+ void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
+ void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
+ void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
+ void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
+ void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
+ {
+ PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
+ SeenDSS = true;
+ }
+ void DSVFormatCb(DXGI_FORMAT DSVFormat) override { PipelineStream.DSVFormat = DSVFormat; }
+ void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
+ void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
+ void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
+ void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
+ void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
+ void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
+ void FinalizeCb() override
+ {
+ if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
+ {
+ // Re-enable depth for the default state.
+ static_cast(PipelineStream.DepthStencilState).DepthEnable = true;
+ }
+ if (!SeenTopology && SeenMS)
+ {
+ PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
+ }
+ }
+ void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& SerializedRootSignature) override { PipelineStream.SerializedRootSignature = CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(SerializedRootSignature); }
+
+private:
+ bool SeenDSS;
+ bool SeenMS;
+ bool SeenTopology;
+};
+#endif // D3D12_SDK_VERSION >= 618
+
struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
{
CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
@@ -1229,6 +1529,7 @@ private:
bool SeenDSS;
};
+
inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
{
switch (SubobjectType)
@@ -1397,11 +1698,21 @@ inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC&
pCallbacks->ViewInstancingCb(*reinterpret_cast(pStream));
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
break;
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+ case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE:
+ pCallbacks->SerializedRootSignatureCb(*reinterpret_cast(pStream));
+ SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature);
+ break;
+#endif
default:
pCallbacks->ErrorUnknownSubobject(SubobjectType);
return E_INVALIDARG;
}
}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
+ pCallbacks->FinalizeCb();
+#endif
return S_OK;
}
+
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_property_format_table.h b/thirdparty/directx_headers/include/directx/d3dx12_property_format_table.h
index 301100c034f..66c7600f55d 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_property_format_table.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_property_format_table.h
@@ -62,8 +62,10 @@ public:
static LPCSTR GetName (DXGI_FORMAT Format, bool bHideInternalFormats = true);
static bool IsSRGBFormat (DXGI_FORMAT Format);
static UINT GetBitsPerStencil (DXGI_FORMAT Format);
+ static UINT GetBitsPerDepth (DXGI_FORMAT Format);
static void GetFormatReturnTypes (DXGI_FORMAT Format, D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations); // return array of 4 components
static UINT GetNumComponentsInFormat(DXGI_FORMAT Format);
+ static UINT GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
// Converts the sequential component index (range from 0 to GetNumComponentsInFormat()) to
// the absolute component index (range 0 to 3).
@@ -116,6 +118,8 @@ public:
static UINT GetDetailTableIndex (DXGI_FORMAT Format);
static UINT GetDetailTableIndexNoThrow (DXGI_FORMAT Format);
static UINT GetDetailTableIndexThrow (DXGI_FORMAT Format);
+ static bool SupportsDepth (DXGI_FORMAT Format);
+ static bool SupportsStencil (DXGI_FORMAT Format);
private:
static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format);
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_render_pass.h b/thirdparty/directx_headers/include/directx/d3dx12_render_pass.h
index fc032f86cda..c88fbdf1bc9 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_render_pass.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_render_pass.h
@@ -60,6 +60,8 @@ inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12
if (!(a.PreserveLocal == b.PreserveLocal)) return false;
break;
#endif
+ default:
+ break;
}
return true;
}
@@ -79,8 +81,9 @@ inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS& a, const D3D12_REN
if (!(a.PreserveLocal == b.PreserveLocal)) return false;
break;
#endif
+ default:
+ break;
}
-
return true;
}
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_resource_helpers.h b/thirdparty/directx_headers/include/directx/d3dx12_resource_helpers.h
index 902ec0cd6ee..5c1c980d622 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_resource_helpers.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_resource_helpers.h
@@ -11,9 +11,9 @@
#error D3DX12 requires C++
#endif
+#include "d3dx12_property_format_table.h"
#include "d3d12.h"
#include "d3dx12_core.h"
-#include "d3dx12_property_format_table.h"
//------------------------------------------------------------------------------------------------
template
inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
@@ -395,9 +395,11 @@ inline T D3DX12AlignAtLeast(T uValue, T uAlign)
inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
D3D12_RESOURCE_DESC1& LclDesc,
- const D3D12_RESOURCE_DESC1* pDesc)
+ const D3D12_RESOURCE_DESC1* pDesc,
+ const bool tightAlignmentSupported = false,
+ const bool alignAsCommitted = false)
{
- return D3DX12ConditionallyExpandAPIDesc(static_cast(LclDesc), static_cast(pDesc));
+ return D3DX12ConditionallyExpandAPIDesc(static_cast(LclDesc), static_cast(pDesc), tightAlignmentSupported, alignAsCommitted);
}
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
@@ -429,6 +431,12 @@ inline bool D3DX12GetCopyableFootprints(
// Check if its a valid format
D3DX12_ASSERT(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(Format));
+ // D3DX12GetCopyableFootprints does not support buffers with width larger than UINT_MAX.
+ if (ResourceDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER && ResourceDesc.Width >= UINT_MAX)
+ {
+ return false;
+ }
+
const UINT WidthAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment( Format );
const UINT HeightAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment( Format );
const UINT16 DepthAlignment = UINT16( D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment( Format ) );
@@ -460,7 +468,7 @@ inline bool D3DX12GetCopyableFootprints(
UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight;
D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(PlaneSlice, Format, (UINT)Width, Height, /*_Out_*/ PlaneFormat, /*_Out_*/ MinPlanePitchWidth, /* _Out_ */ PlaneWidth, /*_Out_*/ PlaneHeight);
- D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement;
+ D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement = {};
auto& Placement = pLayouts ? pLayouts[uSubRes].Footprint : LocalPlacement;
Placement.Format = PlaneFormat;
Placement.Width = PlaneWidth;
@@ -600,3 +608,5 @@ inline bool D3DX12GetCopyableFootprints(
}
#endif // D3D12_SDK_VERSION >= 606
+
+
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h b/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
index 2da79d10f12..bf9a2c91015 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
@@ -995,6 +995,11 @@ struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
// To help enable root signature 1.1 features when they are available and not require maintaining
// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
// 1.1 is not supported.
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wcovered-switch-default"
+#endif
+
inline HRESULT D3DX12SerializeVersionedRootSignature(
_In_ HMODULE pLibD3D12,
_In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
@@ -1060,32 +1065,38 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
break;
case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
- const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
-
- const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
- void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
- if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
{
- hr = E_OUTOFMEMORY;
- }
- auto pDescriptorRanges_1_0 = static_cast(pDescriptorRanges);
+ const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
- if (SUCCEEDED(hr))
- {
- for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
+ const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
+ void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
+ if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
{
- __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
- pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
- pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
- pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
- pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
- pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
+ hr = E_OUTOFMEMORY;
}
- }
+ auto pDescriptorRanges_1_0 = static_cast(pDescriptorRanges);
- D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
- table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
- table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
+ if (SUCCEEDED(hr))
+ {
+ for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
+ {
+ __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
+ pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
+ pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
+ pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
+ pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
+ pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
+ }
+ }
+
+ D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
+ table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
+ table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
+ }
+ break;
+
+ default:
+ break;
}
}
}
@@ -1143,6 +1154,9 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
return hr;
}
+
+ default:
+ break;
}
break;
@@ -1199,12 +1213,21 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
}
#endif
+ default:
+ break;
}
+ break;
+
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
case D3D_ROOT_SIGNATURE_VERSION_1_2:
#endif
+ default:
return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
}
return E_INVALIDARG;
}
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_state_object.h b/thirdparty/directx_headers/include/directx/d3dx12_state_object.h
index 74dc6ca2d9f..579ecc8f89e 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_state_object.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_state_object.h
@@ -11,7 +11,9 @@
#error D3DX12 requires C++
#endif
+#include "d3dx12_default.h"
#include "d3d12.h"
+#include "d3dx12_core.h"
//================================================================================================
// D3DX12 State Object Creation Helpers
@@ -27,6 +29,8 @@
//
//================================================================================================
#include
+#include
+#include
#include
#include
#include
@@ -55,9 +59,16 @@ public:
Init(Type);
}
void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
- operator const D3D12_STATE_OBJECT_DESC&()
+ CD3DX12_STATE_OBJECT_DESC(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
+ CD3DX12_STATE_OBJECT_DESC& operator=(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
+ CD3DX12_STATE_OBJECT_DESC(CD3DX12_STATE_OBJECT_DESC&& other) = default;
+ CD3DX12_STATE_OBJECT_DESC& operator=(CD3DX12_STATE_OBJECT_DESC&& other) = default;
+ operator const D3D12_STATE_OBJECT_DESC& ()
{
- // Do final preparation work
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ m_RepointedSubobjectVectors.clear();
+ m_RepointedPrograms.clear();
+#endif
m_RepointedAssociations.clear();
m_SubobjectArray.clear();
m_SubobjectArray.reserve(m_Desc.NumSubobjects);
@@ -85,12 +96,36 @@ public:
m_RepointedAssociations.push_back(Repointed);
m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
}
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ else if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM)
+ {
+ auto originalGenericProgramDesc =
+ static_cast(m_SubobjectArray[i].pDesc);
+ D3D12_GENERIC_PROGRAM_DESC Repointed = *originalGenericProgramDesc;
+ if (originalGenericProgramDesc->NumSubobjects > 0)
+ {
+ m_RepointedSubobjectVectors.emplace_back(std::vector());
+ std::vector& repointedGenericProgramSubobjects = m_RepointedSubobjectVectors.back();
+ repointedGenericProgramSubobjects.resize(originalGenericProgramDesc->NumSubobjects);
+ for (UINT s = 0; s < originalGenericProgramDesc->NumSubobjects; s++)
+ {
+ auto pWrapper =
+ static_cast(originalGenericProgramDesc->ppSubobjects[s]);
+ repointedGenericProgramSubobjects[s] = pWrapper->pSubobjectArrayLocation;
+ }
+ // Below: using ugly way to get pointer in case .data() is not defined
+ Repointed.ppSubobjects = &repointedGenericProgramSubobjects[0];
+ }
+ m_RepointedPrograms.push_back(Repointed);
+ m_SubobjectArray[i].pDesc = &m_RepointedPrograms.back();
+ }
+#endif
}
// Below: using ugly way to get pointer in case .data() is not defined
m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
return m_Desc;
}
- operator const D3D12_STATE_OBJECT_DESC*()
+ operator const D3D12_STATE_OBJECT_DESC* ()
{
// Cast calls the above final preparation work
return &static_cast(*this);
@@ -129,6 +164,14 @@ public:
return pSubobject;
}
+ template
+ T* CreateSubobject(U&& arg)
+ {
+ T* pSubobject = new T(std::forward(arg), *this);
+ m_OwnedSubobjectHelpers.emplace_back(pSubobject);
+ return pSubobject;
+ }
+
private:
D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
{
@@ -148,6 +191,10 @@ private:
m_SubobjectList.clear();
m_SubobjectArray.clear();
m_RepointedAssociations.clear();
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ m_RepointedSubobjectVectors.clear();
+ m_RepointedPrograms.clear();
+#endif
}
typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
{
@@ -160,13 +207,21 @@ private:
std::vector m_SubobjectArray; // Built at the end, copying list contents
std::list
- m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
- // repointed to flattened array
+ m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
+ // repointed to flattened array
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ std::list>
+ m_RepointedSubobjectVectors;
+ std::list
+ m_RepointedPrograms;
+#endif
+
+ template
class StringContainer
{
public:
- LPCWSTR LocalCopy(LPCWSTR string, bool bSingleString = false)
+ CStr LocalCopy(CStr string, bool bSingleString = false)
{
if (string)
{
@@ -188,38 +243,33 @@ private:
}
void clear() noexcept { m_Strings.clear(); }
private:
- std::list m_Strings;
+ std::list m_Strings;
};
+public:
class SUBOBJECT_HELPER_BASE
{
public:
SUBOBJECT_HELPER_BASE() noexcept { Init(); }
virtual ~SUBOBJECT_HELPER_BASE() = default;
virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
+ SUBOBJECT_HELPER_BASE(const SUBOBJECT_HELPER_BASE& other) = delete;
+ SUBOBJECT_HELPER_BASE& operator=(const SUBOBJECT_HELPER_BASE& other) = delete;
+ SUBOBJECT_HELPER_BASE(SUBOBJECT_HELPER_BASE&& other) = default;
+ SUBOBJECT_HELPER_BASE& operator=(SUBOBJECT_HELPER_BASE&& other) = default;
void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
{
m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
}
+ operator const D3D12_STATE_SUBOBJECT& () const noexcept { return *m_pSubobject; }
protected:
virtual void* Data() noexcept = 0;
void Init() noexcept { m_pSubobject = nullptr; }
D3D12_STATE_SUBOBJECT* m_pSubobject;
};
-#if(__cplusplus >= 201103L)
- std::list> m_OwnedSubobjectHelpers;
-#else
- class OWNED_HELPER
- {
- public:
- OWNED_HELPER(const SUBOBJECT_HELPER_BASE* pHelper) noexcept { m_pHelper = pHelper; }
- ~OWNED_HELPER() { delete m_pHelper; }
- const SUBOBJECT_HELPER_BASE* m_pHelper;
- };
-
- std::list m_OwnedSubobjectHelpers;
-#endif
+private:
+ std::list> m_OwnedSubobjectHelpers;
friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
@@ -233,6 +283,40 @@ private:
friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
friend class CD3DX12_NODE_MASK_SUBOBJECT;
+ //TODO: SDK Version check should include all the newly added subobject type for the public release.
+ // The SDK version check will be changed based on when we release state objects.
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+ friend class CD3DX12_GENERIC_PROGRAM_SUBOBJECT;
+ friend class CD3DX12_WORK_GRAPH_SUBOBJECT;
+ friend class CD3DX12_STREAM_OUTPUT_SUBOBJECT;
+ friend class CD3DX12_BLEND_SUBOBJECT;
+ friend class CD3DX12_RASTERIZER_SUBOBJECT;
+ friend class CD3DX12_DEPTH_STENCIL2_SUBOBJECT;
+ friend class CD3DX12_INPUT_LAYOUT_SUBOBJECT;
+ friend class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT;
+ friend class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT;
+ friend class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT;
+ friend class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT;
+ friend class CD3DX12_SAMPLE_DESC_SUBOBJECT;
+ friend class CD3DX12_FLAGS_SUBOBJECT;
+ friend class CD3DX12_VIEW_INSTANCING_SUBOBJECT;
+ friend class CD3DX12_DEPTH_STENCIL_SUBOBJECT;
+ friend class CD3DX12_DEPTH_STENCIL1_SUBOBJECT;
+ friend class CD3DX12_SAMPLE_MASK_SUBOBJECT;
+ friend class CD3DX12_NODE_OUTPUT_OVERRIDES;
+ friend class CD3DX12_NODE_HELPER_BASE;
+ friend class CD3DX12_SHADER_NODE;
+ friend class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES;
+ friend class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES;
+ friend class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES;
+ friend class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES;
+#endif // D3D12_SDK_VERSION >= 612
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+ friend class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
+ friend class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
+ friend class CD3DX12_COMPILER_EXISTING_COLLECTION_SUBOBJECT;
+ friend class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT;
+#endif
};
//------------------------------------------------------------------------------------------------
@@ -249,6 +333,10 @@ public:
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
+ CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
{
static const D3D12_SHADER_BYTECODE Default = {};
@@ -286,7 +374,6 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
private:
void Init() noexcept
@@ -298,7 +385,7 @@ private:
}
void* Data() noexcept override { return &m_Desc; }
D3D12_DXIL_LIBRARY_DESC m_Desc;
- CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
std::vector m_Exports;
};
@@ -316,6 +403,10 @@ public:
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
+ CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
{
m_Desc.pExistingCollection = pExistingCollection;
@@ -353,7 +444,6 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
private:
void Init() noexcept
@@ -367,7 +457,7 @@ private:
void* Data() noexcept override { return &m_Desc; }
D3D12_EXISTING_COLLECTION_DESC m_Desc;
D3DX12_COM_PTR m_CollectionRef;
- CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
std::vector m_Exports;
};
@@ -385,6 +475,10 @@ public:
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
+ CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
{
m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
@@ -414,7 +508,6 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
private:
void Init() noexcept
@@ -426,7 +519,7 @@ private:
}
void* Data() noexcept override { return &m_Desc; }
D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
- CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
std::vector m_Exports;
};
@@ -444,6 +537,10 @@ public:
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
+ CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
{
m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
@@ -473,7 +570,6 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
private:
void Init() noexcept
@@ -486,8 +582,8 @@ private:
}
void* Data() noexcept override { return &m_Desc; }
D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
- CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
- CD3DX12_STATE_OBJECT_DESC::StringContainer m_SubobjectName;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_SubobjectName;
std::vector m_Exports;
};
@@ -505,6 +601,10 @@ public:
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_HIT_GROUP_SUBOBJECT(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
+ CD3DX12_HIT_GROUP_SUBOBJECT& operator=(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
+ CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
+ CD3DX12_HIT_GROUP_SUBOBJECT& operator=(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
void SetHitGroupExport(LPCWSTR exportName)
{
m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
@@ -526,7 +626,6 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
private:
void Init() noexcept
@@ -541,7 +640,7 @@ private:
void* Data() noexcept override { return &m_Desc; }
D3D12_HIT_GROUP_DESC m_Desc;
static constexpr UINT m_NumStrings = 4;
- CD3DX12_STATE_OBJECT_DESC::StringContainer
+ CD3DX12_STATE_OBJECT_DESC::StringContainer
m_Strings[m_NumStrings]; // one string for every entrypoint name
};
@@ -551,14 +650,31 @@ class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
{
public:
CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
+ : m_Desc({})
{
Init();
}
CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
{
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
+ CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
{
m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
@@ -568,13 +684,12 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
+ operator D3D12_RAYTRACING_SHADER_CONFIG&() noexcept { return m_Desc; }
private:
void Init() noexcept
{
SUBOBJECT_HELPER_BASE::Init();
- m_Desc = {};
}
void* Data() noexcept override { return &m_Desc; }
D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
@@ -586,14 +701,31 @@ class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
{
public:
CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
+ : m_Desc({})
{
Init();
}
CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
{
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
void Config(UINT MaxTraceRecursionDepth) noexcept
{
m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
@@ -602,13 +734,12 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
+ operator D3D12_RAYTRACING_PIPELINE_CONFIG&() noexcept { return m_Desc; }
private:
void Init() noexcept
{
SUBOBJECT_HELPER_BASE::Init();
- m_Desc = {};
}
void* Data() noexcept override { return &m_Desc; }
D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
@@ -620,14 +751,31 @@ class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
{
public:
CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
+ : m_Desc({})
{
Init();
}
CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
{
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
+ CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
{
m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
@@ -637,13 +785,12 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
+ operator D3D12_RAYTRACING_PIPELINE_CONFIG1&() noexcept { return m_Desc; }
private:
void Init() noexcept
{
SUBOBJECT_HELPER_BASE::Init();
- m_Desc = {};
}
void* Data() noexcept override { return &m_Desc; }
D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
@@ -663,6 +810,10 @@ public:
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
{
m_pRootSig = pRootSig;
@@ -671,7 +822,6 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
private:
void Init() noexcept
@@ -683,6 +833,7 @@ private:
D3DX12_COM_PTR m_pRootSig;
};
+
//------------------------------------------------------------------------------------------------
class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
: public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
@@ -697,6 +848,10 @@ public:
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
{
m_pRootSig = pRootSig;
@@ -705,7 +860,6 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
private:
void Init() noexcept
@@ -717,20 +871,205 @@ private:
D3DX12_COM_PTR m_pRootSig;
};
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+//------------------------------------------------------------------------------------------------
+class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
+ {
+ if (pDesc)
+ {
+ m_Desc.Desc = {};
+ m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
+ m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
+ }
+ operator const D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
+ operator D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+ void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
+ {
+ if (pDesc)
+ {
+ m_Desc.Desc = {};
+ m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
+ m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE;
+ }
+ operator const D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
+ operator D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
+};
+
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
+ CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
+ void SetExistingCollection(const void* pKey, UINT KeySize) noexcept
+ {
+ const unsigned char* pKeyBytes = static_cast(pKey);
+ m_Key.clear();
+ m_Key.insert(m_Key.begin(), pKeyBytes, pKeyBytes + KeySize);
+ m_Desc.pKey = m_Key.data();
+ m_Desc.KeySize = KeySize;
+ }
+ void DefineExport(
+ LPCWSTR Name,
+ LPCWSTR ExportToRename = nullptr,
+ D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
+ {
+ D3D12_EXPORT_DESC Export;
+ Export.Name = m_Strings.LocalCopy(Name);
+ Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
+ Export.Flags = Flags;
+ m_Exports.push_back(Export);
+ m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
+ m_Desc.NumExports = static_cast(m_Exports.size());
+ }
+ template
+ void DefineExports(LPCWSTR(&Exports)[N])
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ DefineExport(Exports[i]);
+ }
+ }
+ void DefineExports(const LPCWSTR* Exports, UINT N)
+ {
+ for (UINT i = 0; i < N; i++)
+ {
+ DefineExport(Exports[i]);
+ }
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY;
+ }
+ operator const D3D12_EXISTING_COLLECTION_BY_KEY_DESC&() const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_Strings.clear();
+ m_Exports.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_EXISTING_COLLECTION_BY_KEY_DESC m_Desc;
+ std::vector m_Key;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector m_Exports;
+};
+
+#endif // defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
+
//------------------------------------------------------------------------------------------------
class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
: public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
{
public:
CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
+ : m_Desc({})
{
Init();
}
CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
{
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc) noexcept
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
+ CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
{
m_Desc.Flags = Flags;
@@ -739,13 +1078,12 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
+ operator D3D12_STATE_OBJECT_CONFIG&() noexcept { return m_Desc; }
private:
void Init() noexcept
{
SUBOBJECT_HELPER_BASE::Init();
- m_Desc = {};
}
void* Data() noexcept override { return &m_Desc; }
D3D12_STATE_OBJECT_CONFIG m_Desc;
@@ -757,14 +1095,31 @@ class CD3DX12_NODE_MASK_SUBOBJECT
{
public:
CD3DX12_NODE_MASK_SUBOBJECT() noexcept
+ : m_Desc({})
{
Init();
}
CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
{
Init();
AddToStateObject(ContainingStateObject);
}
+ CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc) noexcept
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_NODE_MASK_SUBOBJECT(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
+ CD3DX12_NODE_MASK_SUBOBJECT& operator=(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
+ CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
+ CD3DX12_NODE_MASK_SUBOBJECT& operator=(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
void SetNodeMask(UINT NodeMask) noexcept
{
m_Desc.NodeMask = NodeMask;
@@ -773,8 +1128,605 @@ public:
{
return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
}
- operator const D3D12_STATE_SUBOBJECT&() const noexcept { return *m_pSubobject; }
operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
+ operator D3D12_NODE_MASK&() noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_NODE_MASK m_Desc;
+};
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+//------------------------------------------------------------------------------------------------
+class CD3DX12_STREAM_OUTPUT_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_STREAM_OUTPUT_SUBOBJECT()
+ {
+ Init();
+ }
+ CD3DX12_STREAM_OUTPUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void AddSODeclEntry(const D3D12_SO_DECLARATION_ENTRY &entry)
+ {
+ m_soDecalEntries.emplace_back(D3D12_SO_DECLARATION_ENTRY{
+ entry.Stream,
+ m_Strings.LocalCopy(entry.SemanticName),
+ entry.SemanticIndex,
+ entry.StartComponent,
+ entry.ComponentCount,
+ entry.OutputSlot
+ });
+ m_Desc.NumEntries++;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pSODeclaration = &m_soDecalEntries[0];
+ }
+ void SetSODeclEntries(const D3D12_SO_DECLARATION_ENTRY* soDeclEntries, UINT numEntries)
+ {
+ m_soDecalEntries.resize(numEntries);
+ for (UINT i = 0; i < numEntries; i++)
+ {
+ m_soDecalEntries[i] = D3D12_SO_DECLARATION_ENTRY{
+ soDeclEntries[i].Stream,
+ m_Strings.LocalCopy(soDeclEntries[i].SemanticName),
+ soDeclEntries[i].SemanticIndex,
+ soDeclEntries[i].StartComponent,
+ soDeclEntries[i].ComponentCount,
+ soDeclEntries[i].OutputSlot
+ };
+ }
+ m_Desc.NumEntries = numEntries;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ if (numEntries > 0)
+ {
+ m_Desc.pSODeclaration = &m_soDecalEntries[0];
+ }
+ }
+ void SetBufferStrides(const UINT* bufferStrides, UINT numStrides)
+ {
+ for (UINT i = 0; i < numStrides; ++i)
+ {
+ m_Strides[i] = bufferStrides[i];
+ }
+ m_Desc.pBufferStrides = m_Strides;
+ m_Desc.NumStrides = numStrides;
+ }
+ void SetRasterizedStream(UINT rasterizedStream)
+ {
+ m_Desc.RasterizedStream = rasterizedStream;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT;
+ }
+ operator const D3D12_STREAM_OUTPUT_DESC& () const noexcept { return m_Desc; }
+
+private:
+ void Init()
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_STREAM_OUTPUT_DESC m_Desc;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector m_soDecalEntries;
+ UINT m_Strides[D3D12_SO_STREAM_COUNT];
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_BLEND_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_BLEND_SUBOBJECT()
+ : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_BLEND_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetAlphaToCoverageEnable(bool alphaToCoverageEnable)
+ {
+ m_Desc.AlphaToCoverageEnable = alphaToCoverageEnable;
+ }
+ void SetIndependentBlendEnable(bool independentBlendEnable)
+ {
+ m_Desc.IndependentBlendEnable = independentBlendEnable;
+ }
+ void SetRenderTarget(UINT renderTargetIndex, const D3D12_RENDER_TARGET_BLEND_DESC& renderTargetBlendDesc)
+ {
+ m_Desc.RenderTarget[renderTargetIndex].BlendEnable = renderTargetBlendDesc.BlendEnable;
+ m_Desc.RenderTarget[renderTargetIndex].BlendOp = renderTargetBlendDesc.BlendOp;
+ m_Desc.RenderTarget[renderTargetIndex].BlendOpAlpha = renderTargetBlendDesc.BlendOpAlpha;
+ m_Desc.RenderTarget[renderTargetIndex].DestBlend = renderTargetBlendDesc.DestBlend;
+ m_Desc.RenderTarget[renderTargetIndex].DestBlendAlpha = renderTargetBlendDesc.DestBlendAlpha;
+ m_Desc.RenderTarget[renderTargetIndex].LogicOp = renderTargetBlendDesc.LogicOp;
+ m_Desc.RenderTarget[renderTargetIndex].LogicOpEnable = renderTargetBlendDesc.LogicOpEnable;
+ m_Desc.RenderTarget[renderTargetIndex].RenderTargetWriteMask = renderTargetBlendDesc.RenderTargetWriteMask;
+ m_Desc.RenderTarget[renderTargetIndex].SrcBlend = renderTargetBlendDesc.SrcBlend;
+ m_Desc.RenderTarget[renderTargetIndex].SrcBlendAlpha = renderTargetBlendDesc.SrcBlendAlpha;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_BLEND;
+ }
+ operator const D3D12_BLEND_DESC& () const noexcept { return m_Desc; }
+ operator D3D12_BLEND_DESC& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_BLEND_DESC m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_RASTERIZER_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_RASTERIZER_SUBOBJECT()
+ : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_RASTERIZER_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetFillMode(D3D12_FILL_MODE fillMode)
+ {
+ m_Desc.FillMode = fillMode;
+ }
+ void SetCullMode(D3D12_CULL_MODE cullMode)
+ {
+ m_Desc.CullMode = cullMode;
+ }
+ void SetFrontCounterClockwise(BOOL frontCounterClockwise)
+ {
+ m_Desc.FrontCounterClockwise = frontCounterClockwise;
+ }
+ void SetDepthBias(FLOAT depthBias)
+ {
+ m_Desc.DepthBias = depthBias;
+ }
+ void SetDepthBiasClamp(FLOAT depthBiasClamp)
+ {
+ m_Desc.DepthBiasClamp = depthBiasClamp;
+ }
+ void SetSlopeScaledDepthBias(FLOAT slopeScaledDepthBias)
+ {
+ m_Desc.SlopeScaledDepthBias = slopeScaledDepthBias;
+ }
+ void SetDepthClipEnable(BOOL depthClipEnable)
+ {
+ m_Desc.DepthClipEnable = depthClipEnable;
+ }
+ void SetLineRasterizationMode(D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode)
+ {
+ m_Desc.LineRasterizationMode = lineRasterizationMode;
+ }
+ void SetForcedSampleCount(UINT forcedSampleCount)
+ {
+ m_Desc.ForcedSampleCount = forcedSampleCount;
+ }
+ void SetConservativeRaster(D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster)
+ {
+ m_Desc.ConservativeRaster = conservativeRaster;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER;
+ }
+ operator const D3D12_RASTERIZER_DESC2& () const noexcept { return m_Desc; }
+ operator D3D12_RASTERIZER_DESC2& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_RASTERIZER_DESC2 m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DEPTH_STENCIL2_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DEPTH_STENCIL2_SUBOBJECT()
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL2_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetDepthEnable(BOOL depthEnable)
+ {
+ m_Desc.DepthEnable = depthEnable;
+ }
+ void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
+ {
+ m_Desc.DepthWriteMask = depthWriteMask;
+ }
+ void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
+ {
+ m_Desc.DepthFunc = depthFunc;
+ }
+ void SetStencilEnable(BOOL stencilEnable)
+ {
+ m_Desc.StencilEnable = stencilEnable;
+ }
+ void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC1 frontFace)
+ {
+ m_Desc.FrontFace = {
+ frontFace.StencilFailOp,
+ frontFace.StencilDepthFailOp,
+ frontFace.StencilPassOp,
+ frontFace.StencilFunc,
+ frontFace.StencilReadMask,
+ frontFace.StencilWriteMask
+ };
+ }
+ void SetBackFace(D3D12_DEPTH_STENCILOP_DESC1 backFace)
+ {
+ m_Desc.BackFace = {
+ backFace.StencilFailOp,
+ backFace.StencilDepthFailOp,
+ backFace.StencilPassOp,
+ backFace.StencilFunc,
+ backFace.StencilReadMask,
+ backFace.StencilWriteMask
+ };
+ }
+ void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
+ {
+ m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2;
+ }
+ operator const D3D12_DEPTH_STENCIL_DESC2& () const noexcept { return m_Desc; }
+ operator D3D12_DEPTH_STENCIL_DESC2& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_DEPTH_STENCIL_DESC2 m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_INPUT_LAYOUT_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_INPUT_LAYOUT_SUBOBJECT()
+ {
+ Init();
+ }
+ CD3DX12_INPUT_LAYOUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void AddInputLayoutElementDesc(D3D12_INPUT_ELEMENT_DESC inputLayoutElementDesc)
+ {
+ m_inputLayoutElements.emplace_back(
+ D3D12_INPUT_ELEMENT_DESC{
+ m_Strings.LocalCopy(inputLayoutElementDesc.SemanticName),
+ inputLayoutElementDesc.SemanticIndex,
+ inputLayoutElementDesc.Format,
+ inputLayoutElementDesc.InputSlot,
+ inputLayoutElementDesc.AlignedByteOffset,
+ inputLayoutElementDesc.InputSlotClass,
+ inputLayoutElementDesc.InstanceDataStepRate
+ });
+ ++m_Desc.NumElements;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pInputElementDescs = &m_inputLayoutElements[0];
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT;
+ }
+ operator const D3D12_INPUT_LAYOUT_DESC& () const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_inputLayoutElements.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_INPUT_LAYOUT_DESC m_Desc;
+ std::vector m_inputLayoutElements;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT()
+ : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
+ {
+ Init();
+ }
+ CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetIBStripCutValue(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE ibStripCutValue)
+ {
+ m_Desc = ibStripCutValue;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE;
+ }
+ operator const D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () const noexcept { return m_Desc; }
+ operator D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT()
+ : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
+ {
+ Init();
+ }
+ CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE primitiveTopologytype)
+ {
+ m_Desc = primitiveTopologytype;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY;
+ }
+ operator const D3D12_PRIMITIVE_TOPOLOGY_TYPE& () const noexcept { return m_Desc; }
+ operator D3D12_PRIMITIVE_TOPOLOGY_TYPE& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_PRIMITIVE_TOPOLOGY_TYPE m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT()
+ : m_Desc({})
+ {
+ Init();
+ }
+ CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetNumRenderTargets(UINT numRenderTargets)
+ {
+ m_Desc.NumRenderTargets = numRenderTargets;
+ }
+ void SetRenderTargetFormat(UINT renderTarget, DXGI_FORMAT renderTargetFormat)
+ {
+ m_Desc.RTFormats[renderTarget] = renderTargetFormat;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS;
+ }
+ operator const D3D12_RT_FORMAT_ARRAY& () const noexcept { return m_Desc; }
+ operator D3D12_RT_FORMAT_ARRAY& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_RT_FORMAT_ARRAY m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT()
+ : m_Desc(DXGI_FORMAT_UNKNOWN)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(DXGI_FORMAT_UNKNOWN)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetDepthStencilFormat(DXGI_FORMAT depthStencilFormat)
+ {
+ m_Desc = depthStencilFormat;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT;
+ }
+ operator const DXGI_FORMAT& () const noexcept { return m_Desc; }
+ operator DXGI_FORMAT& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ DXGI_FORMAT m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_SAMPLE_DESC_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_SAMPLE_DESC_SUBOBJECT()
+ : m_Desc({1, 0})
+ {
+ Init();
+ }
+ CD3DX12_SAMPLE_DESC_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc({1, 0})
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetCount(UINT count)
+ {
+ m_Desc.Count = count;
+ }
+ void SetQuality(UINT quality)
+ {
+ m_Desc.Quality = quality;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC;
+ }
+ operator const DXGI_SAMPLE_DESC& () const noexcept { return m_Desc; }
+ operator DXGI_SAMPLE_DESC& () noexcept { return m_Desc; }
private:
void Init() noexcept
{
@@ -782,9 +1734,837 @@ private:
m_Desc = {};
}
void* Data() noexcept override { return &m_Desc; }
- D3D12_NODE_MASK m_Desc;
+ DXGI_SAMPLE_DESC m_Desc;
};
+//------------------------------------------------------------------------------------------------
+class CD3DX12_FLAGS_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_FLAGS_SUBOBJECT()
+ : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
+ {
+ Init();
+ }
+ CD3DX12_FLAGS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetFlags(D3D12_PIPELINE_STATE_FLAGS flags)
+ {
+ m_Desc = flags;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_FLAGS;
+ }
+ operator const D3D12_PIPELINE_STATE_FLAGS& () const noexcept { return m_Desc; }
+ operator D3D12_PIPELINE_STATE_FLAGS& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_PIPELINE_STATE_FLAGS m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_VIEW_INSTANCING_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_VIEW_INSTANCING_SUBOBJECT()
+ {
+ Init();
+ }
+ CD3DX12_VIEW_INSTANCING_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void AddViewInstanceLocation(D3D12_VIEW_INSTANCE_LOCATION viewInstanceLocation)
+ {
+ m_Desc.ViewInstanceCount++;
+ m_viewInstanceLocations.emplace_back(
+ D3D12_VIEW_INSTANCE_LOCATION
+ {
+ viewInstanceLocation.ViewportArrayIndex,
+ viewInstanceLocation.RenderTargetArrayIndex
+ }
+ );
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pViewInstanceLocations = &m_viewInstanceLocations[0];
+ }
+ void SetFlags(D3D12_VIEW_INSTANCING_FLAGS flags)
+ {
+ m_Desc.Flags = flags;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING;
+ }
+ operator const D3D12_VIEW_INSTANCING_DESC& () const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = CD3DX12_VIEW_INSTANCING_DESC(D3D12_DEFAULT);
+ m_viewInstanceLocations.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_VIEW_INSTANCING_DESC m_Desc;
+ std::vector m_viewInstanceLocations;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DEPTH_STENCIL_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DEPTH_STENCIL_SUBOBJECT()
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetDepthEnable(BOOL depthEnable)
+ {
+ m_Desc.DepthEnable = depthEnable;
+ }
+ void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
+ {
+ m_Desc.DepthWriteMask = depthWriteMask;
+ }
+ void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
+ {
+ m_Desc.DepthFunc = depthFunc;
+ }
+ void SetStencilEnable(BOOL stencilEnable)
+ {
+ m_Desc.StencilEnable = stencilEnable;
+ }
+ void SetStencilReadMask(UINT8 stencilReadMask)
+ {
+ m_Desc.StencilReadMask = stencilReadMask;
+ }
+ void SetStencilWriteMask(UINT8 stencilWriteMask)
+ {
+ m_Desc.StencilWriteMask = stencilWriteMask;
+ }
+ void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
+ {
+ m_Desc.FrontFace = {
+ frontFace.StencilFailOp,
+ frontFace.StencilDepthFailOp,
+ frontFace.StencilPassOp,
+ frontFace.StencilFunc
+ };
+ }
+ void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
+ {
+ m_Desc.BackFace = {
+ backFace.StencilFailOp,
+ backFace.StencilDepthFailOp,
+ backFace.StencilPassOp,
+ backFace.StencilFunc
+ };
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
+ }
+ operator const D3D12_DEPTH_STENCIL_DESC& () const noexcept { return m_Desc; }
+ operator D3D12_DEPTH_STENCIL_DESC& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_DEPTH_STENCIL_DESC m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_DEPTH_STENCIL1_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_DEPTH_STENCIL1_SUBOBJECT()
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetDepthEnable(BOOL depthEnable)
+ {
+ m_Desc.DepthEnable = depthEnable;
+ }
+ void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
+ {
+ m_Desc.DepthWriteMask = depthWriteMask;
+ }
+ void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
+ {
+ m_Desc.DepthFunc = depthFunc;
+ }
+ void SetStencilEnable(BOOL stencilEnable)
+ {
+ m_Desc.StencilEnable = stencilEnable;
+ }
+ void SetStencilReadMask(UINT8 stencilReadMask)
+ {
+ m_Desc.StencilReadMask = stencilReadMask;
+ }
+ void SetStencilWriteMask(UINT8 stencilWriteMask)
+ {
+ m_Desc.StencilWriteMask = stencilWriteMask;
+ }
+ void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
+ {
+ m_Desc.FrontFace = {
+ frontFace.StencilFailOp,
+ frontFace.StencilDepthFailOp,
+ frontFace.StencilPassOp,
+ frontFace.StencilFunc
+ };
+ }
+ void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
+ {
+ m_Desc.BackFace = {
+ backFace.StencilFailOp,
+ backFace.StencilDepthFailOp,
+ backFace.StencilPassOp,
+ backFace.StencilFunc
+ };
+ }
+ void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
+ {
+ m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1;
+ }
+ operator const D3D12_DEPTH_STENCIL_DESC1& () const noexcept { return m_Desc; }
+ operator D3D12_DEPTH_STENCIL_DESC1& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ CD3DX12_DEPTH_STENCIL_DESC1 m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_SAMPLE_MASK_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_SAMPLE_MASK_SUBOBJECT()
+ : m_Desc(0xffffffffu)
+ {
+ Init();
+ }
+ CD3DX12_SAMPLE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(0xffffffffu)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc)
+ : m_Desc(desc)
+ {
+ Init();
+ }
+ CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ : m_Desc(desc)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetSampleMask(UINT sampleMask)
+ {
+ m_Desc = sampleMask;
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK;
+ }
+ operator const UINT& () const noexcept { return m_Desc; }
+ operator UINT& () noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ UINT m_Desc;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_GENERIC_PROGRAM_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_GENERIC_PROGRAM_SUBOBJECT()
+ {
+ Init();
+ }
+ CD3DX12_GENERIC_PROGRAM_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ void SetProgramName(LPCWSTR ProgramName)
+ {
+ m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
+ }
+ void AddExport(LPCWSTR exportName)
+ {
+ m_Exports.emplace_back(m_Strings.LocalCopy(exportName));
+ m_Desc.NumExports++;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.pExports = &m_Exports[0];
+ }
+ void AddSubobject(const D3D12_STATE_SUBOBJECT& subobject)
+ {
+ m_Subobjects.emplace_back(&subobject);
+ m_Desc.NumSubobjects++;
+ // Below: using ugly way to get pointer in case .data() is not defined
+ m_Desc.ppSubobjects = &m_Subobjects[0];
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM;
+ }
+ operator const D3D12_GENERIC_PROGRAM_DESC& () const noexcept { return m_Desc; }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_GENERIC_PROGRAM_DESC m_Desc;
+ std::vector m_Exports;
+ std::vector m_Subobjects;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_NODE_OUTPUT_OVERRIDES
+{
+public:
+ CD3DX12_NODE_OUTPUT_OVERRIDES(const D3D12_NODE_OUTPUT_OVERRIDES** ppOwner, UINT* pNumOutputOverrides) noexcept
+ {
+ m_Desc.clear();
+ m_ppOwner = ppOwner;
+ *m_ppOwner = nullptr;
+ m_pNumOutputOverrides = pNumOutputOverrides;
+ *m_pNumOutputOverrides = 0;
+ }
+ void NewOutputOverride()
+ {
+ m_Desc.emplace_back(D3D12_NODE_OUTPUT_OVERRIDES{});
+ *m_ppOwner = m_Desc.data();
+ (*m_pNumOutputOverrides)++;
+ }
+ void OutputIndex(UINT index)
+ {
+ m_Desc.back().OutputIndex = index;
+ }
+ void NewName(LPCWSTR Name, UINT ArrayIndex = 0)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(Name),ArrayIndex });
+ m_Desc.back().pNewName = &m_NodeIDs.front();
+ }
+ void AllowSparseNodes(BOOL bAllow)
+ {
+ m_UINTs.emplace_front((UINT)bAllow);
+ m_Desc.back().pAllowSparseNodes = (BOOL*)&m_UINTs.front();
+ }
+ void MaxOutputRecords(UINT maxOutputRecords) noexcept
+ {
+ m_UINTs.emplace_front(maxOutputRecords);
+ m_Desc.back().pMaxRecords = &m_UINTs.front();
+ }
+ void MaxOutputRecordsSharedWith(UINT outputIndex) noexcept
+ {
+ m_UINTs.emplace_front(outputIndex);
+ m_Desc.back().pMaxRecordsSharedWithOutputIndex = &m_UINTs.front();
+ }
+private:
+ std::vector m_Desc;
+ // Cached parameters
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::forward_list m_UINTs;
+ std::forward_list m_NodeIDs;
+ const D3D12_NODE_OUTPUT_OVERRIDES** m_ppOwner;
+ UINT* m_pNumOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_WORK_GRAPH_SUBOBJECT;
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_NODE_HELPER_BASE
+{
+protected:
+ struct Backreference
+ {
+ CD3DX12_WORK_GRAPH_SUBOBJECT *m_pGraph;
+ UINT m_NodeIndex;
+ };
+public:
+ CD3DX12_NODE_HELPER_BASE(const Backreference &BackRef)
+ : m_BackRef(BackRef)
+ {
+ }
+ virtual ~CD3DX12_NODE_HELPER_BASE() = default;
+protected:
+ D3D12_NODE *GetNode() const;
+ const Backreference m_BackRef;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_SHADER_NODE // Not specifying launch mode.
+ // Don't need to distinguish if no parameter overriding is happening
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_SHADER_NODE(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr)
+ : CD3DX12_NODE_HELPER_BASE(BackRef)
+ {
+ GetNode()->NodeType = D3D12_NODE_TYPE_SHADER;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+};
+
+#endif // D3D12_SDK_VERSION >= 612
+
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+
+//------------------------------------------------------------------------------------------------
+// Use this class when defining a broadcasting launch node where configuration parameters
+// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
+class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr) :
+ CD3DX12_NODE_HELPER_BASE(BackRef),
+ m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
+ {
+ Overrides = {};
+ D3D12_NODE *pNode = GetNode();
+ pNode->NodeType = D3D12_NODE_TYPE_SHADER;
+ pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH;
+ pNode->Shader.pBroadcastingLaunchOverrides = &Overrides;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+ void LocalRootArgumentsTableIndex(UINT index)
+ {
+ m_UINTs.emplace_front(index);
+ Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
+ }
+ void ProgramEntry(BOOL bIsProgramEntry)
+ {
+ m_UINTs.emplace_front(bIsProgramEntry);
+ Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
+ }
+ void NewName(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pNewName = &m_NodeIDs.front();
+ }
+ void ShareInputOf(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pShareInputOf = &m_NodeIDs.front();
+ }
+ void DispatchGrid(UINT x, UINT y, UINT z)
+ {
+ m_UINT3s.emplace_front(UINT3{ x,y,z });
+ Overrides.pDispatchGrid = (UINT*)&m_UINT3s.front();
+ }
+ void MaxDispatchGrid(UINT x, UINT y, UINT z)
+ {
+ m_UINT3s.emplace_front(UINT3{x,y,z});
+ Overrides.pMaxDispatchGrid = (UINT*)&m_UINT3s.front();
+ }
+ CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
+ {
+ return m_NodeOutputOverrides;
+ }
+ D3D12_BROADCASTING_LAUNCH_OVERRIDES Overrides;
+private:
+ // Cached parameters
+ std::forward_list m_UINTs;
+ struct UINT3
+ {
+ UINT x;
+ UINT y;
+ UINT z;
+ };
+ std::forward_list m_UINT3s;
+ std::forward_list m_NodeIDs;
+ CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+// Use this class when defining a coalescing launch node where configuration parameters
+// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
+class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr) :
+ CD3DX12_NODE_HELPER_BASE(BackRef),
+ m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
+ {
+ Overrides = {};
+ D3D12_NODE *pNode = GetNode();
+ pNode->NodeType = D3D12_NODE_TYPE_SHADER;
+ pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH;
+ pNode->Shader.pCoalescingLaunchOverrides = &Overrides;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+ void LocalRootArgumentsTableIndex(UINT index)
+ {
+ m_UINTs.emplace_front(index);
+ Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
+ }
+ void ProgramEntry(BOOL bIsProgramEntry)
+ {
+ m_UINTs.emplace_front(bIsProgramEntry);
+ Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
+ }
+ void NewName(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pNewName = &m_NodeIDs.front();
+ }
+ void ShareInputOf(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pShareInputOf = &m_NodeIDs.front();
+ }
+ CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
+ {
+ return m_NodeOutputOverrides;
+ }
+ D3D12_COALESCING_LAUNCH_OVERRIDES Overrides;
+private:
+ // Cached parameters
+ std::forward_list m_UINTs;
+ struct UINT3
+ {
+ UINT x;
+ UINT y;
+ UINT z;
+ };
+ std::forward_list m_UINT3s;
+ std::forward_list m_NodeIDs;
+ CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+// Use this class when defining a thread launch node where configuration parameters
+// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
+class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr) :
+ CD3DX12_NODE_HELPER_BASE(BackRef),
+ m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
+ {
+ Overrides = {};
+ D3D12_NODE *pNode = GetNode();
+ pNode->NodeType = D3D12_NODE_TYPE_SHADER;
+ pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH;
+ pNode->Shader.pThreadLaunchOverrides = &Overrides;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+ void LocalRootArgumentsTableIndex(UINT index)
+ {
+ m_UINTs.emplace_front(index);
+ Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
+ }
+ void ProgramEntry(BOOL bIsProgramEntry)
+ {
+ m_UINTs.emplace_front(bIsProgramEntry);
+ Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
+ }
+ void NewName(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pNewName = &m_NodeIDs.front();
+ }
+ void ShareInputOf(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pShareInputOf = &m_NodeIDs.front();
+ }
+ CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
+ {
+ return m_NodeOutputOverrides;
+ }
+ D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
+private:
+ // Cached parameters
+ std::forward_list m_UINTs;
+ std::forward_list m_NodeIDs;
+ CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+// Use this class when defining a node where configuration parameters
+// need to be overridden for parameters that are common to all launch node types.
+// This option is a convenience if you don't want to determine what the launch mode is
+// and just want to override a setting that isn't specific to launch mode.
+// If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
+class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES
+ : public CD3DX12_NODE_HELPER_BASE
+{
+public:
+ CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES(
+ const Backreference &BackRef,
+ LPCWSTR _Shader = nullptr) :
+ CD3DX12_NODE_HELPER_BASE(BackRef),
+ m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
+ {
+ Overrides = {};
+ D3D12_NODE *pNode = GetNode();
+ pNode->NodeType = D3D12_NODE_TYPE_SHADER;
+ pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE;
+ pNode->Shader.pThreadLaunchOverrides = &Overrides;
+ Shader(_Shader);
+ }
+ void Shader(LPCWSTR _Shader)
+ {
+ GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
+ }
+ LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
+ void LocalRootArgumentsTableIndex(UINT index)
+ {
+ m_UINTs.emplace_front(index);
+ Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
+ }
+ void ProgramEntry(BOOL bIsProgramEntry)
+ {
+ m_UINTs.emplace_front(bIsProgramEntry);
+ Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
+ }
+ void NewName(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pNewName = &m_NodeIDs.front();
+ }
+ void ShareInputOf(D3D12_NODE_ID NodeID)
+ {
+ m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
+ Overrides.pShareInputOf = &m_NodeIDs.front();
+ }
+ CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
+ {
+ return m_NodeOutputOverrides;
+ }
+ D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
+private:
+ // Cached parameters
+ std::forward_list m_UINTs;
+ std::forward_list m_NodeIDs;
+ CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
+};
+
+//------------------------------------------------------------------------------------------------
+class CD3DX12_WORK_GRAPH_SUBOBJECT
+ : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
+{
+public:
+ CD3DX12_WORK_GRAPH_SUBOBJECT() noexcept
+ {
+ Init();
+ }
+ CD3DX12_WORK_GRAPH_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
+ {
+ Init();
+ AddToStateObject(ContainingStateObject);
+ }
+ D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
+ {
+ return D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH;
+ }
+ void IncludeAllAvailableNodes()
+ {
+ m_Desc.Flags |= D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES;
+ }
+
+
+ void SetProgramName(LPCWSTR ProgramName)
+ {
+ m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
+ }
+ void AddEntrypoint(D3D12_NODE_ID Entrypoint)
+ {
+ m_Entrypoints.emplace_back(D3D12_NODE_ID{ m_Strings.LocalCopy(Entrypoint.Name),Entrypoint.ArrayIndex });
+ m_Desc.NumEntrypoints++;
+ m_Desc.pEntrypoints = m_Entrypoints.data();
+ }
+
+ template
+ T* CreateNode()
+ {
+ m_NodeDescs.push_back({});
+ m_Desc.NumExplicitlyDefinedNodes++;
+ m_Desc.pExplicitlyDefinedNodes = m_NodeDescs.data();
+ T* pNodeHelper = new T({this, (UINT)m_NodeDescs.size() - 1});
+ m_OwnedNodeHelpers.emplace_back(pNodeHelper);
+ return pNodeHelper;
+ }
+ CD3DX12_SHADER_NODE* CreateShaderNode(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+ CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES* CreateBroadcastingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+ CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES* CreateCoalescingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+ CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES* CreateThreadLaunchNodeOverrides(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+ CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES* CreateCommonComputeNodeOverrides(LPCWSTR Shader = nullptr)
+ {
+ auto pNode = CreateNode();
+ pNode->Shader(Shader);
+ return pNode;
+ }
+#endif // D3D12_SDK_VERSION >= 612
+
+
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
+
+ operator const D3D12_WORK_GRAPH_DESC& () noexcept
+ {
+ return m_Desc;
+ }
+private:
+ void Init() noexcept
+ {
+ SUBOBJECT_HELPER_BASE::Init();
+ m_Desc = {};
+ m_Entrypoints.clear();
+ m_NodeDescs.clear();
+ }
+ void* Data() noexcept override { return &m_Desc; }
+ D3D12_WORK_GRAPH_DESC m_Desc;
+ std::vector m_Entrypoints;
+ std::vector m_NodeDescs;
+ CD3DX12_STATE_OBJECT_DESC::StringContainer m_Strings;
+ std::vector> m_OwnedNodeHelpers;
+ friend class CD3DX12_NODE_HELPER_BASE;
+};
+
+inline D3D12_NODE * CD3DX12_NODE_HELPER_BASE::GetNode() const
+{
+ return &m_BackRef.m_pGraph->m_NodeDescs[m_BackRef.m_NodeIndex];
+}
+#endif // D3D12_SDK_VERSION >= 612
+
#undef D3DX12_COM_PTR
#undef D3DX12_COM_PTR_GET
#undef D3DX12_COM_PTR_ADDRESSOF
+
+
diff --git a/thirdparty/directx_headers/include/directx/dxcore_interface.h b/thirdparty/directx_headers/include/directx/dxcore_interface.h
index b487fe13fb6..318208ea3ad 100644
--- a/thirdparty/directx_headers/include/directx/dxcore_interface.h
+++ b/thirdparty/directx_headers/include/directx/dxcore_interface.h
@@ -35,13 +35,25 @@ enum class DXCoreAdapterProperty : uint32_t
IsHardware = 11,
IsIntegrated = 12,
IsDetachable = 13,
- HardwareIDParts = 14
+ HardwareIDParts = 14,
+ PhysicalAdapterCount = 15,
+ AdapterEngineCount = 16,
+ AdapterEngineName = 17,
};
enum class DXCoreAdapterState : uint32_t
{
IsDriverUpdateInProgress = 0,
- AdapterMemoryBudget = 1
+ AdapterMemoryBudget = 1,
+ AdapterMemoryUsageBytes = 2,
+ AdapterMemoryUsageByProcessBytes = 3,
+ AdapterEngineRunningTimeMicroseconds = 4,
+ AdapterEngineRunningTimeByProcessMicroseconds = 5,
+ AdapterTemperatureCelsius = 6,
+ AdapterInUseProcessCount = 7,
+ AdapterInUseProcessSet = 8,
+ AdapterEngineFrequencyHertz = 9,
+ AdapterMemoryFrequencyHertz = 10
};
enum class DXCoreSegmentGroup : uint32_t
@@ -65,6 +77,34 @@ enum class DXCoreAdapterPreference : uint32_t
HighPerformance = 2
};
+enum class DXCoreWorkload : uint32_t
+{
+ Graphics = 0,
+ Compute = 1,
+ Media = 2,
+ MachineLearning = 3,
+};
+
+enum class DXCoreRuntimeFilterFlags : uint32_t
+{
+ None = 0x0,
+ D3D11 = 0x1,
+ D3D12 = 0x2
+};
+
+DEFINE_ENUM_FLAG_OPERATORS(DXCoreRuntimeFilterFlags)
+
+enum class DXCoreHardwareTypeFilterFlags : uint32_t
+{
+ None = 0x0,
+ GPU = 0x1,
+ ComputeAccelerator = 0x2,
+ NPU = 0x4,
+ MediaAccelerator = 0x8
+};
+
+DEFINE_ENUM_FLAG_OPERATORS(DXCoreHardwareTypeFilterFlags)
+
struct DXCoreHardwareID
{
uint32_t vendorID;
@@ -96,6 +136,86 @@ struct DXCoreAdapterMemoryBudget
uint64_t currentReservation;
};
+struct DXCoreAdapterEngineIndex
+{
+ uint32_t physicalAdapterIndex;
+ uint32_t engineIndex;
+};
+
+struct DXCoreEngineQueryInput
+{
+ DXCoreAdapterEngineIndex adapterEngineIndex;
+ uint32_t processId;
+};
+
+struct DXCoreEngineQueryOutput
+{
+ uint64_t runningTime;
+ bool processQuerySucceeded;
+};
+
+enum class DXCoreMemoryType : uint32_t
+{
+ Dedicated = 0,
+ Shared = 1
+};
+
+struct DXCoreMemoryUsage
+{
+ uint64_t committed;
+ uint64_t resident;
+};
+
+struct DXCoreMemoryQueryInput
+{
+ uint32_t physicalAdapterIndex;
+ DXCoreMemoryType memoryType;
+};
+
+struct DXCoreProcessMemoryQueryInput
+{
+ uint32_t physicalAdapterIndex;
+ DXCoreMemoryType memoryType;
+ uint32_t processId;
+};
+
+struct DXCoreProcessMemoryQueryOutput
+{
+ DXCoreMemoryUsage memoryUsage;
+ bool processQuerySucceeded;
+};
+
+struct DXCoreAdapterProcessSetQueryInput
+{
+ uint32_t arraySize;
+ _Field_size_(arraySize) uint32_t* processIds;
+};
+
+struct DXCoreAdapterProcessSetQueryOutput
+{
+ uint32_t processesWritten;
+ uint32_t processesTotal;
+};
+
+struct DXCoreEngineNamePropertyInput
+{
+ DXCoreAdapterEngineIndex adapterEngineIndex;
+ uint32_t engineNameLength;
+ _Field_size_(engineNameLength) wchar_t *engineName;
+};
+
+struct DXCoreEngineNamePropertyOutput
+{
+ uint32_t engineNameLength;
+};
+
+struct DXCoreFrequencyQueryOutput
+{
+ uint64_t frequency;
+ uint64_t maxFrequency;
+ uint64_t maxOverclockedFrequency;
+};
+
typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
DXCoreNotificationType notificationType,
_In_ IUnknown *object,
@@ -104,11 +224,21 @@ typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
static_assert(sizeof(bool) == 1, "bool assumed as one byte");
DEFINE_GUID(IID_IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
+DEFINE_GUID(IID_IDXCoreAdapterFactory1, 0xd5682e19, 0x6d21, 0x401c, 0x82, 0x7a, 0x9a, 0x51, 0xa4, 0xea, 0x35, 0xd7);
DEFINE_GUID(IID_IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
DEFINE_GUID(IID_IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
+DEFINE_GUID(IID_IDXCoreAdapter1, 0xa0783366, 0xcfa3, 0x43be, 0x9d, 0x79, 0x55, 0xb2, 0xda, 0x97, 0xc6, 0x3c);
+
DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D11_GRAPHICS, 0x8c47866b, 0x7583, 0x450d, 0xf0, 0xf0, 0x6b, 0xad, 0xa8, 0x95, 0xaf, 0x4b);
DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GRAPHICS, 0x0c9ece4d, 0x2f6e, 0x4f01, 0x8c, 0x96, 0xe8, 0x9e, 0x33, 0x1b, 0x47, 0xb1);
DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, 0x248e2800, 0xa793, 0x4724, 0xab, 0xaa, 0x23, 0xa6, 0xde, 0x1b, 0xe0, 0x90);
+DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GENERIC_ML, 0xb71b0d41, 0x1088, 0x422f, 0xa2, 0x7c, 0x2, 0x50, 0xb7, 0xd3, 0xa9, 0x88);
+DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GENERIC_MEDIA, 0x8eb2c848, 0x82f6, 0x4b49, 0xaa, 0x87, 0xae, 0xcf, 0xcf, 0x1, 0x74, 0xc6);
+
+DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_GPU, 0xb69eb219, 0x3ded, 0x4464, 0x97, 0x9f, 0xa0, 0xb, 0xd4, 0x68, 0x70, 0x6);
+DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_COMPUTE_ACCELERATOR, 0xe0b195da, 0x58ef, 0x4a22, 0x90, 0xf1, 0x1f, 0x28, 0x16, 0x9c, 0xab, 0x8d);
+DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_NPU, 0xd46140c4, 0xadd7, 0x451b, 0x9e, 0x56, 0x6, 0xfe, 0x8c, 0x3b, 0x58, 0xed);
+DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_MEDIA_ACCELERATOR, 0x66bdb96a, 0x50b, 0x44c7, 0xa4, 0xfd, 0xd1, 0x44, 0xce, 0xa, 0xb4, 0x43);
/* interface IDXCoreAdapter */
MIDL_INTERFACE("f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e")
@@ -214,6 +344,32 @@ public:
}
};
+/* interface IDXCoreAdapter1 */
+MIDL_INTERFACE("a0783366-cfa3-43be-9d79-55b2da97c63c")
+IDXCoreAdapter1 : public IDXCoreAdapter
+{
+public:
+ virtual HRESULT STDMETHODCALLTYPE GetPropertyWithInput(
+ DXCoreAdapterProperty property,
+ size_t inputPropertyDetailsSize,
+ _In_reads_bytes_opt_(inputPropertyDetailsSize) const void *inputPropertyDetails,
+ size_t outputBufferSize,
+ _Out_writes_bytes_(outputBufferSize) void *outputBuffer) = 0;
+
+ template
+ HRESULT GetPropertyWithInput(
+ DXCoreAdapterProperty property,
+ _In_reads_bytes_opt_(sizeof(T1)) const T1 *inputPropertyDetails,
+ _Out_writes_bytes_(sizeof(T2)) T2 *outputBuffer)
+ {
+ return GetPropertyWithInput(property,
+ sizeof(T1),
+ (const void*)inputPropertyDetails,
+ sizeof(T2),
+ (void*)outputBuffer);
+ }
+};
+
/* interface IDXCoreAdapterList */
MIDL_INTERFACE("526c7776-40e9-459b-b711-f32ad76dfc28")
IDXCoreAdapterList : public IUnknown
@@ -309,8 +465,33 @@ public:
uint32_t eventCookie) = 0;
};
+/* interface IDXCoreAdapterFactory1 */
+MIDL_INTERFACE("d5682e19-6d21-401c-827a-9a51a4ea35d7")
+IDXCoreAdapterFactory1 : public IDXCoreAdapterFactory
+{
+public:
+ virtual HRESULT STDMETHODCALLTYPE CreateAdapterListByWorkload(
+ DXCoreWorkload workload,
+ DXCoreRuntimeFilterFlags runtimeFilter,
+ DXCoreHardwareTypeFilterFlags hardwareTypeFilter,
+ REFIID riid,
+ _COM_Outptr_ void **ppvAdapterList) = 0;
+
+ template
+ HRESULT STDMETHODCALLTYPE CreateAdapterListByWorkload(
+ DXCoreWorkload workload,
+ DXCoreRuntimeFilterFlags runtimeFilter,
+ DXCoreHardwareTypeFilterFlags hardwareTypeFilter,
+ _COM_Outptr_ T **ppvAdapterList)
+ {
+ return CreateAdapterListByWorkload(workload,
+ runtimeFilter,
+ hardwareTypeFilter,
+ IID_PPV_ARGS(ppvAdapterList));
+ }
+};
+
#endif // __cplusplus
#endif // __dxcore_interface_h__
-
diff --git a/thirdparty/directx_headers/include/dxguids/dxguids.h b/thirdparty/directx_headers/include/dxguids/dxguids.h
index b9a7b08fa7a..76155708f5b 100644
--- a/thirdparty/directx_headers/include/dxguids/dxguids.h
+++ b/thirdparty/directx_headers/include/dxguids/dxguids.h
@@ -87,6 +87,7 @@ WINADAPTER_IID(ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8
WINADAPTER_IID(ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7);
WINADAPTER_IID(ID3D12GraphicsCommandList2, 0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28);
WINADAPTER_IID(ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed);
+WINADAPTER_IID(ID3D12CommandQueue1, 0x3a3c3165, 0x0ee7, 0x4b8e, 0xa0, 0xaf, 0x63, 0x56, 0xb4, 0xc3, 0xbb, 0xb9);
WINADAPTER_IID(ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7);
WINADAPTER_IID(ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f);
WINADAPTER_IID(ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3);
@@ -160,9 +161,12 @@ WINADAPTER_IID(ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58
WINADAPTER_IID(ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
WINADAPTER_IID(ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
WINADAPTER_IID(ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
+WINADAPTER_IID(ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
WINADAPTER_IID(ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
+WINADAPTER_IID(ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
WINADAPTER_IID(ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
WINADAPTER_IID(ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
+WINADAPTER_IID(ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
#endif
#ifdef __d3d12sdklayers_h__
@@ -190,6 +194,8 @@ WINADAPTER_IID(ID3D12InfoQueue1, 0x2852dd88, 0xb484, 0x4c0c, 0xb6, 0xb1, 0x67, 0
// DXCore
#ifdef __dxcore_interface_h__
WINADAPTER_IID(IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
+WINADAPTER_IID(IDXCoreAdapterFactory1, 0xd5682e19, 0x6d21, 0x401c, 0x82, 0x7a, 0x9a, 0x51, 0xa4, 0xea, 0x35, 0xd7);
WINADAPTER_IID(IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
WINADAPTER_IID(IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
+WINADAPTER_IID(IDXCoreAdapter1, 0xa0783366, 0xcfa3, 0x43be, 0x9d, 0x79, 0x55, 0xb2, 0xda, 0x97, 0xc6, 0x3c);
#endif
diff --git a/thirdparty/directx_headers/patches/0001-mingw-pragma.patch b/thirdparty/directx_headers/patches/0001-mingw-pragma.patch
deleted file mode 100644
index cf7dd55e617..00000000000
--- a/thirdparty/directx_headers/patches/0001-mingw-pragma.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff --git a/thirdparty/directx_headers/include/directx/d3dx12_pipeline_state_stream.h b/thirdparty/directx_headers/include/directx/d3dx12_pipeline_state_stream.h
-index f061e79596..27c7f20448 100644
---- a/thirdparty/directx_headers/include/directx/d3dx12_pipeline_state_stream.h
-+++ b/thirdparty/directx_headers/include/directx/d3dx12_pipeline_state_stream.h
-@@ -25,8 +25,10 @@
- struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
- struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
-
-+#if defined(_MSC_VER)
- #pragma warning(push)
- #pragma warning(disable : 4324)
-+#endif
- template
- class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
- {
-@@ -42,7 +44,9 @@ public:
- InnerStructType* operator&() noexcept { return &pssInner; }
- InnerStructType const* operator&() const noexcept { return &pssInner; }
- };
-+#if defined(_MSC_VER)
- #pragma warning(pop)
-+#endif
- typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
- typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
- typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
diff --git a/thirdparty/directx_headers/patches/0002-win7-8-dynamic-load.patch b/thirdparty/directx_headers/patches/0001-win7-8-dynamic-load.patch
similarity index 84%
rename from thirdparty/directx_headers/patches/0002-win7-8-dynamic-load.patch
rename to thirdparty/directx_headers/patches/0001-win7-8-dynamic-load.patch
index db7da3b83a1..1aec6f5e567 100644
--- a/thirdparty/directx_headers/patches/0002-win7-8-dynamic-load.patch
+++ b/thirdparty/directx_headers/patches/0001-win7-8-dynamic-load.patch
@@ -1,16 +1,16 @@
diff --git a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h b/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
-index 572efed852..2da79d10f1 100644
+index e194d30a3f..bf9a2c9101 100644
--- a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
+++ b/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
-@@ -996,6 +996,7 @@ struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
- // two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
- // 1.1 is not supported.
+@@ -1001,6 +1001,7 @@ struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
+ #endif
+
inline HRESULT D3DX12SerializeVersionedRootSignature(
+ _In_ HMODULE pLibD3D12,
_In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
D3D_ROOT_SIGNATURE_VERSION MaxVersion,
_Outptr_ ID3DBlob** ppBlob,
-@@ -1006,13 +1007,18 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
+@@ -1011,13 +1012,18 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
*ppErrorBlob = nullptr;
}
@@ -30,7 +30,7 @@ index 572efed852..2da79d10f1 100644
case D3D_ROOT_SIGNATURE_VERSION_1_1:
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
-@@ -1114,7 +1120,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
+@@ -1125,7 +1131,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
if (SUCCEEDED(hr))
{
const CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
@@ -39,7 +39,7 @@ index 572efed852..2da79d10f1 100644
}
if (pParameters)
-@@ -1145,7 +1151,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
+@@ -1159,7 +1165,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
{
case D3D_ROOT_SIGNATURE_VERSION_1_0:
case D3D_ROOT_SIGNATURE_VERSION_1_1:
@@ -48,7 +48,7 @@ index 572efed852..2da79d10f1 100644
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
case D3D_ROOT_SIGNATURE_VERSION_1_2:
-@@ -1181,7 +1187,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
+@@ -1195,7 +1201,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
if (SUCCEEDED(hr))
{
const CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC desc(desc_1_1.NumParameters, desc_1_1.pParameters, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
@@ -57,10 +57,10 @@ index 572efed852..2da79d10f1 100644
}
if (pStaticSamplers)
-@@ -1197,7 +1203,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
- #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
+@@ -1216,7 +1222,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
case D3D_ROOT_SIGNATURE_VERSION_1_2:
#endif
+ default:
- return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
+ return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
}