Go to the documentation of this file.
51 #include <unordered_map>
62 class RenderDeviceD3D12Impl;
63 class RootSignatureCacheD3D12;
64 class PipelineResourceSignatureD3D12Impl;
84 return m_ResourceSignatures[index].pSignature;
90 return m_pd3d12RootSignature;
96 return m_ResourceSignatures[BindingIndex].BaseRootIndex;
102 return m_ResourceSignatures[BindingIndex].BaseRegisterSpace;
108 return m_TotalSpacesUsed;
115 const Uint32 m_SignatureCount;
118 Uint32 m_TotalSpacesUsed = 0;
123 CComPtr<ID3D12RootSignature> m_pd3d12RootSignature;
125 struct ResourceSignatureInfo
130 Uint32 BaseRegisterSpace = 0;
132 std::unique_ptr<ResourceSignatureInfo[]> m_ResourceSignatures;
134 RootSignatureCacheD3D12& m_Cache;
146 bool Create(ID3D12Device* pDevice,
Uint32 RegisterSpace);
149 bool IsDefined()
const {
return m_ShaderRecordSize > 0 && !m_Name.empty(); }
150 const char*
GetName()
const {
return m_Name.c_str(); }
156 return m_RegisterSpace;
160 const std::string m_Name;
161 const Uint32 m_ShaderRecordSize = 0;
162 Uint32 m_RegisterSpace = ~0u;
163 CComPtr<ID3D12RootSignature> m_pd3d12RootSignature;
189 std::mutex m_RootSigCacheMtx;
190 std::unordered_multimap<size_t, RefCntWeakPtr<RootSignatureD3D12>> m_RootSigCache;
Base interface for a reference counter object that stores the number of strong and weak references an...
Definition: ReferenceCounters.h:44
LocalRootSignatureD3D12(const char *pCBName, Uint32 ShaderRecordSize)
Definition: RootSignature.cpp:248
Uint32 GetRegisterSpace() const
Definition: RootSignature.hpp:153
PipelineResourceSignatureD3D12Impl * GetResourceSignature(Uint32 index) const
Definition: RootSignature.hpp:81
size_t GetHash() const
Definition: RootSignature.hpp:77
Uint32 GetShaderRegister() const
Definition: RootSignature.hpp:151
Implementation of the Diligent::RootSignature class.
Definition: RootSignature.hpp:67
Implementation of the Diligent::PipelineResourceSignatureD3D12Impl class.
Definition: PipelineResourceSignatureD3D12Impl.hpp:55
~RootSignatureCacheD3D12()
Definition: RootSignature.cpp:323
Uint32 GetSignatureCount() const
Definition: RootSignature.hpp:79
Template class implementing base functionality for an object.
Definition: ObjectBase.hpp:66
void OnDestroyRootSig(RootSignatureD3D12 *pRootSig)
Definition: RootSignature.cpp:366
Uint32 GetBaseRootIndex(Uint32 BindingIndex) const
Definition: RootSignature.hpp:93
RootSignatureD3D12(IReferenceCounters *pRefCounters, RenderDeviceD3D12Impl *pDeviceD3D12Impl, const RefCntAutoPtr< PipelineResourceSignatureD3D12Impl > ppSignatures[], Uint32 SignatureCount, size_t Hash)
Definition: RootSignature.cpp:41
Render device implementation in Direct3D12 backend.
Definition: RenderDeviceD3D12Impl.hpp:70
Root signature cache that deduplicates RootSignatureD3D12 objects.
Definition: RootSignature.hpp:168
RootSignatureCacheD3D12(RenderDeviceD3D12Impl &DeviceD3D12Impl)
Definition: RootSignature.cpp:319
bool Create(ID3D12Device *pDevice, Uint32 RegisterSpace)
Definition: RootSignature.cpp:262
bool IsCompatibleWith(const RefCntAutoPtr< PipelineResourceSignatureD3D12Impl > ppSignatures[], Uint32 SignatureCount) const noexcept
Definition: RootSignature.cpp:294
Uint32 GetTotalSpaces() const
Returns the total number of register spaces used by all resource signatures.
Definition: RootSignature.hpp:106
Template class that implements reference counting.
Definition: RefCntAutoPtr.hpp:73
const char * GetName() const
Definition: RootSignature.hpp:150
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
ID3D12RootSignature * GetD3D12RootSignature() const
Definition: RootSignature.hpp:148
ID3D12RootSignature * GetD3D12RootSignature() const
Definition: RootSignature.hpp:87
bool IsShaderRecord(const D3DShaderResourceAttribs &CB) const
Definition: RootSignature.cpp:255
Definition: ShaderResources.hpp:80
bool IsDefined() const
Definition: RootSignature.hpp:149
~RootSignatureD3D12()
Definition: RootSignature.cpp:243
#define VERIFY_EXPR(...)
Definition: DebugUtilities.hpp:79
Definition: RootSignature.hpp:139
RootSignatureCacheD3D12 & operator=(const RootSignatureCacheD3D12 &)=delete
RefCntAutoPtr< RootSignatureD3D12 > GetRootSig(const RefCntAutoPtr< PipelineResourceSignatureD3D12Impl > *ppSignatures, Uint32 SignatureCount)
Definition: RootSignature.cpp:329
Uint32 GetBaseRegisterSpace(Uint32 BindingIndex) const
Definition: RootSignature.hpp:99
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37