diff options
| author | Pierre Bourdon <delroth@gmail.com> | 2018-03-10 08:22:28 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-03-10 08:22:28 +0100 |
| commit | a4ef133456a18178f345d3c25195bf74c0e83750 (patch) | |
| tree | 1564aa8e85c3800882466b953984a57be0bf0b0c /Source/Core/VideoBackends/Vulkan/main.cpp | |
| parent | 63838c013bde06ed13bfc1b5e24c53594934f641 (diff) | |
| parent | 93ab50c55584c416d32b5bbdf39f37e9c67f4105 (diff) | |
Merge pull request #6399 from stenzek/videocommon-shader-cache
VideoCommon Shader (Pipeline) Cache
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/main.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/main.cpp b/Source/Core/VideoBackends/Vulkan/main.cpp index d8a725845a..9bd4039138 100644 --- a/Source/Core/VideoBackends/Vulkan/main.cpp +++ b/Source/Core/VideoBackends/Vulkan/main.cpp @@ -223,6 +223,7 @@ bool VideoBackend::Initialize(void* window_handle) g_renderer = std::make_unique<Renderer>(std::move(swap_chain)); g_vertex_manager = std::make_unique<VertexManager>(); g_texture_cache = std::make_unique<TextureCache>(); + ::g_shader_cache = std::make_unique<VideoCommon::ShaderCache>(); g_perf_query = std::make_unique<PerfQuery>(); // Invoke init methods on main wrapper classes. @@ -230,21 +231,14 @@ bool VideoBackend::Initialize(void* window_handle) // for the remaining classes may call methods on these. if (!StateTracker::CreateInstance() || !FramebufferManager::GetInstance()->Initialize() || !Renderer::GetInstance()->Initialize() || !VertexManager::GetInstance()->Initialize() || - !TextureCache::GetInstance()->Initialize() || !PerfQuery::GetInstance()->Initialize()) + !TextureCache::GetInstance()->Initialize() || !PerfQuery::GetInstance()->Initialize() || + !::g_shader_cache->Initialize()) { PanicAlert("Failed to initialize Vulkan classes."); Shutdown(); 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(); - // Display the name so the user knows which device was actually created. INFO_LOG(VIDEO, "Vulkan Device: %s", g_vulkan_context->GetDeviceProperties().deviceName); return true; @@ -252,13 +246,17 @@ bool VideoBackend::Initialize(void* window_handle) void VideoBackend::Shutdown() { - if (g_renderer) - g_renderer->Shutdown(); - if (g_command_buffer_mgr) g_command_buffer_mgr->WaitForGPUIdle(); + if (::g_shader_cache) + ::g_shader_cache->Shutdown(); + + if (g_renderer) + g_renderer->Shutdown(); + g_perf_query.reset(); + ::g_shader_cache.reset(); g_texture_cache.reset(); g_vertex_manager.reset(); g_renderer.reset(); |
