diff --git a/gfx/common/vulkan_common.c b/gfx/common/vulkan_common.c index 91990eadb4..95186b4f95 100644 --- a/gfx/common/vulkan_common.c +++ b/gfx/common/vulkan_common.c @@ -2552,6 +2552,15 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, old_swapchain = vk->swapchain; + if (/* NVIDIA WAR */ + vk->context.gpu_properties.vendorID == 0x10DE && + old_swapchain != VK_NULL_HANDLE) + { + RARCH_LOG("[Vulkan]: Old swapchain destroyed.\n"); + vkDestroySwapchainKHR(vk->context.device, old_swapchain, NULL); + old_swapchain = VK_NULL_HANDLE; + } + info.surface = vk->vk_surface; info.minImageCount = desired_swapchain_images; info.imageFormat = format.format; @@ -2575,7 +2584,8 @@ bool vulkan_create_swapchain(gfx_ctx_vulkan_data_t *vk, return false; } - if (old_swapchain != VK_NULL_HANDLE) + if ( vk->context.gpu_properties.vendorID != 0x10DE && + old_swapchain != VK_NULL_HANDLE) { RARCH_LOG("[Vulkan]: Recycled old swapchain.\n"); vkDestroySwapchainKHR(vk->context.device, old_swapchain, NULL);