fix: let FSR3 settings persist across restarts without env var

FSR2/FSR3 upscaling mode was forcibly reverted to FSR1 on every startup
unless the WOWEE_ALLOW_STARTUP_FSR2 environment variable was set. This
meant users had to re-select FSR 3.x and re-enable frame generation on
every launch. Removed the env var requirement since the deferred
activation (wait until IN_WORLD state) already provides sufficient
startup safety by preventing FSR init during login/character screens.
This commit is contained in:
Kelsi 2026-03-20 07:53:07 -07:00
parent 1ed6380152
commit 625754f0f7

View file

@ -594,22 +594,10 @@ void GameScreen::render(game::GameHandler& gameHandler) {
renderer->setFSRSharpness(pendingFSRSharpness);
renderer->setFSR2DebugTuning(pendingFSR2JitterSign, pendingFSR2MotionVecScaleX, pendingFSR2MotionVecScaleY);
renderer->setAmdFsr3FramegenEnabled(pendingAMDFramegen);
// Safety fallback: persisted FSR2 can still hang on some systems during startup.
// Require explicit opt-in for startup FSR2; otherwise fall back to FSR1.
const bool allowStartupFsr2 = (std::getenv("WOWEE_ALLOW_STARTUP_FSR2") != nullptr);
int effectiveMode = pendingUpscalingMode;
if (effectiveMode == 2 && !allowStartupFsr2) {
static bool warnedStartupFsr2Fallback = false;
if (!warnedStartupFsr2Fallback) {
LOG_WARNING("Startup FSR2 is disabled by default for stability; falling back to FSR1. Set WOWEE_ALLOW_STARTUP_FSR2=1 to override.");
warnedStartupFsr2Fallback = true;
}
effectiveMode = 1;
pendingUpscalingMode = 1;
pendingFSR = true;
}
// If explicitly enabled, still defer FSR2 until fully in-world.
// Defer FSR2/FSR3 activation until fully in-world to avoid
// init issues during login/character selection screens.
if (effectiveMode == 2 && gameHandler.getState() != game::WorldState::IN_WORLD) {
renderer->setFSREnabled(false);
renderer->setFSR2Enabled(false);