diff options
| author | Stenzek <stenzek@users.noreply.github.com> | 2016-11-04 23:11:10 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-04 23:11:10 +1000 |
| commit | ac2971b30e015a17c8aac937092a0dfd7c4beaf5 (patch) | |
| tree | 5bb0b8686a3b2e3b01155a000077a2226b70a26f /Source/Core/VideoBackends/Vulkan/main.cpp | |
| parent | d2fdafa1556aaa2b71017d9e2ac2dffc2e551008 (diff) | |
| parent | c880c37244d4c9d63ce3e3560383825097818d85 (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.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(); } |
