summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/main.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/main.cpp b/Source/Core/VideoBackends/Vulkan/main.cpp
index 2fdcae7e98..4354a7a58b 100644
--- a/Source/Core/VideoBackends/Vulkan/main.cpp
+++ b/Source/Core/VideoBackends/Vulkan/main.cpp
@@ -215,19 +215,22 @@ bool VideoBackend::Initialize(void* window_handle)
// Create main wrapper instances.
g_object_cache = std::make_unique<ObjectCache>();
+ g_shader_cache = std::make_unique<ShaderCache>();
g_framebuffer_manager = std::make_unique<FramebufferManager>();
g_renderer = std::make_unique<Renderer>(std::move(swap_chain));
// Invoke init methods on main wrapper classes.
// These have to be done before the others because the destructors
// for the remaining classes may call methods on these.
- if (!g_object_cache->Initialize() || !FramebufferManager::GetInstance()->Initialize() ||
- !StateTracker::CreateInstance() || !Renderer::GetInstance()->Initialize())
+ if (!g_object_cache->Initialize() || !g_shader_cache->Initialize() ||
+ !FramebufferManager::GetInstance()->Initialize() || !StateTracker::CreateInstance() ||
+ !Renderer::GetInstance()->Initialize())
{
PanicAlert("Failed to initialize Vulkan classes.");
g_renderer.reset();
StateTracker::DestroyInstance();
g_framebuffer_manager.reset();
+ g_shader_cache.reset();
g_object_cache.reset();
g_command_buffer_mgr.reset();
g_vulkan_context.reset();
@@ -250,6 +253,7 @@ bool VideoBackend::Initialize(void* window_handle)
g_renderer.reset();
StateTracker::DestroyInstance();
g_framebuffer_manager.reset();
+ g_shader_cache.reset();
g_object_cache.reset();
g_command_buffer_mgr.reset();
g_vulkan_context.reset();
@@ -276,6 +280,7 @@ void VideoBackend::Shutdown()
{
g_command_buffer_mgr->WaitForGPUIdle();
+ g_shader_cache.reset();
g_object_cache.reset();
g_command_buffer_mgr.reset();
g_vulkan_context.reset();
@@ -291,7 +296,7 @@ void VideoBackend::Video_Cleanup()
// Save all cached pipelines out to disk for next time.
if (g_ActiveConfig.bShaderCache)
- g_object_cache->SavePipelineCache();
+ g_shader_cache->SavePipelineCache();
g_perf_query.reset();
g_texture_cache.reset();