From e8f4bd5c5e42da9da96f08787bc5b59c1a480e35 Mon Sep 17 00:00:00 2001
From: Stenzek <stenzek@gmail.com>
Date: Mon, 30 Jan 2023 18:00:31 +1000
Subject: [PATCH] GameDatabase: Fix ForceSoftwareRendererForReadbacks

---
 src/core/game_database.cpp | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/core/game_database.cpp b/src/core/game_database.cpp
index 49beb5a2a..7e36690fe 100644
--- a/src/core/game_database.cpp
+++ b/src/core/game_database.cpp
@@ -217,7 +217,7 @@ const char* GameDatabase::GetCompatibilityRatingDisplayName(CompatibilityRating
 
 void GameDatabase::Entry::ApplySettings(Settings& settings, bool display_osd_messages) const
 {
-  constexpr float osd_duration = 10.0f;
+  constexpr float osd_duration = 5.0f;
 
   if (display_active_start_offset.has_value())
     settings.display_active_start_offset = display_active_start_offset.value();
@@ -264,6 +264,18 @@ void GameDatabase::Entry::ApplySettings(Settings& settings, bool display_osd_mes
     settings.gpu_renderer = GPURenderer::Software;
   }
 
+  if (HasTrait(Trait::ForceSoftwareRendererForReadbacks))
+  {
+    if (display_osd_messages && settings.gpu_renderer != GPURenderer::Software)
+    {
+      Host::AddKeyedOSDMessage("gamedb_force_software_rb",
+                               Host::TranslateStdString("OSDMessage", "Using software renderer for readbacks based on game settings."),
+                               osd_duration);
+    }
+
+    settings.gpu_use_software_renderer_for_readbacks = true;
+  }
+
   if (HasTrait(Trait::ForceInterlacing))
   {
     if (display_osd_messages && settings.gpu_disable_interlacing)