From b0db2539b0a4f7a275bbc4af2f5bbbb2d70c1769 Mon Sep 17 00:00:00 2001 From: Niels Eppenhof Date: Thu, 28 Nov 2024 21:54:49 +0100 Subject: [PATCH] Fixed push constant data needing to be manually released --- .../Platform/Vulkan/VulkanSceneRenderer.cpp | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/EppoEngine/Source/Platform/Vulkan/VulkanSceneRenderer.cpp b/EppoEngine/Source/Platform/Vulkan/VulkanSceneRenderer.cpp index dd3dfc3..7fe0368 100644 --- a/EppoEngine/Source/Platform/Vulkan/VulkanSceneRenderer.cpp +++ b/EppoEngine/Source/Platform/Vulkan/VulkanSceneRenderer.cpp @@ -417,9 +417,11 @@ namespace Eppo DescriptorWriter writer; // Set 1 - Scene - const auto& buffers = std::static_pointer_cast(m_LightsUB)->GetBuffers(); - VkBuffer buffer = buffers[frameIndex]; - writer.WriteBuffer(m_LightsUB->GetBinding(), buffer, sizeof(LightsData), 0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER); + { + const auto& buffers = std::static_pointer_cast(m_LightsUB)->GetBuffers(); + VkBuffer buffer = buffers[frameIndex]; + writer.WriteBuffer(m_LightsUB->GetBinding(), buffer, sizeof(LightsData), 0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER); + } writer.UpdateSet(descriptorSets[0]); @@ -480,14 +482,12 @@ namespace Eppo const auto& shader = pipeline->GetSpecification().Shader; const auto& pcr = std::static_pointer_cast(shader)->GetPushConstantRanges(); - Buffer buffer(pcr[0].size); + ScopedBuffer buffer(pcr[0].size); buffer.SetData(finalTransform); buffer.SetData(i, 64); - vkCmdPushConstants(commandBuffer, pipeline->GetPipelineLayout(), VK_SHADER_STAGE_ALL_GRAPHICS, 0, buffer.Size, buffer.Data); + vkCmdPushConstants(commandBuffer, pipeline->GetPipelineLayout(), VK_SHADER_STAGE_ALL_GRAPHICS, 0, buffer.Size(), buffer.Data()); - buffer.Release(); - m_RenderStatistics.DrawCalls++; vkCmdDrawIndexed(commandBuffer, p.IndexCount, 1, p.FirstIndex, p.FirstVertex, 0); } @@ -644,16 +644,14 @@ namespace Eppo const auto& shader = pipeline->GetSpecification().Shader; const auto& pcr = std::static_pointer_cast(shader)->GetPushConstantRanges(); - Buffer buffer(pcr[0].size); + ScopedBuffer buffer(pcr[0].size); buffer.SetData(finalTransform); buffer.SetData(p.Material->DiffuseMapIndex, 64); buffer.SetData(p.Material->DiffuseMapIndex, 68); buffer.SetData(p.Material->DiffuseMapIndex, 72); - vkCmdPushConstants(commandBuffer, pipeline->GetPipelineLayout(), VK_SHADER_STAGE_ALL_GRAPHICS, 0, buffer.Size, buffer.Data); + vkCmdPushConstants(commandBuffer, pipeline->GetPipelineLayout(), VK_SHADER_STAGE_ALL_GRAPHICS, 0, buffer.Size(), buffer.Data()); - buffer.Release(); - m_RenderStatistics.DrawCalls++; vkCmdDrawIndexed(commandBuffer, p.IndexCount, 1, p.FirstIndex, p.FirstVertex, 0); }