chain->surface = info->surface;
chain->buffers = NULL;
chain->oldSwapchain = (vk_swapchain_t *)(uintptr_t)info->oldSwapchain;
+ if (chain->oldSwapchain != VK_NULL_HANDLE)
+ chain->oldSwapchain->newSwapchain = chain;
+
+ chain->newSwapchain = VK_NULL_HANDLE;
chain->is_retired = VK_FALSE;
format = get_tbm_format(info->imageFormat, info->compositeAlpha);
}
}
+ if (chain->newSwapchain != VK_NULL_HANDLE &&
+ chain->newSwapchain->oldSwapchain != VK_NULL_HANDLE) {
+ chain->newSwapchain->oldSwapchain = VK_NULL_HANDLE;
+ chain->newSwapchain = VK_NULL_HANDLE;
+ }
+
chain->deinit(device, chain);
vk_free(allocator, chain->buffers);
vk_free(allocator, chain);