From 81b4ed2a81d7bada71a115efc7fb2347378fb975 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 20 Jul 2017 15:25:35 +1000 Subject: Vulkan: Uber shader support --- Source/Core/VideoBackends/Vulkan/main.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp') diff --git a/Source/Core/VideoBackends/Vulkan/main.cpp b/Source/Core/VideoBackends/Vulkan/main.cpp index 4354a7a58b..3fecc914c1 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,11 @@ bool VideoBackend::Initialize(void* window_handle) return false; } + // 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 +299,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) -- cgit v1.2.3 From 33f66685440e038811f37a8b8328942563227bd0 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 20 Jul 2017 15:25:38 +1000 Subject: Vulkan: Multithreaded creation of UID pipeline caches Should give a decent speedup to boot time. --- Source/Core/VideoBackends/Vulkan/main.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp') diff --git a/Source/Core/VideoBackends/Vulkan/main.cpp b/Source/Core/VideoBackends/Vulkan/main.cpp index 3fecc914c1..f507d6cf05 100644 --- a/Source/Core/VideoBackends/Vulkan/main.cpp +++ b/Source/Core/VideoBackends/Vulkan/main.cpp @@ -263,6 +263,9 @@ 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()) -- cgit v1.2.3