Go to the documentation of this file.
51 struct SPIRVShaderResourceAttribs;
81 bool bIsDeviceInternal =
false);
96 return m_pResourceAttribs[ResIndex];
110 return m_ImmutableSamplers[SampIndex];
124 VkDescriptorSet vkDynamicDescriptorSet)
const;
126 #ifdef DILIGENT_DEVELOPMENT
131 const char* ShaderName,
132 const char* PSOName)
const;
136 template <DESCRIPTOR_SET_ID SetId>
141 enum CACHE_GROUP :
size_t
143 CACHE_GROUP_DYN_UB = 0,
146 CACHE_GROUP_COUNT_PER_VAR_TYPE,
148 CACHE_GROUP_DYN_UB_STAT_VAR = CACHE_GROUP_DYN_UB,
149 CACHE_GROUP_DYN_SB_STAT_VAR = CACHE_GROUP_DYN_SB,
150 CACHE_GROUP_OTHER_STAT_VAR = CACHE_GROUP_OTHER,
152 CACHE_GROUP_DYN_UB_DYN_VAR,
153 CACHE_GROUP_DYN_SB_DYN_VAR,
154 CACHE_GROUP_OTHER_DYN_VAR,
158 static_assert(CACHE_GROUP_COUNT == CACHE_GROUP_COUNT_PER_VAR_TYPE *
MAX_DESCRIPTOR_SETS,
"Inconsistent cache group count");
160 using CacheOffsetsType = std::array<Uint32, CACHE_GROUP_COUNT>;
161 using BindingCountType = std::array<Uint32, CACHE_GROUP_COUNT>;
165 void CreateSetLayouts();
171 std::array<VulkanUtilities::DescriptorSetLayoutWrapper, DESCRIPTOR_SET_ID_NUM_SETS> m_VkDescrSetLayouts;
174 std::array<Uint32, MAX_DESCRIPTOR_SETS> m_DescriptorSetSizes = {~0U, ~0U};
180 Uint16 m_DynamicUniformBufferCount = 0;
183 Uint16 m_DynamicStorageBufferCount = 0;
185 ImmutableSamplerAttribs* m_ImmutableSamplers =
nullptr;
188 template <>
Uint32 PipelineResourceSignatureVkImpl::GetDescriptorSetIndex<PipelineResourceSignatureVkImpl::DESCRIPTOR_SET_ID_STATIC_MUTABLE>()
const;
189 template <>
Uint32 PipelineResourceSignatureVkImpl::GetDescriptorSetIndex<PipelineResourceSignatureVkImpl::DESCRIPTOR_SET_ID_DYNAMIC>()
const;
Base interface for a reference counter object that stores the number of strong and weak references an...
Definition: ReferenceCounters.h:44
Render device implementation in Vulkan backend.
Definition: RenderDeviceVkImpl.hpp:58
static constexpr Uint32 MaxDescriptorSets
Definition: PipelineResourceAttribsVk.hpp:84
@ DESCRIPTOR_SET_ID_NUM_SETS
Definition: PipelineResourceSignatureVkImpl.hpp:70
Definition: PipelineResourceSignatureVkImpl.hpp:99
Pipeline resource signature description.
Definition: PipelineResourceSignature.h:166
Uint32 GetNumDescriptorSets() const
Definition: PipelineResourceSignatureVkImpl.hpp:87
const ImmutableSamplerAttribs & GetImmutableSamplerAttribs(Uint32 SampIndex) const
Definition: PipelineResourceSignatureVkImpl.hpp:107
Definition: SPIRVShaderResources.hpp:59
void CommitDynamicResources(const ShaderResourceCacheVk &ResourceCache, VkDescriptorSet vkDynamicDescriptorSet) const
Definition: PipelineResourceSignatureVkImpl.cpp:604
PipelineResourceSignatureDesc m_Desc
Object description.
Definition: DeviceObjectBase.hpp:182
DESCRIPTOR_SET_ID
Definition: PipelineResourceSignatureVkImpl.hpp:62
Uint32 DescrSet
Definition: PipelineResourceSignatureVkImpl.hpp:103
PipelineResourceAttribsVk ResourceAttribs
Definition: PipelineResourceSignatureVkImpl.hpp:59
Definition: ShaderResourceCacheVk.hpp:72
Uint32 NumResources
The number of resources in Resources array.
Definition: PipelineResourceSignature.h:172
RefCntAutoPtr< ISampler > Ptr
Definition: PipelineResourceSignatureVkImpl.hpp:101
Uint32 GetDescriptorSetIndex() const
Uint32 GetDynamicStorageBufferCount() const
Definition: PipelineResourceSignatureVkImpl.hpp:86
Uint32 NumImmutableSamplers
The number of immutable samplers in ImmutableSamplers array.
Definition: PipelineResourceSignature.h:178
void InitSRBResourceCache(ShaderResourceCacheVk &ResourceCache)
Definition: PipelineResourceSignatureVkImpl.cpp:500
Template class that implements reference counting.
Definition: RefCntAutoPtr.hpp:73
~PipelineResourceSignatureVkImpl()
Definition: PipelineResourceSignatureVkImpl.cpp:473
Uint32 BindingIndex
Definition: PipelineResourceSignatureVkImpl.hpp:104
bool HasDescriptorSet(DESCRIPTOR_SET_ID SetId) const
Definition: PipelineResourceSignatureVkImpl.hpp:115
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
Uint32 GetDynamicOffsetCount() const
Definition: PipelineResourceSignatureVkImpl.hpp:84
Uint32 GetDynamicUniformBufferCount() const
Definition: PipelineResourceSignatureVkImpl.hpp:85
uint16_t Uint16
16-bit unsigned integer
Definition: BasicTypes.h:52
@ DESCRIPTOR_SET_ID_DYNAMIC
Definition: PipelineResourceSignatureVkImpl.hpp:68
VkDescriptorSetLayout GetVkDescriptorSetLayout(DESCRIPTOR_SET_ID SetId) const
Definition: PipelineResourceSignatureVkImpl.hpp:113
struct PipelineResourceDesc PipelineResourceDesc
Definition: PipelineResourceSignature.h:162
@ DESCRIPTOR_SET_ID_STATIC_MUTABLE
Definition: PipelineResourceSignatureVkImpl.hpp:65
#define VERIFY_EXPR(...)
Definition: DebugUtilities.hpp:79
static constexpr Uint32 MAX_DESCRIPTOR_SETS
Definition: PipelineResourceSignatureVkImpl.hpp:74
const ResourceAttribs & GetResourceAttribs(Uint32 ResIndex) const
Definition: PipelineResourceSignatureVkImpl.hpp:93
PipelineResourceSignatureVkImpl(IReferenceCounters *pRefCounters, RenderDeviceVkImpl *pDevice, const PipelineResourceSignatureDesc &Desc, bool bIsDeviceInternal=false)
Definition: PipelineResourceSignatureVkImpl.cpp:140
Template class implementing base functionality of the pipeline resource signature object.
Definition: PipelineResourceSignatureBase.hpp:78
Definition: PipelineResourceAttribsVk.hpp:65
void CopyStaticResources(ShaderResourceCacheVk &ResourceCache) const
Definition: PipelineResourceSignatureVkImpl.cpp:538
Implementation of the Diligent::PipelineResourceSignatureVkImpl class.
Definition: PipelineResourceSignatureVkImpl.hpp:54
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37
SHADER_RESOURCE_VARIABLE_TYPE
Describes the type of the shader resource variable.
Definition: ShaderResourceVariable.h:48