diff options
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/main.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/main.cpp b/Source/Core/VideoBackends/Vulkan/main.cpp index 4354a7a58b..f507d6cf05 100644 --- a/Source/Core/VideoBackends/Vulkan/main.cpp +++ b/Source/Core/VideoBackends/Vulkan/main.cpp @@ -253,6 +253,7 @@ bool VideoBackend::Initialize(void* window_handle) g_renderer.reset(); StateTracker::DestroyInstance(); g_framebuffer_manager.reset(); + g_shader_cache->Shutdown(); g_shader_cache.reset(); g_object_cache.reset(); g_command_buffer_mgr.reset(); @@ -262,6 +263,14 @@ bool VideoBackend::Initialize(void* window_handle) return false; } + // Ensure all pipelines previously used by the game have been created. + StateTracker::GetInstance()->ReloadPipelineUIDCache(); + + // Lastly, precompile ubershaders, if requested. + // This has to be done after the texture cache and shader cache are initialized. + if (g_ActiveConfig.CanPrecompileUberShaders()) + g_shader_cache->PrecompileUberShaders(); + return true; } @@ -293,6 +302,7 @@ void VideoBackend::Shutdown() void VideoBackend::Video_Cleanup() { g_command_buffer_mgr->WaitForGPUIdle(); + g_shader_cache->Shutdown(); // Save all cached pipelines out to disk for next time. if (g_ActiveConfig.bShaderCache) |
