From ca5ec13e138d60d2fbac114450527c654caed702 Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Mon, 30 Jan 2023 05:01:05 +1300 Subject: Move GraphicsMod out of RenderBase --- .../Runtime/GraphicsModManager.cpp | 26 ++++++++++++++++++++++ .../GraphicsModSystem/Runtime/GraphicsModManager.h | 4 ++++ 2 files changed, 30 insertions(+) (limited to 'Source/Core/VideoCommon/GraphicsModSystem') diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp index 7441f210fa..4b5f5dbd84 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp @@ -10,10 +10,15 @@ #include "Common/Logging/Log.h" #include "Common/VariantUtil.h" +#include "Core/ConfigManager.h" + #include "VideoCommon/GraphicsModSystem/Config/GraphicsMod.h" #include "VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h" #include "VideoCommon/GraphicsModSystem/Runtime/GraphicsModActionFactory.h" #include "VideoCommon/TextureInfo.h" +#include "VideoCommon/VideoConfig.h" + +std::unique_ptr g_graphics_mod_manager; class GraphicsModManager::DecoratedAction final : public GraphicsModAction { @@ -64,6 +69,27 @@ private: GraphicsModConfig m_mod; }; +bool GraphicsModManager::Initialize() +{ + if (g_ActiveConfig.bGraphicMods) + { + // If a config change occurred in a previous session, + // remember the old change count value. By setting + // our current change count to the old value, we + // avoid loading the stale data when we + // check for config changes. + const u32 old_game_mod_changes = g_ActiveConfig.graphics_mod_config ? + g_ActiveConfig.graphics_mod_config->GetChangeCount() : + 0; + g_ActiveConfig.graphics_mod_config = GraphicsModGroupConfig(SConfig::GetInstance().GetGameID()); + g_ActiveConfig.graphics_mod_config->Load(); + g_ActiveConfig.graphics_mod_config->SetChangeCount(old_game_mod_changes); + g_graphics_mod_manager->Load(*g_ActiveConfig.graphics_mod_config); + } + + return true; +} + const std::vector& GraphicsModManager::GetProjectionActions(ProjectionType projection_type) const { diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h index 1775e3b0e3..035ee48a36 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h @@ -19,6 +19,8 @@ class GraphicsModGroupConfig; class GraphicsModManager { public: + bool Initialize(); + const std::vector& GetProjectionActions(ProjectionType projection_type) const; const std::vector& GetProjectionTextureActions(ProjectionType projection_type, @@ -52,3 +54,5 @@ private: std::unordered_set m_groups; }; + +extern std::unique_ptr g_graphics_mod_manager; -- cgit v1.2.3 From 0da69055d9f41d838bdf94b66805540c746eaa7d Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Tue, 31 Jan 2023 00:46:10 +1300 Subject: Split out everying remaining from Swap --- .../VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp | 2 ++ .../Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/GraphicsModSystem') diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp index 4b5f5dbd84..368e7adba4 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.cpp @@ -85,6 +85,8 @@ bool GraphicsModManager::Initialize() g_ActiveConfig.graphics_mod_config->Load(); g_ActiveConfig.graphics_mod_config->SetChangeCount(old_game_mod_changes); g_graphics_mod_manager->Load(*g_ActiveConfig.graphics_mod_config); + + m_end_of_frame_event = AfterFrameEvent::Register([this] { EndOfFrame(); }, "ModManager"); } return true; diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h index 035ee48a36..aeb55f17d1 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h @@ -14,6 +14,7 @@ #include "VideoCommon/GraphicsModSystem/Runtime/GraphicsModAction.h" #include "VideoCommon/TextureInfo.h" #include "VideoCommon/XFMemory.h" +#include "VideoCommon/VideoEvents.h" class GraphicsModGroupConfig; class GraphicsModManager @@ -34,9 +35,8 @@ public: void Load(const GraphicsModGroupConfig& config); - void EndOfFrame(); - private: + void EndOfFrame(); void Reset(); class DecoratedAction; @@ -53,6 +53,8 @@ private: std::unordered_map, FBInfoHasher> m_xfb_target_to_actions; std::unordered_set m_groups; + + EventHook m_end_of_frame_event; }; extern std::unique_ptr g_graphics_mod_manager; -- cgit v1.2.3 From 31cfe8250d5a27bd586136d0b71b09736861ad7d Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Tue, 31 Jan 2023 17:29:16 +1300 Subject: Lint fixes --- Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/GraphicsModSystem') diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h index aeb55f17d1..9115d8f45d 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h @@ -13,8 +13,8 @@ #include "VideoCommon/GraphicsModSystem/Runtime/FBInfo.h" #include "VideoCommon/GraphicsModSystem/Runtime/GraphicsModAction.h" #include "VideoCommon/TextureInfo.h" -#include "VideoCommon/XFMemory.h" #include "VideoCommon/VideoEvents.h" +#include "VideoCommon/XFMemory.h" class GraphicsModGroupConfig; class GraphicsModManager -- cgit v1.2.3 From 60f2b5af7b5b5748f672e968d99338d503b5272e Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Fri, 3 Feb 2023 13:18:37 +1300 Subject: Apply suggestions from code review Co-authored-by: Mai Co-authored-by: BhaaL Co-authored-by: iwubcode --- Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/GraphicsModSystem') diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h index 9115d8f45d..ed0063444a 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModManager.h @@ -54,7 +54,7 @@ private: std::unordered_set m_groups; - EventHook m_end_of_frame_event; + Common::EventHook m_end_of_frame_event; }; extern std::unique_ptr g_graphics_mod_manager; -- cgit v1.2.3