diff options
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/main.cpp | 26 |
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(); } |
