From dcd05e45538a04b7b0d9ae0ff8cc01272a48fd33 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Mon, 9 Oct 2023 07:50:24 -0400 Subject: more memory works --- src/window.cpp | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'src/window.cpp') diff --git a/src/window.cpp b/src/window.cpp index 0bd1140..0a43072 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -361,7 +361,7 @@ void InitVulkan() { auto it = requiredExtensions.begin(); while (it != requiredExtensions.end()) { if (strcmp(*it.base(), property.extensionName)) { - requiredExtensions.erase(it); + it = requiredExtensions.erase(it); } else { it++; } @@ -655,6 +655,15 @@ void CreateSwapchain() { }; vkImageViewCreateInfo.subresourceRange = vkImageSubresourceRange; + assert(swapchainImages == nullptr || swapchainImages == CAFE_BABE(VkImage)); + assert(swapchainImageViews == nullptr || swapchainImageViews == CAFE_BABE(VkImageView)); + assert(renderImages == nullptr || renderImages == CAFE_BABE(VkImage)); + assert(renderImageViews == nullptr || renderImageViews == CAFE_BABE(VkImageView)); + assert(colorImages == nullptr || colorImages == CAFE_BABE(VkImage)); + assert(colorImageViews == nullptr || colorImageViews == CAFE_BABE(VkImageView)); + assert(depthImages == nullptr || depthImages == CAFE_BABE(VkImage)); + assert(depthImageViews == nullptr || depthImageViews == CAFE_BABE(VkImageView)); + vkGetSwapchainImagesKHR(vkDevice, vkSwapchainKHR, &swapchainLength, nullptr); swapchainImages = Pke_New(swapchainLength); vkGetSwapchainImagesKHR(vkDevice, vkSwapchainKHR, &swapchainLength, swapchainImages); @@ -1438,12 +1447,14 @@ void DestroySwapchain() { vkDestroyFramebuffer(vkDevice, renderImageFramebuffers[i], vkAllocator); } Pke_Delete(renderImageFramebuffers, swapchainLength); + renderImageFramebuffers = CAFE_BABE(VkFramebuffer); } if (swapchainFramebuffers != nullptr && swapchainFramebuffers != CAFE_BABE(VkFramebuffer)) { for (long i = 0; i < swapchainLength; ++i) { vkDestroyFramebuffer(vkDevice, swapchainFramebuffers[i], vkAllocator); } Pke_Delete(swapchainFramebuffers, swapchainLength); + swapchainFramebuffers = CAFE_BABE(VkFramebuffer); } if (renderImageViews!= nullptr && renderImageViews != CAFE_BABE(VkImageView)) { for (long i = 0; i < swapchainLength; ++i) { @@ -1457,11 +1468,17 @@ void DestroySwapchain() { vkDestroyImage(vkDevice, renderImages[i], vkAllocator); } Pke_Delete(depthImageViews, swapchainLength); + depthImageViews = CAFE_BABE(VkImageView); Pke_Delete(depthImages, swapchainLength); + depthImages = CAFE_BABE(VkImage); Pke_Delete(colorImageViews, swapchainLength); + colorImageViews = CAFE_BABE(VkImageView); Pke_Delete(colorImages, swapchainLength); + colorImages = CAFE_BABE(VkImage); Pke_Delete(renderImageViews, swapchainLength); + renderImageViews = CAFE_BABE(VkImageView); Pke_Delete(renderImages, swapchainLength); + renderImages = CAFE_BABE(VkImage); vkFreeMemory(vkDevice, depthImagesMemory, vkAllocator); vkFreeMemory(vkDevice, colorImagesMemory, vkAllocator); vkFreeMemory(vkDevice, renderImagesMemory, vkAllocator); @@ -1471,15 +1488,11 @@ void DestroySwapchain() { vkDestroyImageView(vkDevice, swapchainImageViews[i], vkAllocator); } Pke_Delete(swapchainImageViews, swapchainLength); + swapchainImageViews = CAFE_BABE(VkImageView); Pke_Delete(swapchainImages, swapchainLength); + swapchainImages = CAFE_BABE(VkImage); } vkDestroySwapchainKHR(vkDevice, vkSwapchainKHR, vkAllocator); - swapchainImages = CAFE_BABE(VkImage); - swapchainImageViews = CAFE_BABE(VkImageView); - swapchainFramebuffers = CAFE_BABE(VkFramebuffer); - renderImages = CAFE_BABE(VkImage); - renderImageViews = CAFE_BABE(VkImageView); - renderImageFramebuffers = CAFE_BABE(VkFramebuffer); } void RecreateSwapchain() { -- cgit v1.2.3