summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/main.cpp
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2018-03-10 08:22:28 +0100
committerGitHub <noreply@github.com>2018-03-10 08:22:28 +0100
commita4ef133456a18178f345d3c25195bf74c0e83750 (patch)
tree1564aa8e85c3800882466b953984a57be0bf0b0c /Source/Core/VideoBackends/Vulkan/main.cpp
parent63838c013bde06ed13bfc1b5e24c53594934f641 (diff)
parent93ab50c55584c416d32b5bbdf39f37e9c67f4105 (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.cpp22
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();