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

View File

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