SGSR: reach it from the in-game menu too

The upscaler control exists TWICE -- once in the Renderer settings tab and
once in the in-game menu -- and only the first one learned about SGSR, so the
option was unreachable from the place people actually change these mid-game.

Both are pickers now rather than an FSR1 on/off switch. The in-game one was a
MenuSwitchRow, which was fine while FSR1 was the only upscaler and is the
wrong shape for three mutually exclusive ones.

The settings search index pointed at renderer.fsr1.label, which is no longer
a row anywhere; searching for it would have landed on nothing.
This commit is contained in:
jpolo1224
2026-08-24 16:23:49 -04:00
parent 001ca40803
commit d46c512d79
2 changed files with 20 additions and 11 deletions
@@ -859,16 +859,23 @@ private fun GraphicsPane(state: EmulationMenuUiState, viewModel: EmulationMenuVi
// "vulkan" hid this row from almost everyone — which is exactly what happened. Only OpenGL
// and software genuinely cannot run it.
if (settings.renderer != "opengl" && settings.renderer != "software") {
val fsr1On = settings.upscaler == com.armsx2.config.Settings.UPSCALER_FSR1
MenuSwitchRow(
str("renderer.fsr1.label"),
fsr1On,
description = str("renderer.fsr1.description"),
) { on ->
viewModel.updateSettings {
it.copy(upscaler = if (on) com.armsx2.config.Settings.UPSCALER_FSR1 else com.armsx2.config.Settings.UPSCALER_OFF)
}
}
// A picker, matching the Renderer tab. This was a switch while FSR1 was the only
// upscaler; with SGSR beside it there are three mutually exclusive choices, and this
// screen is the SECOND place that has to learn about a new one -- the settings tab has
// its own copy of the same control, and updating only that one leaves the in-game menu
// silently unable to reach the new option.
val fsr1On = settings.upscaler == com.armsx2.config.Settings.UPSCALER_FSR1 ||
settings.upscaler == com.armsx2.config.Settings.UPSCALER_SGSR
HorizontalOptions(
title = str("renderer.upscaler.label"),
options = listOf(
com.armsx2.config.Settings.UPSCALER_OFF to str("common.off"),
com.armsx2.config.Settings.UPSCALER_FSR1 to "FSR 1",
com.armsx2.config.Settings.UPSCALER_SGSR to "SGSR",
),
selected = if (fsr1On) settings.upscaler else com.armsx2.config.Settings.UPSCALER_OFF,
onSelect = { v -> viewModel.updateSettings { it.copy(upscaler = v) } },
)
if (fsr1On) {
com.armsx2.ui.settings.IntSliderRow(
label = str("renderer.fsr1.sharpness.label"),
@@ -111,7 +111,9 @@ private val BASE_SEARCH_INDEX: List<SettingsSearchEntry> = listOf(
SettingsSearchEntry("renderer.textureFiltering.label", true, SettingsCategory.Graphics),
SettingsSearchEntry("renderer.texturePreloading.label", true, SettingsCategory.Graphics),
SettingsSearchEntry("renderer.displayFilter.label", true, SettingsCategory.Graphics),
SettingsSearchEntry("renderer.fsr1.label", true, SettingsCategory.Graphics),
// The FSR1 switch became the Display-upscaler picker when SGSR joined it; searching for the
// old key would land on a row that no longer exists.
SettingsSearchEntry("renderer.upscaler.label", true, SettingsCategory.Graphics),
SettingsSearchEntry("renderer.cas.label", true, SettingsCategory.Graphics),
SettingsSearchEntry("renderer.blendingAccuracy.label", true, SettingsCategory.Graphics),
SettingsSearchEntry("renderer.trilinear.label", true, SettingsCategory.Graphics),