@@ -731,70 +731,72 @@ void CVulkanLogicalDevice::nullifyDescriptors_impl(const std::span<const IGPUDes
731
731
{
732
732
if (getEnabledFeatures ().nullDescriptor )
733
733
{
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
+ }
761
736
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++)
762
770
{
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))
767
779
{
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." );
794
795
}
796
+ outWrite++;
795
797
}
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 );
798
800
}
799
801
800
802
0 commit comments