From d88fec8950486cbe6b2fb2db7000fdf0017dcf78 Mon Sep 17 00:00:00 2001 From: Stuart Kenny Date: Fri, 10 Sep 2021 20:38:52 +0100 Subject: [PATCH] Decouple Vulkan context object destruction from retroarch's ContextDestroy call --- libretro/LibretroVulkanContext.cpp | 7 +++++++ libretro/LibretroVulkanContext.h | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libretro/LibretroVulkanContext.cpp b/libretro/LibretroVulkanContext.cpp index 98a2db727e..5c27ef33cf 100644 --- a/libretro/LibretroVulkanContext.cpp +++ b/libretro/LibretroVulkanContext.cpp @@ -125,6 +125,13 @@ void LibretroVulkanContext::ContextReset() { LibretroHWRenderContext::ContextReset(); } +void LibretroVulkanContext::ContextDestroy() { + INFO_LOG(G3D, "LibretroVulkanContext::ContextDestroy()"); + + LostBackbuffer(); + gpu->DeviceLost(); +} + void LibretroVulkanContext::CreateDrawContext() { vk->ReinitSurface(); diff --git a/libretro/LibretroVulkanContext.h b/libretro/LibretroVulkanContext.h index 1da32aec6c..c6d3ea4ac6 100644 --- a/libretro/LibretroVulkanContext.h +++ b/libretro/LibretroVulkanContext.h @@ -5,7 +5,7 @@ class LibretroVulkanContext : public LibretroHWRenderContext { public: LibretroVulkanContext(); - ~LibretroVulkanContext() override {} + ~LibretroVulkanContext() override { Shutdown(); } bool Init() override; void Shutdown() override; void SwapBuffers() override; @@ -14,6 +14,7 @@ public: void CreateDrawContext() override; void ContextReset() override; + void ContextDestroy() override; GPUCore GetGPUCore() override { return GPUCORE_VULKAN; } const char *Ident() override { return "Vulkan"; }