@@ -731,70 +731,72 @@ void CVulkanLogicalDevice::nullifyDescriptors_impl(const std::span<const IGPUDes
731731{
732732 if (getEnabledFeatures ().nullDescriptor )
733733 {
734- core::vector<VkWriteDescriptorSet> vk_writeDescriptorSets (drops.size (),{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,nullptr });
735- core::vector<VkWriteDescriptorSetAccelerationStructureKHR> vk_writeDescriptorSetAS (69u ,{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,nullptr });
736-
737- size_t maxSize = 0 ;
738- for (auto i = 0 ; i < drops.size (); i++)
739- {
740- const auto & write = drops[i];
741- maxSize = core::max (maxSize, write.count );
742- }
743- size_t descriptorSize;
744- switch (asset::IDescriptor::GetTypeCategory (descriptorType))
745- {
746- case asset::IDescriptor::EC_BUFFER:
747- descriptorSize = sizeof (VkDescriptorBufferInfo);
748- break ;
749- case asset::IDescriptor::EC_IMAGE:
750- descriptorSize = sizeof (VkDescriptorImageInfo);
751- break ;
752- case asset::IDescriptor::EC_BUFFER_VIEW:
753- descriptorSize = sizeof (VkBufferView);
754- break ;
755- case asset::IDescriptor::EC_ACCELERATION_STRUCTURE:
756- descriptorSize = sizeof (VkAccelerationStructureKHR);
757- break ;
758- }
759-
760- core::vector<uint8_t > nullDescriptors (maxSize * descriptorSize, 0u );
734+ return
735+ }
761736
737+ core::vector<VkWriteDescriptorSet> vk_writeDescriptorSets (drops.size (),{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,nullptr });
738+ core::vector<VkWriteDescriptorSetAccelerationStructureKHR> vk_writeDescriptorSetAS (69u ,{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,nullptr });
739+
740+ size_t maxSize = 0 ;
741+ for (auto i = 0 ; i < drops.size (); i++)
742+ {
743+ const auto & write = drops[i];
744+ maxSize = core::max (maxSize, write.count );
745+ }
746+ size_t descriptorSize;
747+ switch (asset::IDescriptor::GetTypeCategory (descriptorType))
748+ {
749+ case asset::IDescriptor::EC_BUFFER:
750+ descriptorSize = sizeof (VkDescriptorBufferInfo);
751+ break ;
752+ case asset::IDescriptor::EC_IMAGE:
753+ descriptorSize = sizeof (VkDescriptorImageInfo);
754+ break ;
755+ case asset::IDescriptor::EC_BUFFER_VIEW:
756+ descriptorSize = sizeof (VkBufferView);
757+ break ;
758+ case asset::IDescriptor::EC_ACCELERATION_STRUCTURE:
759+ descriptorSize = sizeof (VkAccelerationStructureKHR);
760+ break ;
761+ }
762+
763+ core::vector<uint8_t > nullDescriptors (maxSize * descriptorSize, 0u );
764+
765+ {
766+ auto outWrite = vk_writeDescriptorSets.data ();
767+ auto outWriteAS = vk_writeDescriptorSetAS.data ();
768+
769+ for (auto i=0 ; i<drops.size (); i++)
762770 {
763- auto outWrite = vk_writeDescriptorSets.data ();
764- auto outWriteAS = vk_writeDescriptorSetAS.data ();
765-
766- for (auto i=0 ; i<drops.size (); i++)
771+ const auto & write = drops[i];
772+
773+ outWrite->dstSet = static_cast <const CVulkanDescriptorSet*>(write.dstSet )->getInternalObject ();
774+ outWrite->dstBinding = write.binding ;
775+ outWrite->dstArrayElement = write.arrayElement ;
776+ outWrite->descriptorType = getVkDescriptorTypeFromDescriptorType (descriptorType);
777+ outWrite->descriptorCount = write.count ;
778+ switch (asset::IDescriptor::GetTypeCategory (descriptorType))
767779 {
768- const auto & write = drops[i];
769-
770- outWrite->dstSet = static_cast <const CVulkanDescriptorSet*>(write.dstSet )->getInternalObject ();
771- outWrite->dstBinding = write.binding ;
772- outWrite->dstArrayElement = write.arrayElement ;
773- outWrite->descriptorType = getVkDescriptorTypeFromDescriptorType (descriptorType);
774- outWrite->descriptorCount = write.count ;
775- switch (asset::IDescriptor::GetTypeCategory (descriptorType))
776- {
777- case asset::IDescriptor::EC_BUFFER:
778- outWrite->pBufferInfo = reinterpret_cast <VkDescriptorBufferInfo*>(nullDescriptors.data ());
779- break ;
780- case asset::IDescriptor::EC_IMAGE:
781- outWrite->pImageInfo = reinterpret_cast <VkDescriptorImageInfo*>(nullDescriptors.data ());
782- break ;
783- case asset::IDescriptor::EC_BUFFER_VIEW:
784- outWrite->pTexelBufferView = reinterpret_cast <VkBufferView*>(nullDescriptors.data ());
785- break ;
786- case asset::IDescriptor::EC_ACCELERATION_STRUCTURE:
787- outWriteAS->accelerationStructureCount = write.count ;
788- outWriteAS->pAccelerationStructures = reinterpret_cast <VkAccelerationStructureKHR*>(nullDescriptors.data ());
789- break ;
790- default :
791- assert (!" Invalid code path." );
792- }
793- outWrite++;
780+ case asset::IDescriptor::EC_BUFFER:
781+ outWrite->pBufferInfo = reinterpret_cast <VkDescriptorBufferInfo*>(nullDescriptors.data ());
782+ break ;
783+ case asset::IDescriptor::EC_IMAGE:
784+ outWrite->pImageInfo = reinterpret_cast <VkDescriptorImageInfo*>(nullDescriptors.data ());
785+ break ;
786+ case asset::IDescriptor::EC_BUFFER_VIEW:
787+ outWrite->pTexelBufferView = reinterpret_cast <VkBufferView*>(nullDescriptors.data ());
788+ break ;
789+ case asset::IDescriptor::EC_ACCELERATION_STRUCTURE:
790+ outWriteAS->accelerationStructureCount = write.count ;
791+ outWriteAS->pAccelerationStructures = reinterpret_cast <VkAccelerationStructureKHR*>(nullDescriptors.data ());
792+ break ;
793+ default :
794+ assert (!" Invalid code path." );
794795 }
796+ outWrite++;
795797 }
796- m_devf. vk . vkUpdateDescriptorSets (m_vkdev,vk_writeDescriptorSets. size (),vk_writeDescriptorSets. data (), 0 , nullptr );
797- }
798+ }
799+ m_devf. vk . vkUpdateDescriptorSets (m_vkdev,vk_writeDescriptorSets. size (),vk_writeDescriptorSets. data (), 0 , nullptr );
798800}
799801
800802
0 commit comments