From f0336a3129ea431862e6e3bf1ccf51a384cf3f57 Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Fri, 27 Jan 2023 13:21:09 +1300 Subject: Implement AbstractGfx for OpenGL Mostly involves moving contents of OGLRender to OGLGfx and OGLConfig --- Source/Core/VideoCommon/VideoBackendBase.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/VideoBackendBase.cpp') diff --git a/Source/Core/VideoCommon/VideoBackendBase.cpp b/Source/Core/VideoCommon/VideoBackendBase.cpp index 40fcd8b0f4..1ced44e3ae 100644 --- a/Source/Core/VideoCommon/VideoBackendBase.cpp +++ b/Source/Core/VideoCommon/VideoBackendBase.cpp @@ -39,8 +39,10 @@ #include "VideoBackends/Metal/VideoBackend.h" #endif +#include "VideoCommon/AbstractGfx.h" #include "VideoCommon/AsyncRequests.h" #include "VideoCommon/BPStructs.h" +#include "VideoCommon/BoundingBox.h" #include "VideoCommon/CPMemory.h" #include "VideoCommon/CommandProcessor.h" #include "VideoCommon/Fifo.h" @@ -324,9 +326,16 @@ void VideoBackendBase::InitializeShared() // do not initialize again for the config window m_initialized = true; - g_renderer = std::make_unique(); + if (!g_renderer) + { + // Null and Software Backends supply their own Renderer + g_renderer = std::make_unique(); + } g_presenter = std::make_unique(); g_frame_dumper = std::make_unique(); + g_texture_cache = std::make_unique(); + g_framebuffer_manager = std::make_unique(); + g_shader_cache = std::make_unique(); auto& system = Core::System::GetInstance(); auto& command_processor = system.GetCommandProcessor(); @@ -340,7 +349,9 @@ void VideoBackendBase::InitializeShared() system.GetPixelShaderManager().Init(); TMEM::Init(); - if (!g_renderer->Initialize() || !g_presenter->Initialize()) + if (!g_vertex_manager->Initialize() || !g_renderer->Initialize() || !g_presenter->Initialize() || + !g_shader_cache->Initialize() || !g_framebuffer_manager->Initialize() || + !g_texture_cache->Initialize() || !g_bounding_box->Initialize()) { PanicAlertFmtT("Failed to initialize renderer classes"); Shutdown(); @@ -349,6 +360,8 @@ void VideoBackendBase::InitializeShared() g_Config.VerifyValidity(); UpdateActiveConfig(); + + g_shader_cache->InitializeShaderCache(); } void VideoBackendBase::ShutdownShared() @@ -363,12 +376,15 @@ void VideoBackendBase::ShutdownShared() if (g_texture_cache) g_texture_cache->Shutdown(); + g_bounding_box.reset(); g_perf_query.reset(); g_texture_cache.reset(); g_framebuffer_manager.reset(); g_shader_cache.reset(); g_vertex_manager.reset(); g_renderer.reset(); + g_presenter.reset(); + g_gfx.reset(); m_initialized = false; -- cgit v1.2.3