summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/main.cpp
diff options
context:
space:
mode:
authorTilka <tilkax@gmail.com>2019-02-26 04:21:05 +0000
committerGitHub <noreply@github.com>2019-02-26 04:21:05 +0000
commit6ce7f44b8a0bb3b95d3f12ebffbef7a71a443fdd (patch)
tree98380ce3a3284c52597a6fba86589c847219ecd5 /Source/Core/VideoBackends/Vulkan/main.cpp
parent19673ce79af814ca3b77d7f8ea60458e564bfa51 (diff)
parentf039149198657c1891e1c6462ed30c31ed4b8486 (diff)
Merge pull request #7753 from stenzek/videocommon-all-the-things
Move a significant amount of video backend logic to VideoCommon
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/main.cpp54
1 files changed, 27 insertions, 27 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/main.cpp b/Source/Core/VideoBackends/Vulkan/main.cpp
index 8055aab178..911f8d1991 100644
--- a/Source/Core/VideoBackends/Vulkan/main.cpp
+++ b/Source/Core/VideoBackends/Vulkan/main.cpp
@@ -9,18 +9,17 @@
#include "VideoBackends/Vulkan/CommandBufferManager.h"
#include "VideoBackends/Vulkan/Constants.h"
-#include "VideoBackends/Vulkan/FramebufferManager.h"
#include "VideoBackends/Vulkan/ObjectCache.h"
#include "VideoBackends/Vulkan/PerfQuery.h"
#include "VideoBackends/Vulkan/Renderer.h"
#include "VideoBackends/Vulkan/StateTracker.h"
#include "VideoBackends/Vulkan/SwapChain.h"
-#include "VideoBackends/Vulkan/TextureCache.h"
#include "VideoBackends/Vulkan/VertexManager.h"
#include "VideoBackends/Vulkan/VideoBackend.h"
#include "VideoBackends/Vulkan/VulkanContext.h"
-#include "VideoCommon/OnScreenDisplay.h"
+#include "VideoCommon/FramebufferManager.h"
+#include "VideoCommon/TextureCacheBase.h"
#include "VideoCommon/VideoBackendBase.h"
#include "VideoCommon/VideoConfig.h"
@@ -200,10 +199,9 @@ bool VideoBackend::Initialize(const WindowSystemInfo& wsi)
return false;
}
- // Remaining classes are also dependent on object/shader cache.
+ // Remaining classes are also dependent on object cache.
g_object_cache = std::make_unique<ObjectCache>();
- g_shader_cache = std::make_unique<ShaderCache>();
- if (!g_object_cache->Initialize() || !g_shader_cache->Initialize())
+ if (!g_object_cache->Initialize())
{
PanicAlert("Failed to initialize Vulkan object cache.");
Shutdown();
@@ -223,29 +221,31 @@ bool VideoBackend::Initialize(const WindowSystemInfo& wsi)
}
}
+ if (!StateTracker::CreateInstance())
+ {
+ PanicAlert("Failed to create state tracker");
+ Shutdown();
+ return false;
+ }
+
// Create main wrapper instances.
- g_framebuffer_manager = std::make_unique<FramebufferManager>();
g_renderer = std::make_unique<Renderer>(std::move(swap_chain), wsi.render_surface_scale);
g_vertex_manager = std::make_unique<VertexManager>();
- g_texture_cache = std::make_unique<TextureCache>();
- ::g_shader_cache = std::make_unique<VideoCommon::ShaderCache>();
+ g_shader_cache = std::make_unique<VideoCommon::ShaderCache>();
+ g_framebuffer_manager = std::make_unique<FramebufferManager>();
+ g_texture_cache = std::make_unique<TextureCacheBase>();
g_perf_query = std::make_unique<PerfQuery>();
- // 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 (!StateTracker::CreateInstance() || !FramebufferManager::GetInstance()->Initialize() ||
- !Renderer::GetInstance()->Initialize() || !VertexManager::GetInstance()->Initialize() ||
- !TextureCache::GetInstance()->Initialize() || !PerfQuery::GetInstance()->Initialize() ||
- !::g_shader_cache->Initialize())
+ if (!g_vertex_manager->Initialize() || !g_shader_cache->Initialize() ||
+ !g_renderer->Initialize() || !g_framebuffer_manager->Initialize() ||
+ !g_texture_cache->Initialize() || !PerfQuery::GetInstance()->Initialize())
{
- PanicAlert("Failed to initialize Vulkan classes.");
+ PanicAlert("Failed to initialize renderer classes");
Shutdown();
return false;
}
- // Display the name so the user knows which device was actually created.
- INFO_LOG(VIDEO, "Vulkan Device: %s", g_vulkan_context->GetDeviceProperties().deviceName);
+ g_shader_cache->InitializeShaderCache();
return true;
}
@@ -254,23 +254,23 @@ void VideoBackend::Shutdown()
if (g_command_buffer_mgr)
g_command_buffer_mgr->WaitForGPUIdle();
- if (::g_shader_cache)
- ::g_shader_cache->Shutdown();
+ if (g_shader_cache)
+ g_shader_cache->Shutdown();
+
+ if (g_object_cache)
+ g_object_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();
g_framebuffer_manager.reset();
- StateTracker::DestroyInstance();
- if (g_shader_cache)
- g_shader_cache->Shutdown();
g_shader_cache.reset();
+ g_vertex_manager.reset();
+ g_renderer.reset();
g_object_cache.reset();
+ StateTracker::DestroyInstance();
g_command_buffer_mgr.reset();
g_vulkan_context.reset();
ShutdownShared();