diff options
| author | Scott Mansell <phiren@gmail.com> | 2023-02-09 19:59:16 +1300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-09 19:59:16 +1300 |
| commit | ccf92a3e56764d6378c436a8040519a5bffc3372 (patch) | |
| tree | e2b330b225044e1901e77a6ed147cf21b9d7ac0e /Source/Core/VideoBackends/Vulkan/VKMain.cpp | |
| parent | 72b22ef0a54f841b1c52d49cf0e00d3b12c29ac7 (diff) | |
| parent | 5c1b3ac61d7e660a9d1c206dbd0e615d637d3272 (diff) | |
Merge pull request #11522 from phire/KillRendererWithFire
Kill Renderer (with phire)
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/VKMain.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Vulkan/VKMain.cpp | 43 |
1 files changed, 10 insertions, 33 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/VKMain.cpp b/Source/Core/VideoBackends/Vulkan/VKMain.cpp index 46d535ce75..053b592c14 100644 --- a/Source/Core/VideoBackends/Vulkan/VKMain.cpp +++ b/Source/Core/VideoBackends/Vulkan/VKMain.cpp @@ -12,8 +12,9 @@ #include "VideoBackends/Vulkan/Constants.h" #include "VideoBackends/Vulkan/ObjectCache.h" #include "VideoBackends/Vulkan/StateTracker.h" +#include "VideoBackends/Vulkan/VKBoundingBox.h" +#include "VideoBackends/Vulkan/VKGfx.h" #include "VideoBackends/Vulkan/VKPerfQuery.h" -#include "VideoBackends/Vulkan/VKRenderer.h" #include "VideoBackends/Vulkan/VKSwapChain.h" #include "VideoBackends/Vulkan/VKVertexManager.h" #include "VideoBackends/Vulkan/VulkanContext.h" @@ -193,8 +194,7 @@ bool VideoBackend::Initialize(const WindowSystemInfo& wsi) g_Config.backend_info.bSupportsExclusiveFullscreen = enable_surface && g_vulkan_context->SupportsExclusiveFullscreen(wsi, surface); - // With the backend information populated, we can now initialize videocommon. - InitializeShared(); + UpdateActiveConfig(); // Create command buffers. We do this separately because the other classes depend on it. g_command_buffer_mgr = std::make_unique<CommandBufferManager>(g_Config.bBackendMultithreading); @@ -234,25 +234,13 @@ bool VideoBackend::Initialize(const WindowSystemInfo& wsi) return false; } - // Create main wrapper instances. - g_renderer = std::make_unique<Renderer>(std::move(swap_chain), wsi.render_surface_scale); - g_vertex_manager = std::make_unique<VertexManager>(); - 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>(); - - if (!g_vertex_manager->Initialize() || !g_shader_cache->Initialize() || - !g_renderer->Initialize() || !g_framebuffer_manager->Initialize() || - !g_texture_cache->Initialize() || !PerfQuery::GetInstance()->Initialize()) - { - PanicAlertFmt("Failed to initialize renderer classes"); - Shutdown(); - return false; - } + auto gfx = std::make_unique<VKGfx>(std::move(swap_chain), wsi.render_surface_scale); + auto vertex_manager = std::make_unique<VertexManager>(); + auto perf_query = std::make_unique<PerfQuery>(); + auto bounding_box = std::make_unique<VKBoundingBox>(); - g_shader_cache->InitializeShaderCache(); - return true; + return InitializeShared(std::move(gfx), std::move(vertex_manager), std::move(perf_query), + std::move(bounding_box)); } void VideoBackend::Shutdown() @@ -260,26 +248,15 @@ void VideoBackend::Shutdown() if (g_vulkan_context) vkDeviceWaitIdle(g_vulkan_context->GetDevice()); - if (g_shader_cache) - g_shader_cache->Shutdown(); - if (g_object_cache) g_object_cache->Shutdown(); - if (g_renderer) - g_renderer->Shutdown(); + ShutdownShared(); - g_perf_query.reset(); - g_texture_cache.reset(); - g_framebuffer_manager.reset(); - 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(); UnloadVulkanLibrary(); } |
