diff --git a/src/core/game_settings.h b/src/core/game_settings.h index 327a1a4e2c..4a1fb9c8d7 100644 --- a/src/core/game_settings.h +++ b/src/core/game_settings.h @@ -44,7 +44,8 @@ enum class GPUVendor { }; enum class TitleID : std::uint64_t { - NinjaGaidenRagebound = 0x0100781020710000ULL + NinjaGaidenRagebound = 0x0100781020710000ULL, + LuigisMansion3 = 0x0100DCA0064A6000ULL }; struct EnvironmentInfo { diff --git a/src/shader_recompiler/ir_opt/rescaling_pass.cpp b/src/shader_recompiler/ir_opt/rescaling_pass.cpp index af241f17ca..8b78cce9f1 100644 --- a/src/shader_recompiler/ir_opt/rescaling_pass.cpp +++ b/src/shader_recompiler/ir_opt/rescaling_pass.cpp @@ -5,6 +5,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "common/settings.h" +#include "core/game_settings.h" #include "shader_recompiler/environment.h" #include "shader_recompiler/frontend/ir/ir_emitter.h" #include "shader_recompiler/frontend/ir/modifiers.h" @@ -344,10 +345,10 @@ void Visit(const IR::Program& program, IR::Block& block, IR::Inst& inst) { } // Anonymous namespace bool FragmentShaderNeedsRescalingPass(const IR::Program& program) { -#ifdef __ANDROID__ - // Disable this workaround on Android to preserve performance - return false; -#endif + // Only apply for Luigi's Mansion 3 + if (Settings::values.program_id != static_cast(Core::GameSettings::TitleID::LuigisMansion3)) { + return false; + } if (program.stage != Stage::Fragment) return false;