Only recreate command buffers after swapchain invalidate

This commit is contained in:
Robin Voetter
2020-07-03 02:29:11 +02:00
parent 37b002001a
commit c519450c57
4 changed files with 102 additions and 68 deletions

View File

@@ -89,14 +89,14 @@ pub const Swapchain = struct {
};
}
fn deinitExceptSwapchain(self: Swapchain) void {
fn deinitExceptSwapchain(self: Swapchain) !void {
_ = try self.gc.vkd.queueWaitIdle(self.gc.present_queue.handle);
for (self.swap_images) |si| si.deinit(self.gc);
self.gc.vkd.destroySemaphore(self.gc.dev, self.next_image_acquired, null);
}
pub fn deinit(self: Swapchain) void {
self.gc.vkd.deviceWaitIdle(self.gc.dev) catch return;
self.deinitExceptSwapchain();
self.deinitExceptSwapchain() catch return;
self.gc.vkd.destroySwapchainKHR(self.gc.dev, self.handle, null);
}
@@ -104,7 +104,7 @@ pub const Swapchain = struct {
const gc = self.gc;
const allocator = self.allocator;
const old_handle = self.handle;
self.deinitExceptSwapchain();
try self.deinitExceptSwapchain();
self.* = try initRecycle(gc, allocator, new_extent, old_handle);
}