@@ -223,14 +223,14 @@ void PipelineResourceSignatureVkImpl::CreateSetLayouts(const bool IsSerialized)
223223 {
224224 VERIFY (ResDesc.ResourceType == SHADER_RESOURCE_TYPE_CONSTANT_BUFFER,
225225 " Only constant buffers can have INLINE_CONSTANTS flag" );
226- ++m_NumInlineConstantBuffers ;
226+ ++m_NumInlineConstantBufferAttribs ;
227227 }
228228 }
229229
230230 // Allocate inline constant buffer attributes array
231- if (m_NumInlineConstantBuffers > 0 )
231+ if (m_NumInlineConstantBufferAttribs > 0 )
232232 {
233- m_InlineConstantBuffers = std::make_unique<InlineConstantBufferAttribsVk[]>(m_NumInlineConstantBuffers );
233+ m_InlineConstantBufferAttribs = std::make_unique<InlineConstantBufferAttribsVk[]>(m_NumInlineConstantBufferAttribs );
234234 }
235235
236236 // Descriptor set mapping (static/mutable (0) or dynamic (1) -> set index)
@@ -408,7 +408,7 @@ void PipelineResourceSignatureVkImpl::CreateSetLayouts(const bool IsSerialized)
408408 VERIFY (ResDesc.ResourceType == SHADER_RESOURCE_TYPE_CONSTANT_BUFFER,
409409 " Only constant buffers can have INLINE_CONSTANTS flag" );
410410
411- InlineConstantBufferAttribsVk& InlineCBAttribs = m_InlineConstantBuffers [InlineConstantBufferIdx++];
411+ InlineConstantBufferAttribsVk& InlineCBAttribs = m_InlineConstantBufferAttribs [InlineConstantBufferIdx++];
412412 InlineCBAttribs.ResIndex = i; // Resource index for unique identification
413413 InlineCBAttribs.DescrSet = pAttribs->DescrSet ;
414414 InlineCBAttribs.BindingIndex = pAttribs->BindingIndex ;
@@ -418,7 +418,7 @@ void PipelineResourceSignatureVkImpl::CreateSetLayouts(const bool IsSerialized)
418418 // between multiple PipelineStates sharing the same PipelineResourceSignature
419419 }
420420 }
421- VERIFY_EXPR (InlineConstantBufferIdx == m_NumInlineConstantBuffers );
421+ VERIFY_EXPR (InlineConstantBufferIdx == m_NumInlineConstantBufferAttribs );
422422
423423#ifdef DILIGENT_DEBUG
424424 if (m_pStaticResCache != nullptr )
@@ -556,15 +556,15 @@ void PipelineResourceSignatureVkImpl::CreateSetLayouts(const bool IsSerialized)
556556
557557 // Initialize inline constant buffers in the static resource cache
558558 // This must be done after the resources are initialized above
559- if (m_NumInlineConstantBuffers > 0 && m_pStaticResCache != nullptr )
559+ if (m_NumInlineConstantBufferAttribs > 0 && m_pStaticResCache != nullptr )
560560 {
561561 // First pass: calculate total memory size needed for all static inline constants
562562 // and count static push constant buffers
563563 Uint32 TotalStaticInlineConstantSize = 0 ;
564564 Uint32 NumStaticPushConstantBuffers = 0 ;
565- for (Uint32 i = 0 ; i < m_NumInlineConstantBuffers ; ++i)
565+ for (Uint32 i = 0 ; i < m_NumInlineConstantBufferAttribs ; ++i)
566566 {
567- const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBuffers [i];
567+ const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBufferAttribs [i];
568568
569569 const PipelineResourceDesc& ResDesc = GetResourceDesc (InlineCBAttr.ResIndex );
570570 if (ResDesc.VarType == SHADER_RESOURCE_VARIABLE_TYPE_STATIC)
@@ -594,9 +594,9 @@ void PipelineResourceSignatureVkImpl::CreateSetLayouts(const bool IsSerialized)
594594 // Second pass: assign memory to each static inline constant
595595 Uint8* pCurrentDataPtr = static_cast <Uint8*>(pInlineConstMemory);
596596 Uint32 StaticPushConstantIdx = 0 ;
597- for (Uint32 i = 0 ; i < m_NumInlineConstantBuffers ; ++i)
597+ for (Uint32 i = 0 ; i < m_NumInlineConstantBufferAttribs ; ++i)
598598 {
599- const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBuffers [i];
599+ const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBufferAttribs [i];
600600
601601 const PipelineResourceDesc& ResDesc = GetResourceDesc (InlineCBAttr.ResIndex );
602602 const ResourceAttribs& Attr = GetResourceAttribs (InlineCBAttr.ResIndex );
@@ -675,17 +675,17 @@ void PipelineResourceSignatureVkImpl::InitSRBResourceCache(ShaderResourceCacheVk
675675 // For push constants, each SRB gets its own copy of the data (stored in ShaderResourceCacheVk)
676676 // For emulated inline constants, each SRB gets its own buffer to avoid conflicts between
677677 // multiple PipelineStates sharing the same PipelineResourceSignature
678- if (m_NumInlineConstantBuffers > 0 )
678+ if (m_NumInlineConstantBufferAttribs > 0 )
679679 {
680680 // Ensure the cache reports inline constants so DeviceContextVkImpl
681681 // updates emulated buffers even if no data has been written yet.
682682 ResourceCache.MarkHasInlineConstants ();
683683
684684 // Count push constant buffers, emulated inline constant buffers, and calculate total memory size
685685 Uint32 TotalInlineConstantSize = 0 ;
686- for (Uint32 i = 0 ; i < m_NumInlineConstantBuffers ; ++i)
686+ for (Uint32 i = 0 ; i < m_NumInlineConstantBufferAttribs ; ++i)
687687 {
688- const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBuffers [i];
688+ const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBufferAttribs [i];
689689 TotalInlineConstantSize += InlineCBAttr.NumConstants * sizeof (Uint32);
690690 }
691691
@@ -708,9 +708,9 @@ void PipelineResourceSignatureVkImpl::InitSRBResourceCache(ShaderResourceCacheVk
708708
709709 // Assign memory to each inline constant buffer and create per-SRB buffers
710710 Uint8* pCurrentDataPtr = static_cast <Uint8*>(pInlineConstantMemory);
711- for (Uint32 i = 0 ; i < m_NumInlineConstantBuffers ; ++i)
711+ for (Uint32 i = 0 ; i < m_NumInlineConstantBufferAttribs ; ++i)
712712 {
713- const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBuffers [i];
713+ const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBufferAttribs [i];
714714 const Uint32 DataSize = InlineCBAttr.NumConstants * sizeof (Uint32);
715715
716716 if (InlineCBAttr.IsPushConstant )
@@ -773,9 +773,9 @@ void PipelineResourceSignatureVkImpl::InitSRBResourceCache(ShaderResourceCacheVk
773773
774774 // Bind internal inline constant buffers to the resource cache
775775 // This must be done after descriptor set allocation so that descriptor writes work correctly
776- for (Uint32 i = 0 ; i < m_NumInlineConstantBuffers ; ++i)
776+ for (Uint32 i = 0 ; i < m_NumInlineConstantBufferAttribs ; ++i)
777777 {
778- const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBuffers [i];
778+ const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBufferAttribs [i];
779779
780780 // Skip push constants - they don't use descriptor sets
781781 if (InlineCBAttr.IsPushConstant )
@@ -834,9 +834,9 @@ void PipelineResourceSignatureVkImpl::CopyStaticResources(ShaderResourceCacheVk&
834834 // Each SRB has its own copy of push constant data
835835 const auto ResIdxRange = GetResourceIndexRange (SHADER_RESOURCE_VARIABLE_TYPE_STATIC);
836836
837- for (Uint32 i = 0 ; i < m_NumInlineConstantBuffers ; ++i)
837+ for (Uint32 i = 0 ; i < m_NumInlineConstantBufferAttribs ; ++i)
838838 {
839- const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBuffers [i];
839+ const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBufferAttribs [i];
840840 if (!InlineCBAttr.IsPushConstant )
841841 continue ;
842842
@@ -1345,9 +1345,9 @@ void PipelineResourceSignatureVkImpl::UpdateInlineConstantBuffers(const ShaderRe
13451345 // SRB caches use SRBCacheOffset, static caches use StaticCacheOffset
13461346 const ResourceCacheContentType CacheType = ResourceCache.GetContentType ();
13471347
1348- for (Uint32 i = 0 ; i < m_NumInlineConstantBuffers ; ++i)
1348+ for (Uint32 i = 0 ; i < m_NumInlineConstantBufferAttribs ; ++i)
13491349 {
1350- const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBuffers [i];
1350+ const InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBufferAttribs [i];
13511351 const Uint32 DataSize = InlineCBAttr.NumConstants * sizeof (Uint32);
13521352
13531353 if (InlineCBAttr.IsPushConstant )
@@ -1385,35 +1385,4 @@ void PipelineResourceSignatureVkImpl::UpdateInlineConstantBuffers(const ShaderRe
13851385 }
13861386}
13871387
1388- void PipelineResourceSignatureVkImpl::UpdatePushConstantFlags (Uint32 ResIndex)
1389- {
1390- VERIFY_EXPR (ResIndex < this ->m_Desc .NumResources );
1391-
1392- // Access the mutable resource description
1393- PipelineResourceDesc& ResDesc = const_cast <PipelineResourceDesc&>(this ->m_Desc .Resources [ResIndex]);
1394-
1395- // Check if the resource has INLINE_CONSTANTS flag but is missing VULKAN_PUSH_CONSTANT flag
1396- if ((ResDesc.Flags & PIPELINE_RESOURCE_FLAG_INLINE_CONSTANTS) != 0 &&
1397- (ResDesc.Flags & PIPELINE_RESOURCE_FLAG_VULKAN_PUSH_CONSTANT) == 0 )
1398- {
1399- // Add the Vulkan push constant flag
1400- ResDesc.Flags |= PIPELINE_RESOURCE_FLAG_VULKAN_PUSH_CONSTANT;
1401-
1402- // Update the corresponding InlineConstantBufferAttribsVk to mark it as a push constant
1403- // Use ResIndex for matching
1404- for (Uint32 i = 0 ; i < m_NumInlineConstantBuffers; ++i)
1405- {
1406- InlineConstantBufferAttribsVk& InlineCBAttr = m_InlineConstantBuffers[i];
1407- if (InlineCBAttr.ResIndex == ResIndex)
1408- {
1409- // Mark this as a true push constant
1410- // Note: Per-SRB buffers are created in InitSRBResourceCache(), which will check
1411- // IsPushConstant and skip buffer creation for true push constants
1412- InlineCBAttr.IsPushConstant = true ;
1413- break ;
1414- }
1415- }
1416- }
1417- }
1418-
14191388} // namespace Diligent
0 commit comments