summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/main.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@users.noreply.github.com>2016-11-04 23:11:10 +1000
committerGitHub <noreply@github.com>2016-11-04 23:11:10 +1000
commitac2971b30e015a17c8aac937092a0dfd7c4beaf5 (patch)
tree5bb0b8686a3b2e3b01155a000077a2226b70a26f /Source/Core/VideoBackends/Vulkan/main.cpp
parentd2fdafa1556aaa2b71017d9e2ac2dffc2e551008 (diff)
parentc880c37244d4c9d63ce3e3560383825097818d85 (diff)
Merge pull request #4374 from stenzek/vulkan-xfb
Vulkan: Cleanup and implement XFB support
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/main.cpp26
1 files changed, 11 insertions, 15 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/main.cpp b/Source/Core/VideoBackends/Vulkan/main.cpp
index 1fb8f6c6ab..4a70a6e509 100644
--- a/Source/Core/VideoBackends/Vulkan/main.cpp
+++ b/Source/Core/VideoBackends/Vulkan/main.cpp
@@ -194,19 +194,16 @@ bool VideoBackend::Initialize(void* window_handle)
g_framebuffer_manager = std::make_unique<FramebufferManager>();
g_renderer = std::make_unique<Renderer>(std::move(swap_chain));
- // Cast to our wrapper classes, so we can call the init methods.
- Renderer* renderer = static_cast<Renderer*>(g_renderer.get());
- FramebufferManager* framebuffer_mgr =
- static_cast<FramebufferManager*>(g_framebuffer_manager.get());
-
// 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 (!g_object_cache->Initialize() || !framebuffer_mgr->Initialize() ||
- !renderer->Initialize(framebuffer_mgr))
+ if (!g_object_cache->Initialize() || !FramebufferManager::GetInstance()->Initialize() ||
+ !StateTracker::CreateInstance() || !Renderer::GetInstance()->Initialize())
{
PanicAlert("Failed to initialize Vulkan classes.");
g_renderer.reset();
+ StateTracker::DestroyInstance();
+ g_framebuffer_manager.reset();
g_object_cache.reset();
g_command_buffer_mgr.reset();
g_vulkan_context.reset();
@@ -219,18 +216,16 @@ bool VideoBackend::Initialize(void* window_handle)
g_vertex_manager = std::make_unique<VertexManager>();
g_texture_cache = std::make_unique<TextureCache>();
g_perf_query = std::make_unique<PerfQuery>();
- VertexManager* vertex_manager = static_cast<VertexManager*>(g_vertex_manager.get());
- TextureCache* texture_cache = static_cast<TextureCache*>(g_texture_cache.get());
- PerfQuery* perf_query = static_cast<PerfQuery*>(g_perf_query.get());
- if (!vertex_manager->Initialize(renderer->GetStateTracker()) ||
- !texture_cache->Initialize(renderer->GetStateTracker()) ||
- !perf_query->Initialize(renderer->GetStateTracker()))
+ if (!VertexManager::GetInstance()->Initialize() || !TextureCache::GetInstance()->Initialize() ||
+ !PerfQuery::GetInstance()->Initialize())
{
PanicAlert("Failed to initialize Vulkan classes.");
g_perf_query.reset();
g_texture_cache.reset();
g_vertex_manager.reset();
g_renderer.reset();
+ StateTracker::DestroyInstance();
+ g_framebuffer_manager.reset();
g_object_cache.reset();
g_command_buffer_mgr.reset();
g_vulkan_context.reset();
@@ -273,11 +268,12 @@ void VideoBackend::Video_Cleanup()
// Save all cached pipelines out to disk for next time.
g_object_cache->SavePipelineCache();
- g_texture_cache.reset();
g_perf_query.reset();
+ g_texture_cache.reset();
g_vertex_manager.reset();
- g_renderer.reset();
g_framebuffer_manager.reset();
+ StateTracker::DestroyInstance();
+ g_renderer.reset();
CleanupShared();
}