diff --git a/src/gpu.cpp b/src/gpu.cpp index 3e9491ef4b2..7e5274d1d70 100644 --- a/src/gpu.cpp +++ b/src/gpu.cpp @@ -1129,6 +1129,8 @@ static int find_default_vulkan_device_index() int create_gpu_instance(const char* driver_path) { + destroy_gpu_instance(); + MutexLockGuard lock(g_instance_lock); if (g_instance.created != 0) diff --git a/src/simplevk.cpp b/src/simplevk.cpp index a9be51a8b0b..d0ae01f7ef6 100644 --- a/src/simplevk.cpp +++ b/src/simplevk.cpp @@ -61,6 +61,8 @@ PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0; int load_vulkan_driver(const char* /*driver_path*/) { + unload_vulkan_driver(); + vkGetInstanceProcAddr = ::vkGetInstanceProcAddr; vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceExtensionProperties"); vkCreateInstance = (PFN_vkCreateInstance)vkGetInstanceProcAddr(NULL, "vkCreateInstance"); @@ -68,14 +70,12 @@ int load_vulkan_driver(const char* /*driver_path*/) return 0; } -int unload_vulkan_driver() +void unload_vulkan_driver() { vkGetInstanceProcAddr = 0; vkEnumerateInstanceExtensionProperties = 0; vkCreateInstance = 0; vkEnumerateInstanceLayerProperties = 0; - - return 0; } #else // __APPLE__