Vulkan: Keep dylib around if caching instance.

This commit is contained in:
Hans-Kristian Arntzen 2016-06-26 20:45:45 +02:00
parent 4729ec9e1b
commit 6841b5ad00

View File

@ -1479,11 +1479,14 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
break; break;
} }
if (!vulkan_library)
{
#ifdef _WIN32 #ifdef _WIN32
vulkan_library = dylib_load("vulkan-1.dll"); vulkan_library = dylib_load("vulkan-1.dll");
#else #else
vulkan_library = dylib_load("libvulkan.so"); vulkan_library = dylib_load("libvulkan.so");
#endif #endif
}
if (!vulkan_library) if (!vulkan_library)
{ {
@ -1791,6 +1794,9 @@ void vulkan_context_destroy(gfx_ctx_vulkan_data_t *vk,
{ {
unsigned i; unsigned i;
if (!vk->context.instance)
return;
if (vk->context.queue) if (vk->context.queue)
vkQueueWaitIdle(vk->context.queue); vkQueueWaitIdle(vk->context.queue);
if (vk->swapchain) if (vk->swapchain)
@ -1831,11 +1837,13 @@ void vulkan_context_destroy(gfx_ctx_vulkan_data_t *vk,
vk->context.destroy_device(); vk->context.destroy_device();
vkDestroyInstance(vk->context.instance, NULL); vkDestroyInstance(vk->context.instance, NULL);
if (vulkan_library)
{
dylib_close(vulkan_library);
vulkan_library = NULL;
}
} }
} }
if (vulkan_library)
dylib_close(vulkan_library);
} }
void vulkan_acquire_next_image(gfx_ctx_vulkan_data_t *vk) void vulkan_acquire_next_image(gfx_ctx_vulkan_data_t *vk)