summaryrefslogtreecommitdiffstats
path: root/vulkan.c
diff options
context:
space:
mode:
Diffstat (limited to 'vulkan.c')
-rw-r--r--vulkan.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/vulkan.c b/vulkan.c
index 706a842..c20a436 100644
--- a/vulkan.c
+++ b/vulkan.c
@@ -288,6 +288,8 @@ static VkDevice createdev(VkPhysicalDevice phy, const int *qf)
if (res != VK_SUCCESS)
eprintf("Could not create device");
+ sl_free(&layers);
+
return dev;
}
@@ -391,6 +393,12 @@ static void createswp(struct swp *swp, VkSurfaceKHR surf, VkDevice dev, const in
vkGetSwapchainImagesKHR(dev, swp->swp, &swp->imgs.count, swp->imgs.list);
}
+void destroyswp(struct swp *swp, VkDevice dev)
+{
+ vkDestroySwapchainKHR(dev, swp->swp, NULL);
+ free(swp->imgs.list);
+}
+
static void createviews(struct views *views, VkDevice dev, const struct swpimgs *imgs, VkFormat fmt)
{
VkImageViewCreateInfo info;
@@ -431,6 +439,7 @@ static void createviews(struct views *views, VkDevice dev, const struct swpimgs
static void destroyviews(struct views *views, VkDevice dev)
{
LIST_FOREACH(views, i) vkDestroyImageView(dev, views->list[i], NULL);
+ free(views->list);
}
static VkShaderModule createsmod(VkDevice dev, const void *data, size_t size)
@@ -665,6 +674,7 @@ static void createfbs(struct fbs *fbs, VkDevice dev, const struct views *views,
static void destroyfbs(struct fbs *fbs, VkDevice dev)
{
LIST_FOREACH(fbs, i) vkDestroyFramebuffer(dev, fbs->list[i], NULL);
+ free(fbs->list);
}
static VkCommandPool createcpool(struct cmdbufs *cmdbufs, VkDevice dev, const int *qf,
@@ -833,12 +843,12 @@ int main(void)
vkDestroySemaphore(dev, semfin, NULL);
vkDestroySemaphore(dev, semavail, NULL);
vkDestroyCommandPool(dev, cpool, NULL);
+ free(cmdbufs.list);
destroyfbs(&fbs, dev);
destroyppln(&ppln, dev);
vkDestroyRenderPass(dev, pass, NULL);
destroyviews(&views, dev);
- free(views.list);
- vkDestroySwapchainKHR(dev, swp.swp, NULL);
+ destroyswp(&swp, dev);
vkDestroySurfaceKHR(inst, surf, NULL);
vkDestroyDevice(dev, NULL);
freeswpdtl(&sdtl);