From b066d51dfa03b960028fc6f88c8de133eb6db1da Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 22 Oct 2016 20:50:36 +1000 Subject: Vulkan: Remove parameters/members of single-instance classes There's not a lot of point in passing these around or storing them (texture cache/state tracker mainly) as there will only ever be a single instance of the class. Also adds downcast helpers such as Vulkan::Renderer::GetInstance(). --- Source/Core/VideoBackends/Vulkan/main.cpp | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'Source/Core/VideoBackends/Vulkan/main.cpp') 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(); g_renderer = std::make_unique(std::move(swap_chain)); - // Cast to our wrapper classes, so we can call the init methods. - Renderer* renderer = static_cast(g_renderer.get()); - FramebufferManager* framebuffer_mgr = - static_cast(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(); g_texture_cache = std::make_unique(); g_perf_query = std::make_unique(); - VertexManager* vertex_manager = static_cast(g_vertex_manager.get()); - TextureCache* texture_cache = static_cast(g_texture_cache.get()); - PerfQuery* perf_query = static_cast(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(); } -- cgit v1.2.3