Fix in-flight frame update Vulkan (#3122)

This commit is contained in:
Adrian Cojocaru
2025-01-09 23:04:41 +02:00
committed by GitHub
parent f700a412fe
commit c1f76cff98
11 changed files with 209 additions and 101 deletions

View File

@@ -74,6 +74,22 @@ void UniformBufferArray::bindDescriptorSets(CommandEncoder& encoder) {
}
descriptorSet->update(*this, descriptorStartIndex, descriptorStorageCount, descriptorUniformCount);
const auto frameCount = encoder.getContext().getBackend().getMaxFrames();
const int32_t currentIndex = encoder.getContext().getCurrentFrameResourceIndex();
const int32_t prevIndex = currentIndex == 0 ? frameCount - 1 : currentIndex - 1;
for (uint32_t i = 0; i < descriptorStorageCount + descriptorUniformCount; ++i) {
const uint32_t index = descriptorStartIndex + i;
if (!uniformBufferVector[index]) {
continue;
}
auto& buff = static_cast<UniformBuffer*>(uniformBufferVector[index].get())->mutableBufferResource();
buff.updateVulkanBuffer(currentIndex, prevIndex);
}
descriptorSet->bind(encoder);
}