Reserving descriptor write vector to known size 07/322407/1
authorDavid Steele <david.steele@samsung.com>
Tue, 8 Apr 2025 17:00:33 +0000 (18:00 +0100)
committerDavid Steele <david.steele@samsung.com>
Tue, 8 Apr 2025 17:02:19 +0000 (18:02 +0100)
Change-Id: I3c10c5a5415eb0ac6a78f8901fb43479e13c777c

dali/internal/graphics/vulkan-impl/vulkan-command-buffer-impl.cpp

index 1c14a033c1dfbe4af3eeede3defe78d478df5217..44ae36c141f96fe40127251e391c30fbb90b9162 100644 (file)
@@ -488,11 +488,15 @@ void CommandBufferImpl::SetDepthCompareOp(vk::CompareOp op)
 
 void CommandBufferImpl::BindResources(vk::DescriptorSet descriptorSet)
 {
+  auto& reflection = mCurrentProgram->GetReflection();
+  auto& samplers   = reflection.GetSamplers();
+
   std::vector<vk::DescriptorImageInfo>  imageInfos;
   std::vector<vk::DescriptorBufferInfo> bufferInfos;
   std::vector<vk::WriteDescriptorSet>   descriptorWrites;
 
   bufferInfos.reserve(mDeferredUniformBindings.size() + 1);
+  descriptorWrites.reserve(mDeferredUniformBindings.size() + samplers.size() + 1);
 
   // Deferred uniform buffer bindings:
   for(auto& uniformBinding : mDeferredUniformBindings)
@@ -513,13 +517,10 @@ void CommandBufferImpl::BindResources(vk::DescriptorSet descriptorSet)
       .setDstArrayElement(0);
   }
 
-  auto& reflection = mCurrentProgram->GetReflection();
-  auto& samplers   = reflection.GetSamplers();
-
   // Deferred texture bindings:
   if(!samplers.empty()) // Ignore any texture bindings if the program is not expecting them
   {
-    imageInfos.reserve(samplers.size() + 1); // mDeferredTextureBindings.size() + 1);
+    imageInfos.reserve(samplers.size() + 1);
     for(auto& info : samplers)
     {
       bool     found   = false;