From 5f65e9291aabbd2153e458c59f3bfbbc25dc2578 Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Tue, 28 May 2024 22:26:16 +0200 Subject: [PATCH] Fix dynamic offset count error spam --- openVulkanoCpp/Vulkan/Resources/UniformBuffer.cpp | 3 ++- openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/openVulkanoCpp/Vulkan/Resources/UniformBuffer.cpp b/openVulkanoCpp/Vulkan/Resources/UniformBuffer.cpp index 9deaf8b..4246d55 100644 --- a/openVulkanoCpp/Vulkan/Resources/UniformBuffer.cpp +++ b/openVulkanoCpp/Vulkan/Resources/UniformBuffer.cpp @@ -25,6 +25,7 @@ namespace OpenVulkano::Vulkan writeDescriptorSet.pBufferInfo = &bufferInfo; buffer->allocation->device.updateDescriptorSets(1, &writeDescriptorSet, 0, nullptr); m_setOffset = setId; + m_dynamic = binding.descriptorType == DescriptorSetLayoutBinding::TYPE_UNIFORM_BUFFER_DYNAMIC || binding.descriptorType == DescriptorSetLayoutBinding::TYPE_STORAGE_BUFFER_DYNAMIC; } void UniformBuffer::Close() @@ -36,7 +37,7 @@ namespace OpenVulkano::Vulkan void UniformBuffer::Record(VulkanDrawContext* drawContext) { uint32_t frameOffset = m_frameOffset * drawContext->currentImageId; - drawContext->commandBuffer.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, drawContext->GetShader()->pipelineLayout, m_setOffset, m_setCount, &m_descriptorSet, (m_frameOffset) ? 1 : 0, &frameOffset); + drawContext->commandBuffer.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, drawContext->GetShader()->pipelineLayout, m_setOffset, m_setCount, &m_descriptorSet, (m_dynamic) ? 1 : 0, &frameOffset); } void UniformBuffer::Update(void* data, uint32_t size, uint32_t bufferId) const diff --git a/openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp b/openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp index cd83ecb..1f8d8a2 100644 --- a/openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp +++ b/openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp @@ -19,6 +19,7 @@ namespace OpenVulkano::Vulkan vk::DescriptorSet m_descriptorSet; uint32_t m_frameOffset; uint32_t m_setOffset, m_setCount = 1; + bool m_dynamic; public: ~UniformBuffer() override