Skip to content

Commit aca4c74

Browse files
committed
More PR reviews
1 parent 6b5630d commit aca4c74

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/nbl/video/CVulkanLogicalDevice.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -635,12 +635,15 @@ core::smart_refctd_ptr<IDescriptorPool> CVulkanLogicalDevice::createDescriptorPo
635635
return nullptr;
636636
}
637637

638+
// a lot of empirical research went into defining this constant
639+
constexpr uint32_t MaxDescriptorSetAsWrites = 69u;
640+
638641
void CVulkanLogicalDevice::updateDescriptorSets_impl(const SUpdateDescriptorSetsParams& params)
639642
{
640643
// Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of
641644
// VkWriteDescriptorSetAccelerationStructureKHR, VkWriteDescriptorSetAccelerationStructureNV, or VkWriteDescriptorSetInlineUniformBlockEXT
642645
core::vector<VkWriteDescriptorSet> vk_writeDescriptorSets(params.writes.size(),{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,nullptr});
643-
core::vector<VkWriteDescriptorSetAccelerationStructureKHR> vk_writeDescriptorSetAS(69u,{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,nullptr});
646+
core::vector<VkWriteDescriptorSetAccelerationStructureKHR> vk_writeDescriptorSetAS(MaxDescriptorSetAsWrites,{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,nullptr});
644647

645648
core::vector<VkDescriptorBufferInfo> vk_bufferInfos(params.bufferCount);
646649
core::vector<VkDescriptorImageInfo> vk_imageInfos(params.imageCount);
@@ -735,7 +738,7 @@ void CVulkanLogicalDevice::nullifyDescriptors_impl(const std::span<const IGPUDes
735738
}
736739

737740
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});
741+
core::vector<VkWriteDescriptorSetAccelerationStructureKHR> vk_writeDescriptorSetAS(MaxDescriptorSetAsWrites,{VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,nullptr});
739742

740743
size_t maxSize = 0;
741744
for (auto i = 0; i < drops.size(); i++)
@@ -791,6 +794,7 @@ void CVulkanLogicalDevice::nullifyDescriptors_impl(const std::span<const IGPUDes
791794
case asset::IDescriptor::EC_ACCELERATION_STRUCTURE:
792795
outWriteAS->accelerationStructureCount = write.count;
793796
outWriteAS->pAccelerationStructures = reinterpret_cast<VkAccelerationStructureKHR*>(nullDescriptors.data());
797+
outWrite->pNext = outWriteAS++;
794798
break;
795799
default:
796800
assert(!"Invalid code path.");

src/nbl/video/ILogicalDevice.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,9 @@ bool ILogicalDevice::nullifyDescriptors(const std::span<const IGPUDescriptorSet:
451451
auto ds = drop.dstSet;
452452
if (!ds || !ds->wasCreatedBy(this))
453453
return false;
454+
// (no binding)
455+
if (ds->getBindingType(drop.binding) == asset::IDescriptor::E_TYPE::ET_COUNT)
456+
return false;
454457
}
455458

456459
for (const auto& drop : dropDescriptors)

0 commit comments

Comments
 (0)