attempt at fixing resizing issues

This commit is contained in:
Matthew 2025-03-09 12:20:36 +11:00
parent 5813c70ef9
commit e3050a8ec9
2 changed files with 15 additions and 9 deletions

View File

@ -266,11 +266,8 @@ b32 _FinishFrame()
};
result = vkQueuePresentKHR(renderer.vk.queues.graphics_queue, &present_info);
if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR || renderer.resize_requested)
{
renderer.resize_requested = false;
if (result == VK_ERROR_OUT_OF_DATE_KHR || result == VK_SUBOPTIMAL_KHR || renderer.pending.resized)
ResizeSwapchain();
}
else if (result != VK_SUCCESS)
{
Printf("vkQueuePresentKHR failure: %s", VkResultStr(result));
@ -285,9 +282,9 @@ b32 _FinishFrame()
static void _SetRenderResolution(u32 x, u32 y)
{
renderer.vk.sc.extent.width = x;
renderer.vk.sc.extent.height = y;
renderer.resize_requested = true;
renderer.pending.render_width = x;
renderer.pending.render_height = y;
renderer.pending.resized = true;
}
@ -308,10 +305,13 @@ static void ResizeSwapchain()
DestroyDrawImages();
renderer.vk.sc.extent.width = renderer.pending.render_width;
renderer.vk.sc.extent.height = renderer.pending.render_height;
Assert(CreateSwapchain(), "Unable to recreate swapchain");
Assert(CreateDrawImages(), "Unable to recreate draw images");
renderer.resize_requested = false;
renderer.pending.resized = false;
}
// UTIL

View File

@ -251,10 +251,16 @@ typedef struct {
#endif
} Vulkan_t;
typedef struct {
u16 render_width;
u16 render_height;
b8 resized;
} PendingUpdates;
typedef struct {
Vulkan_t vk;
FrameState frame_state;
b32 resize_requested;
PendingUpdates pending;
Arena *arena;
Arena *perm_arena;
} Renderer_t;