# HG changeset patch # User Sam <sam@basx.dev> # Date 1683557147 -25200 # Node ID 089c3dd9d62ab0abbe36f18498bc320bf417daf7 # Parent e85f54b88afb60eaf64c9451d78c799bb6b60a3b did: try to simplfy swapchain recreation, not sure if it is a good idea diff -r e85f54b88afb -r 089c3dd9d62a src/semicongine/renderer.nim --- a/src/semicongine/renderer.nim Mon May 08 21:23:29 2023 +0700 +++ b/src/semicongine/renderer.nim Mon May 08 21:45:47 2023 +0700 @@ -230,17 +230,15 @@ var commandBufferResult = renderer.swapchain.nextFrame() commandBuffer: VkCommandBuffer - oldSwapchain: Swapchain if not commandBufferResult.isSome: - oldSwapchain = renderer.swapchain let res = renderer.swapchain.recreate() if res.isSome: + var oldSwapchain = renderer.swapchain renderer.swapchain = res.get() - commandBufferResult = renderer.swapchain.nextFrame() - assert commandBufferResult.isSome - else: - raise newException(Exception, "Unable to recreate swapchain") + checkVkResult renderer.device.vk.vkDeviceWaitIdle() + oldSwapchain.destroy() + return commandBuffer = commandBufferResult.get() commandBuffer.beginRenderCommands(renderer.renderPass, renderer.swapchain.currentFramebuffer()) @@ -268,16 +266,12 @@ commandBuffer.endRenderCommands() if not renderer.swapchain.swap(): - oldSwapchain = renderer.swapchain let res = renderer.swapchain.recreate() if res.isSome: + var oldSwapchain = renderer.swapchain renderer.swapchain = res.get() - else: - raise newException(Exception, "Unable to recreate swapchain") - - if oldSwapchain.vk.valid: - checkVkResult renderer.device.vk.vkDeviceWaitIdle() - oldSwapchain.destroy() + checkVkResult renderer.device.vk.vkDeviceWaitIdle() + oldSwapchain.destroy() func framesRendered*(renderer: Renderer): uint64 = renderer.swapchain.framesRendered