summaryrefslogtreecommitdiff
path: root/render/vulkan/swapchain.c
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-10-28 15:52:52 -0500
committerDanny Holman <dholman@gymli.org>2024-10-28 15:55:49 -0500
commit2965bdde04eaa0012b29695aa015c354deb30bed (patch)
tree27a74440014ec67c35695dd355fdb1995937cef9 /render/vulkan/swapchain.c
parent075efbc3c4603246a9fb6c0e2e8ede051d444cd6 (diff)
render: move get_vkerr_str into vkassert.h
Move get_vkerr_str into vkassert.h and use its output in the vkassert function. This reduces the need for an error message argument when calling vkassert and makes error messages in logs consistent across the entire Vulkan renderer. Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'render/vulkan/swapchain.c')
-rw-r--r--render/vulkan/swapchain.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/render/vulkan/swapchain.c b/render/vulkan/swapchain.c
index 1ecb644..1247c9a 100644
--- a/render/vulkan/swapchain.c
+++ b/render/vulkan/swapchain.c
@@ -47,12 +47,12 @@ struct vkswapchain* create_swapchain(struct vksurface *surface, struct vkdev *de
cinfo.queueFamilyIndexCount = 0;
cinfo.pQueueFamilyIndices = 0;
}
- vkassert(vkCreateSwapchainKHR(dev->ldev, &cinfo, NULL, &swapchain->handle), "Failed to create swapchain");
- vkassert(vkGetSwapchainImagesKHR(dev->ldev, swapchain->handle, &swapchain->img_count, NULL), "Failed to aquire swapchain image count");
+ vkassert(vkCreateSwapchainKHR(dev->ldev, &cinfo, NULL, &swapchain->handle));
+ vkassert(vkGetSwapchainImagesKHR(dev->ldev, swapchain->handle, &swapchain->img_count, NULL));
swapchain->images = rune_alloc(sizeof(VkImage) * swapchain->img_count);
swapchain->views = rune_alloc(sizeof(VkImageView) * swapchain->img_count);
- vkassert(vkGetSwapchainImagesKHR(dev->ldev, swapchain->handle, &swapchain->img_count, swapchain->images), "Failed to aquire swapchain images");
+ vkassert(vkGetSwapchainImagesKHR(dev->ldev, swapchain->handle, &swapchain->img_count, swapchain->images));
VkImageViewCreateInfo vcinfo;
for (uint32_t i = 0; i < swapchain->img_count; i++) {
@@ -65,7 +65,7 @@ struct vkswapchain* create_swapchain(struct vksurface *surface, struct vkdev *de
vcinfo.subresourceRange.levelCount = 1;
vcinfo.subresourceRange.baseArrayLayer = 0;
vcinfo.subresourceRange.layerCount = 1;
- vkassert(vkCreateImageView(dev->ldev, &vcinfo, NULL, &swapchain->views[i]), "Failed to create image view");
+ vkassert(vkCreateImageView(dev->ldev, &vcinfo, NULL, &swapchain->views[i]));
}
if (get_depth_format(dev) == 0) {
@@ -96,18 +96,21 @@ void destroy_swapchain(struct vkswapchain *swapchain, struct vkdev *dev) {
}
void vkswapchain_present(struct vkswapchain *swapchain, struct vkdev *dev) {
- VkPresentInfoKHR pinfo = {VK_STRUCTURE_TYPE_PRESENT_INFO_KHR};
+ VkPresentInfoKHR pinfo;
+ pinfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
+ pinfo.pNext = NULL;
pinfo.waitSemaphoreCount = 1;
pinfo.pWaitSemaphores = &swapchain->render_complete;
pinfo.swapchainCount = 1;
pinfo.pSwapchains = &swapchain->handle;
pinfo.pImageIndices = &dev->pres_index;
+ pinfo.pResults = NULL;
VkResult res = vkQueuePresentKHR(dev->pres_queue, &pinfo);
if (res == VK_ERROR_OUT_OF_DATE_KHR || res == VK_SUBOPTIMAL_KHR)
STUBBED("Recreate swapchain");
else if (res != VK_SUCCESS)
- log_output(LOG_FATAL, "Cannot present swapchain image");
+ log_output(LOG_ERROR, "Vulkan error: %s", get_vkerr_str(res));
swapchain->frame = (swapchain->frame + 1) % swapchain->max_frames;
}