diff options
| author | Tilka <tilkax@gmail.com> | 2019-02-26 04:21:05 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-26 04:21:05 +0000 |
| commit | 6ce7f44b8a0bb3b95d3f12ebffbef7a71a443fdd (patch) | |
| tree | 98380ce3a3284c52597a6fba86589c847219ecd5 /Source/Core/VideoBackends/Vulkan/main.cpp | |
| parent | 19673ce79af814ca3b77d7f8ea60458e564bfa51 (diff) | |
| parent | f039149198657c1891e1c6462ed30c31ed4b8486 (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.cpp | 54 |
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(); |
