Upgrade Agility SDK & DirectX Headers.

This commit is contained in:
Skyth 2025-12-15 13:11:04 +03:00
parent d08fbbcc0d
commit 0307895ede
27 changed files with 14693 additions and 440 deletions

View File

@ -1827,8 +1827,8 @@ ProjectSettings::ProjectSettings() {
// The default value must match the minor part of the Agility SDK version // The default value must match the minor part of the Agility SDK version
// installed by the scripts provided in the repository // installed by the scripts provided in the repository
// (check `misc/scripts/install_d3d12_sdk_windows.py`). // (check `misc/scripts/install_d3d12_sdk_windows.py`).
// For example, if the script installs 1.613.3, the default value must be 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"), 613); 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_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); GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "rendering/textures/canvas_textures/default_texture_repeat", PROPERTY_HINT_ENUM, "Disable,Enable,Mirror"), 0);

View File

@ -3254,8 +3254,8 @@
<member name="rendering/renderer/rendering_method.web" type="String" setter="" getter="" default="&quot;gl_compatibility&quot;"> <member name="rendering/renderer/rendering_method.web" type="String" setter="" getter="" default="&quot;gl_compatibility&quot;">
Override for [member rendering/renderer/rendering_method] on web. Override for [member rendering/renderer/rendering_method] on web.
</member> </member>
<member name="rendering/rendering_device/d3d12/agility_sdk_version" type="int" setter="" getter="" default="613"> <member name="rendering/rendering_device/d3d12/agility_sdk_version" type="int" setter="" getter="" default="618">
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.
</member> </member>
<member name="rendering/rendering_device/d3d12/max_resource_descriptors" type="int" setter="" getter="" default="65536"> <member name="rendering/rendering_device/d3d12/max_resource_descriptors" type="int" setter="" getter="" default="65536">
The number of entries in the resource descriptor heap the Direct3D 12 rendering driver uses for most rendering operations. The number of entries in the resource descriptor heap the Direct3D 12 rendering driver uses for most rendering operations.

View File

@ -41,8 +41,8 @@ pix_folder = os.path.join(deps_folder, "pix")
# DirectX 12 Agility SDK # DirectX 12 Agility SDK
# Check for latest version: https://www.nuget.org/api/v2/package/Microsoft.Direct3D.D3D12 (check downloaded filename) # 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` # 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`). # project setting to match the minor version (e.g. for `1.618.5`, it should be `618`).
agility_sdk_version = "1.613.3" agility_sdk_version = "1.618.5"
agility_sdk_archive = os.path.join(deps_folder, f"Agility_SDK_{agility_sdk_version}.nupkg") 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") agility_sdk_folder = os.path.join(deps_folder, "agility_sdk")

View File

@ -170,7 +170,7 @@ Patches:
## directx_headers ## directx_headers
- Upstream: https://github.com/microsoft/DirectX-Headers - Upstream: https://github.com/microsoft/DirectX-Headers
- Version: 1.611.1 (48f23952bc08a6dce0727339c07cedbc4797356c, 2023) - Version: 1.618.2 (dde59d560da2760fec612d6634124edc2a26b82f, 2025)
- License: MIT - License: MIT
Files extracted from upstream source: Files extracted from upstream source:
@ -181,8 +181,7 @@ Files extracted from upstream source:
Patches: Patches:
- `0001-mingw-pragma.patch` ([GH-83452](https://github.com/godotengine/godot/pull/83452)) - `0001-win7-8-dynamic-load.patch` ([GH-88496](https://github.com/godotengine/godot/pull/88496))
- `0002-win7-8-dynamic-load.patch` ([GH-88496](https://github.com/godotengine/godot/pull/88496))
## doctest ## doctest

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -87,6 +87,13 @@ typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */ #endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
#ifndef __VulkanOn12CreatorID_FWD_DEFINED__
#define __VulkanOn12CreatorID_FWD_DEFINED__
typedef interface VulkanOn12CreatorID VulkanOn12CreatorID;
#endif /* __VulkanOn12CreatorID_FWD_DEFINED__ */
#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__ #ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__ #define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID; typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
@ -101,6 +108,13 @@ typedef interface DirectMLPyTorchCreatorID DirectMLPyTorchCreatorID;
#endif /* __DirectMLPyTorchCreatorID_FWD_DEFINED__ */ #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 */ /* header files for imported files */
#include "oaidl.h" #include "oaidl.h"
#include "ocidl.h" #include "ocidl.h"
@ -126,7 +140,7 @@ enum D3D12_COMPATIBILITY_SHARED_FLAGS
D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
} D3D12_COMPATIBILITY_SHARED_FLAGS; } D3D12_COMPATIBILITY_SHARED_FLAGS;
DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS ); DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )
typedef typedef
enum D3D12_REFLECT_SHARED_PROPERTY enum D3D12_REFLECT_SHARED_PROPERTY
{ {
@ -565,6 +579,78 @@ EXTERN_C const IID IID_OpenCLOn12CreatorID;
#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */ #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__ #ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ #define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
@ -709,7 +795,79 @@ EXTERN_C const IID IID_DirectMLPyTorchCreatorID;
#endif /* __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__ */ #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] */ /* [local] */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */ #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_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_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_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_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_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_0009_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_s_ifspec;
/* Additional Prototypes for ALL interfaces */ /* Additional Prototypes for ALL interfaces */

View File

@ -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 <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif
/* verify that the <rpcsal.h> 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 <rpcndr.h>
#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 <winapifamily.h>
#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

View File

@ -999,7 +999,8 @@ enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
{ {
D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0, 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_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; } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
typedef typedef
@ -1046,6 +1047,15 @@ typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
FLOAT SlowdownFactor; FLOAT SlowdownFactor;
} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR; } 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; 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_PIX_EVENT_UNDERFLOW = 1384,
D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385, D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386, 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; } D3D12_MESSAGE_ID;
typedef struct D3D12_MESSAGE typedef struct D3D12_MESSAGE

View File

@ -37,6 +37,8 @@ typedef enum D3D12_SHADER_VERSION_TYPE
D3D12_SHVER_MESH_SHADER = 13, D3D12_SHVER_MESH_SHADER = 13,
D3D12_SHVER_AMPLIFICATION_SHADER = 14, D3D12_SHVER_AMPLIFICATION_SHADER = 14,
D3D12_SHVER_NODE_SHADER = 15,
D3D12_SHVER_RESERVED0 = 0xFFF0, D3D12_SHVER_RESERVED0 = 0xFFF0,
} D3D12_SHADER_VERSION_TYPE; } 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_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000 #define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000 #define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000 #define D3D_SHADER_REQUIRES_ADVANCED_TEXTURE_OPS 0x20000000
#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000 #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 typedef struct _D3D12_LIBRARY_DESC
@ -488,3 +492,4 @@ extern "C" {
#endif //__D3D12SHADER_H__ #endif //__D3D12SHADER_H__

File diff suppressed because it is too large Load Diff

View File

@ -390,6 +390,10 @@ enum D3D_SRV_DIMENSION
#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000 #define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000 #define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000
#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000 #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 typedef struct _D3D_SHADER_MACRO
{ {
LPCSTR Name; LPCSTR Name;
@ -961,10 +965,22 @@ enum D3D_REGISTER_COMPONENT_TYPE
D3D_REGISTER_COMPONENT_UINT32 = 1, D3D_REGISTER_COMPONENT_UINT32 = 1,
D3D_REGISTER_COMPONENT_SINT32 = 2, D3D_REGISTER_COMPONENT_SINT32 = 2,
D3D_REGISTER_COMPONENT_FLOAT32 = 3, 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_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32, D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32, 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; } D3D_REGISTER_COMPONENT_TYPE;
typedef typedef

View File

@ -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 <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif
/* verify that the <rpcsal.h> 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 <rpcndr.h>
#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

View File

@ -33,3 +33,4 @@
#endif //__D3DX12_H__ #endif //__D3DX12_H__

View File

@ -190,3 +190,4 @@ public:
#endif // defined( __cplusplus ) #endif // defined( __cplusplus )
#endif // __D3DX12_BARRIERS_H__ #endif // __D3DX12_BARRIERS_H__

View File

@ -1,4 +1,4 @@
//********************************************************* //*********************************************************
// //
// Copyright (c) Microsoft Corporation. // Copyright (c) Microsoft Corporation.
// Licensed under the MIT License (MIT). // Licensed under the MIT License (MIT).
@ -231,6 +231,15 @@ public: // Function declaration
BOOL ComputeOnlyWriteWatchSupported() const noexcept; BOOL ComputeOnlyWriteWatchSupported() const noexcept;
#endif #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 private: // Private structs and helpers declaration
struct ProtectedResourceSessionTypesLocal : D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES 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) #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
D3D12_FEATURE_DATA_D3D12_OPTIONS20 m_dOptions20; D3D12_FEATURE_DATA_D3D12_OPTIONS20 m_dOptions20;
#endif #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 // Implementations for CD3DX12FeatureSupport functions
@ -408,6 +423,12 @@ inline CD3DX12FeatureSupport::CD3DX12FeatureSupport() noexcept
#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611) #if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
, m_dOptions20{} , m_dOptions20{}
#endif #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) inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
@ -576,6 +597,20 @@ inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
} }
#endif #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 // Initialize per-node feature support data structures
const UINT uNodeCount = m_pDevice->GetNodeCount(); const UINT uNodeCount = m_pDevice->GetNodeCount();
m_dProtectedResourceSessionSupport.resize(uNodeCount); m_dProtectedResourceSessionSupport.resize(uNodeCount);
@ -948,6 +983,17 @@ FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxViewDescriptorHeapSize);
FEATURE_SUPPORT_GET(BOOL, m_dOptions20, ComputeOnlyWriteWatchSupported); FEATURE_SUPPORT_GET(BOOL, m_dOptions20, ComputeOnlyWriteWatchSupported);
#endif #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 // Helper function to decide the highest shader model supported by the system
// Stores the result in m_dShaderModel // Stores the result in m_dShaderModel
// Must be updated whenever a new shader model is added to the d3d12.h header // 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[] = 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) #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
D3D_SHADER_MODEL_6_8, D3D_SHADER_MODEL_6_8,
#endif #endif
@ -1054,8 +1103,12 @@ inline HRESULT CD3DX12FeatureSupport::QueryHighestFeatureLevel()
D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_1, D3D_FEATURE_LEVEL_9_1,
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 5)
D3D_FEATURE_LEVEL_1_0_CORE, D3D_FEATURE_LEVEL_1_0_CORE,
#endif
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
D3D_FEATURE_LEVEL_1_0_GENERIC D3D_FEATURE_LEVEL_1_0_GENERIC
#endif
}; };
D3D12_FEATURE_DATA_FEATURE_LEVELS dFeatureLevel; D3D12_FEATURE_DATA_FEATURE_LEVELS dFeatureLevel;
@ -1105,3 +1158,5 @@ inline HRESULT CD3DX12FeatureSupport::QueryProtectedResourceSessionTypes(UINT No
#undef FEATURE_SUPPORT_GET_NODE_INDEXED_NAME #undef FEATURE_SUPPORT_GET_NODE_INDEXED_NAME
// end CD3DX12FeatureSupport // end CD3DX12FeatureSupport

View File

@ -35,6 +35,126 @@ inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * p
return reinterpret_cast<ID3D12CommandList * const *>(pp); return reinterpret_cast<ID3D12CommandList * const *>(pp);
} }
#ifdef D3DX12_USE_ARRAY_COM_PTR
#include <vector>
//------------------------------------------------------------------------------------------------
// CArrayComPtr - Useful RAII container of raw IUnknown pointers.
template<typename _T>
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 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 operator D3D12_RASTERIZER_DESC() const noexcept
{ {
return (D3D12_RASTERIZER_DESC)CD3DX12_RASTERIZER_DESC1((D3D12_RASTERIZER_DESC1)*this); return static_cast<D3D12_RASTERIZER_DESC>(CD3DX12_RASTERIZER_DESC1(static_cast<D3D12_RASTERIZER_DESC1>(*this)));
} }
}; };
#endif // D3D12_SDK_VERSION >= 610 #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 // If expansion has occured, returns LclDesc, else returns the original pDesc
inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc( inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
CD3DX12_RESOURCE_DESC1& LclDesc, 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: // Expand mip levels:
if (pDesc->MipLevels == 0 || pDesc->Alignment == 0) if (pDesc->MipLevels == 0 || pDesc->Alignment == 0)
@ -1464,7 +1586,7 @@ inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
} }
return uiRet; return uiRet;
}; };
auto Max = [](UINT64 const & a, UINT64 const & b) auto Max = [](UINT64 const& a, UINT64 const& b)
{ {
return (a < b) ? b : a; return (a < b) ? b : a;
}; };
@ -1481,11 +1603,20 @@ inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
{ {
LclDesc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT; LclDesc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
} }
else else if (!(tightAlignmentSupported && (pDesc->Flags & D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT))
|| (pDesc->Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER))
{ {
LclDesc.Alignment = LclDesc.Alignment =
(pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT); (pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
} }
else
{
// 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; 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 struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
{ {
@ -1533,3 +2048,25 @@ struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
// assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats) // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
} }
}; };
//------------------------------------------------------------------------------------------------
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;
}
};

View File

@ -11,8 +11,8 @@
#error D3DX12 requires C++ #error D3DX12 requires C++
#endif #endif
#include "d3d12.h"
#include "d3dx12_default.h" #include "d3dx12_default.h"
#include "d3d12.h"
#include "d3dx12_core.h" #include "d3dx12_core.h"
//------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------
@ -25,7 +25,7 @@
struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } }; struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } }; 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(push)
#pragma warning(disable : 4324) #pragma warning(disable : 4324)
#endif #endif
@ -44,7 +44,7 @@ public:
InnerStructType* operator&() noexcept { return &pssInner; } InnerStructType* operator&() noexcept { return &pssInner; }
InnerStructType const* operator&() const noexcept { return &pssInner; } InnerStructType const* operator&() const noexcept { return &pssInner; }
}; };
#if defined(_MSC_VER) #ifdef _MSC_VER
#pragma warning(pop) #pragma warning(pop)
#endif #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< 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< 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< 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; 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_SERIALIZED_ROOT_SIGNATURE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE;
#endif
//------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------
// Stream Parser Helpers // Stream Parser Helpers
@ -122,11 +125,17 @@ struct ID3DX12PipelineParserCallbacks
virtual void SampleMaskCb(UINT) {} virtual void SampleMaskCb(UINT) {}
virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {} virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {} 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 // Error Callbacks
virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {} virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {} virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {} virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
virtual void FinalizeCb() {}
#endif
virtual ~ID3DX12PipelineParserCallbacks() = default; virtual ~ID3DX12PipelineParserCallbacks() = default;
}; };
@ -151,6 +160,131 @@ struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
D3D12_PIPELINE_STATE_FLAGS Flags; 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<D3D12_DEPTH_STENCIL_DESC2&>(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) #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_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 // 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) : Flags(Desc.Flags)
, NodeMask(Desc.NodeMask) , NodeMask(Desc.NodeMask)
, pRootSignature(Desc.pRootSignature) , pRootSignature(Desc.pRootSignature)
, PrimitiveTopologyType(Desc.PrimitiveTopologyType)
, PS(Desc.PS) , PS(Desc.PS)
, AS(Desc.AS) , AS(Desc.AS)
, MS(Desc.MS) , MS(Desc.MS)
@ -780,6 +915,7 @@ struct CD3DX12_PIPELINE_MESH_STATE_STREAM
CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags; CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask; CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature; CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
CD3DX12_PIPELINE_STATE_STREAM_PS PS; CD3DX12_PIPELINE_STATE_STREAM_PS PS;
CD3DX12_PIPELINE_STATE_STREAM_AS AS; CD3DX12_PIPELINE_STATE_STREAM_AS AS;
CD3DX12_PIPELINE_STATE_STREAM_MS MS; CD3DX12_PIPELINE_STATE_STREAM_MS MS;
@ -798,6 +934,7 @@ struct CD3DX12_PIPELINE_MESH_STATE_STREAM
D.Flags = this->Flags; D.Flags = this->Flags;
D.NodeMask = this->NodeMask; D.NodeMask = this->NodeMask;
D.pRootSignature = this->pRootSignature; D.pRootSignature = this->pRootSignature;
D.PrimitiveTopologyType = this->PrimitiveTopologyType;
D.PS = this->PS; D.PS = this->PS;
D.AS = this->AS; D.AS = this->AS;
D.MS = this->MS; D.MS = this->MS;
@ -907,6 +1044,7 @@ struct CD3DX12_PIPELINE_STATE_STREAM
} }
}; };
struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
{ {
CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream; CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
@ -1102,7 +1240,87 @@ private:
}; };
#endif // D3D12_SDK_VERSION >= 608 #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<D3D12_DEPTH_STENCIL_DESC2&>(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<D3D12_DEPTH_STENCIL_DESC2&>(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 struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
{ {
CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream; CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
@ -1171,6 +1389,88 @@ private:
}; };
#endif // D3D12_SDK_VERSION >= 610 #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<D3D12_DEPTH_STENCIL_DESC2&>(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<D3D12_DEPTH_STENCIL_DESC2&>(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 struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
{ {
CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream; CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
@ -1229,6 +1529,7 @@ private:
bool SeenDSS; bool SeenDSS;
}; };
inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
{ {
switch (SubobjectType) switch (SubobjectType)
@ -1397,11 +1698,21 @@ inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC&
pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream)); pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream));
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc); SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
break; break;
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE:
pCallbacks->SerializedRootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature)*>(pStream));
SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature);
break;
#endif
default: default:
pCallbacks->ErrorUnknownSubobject(SubobjectType); pCallbacks->ErrorUnknownSubobject(SubobjectType);
return E_INVALIDARG; return E_INVALIDARG;
} }
} }
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
pCallbacks->FinalizeCb();
#endif
return S_OK; return S_OK;
} }

View File

@ -62,8 +62,10 @@ public:
static LPCSTR GetName (DXGI_FORMAT Format, bool bHideInternalFormats = true); static LPCSTR GetName (DXGI_FORMAT Format, bool bHideInternalFormats = true);
static bool IsSRGBFormat (DXGI_FORMAT Format); static bool IsSRGBFormat (DXGI_FORMAT Format);
static UINT GetBitsPerStencil (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 void GetFormatReturnTypes (DXGI_FORMAT Format, D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations); // return array of 4 components
static UINT GetNumComponentsInFormat(DXGI_FORMAT Format); 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 // Converts the sequential component index (range from 0 to GetNumComponentsInFormat()) to
// the absolute component index (range 0 to 3). // the absolute component index (range 0 to 3).
@ -116,6 +118,8 @@ public:
static UINT GetDetailTableIndex (DXGI_FORMAT Format); static UINT GetDetailTableIndex (DXGI_FORMAT Format);
static UINT GetDetailTableIndexNoThrow (DXGI_FORMAT Format); static UINT GetDetailTableIndexNoThrow (DXGI_FORMAT Format);
static UINT GetDetailTableIndexThrow (DXGI_FORMAT Format); static UINT GetDetailTableIndexThrow (DXGI_FORMAT Format);
static bool SupportsDepth (DXGI_FORMAT Format);
static bool SupportsStencil (DXGI_FORMAT Format);
private: private:
static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format); static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format);

View File

@ -60,6 +60,8 @@ inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12
if (!(a.PreserveLocal == b.PreserveLocal)) return false; if (!(a.PreserveLocal == b.PreserveLocal)) return false;
break; break;
#endif #endif
default:
break;
} }
return true; 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; if (!(a.PreserveLocal == b.PreserveLocal)) return false;
break; break;
#endif #endif
default:
break;
} }
return true; return true;
} }

View File

@ -11,9 +11,9 @@
#error D3DX12 requires C++ #error D3DX12 requires C++
#endif #endif
#include "d3dx12_property_format_table.h"
#include "d3d12.h" #include "d3d12.h"
#include "d3dx12_core.h" #include "d3dx12_core.h"
#include "d3dx12_property_format_table.h"
//------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------
template <typename T, typename U, typename V> template <typename T, typename U, typename V>
inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept 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( inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
D3D12_RESOURCE_DESC1& LclDesc, 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<CD3DX12_RESOURCE_DESC1&>(LclDesc), static_cast<const CD3DX12_RESOURCE_DESC1*>(pDesc)); return D3DX12ConditionallyExpandAPIDesc(static_cast<CD3DX12_RESOURCE_DESC1&>(LclDesc), static_cast<const CD3DX12_RESOURCE_DESC1*>(pDesc), tightAlignmentSupported, alignAsCommitted);
} }
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606) #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
@ -429,6 +431,12 @@ inline bool D3DX12GetCopyableFootprints(
// Check if its a valid format // Check if its a valid format
D3DX12_ASSERT(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(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 WidthAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment( Format );
const UINT HeightAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment( Format ); const UINT HeightAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment( Format );
const UINT16 DepthAlignment = UINT16( D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment( Format ) ); const UINT16 DepthAlignment = UINT16( D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment( Format ) );
@ -460,7 +468,7 @@ inline bool D3DX12GetCopyableFootprints(
UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight; UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight;
D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(PlaneSlice, Format, (UINT)Width, Height, /*_Out_*/ PlaneFormat, /*_Out_*/ MinPlanePitchWidth, /* _Out_ */ PlaneWidth, /*_Out_*/ 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; auto& Placement = pLayouts ? pLayouts[uSubRes].Footprint : LocalPlacement;
Placement.Format = PlaneFormat; Placement.Format = PlaneFormat;
Placement.Width = PlaneWidth; Placement.Width = PlaneWidth;
@ -600,3 +608,5 @@ inline bool D3DX12GetCopyableFootprints(
} }
#endif // D3D12_SDK_VERSION >= 606 #endif // D3D12_SDK_VERSION >= 606

View File

@ -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 // 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 // two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
// 1.1 is not supported. // 1.1 is not supported.
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wcovered-switch-default"
#endif
inline HRESULT D3DX12SerializeVersionedRootSignature( inline HRESULT D3DX12SerializeVersionedRootSignature(
_In_ HMODULE pLibD3D12, _In_ HMODULE pLibD3D12,
_In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc, _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
@ -1060,6 +1065,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
break; break;
case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE: case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
{
const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable; 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; const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
@ -1087,6 +1093,11 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges; table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
table_1_0.pDescriptorRanges = pDescriptorRanges_1_0; table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
} }
break;
default:
break;
}
} }
} }
@ -1143,6 +1154,9 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
return hr; return hr;
} }
default:
break;
} }
break; break;
@ -1199,12 +1213,21 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
} }
#endif #endif
default:
break;
} }
break;
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609) #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
case D3D_ROOT_SIGNATURE_VERSION_1_2: case D3D_ROOT_SIGNATURE_VERSION_1_2:
#endif #endif
default:
return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob); return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
} }
return E_INVALIDARG; return E_INVALIDARG;
} }
#ifdef __clang__
#pragma clang diagnostic pop
#endif

