From 201f5896ce7aff8657d7129e91eb739c0f669dcb Mon Sep 17 00:00:00 2001 From: Pasha Bibko <156938226+PashaBibko@users.noreply.github.com> Date: Sat, 22 Nov 2025 15:48:15 +0000 Subject: [PATCH] Fixed some errors caused on cleanup --- src/managers/vulkan/VulkanManager.h | 10 +++++----- src/managers/vulkan/VulkanManagerInit.cpp | 21 ++++++++++++++++++++- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/managers/vulkan/VulkanManager.h b/src/managers/vulkan/VulkanManager.h index f572c7d..0015963 100644 --- a/src/managers/vulkan/VulkanManager.h +++ b/src/managers/vulkan/VulkanManager.h @@ -102,15 +102,15 @@ namespace PB::Renderer struct RenderObject { - VkBuffer VertexBuffer; - VkDeviceMemory VertexBufferMemory; + VkBuffer VertexBuffer{}; + VkDeviceMemory VertexBufferMemory{}; - VkBuffer IndexBuffer; - VkDeviceMemory IndexBufferMemory; + VkBuffer IndexBuffer{}; + VkDeviceMemory IndexBufferMemory{}; Color DrawColor; - uint32_t IndexCount; + uint32_t IndexCount{}; }; struct QueueFamilyIndices diff --git a/src/managers/vulkan/VulkanManagerInit.cpp b/src/managers/vulkan/VulkanManagerInit.cpp index 7540326..f31fef3 100644 --- a/src/managers/vulkan/VulkanManagerInit.cpp +++ b/src/managers/vulkan/VulkanManagerInit.cpp @@ -75,6 +75,15 @@ namespace PB::Renderer bool VulkanManager::Cleanup() { + for (const RenderObject& object : s_RenderObjects) + { + vkDestroyBuffer(s_Device, object.IndexBuffer, nullptr); + vkDestroyBuffer(s_Device, object.VertexBuffer, nullptr); + + vkFreeMemory(s_Device, object.IndexBufferMemory, nullptr); + vkFreeMemory(s_Device, object.VertexBufferMemory, nullptr); + } + if (s_Device != VK_NULL_HANDLE) vkDeviceWaitIdle(s_Device); @@ -111,6 +120,16 @@ namespace PB::Renderer if (s_Surface != VK_NULL_HANDLE) vkDestroySurfaceKHR(s_Instance, s_Surface, nullptr); + #ifdef PB_DEBUG + + if (gDebugMessenger != VK_NULL_HANDLE) + { + if (const auto func = reinterpret_cast(vkGetInstanceProcAddr(s_Instance, "vkDestroyDebugUtilsMessengerEXT")); func != nullptr) + func(s_Instance, gDebugMessenger, nullptr); + } + + #endif // PB_DEBUG + if (s_Instance != VK_NULL_HANDLE) vkDestroyInstance(s_Instance, nullptr); @@ -128,7 +147,7 @@ namespace PB::Renderer appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0); appInfo.apiVersion = VK_API_VERSION_1_3; - VkInstanceCreateInfo createInfo; + VkInstanceCreateInfo createInfo{}; createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; createInfo.pNext = nullptr; createInfo.pApplicationInfo = &appInfo;