diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-10-09 07:50:24 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-10-09 07:50:24 -0400 |
| commit | dcd05e45538a04b7b0d9ae0ff8cc01272a48fd33 (patch) | |
| tree | b56b885e3473008e40af197770a5b7e1b67d90aa /src/window.cpp | |
| parent | 791c153aabd579f518a9b00613459cba13734797 (diff) | |
more memory works
Diffstat (limited to 'src/window.cpp')
| -rw-r--r-- | src/window.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
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<VkImage>(swapchainLength); vkGetSwapchainImagesKHR(vkDevice, vkSwapchainKHR, &swapchainLength, swapchainImages); @@ -1438,12 +1447,14 @@ void DestroySwapchain() { vkDestroyFramebuffer(vkDevice, renderImageFramebuffers[i], vkAllocator); } Pke_Delete<VkFramebuffer>(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<VkFramebuffer>(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<VkImageView>(depthImageViews, swapchainLength); + depthImageViews = CAFE_BABE(VkImageView); Pke_Delete<VkImage>(depthImages, swapchainLength); + depthImages = CAFE_BABE(VkImage); Pke_Delete<VkImageView>(colorImageViews, swapchainLength); + colorImageViews = CAFE_BABE(VkImageView); Pke_Delete<VkImage>(colorImages, swapchainLength); + colorImages = CAFE_BABE(VkImage); Pke_Delete<VkImageView>(renderImageViews, swapchainLength); + renderImageViews = CAFE_BABE(VkImageView); Pke_Delete<VkImage>(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<VkImageView>(swapchainImageViews, swapchainLength); + swapchainImageViews = CAFE_BABE(VkImageView); Pke_Delete<VkImage>(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() { |
