summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp
diff options
context:
space:
mode:
authorMai <mai.iam2048@gmail.com>2024-01-13 14:15:14 -0500
committerGitHub <noreply@github.com>2024-01-13 14:15:14 -0500
commitc76dee7807c331582cfb36376329e760eab3f704 (patch)
treed23651bae65a55a62db9e9a8b9ce69b0d4324c1c /Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp
parent1cca3b24c67d1cc58d6551ffc87bd54c64a27e97 (diff)
parent3658d3bffed6bdf4d31a2b2264bd3944101318c8 (diff)
Merge pull request #12285 from iwubcode/serialize_graphics_mods
VideoCommon: add ability to serialize graphics mod to json object
Diffstat (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp')
-rw-r--r--Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp
index 374b138571..575a318484 100644
--- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp
+++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp
@@ -5,6 +5,7 @@
#include "Common/Logging/Log.h"
#include "Common/StringUtil.h"
+#include "Common/VariantUtil.h"
#include "VideoCommon/TextureCacheBase.h"
namespace
@@ -152,6 +153,53 @@ std::optional<std::string> ExtractTextureFilenameForConfig(const picojson::objec
}
} // namespace
+void SerializeTargetToConfig(picojson::object& json_obj, const GraphicsTargetConfig& target)
+{
+ std::visit(
+ overloaded{
+ [&](const DrawStartedTextureTarget& the_target) {
+ json_obj["type"] = picojson::value{"draw_started"};
+ json_obj["texture_filename"] = picojson::value{the_target.m_texture_info_string};
+ },
+ [&](const LoadTextureTarget& the_target) {
+ json_obj["type"] = picojson::value{"load_texture"};
+ json_obj["texture_filename"] = picojson::value{the_target.m_texture_info_string};
+ },
+ [&](const CreateTextureTarget& the_target) {
+ json_obj["type"] = picojson::value{"create_texture"};
+ json_obj["texture_filename"] = picojson::value{the_target.m_texture_info_string};
+ },
+ [&](const EFBTarget& the_target) {
+ json_obj["type"] = picojson::value{"efb"};
+ json_obj["texture_filename"] = picojson::value{
+ fmt::format("{}_{}x{}_{}", EFB_DUMP_PREFIX, the_target.m_width, the_target.m_height,
+ static_cast<int>(the_target.m_texture_format))};
+ },
+ [&](const XFBTarget& the_target) {
+ json_obj["type"] = picojson::value{"xfb"};
+ json_obj["texture_filename"] = picojson::value{
+ fmt::format("{}_{}x{}_{}", XFB_DUMP_PREFIX, the_target.m_width, the_target.m_height,
+ static_cast<int>(the_target.m_texture_format))};
+ },
+ [&](const ProjectionTarget& the_target) {
+ json_obj["type"] = picojson::value{"projection"};
+ if (the_target.m_projection_type == ProjectionType::Orthographic)
+ {
+ json_obj["type"] = picojson::value{"2d"};
+ }
+ else
+ {
+ json_obj["type"] = picojson::value{"3d"};
+ }
+ if (the_target.m_texture_info_string)
+ {
+ json_obj["texture_filename"] = picojson::value{*the_target.m_texture_info_string};
+ }
+ },
+ },
+ target);
+}
+
std::optional<GraphicsTargetConfig> DeserializeTargetFromConfig(const picojson::object& obj)
{
const auto type_iter = obj.find("type");