summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/VKMain.cpp
diff options
context:
space:
mode:
authorScott Mansell <phiren@gmail.com>2023-02-09 19:59:16 +1300
committerGitHub <noreply@github.com>2023-02-09 19:59:16 +1300
commitccf92a3e56764d6378c436a8040519a5bffc3372 (patch)
treee2b330b225044e1901e77a6ed147cf21b9d7ac0e /Source/Core/VideoBackends/Vulkan/VKMain.cpp
parent72b22ef0a54f841b1c52d49cf0e00d3b12c29ac7 (diff)
parent5c1b3ac61d7e660a9d1c206dbd0e615d637d3272 (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.cpp43
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();
}