From a6d76e787f1431f310bf163361a6e0eb7aba563c Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Wed, 19 May 2021 14:22:19 +1000 Subject: [PATCH] GameSettings: Add trait for sw-renderer-for-readbacks --- src/frontend-common/game_list.h | 2 +- src/frontend-common/game_settings.cpp | 7 +++++++ src/frontend-common/game_settings.h | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/frontend-common/game_list.h b/src/frontend-common/game_list.h index dcc7ad5d3..573f4254e 100644 --- a/src/frontend-common/game_list.h +++ b/src/frontend-common/game_list.h @@ -133,7 +133,7 @@ private: enum : u32 { GAME_LIST_CACHE_SIGNATURE = 0x45434C47, - GAME_LIST_CACHE_VERSION = 29 + GAME_LIST_CACHE_VERSION = 30 }; using CacheMap = std::unordered_map; diff --git a/src/frontend-common/game_settings.cpp b/src/frontend-common/game_settings.cpp index 406c75e62..c377b6e40 100644 --- a/src/frontend-common/game_settings.cpp +++ b/src/frontend-common/game_settings.cpp @@ -21,6 +21,7 @@ namespace GameSettings { std::array, static_cast(Trait::Count)> s_trait_names = {{ {"ForceInterpreter", TRANSLATABLE("GameSettingsTrait", "Force Interpreter")}, {"ForceSoftwareRenderer", TRANSLATABLE("GameSettingsTrait", "Force Software Renderer")}, + {"ForceSoftwareRendererForReadbacks", TRANSLATABLE("GameSettingsTrait", "Force Software Renderer For Readbacks")}, {"ForceInterlacing", TRANSLATABLE("GameSettingsTrait", "Force Interlacing")}, {"DisableTrueColor", TRANSLATABLE("GameSettingsTrait", "Disable True Color")}, {"DisableUpscaling", TRANSLATABLE("GameSettingsTrait", "Disable Upscaling")}, @@ -1345,6 +1346,12 @@ void Entry::ApplySettings(bool display_osd_messages) const g_settings.gpu_pgxp_depth_buffer = false; } + if (HasTrait(Trait::ForceSoftwareRenderer)) + { + Log_WarningPrint("Using software renderer for readbacks."); + g_settings.gpu_renderer = GPURenderer::Software; + } + if (HasTrait(Trait::ForceRecompilerMemoryExceptions)) { Log_WarningPrint("Memory exceptions for recompiler forced by game settings."); diff --git a/src/frontend-common/game_settings.h b/src/frontend-common/game_settings.h index 6276b10fa..8daf57d5b 100644 --- a/src/frontend-common/game_settings.h +++ b/src/frontend-common/game_settings.h @@ -13,6 +13,7 @@ enum class Trait : u32 { ForceInterpreter, ForceSoftwareRenderer, + ForceSoftwareRendererForReadbacks, ForceInterlacing, DisableTrueColor, DisableUpscaling,