File diff suppressed because it is too large Load Diff

View File

@ -35,13 +35,25 @@ enum class DXCoreAdapterProperty : uint32_t
IsHardware = 11, IsHardware = 11,
IsIntegrated = 12, IsIntegrated = 12,
IsDetachable = 13, IsDetachable = 13,
HardwareIDParts = 14 HardwareIDParts = 14,
PhysicalAdapterCount = 15,
AdapterEngineCount = 16,
AdapterEngineName = 17,
}; };
enum class DXCoreAdapterState : uint32_t enum class DXCoreAdapterState : uint32_t
{ {
IsDriverUpdateInProgress = 0, 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 enum class DXCoreSegmentGroup : uint32_t
@ -65,6 +77,34 @@ enum class DXCoreAdapterPreference : uint32_t
HighPerformance = 2 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 struct DXCoreHardwareID
{ {
uint32_t vendorID; uint32_t vendorID;
@ -96,6 +136,86 @@ struct DXCoreAdapterMemoryBudget
uint64_t currentReservation; 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)( typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
DXCoreNotificationType notificationType, DXCoreNotificationType notificationType,
_In_ IUnknown *object, _In_ IUnknown *object,
@ -104,11 +224,21 @@ typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
static_assert(sizeof(bool) == 1, "bool assumed as one byte"); 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_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_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_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_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_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_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 */ /* interface IDXCoreAdapter */
MIDL_INTERFACE("f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e") 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 <class T1, class T2>
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 */ /* interface IDXCoreAdapterList */
MIDL_INTERFACE("526c7776-40e9-459b-b711-f32ad76dfc28") MIDL_INTERFACE("526c7776-40e9-459b-b711-f32ad76dfc28")
IDXCoreAdapterList : public IUnknown IDXCoreAdapterList : public IUnknown
@ -309,8 +465,33 @@ public:
uint32_t eventCookie) = 0; 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<class T>
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 // __cplusplus
#endif // __dxcore_interface_h__ #endif // __dxcore_interface_h__

View File

@ -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(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(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(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(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(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); 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(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(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(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(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(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(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 #endif
#ifdef __d3d12sdklayers_h__ #ifdef __d3d12sdklayers_h__
@ -190,6 +194,8 @@ WINADAPTER_IID(ID3D12InfoQueue1, 0x2852dd88, 0xb484, 0x4c0c, 0xb6, 0xb1, 0x67, 0
// DXCore // DXCore
#ifdef __dxcore_interface_h__ #ifdef __dxcore_interface_h__
WINADAPTER_IID(IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06); 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(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(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 #endif

View File

@ -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 <typename InnerStructType, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type, typename DefaultArg = InnerStructType>
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;

View File

@ -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 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 --- a/thirdparty/directx_headers/include/directx/d3dx12_root_signature.h
+++ b/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 @@ -1001,6 +1001,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 #endif
// 1.1 is not supported.
inline HRESULT D3DX12SerializeVersionedRootSignature( inline HRESULT D3DX12SerializeVersionedRootSignature(
+ _In_ HMODULE pLibD3D12, + _In_ HMODULE pLibD3D12,
_In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc, _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
D3D_ROOT_SIGNATURE_VERSION MaxVersion, D3D_ROOT_SIGNATURE_VERSION MaxVersion,
_Outptr_ ID3DBlob** ppBlob, _Outptr_ ID3DBlob** ppBlob,
@@ -1006,13 +1007,18 @@ inline HRESULT D3DX12SerializeVersionedRootSignature( @@ -1011,13 +1012,18 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
*ppErrorBlob = nullptr; *ppErrorBlob = nullptr;
} }
@ -30,7 +30,7 @@ index 572efed852..2da79d10f1 100644
case D3D_ROOT_SIGNATURE_VERSION_1_1: case D3D_ROOT_SIGNATURE_VERSION_1_1:
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609) #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)) 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); 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) 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_0:
case D3D_ROOT_SIGNATURE_VERSION_1_1: case D3D_ROOT_SIGNATURE_VERSION_1_1:
@ -48,7 +48,7 @@ index 572efed852..2da79d10f1 100644
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609) #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
case D3D_ROOT_SIGNATURE_VERSION_1_2: case D3D_ROOT_SIGNATURE_VERSION_1_2:
@@ -1181,7 +1187,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature( @@ -1195,7 +1201,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
if (SUCCEEDED(hr)) 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); 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) if (pStaticSamplers)
@@ -1197,7 +1203,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature( @@ -1216,7 +1222,7 @@ inline HRESULT D3DX12SerializeVersionedRootSignature(
#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
case D3D_ROOT_SIGNATURE_VERSION_1_2: case D3D_ROOT_SIGNATURE_VERSION_1_2:
#endif #endif
default:
- return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob); - return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
+ return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob); + return d3d_D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
} }