diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-05-24 01:38:19 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-05-24 01:38:19 +0200 |
| commit | 0c74a495f534078487ae5413a17d53ba84e70b8c (patch) | |
| tree | f22e17c74d70281b2badb3c336aa96f5d6dd296e /src/android | |
| parent | c6afeb2bf83d026a3a84557789842bdfddae816b (diff) | |
[video_core/host_shaders] add Snapdragon GSRv1 fragment shaders (#3307)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: xbzk <xbzk@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3307
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Diffstat (limited to 'src/android')
4 files changed, 37 insertions, 17 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 92a4a19fcd..161579927c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -76,18 +76,25 @@ class SettingsFragmentPresenter( } } - private fun isFsrScalingFilterSelected(): Boolean { - val fsrFilterValue = resolveFsrScalingFilterValue() ?: return false + private fun isSharpnessScalingFilterSelected(): Boolean { val needsGlobal = getNeedsGlobalForKey(IntSetting.RENDERER_SCALING_FILTER.key) val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal) - return selectedFilter == fsrFilterValue + return selectedFilter in resolveSharpnessScalingFilterValues() } - private fun resolveFsrScalingFilterValue(): Int? { + private fun resolveSharpnessScalingFilterValues(): Set<Int> { val names = context.resources.getStringArray(R.array.rendererScalingFilterNames) val values = context.resources.getIntArray(R.array.rendererScalingFilterValues) - val fsrIndex = names.indexOf(context.getString(R.string.scaling_filter_fsr)) - return if (fsrIndex in values.indices) values[fsrIndex] else null + val sharpnessFilterNames = setOf( + context.getString(R.string.scaling_filter_fsr), + context.getString(R.string.scaling_filter_sgsr), + context.getString(R.string.scaling_filter_sgsr_edge), + ) + return names.asSequence() + .mapIndexedNotNull { index, name -> + if (name in sharpnessFilterNames && index in values.indices) values[index] else null + } + .toSet() } // Allows you to show/hide abstract settings based on the paired setting key @@ -267,7 +274,7 @@ class SettingsFragmentPresenter( add(IntSetting.RENDERER_RESOLUTION.key) add(IntSetting.RENDERER_VSYNC.key) add(IntSetting.RENDERER_SCALING_FILTER.key) - if (isFsrScalingFilterSelected()) { + if (isSharpnessScalingFilterSelected()) { add(IntSetting.FSR_SHARPENING_SLIDER.key) } add(IntSetting.RENDERER_ANTI_ALIASING.key) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt index 120bafdd14..0069e169b3 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt @@ -1090,7 +1090,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private fun addQuickSettings() { binding.quickSettingsSheet.apply { val container = binding.quickSettingsSheet.findViewById<ViewGroup>(R.id.quick_settings_container) - val isFsrSelected = isFsrScalingFilterSelected() + val isSharpnessFilterSelected = isSharpnessScalingFilterSelected() container.removeAllViews() @@ -1176,7 +1176,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { addQuickSettings() } - if (isFsrSelected) { + if (isSharpnessFilterSelected) { quickSettings.addSliderSetting( R.string.fsr_sharpness, container, @@ -1197,17 +1197,24 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } - private fun isFsrScalingFilterSelected(): Boolean { - val fsrFilterValue = resolveFsrScalingFilterValue() ?: return false + private fun isSharpnessScalingFilterSelected(): Boolean { val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal = false) - return selectedFilter == fsrFilterValue + return selectedFilter in resolveSharpnessScalingFilterValues() } - private fun resolveFsrScalingFilterValue(): Int? { + private fun resolveSharpnessScalingFilterValues(): Set<Int> { val names = resources.getStringArray(R.array.rendererScalingFilterNames) val values = resources.getIntArray(R.array.rendererScalingFilterValues) - val fsrIndex = names.indexOf(getString(R.string.scaling_filter_fsr)) - return if (fsrIndex in values.indices) values[fsrIndex] else null + val sharpnessFilterNames = setOf( + getString(R.string.scaling_filter_fsr), + getString(R.string.scaling_filter_sgsr), + getString(R.string.scaling_filter_sgsr_edge), + ) + return names.asSequence() + .mapIndexedNotNull { index, name -> + if (name in sharpnessFilterNames && index in values.indices) values[index] else null + } + .toSet() } private fun openQuickSettingsMenu() { diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 99838b98cc..f3a2a069e7 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -240,6 +240,8 @@ <item>@string/scaling_filter_bspline</item> <item>@string/scaling_filter_mitchell</item> <item>@string/scaling_filter_spline1</item> + <item>@string/scaling_filter_sgsr</item> + <item>@string/scaling_filter_sgsr_edge</item> </string-array> <integer-array name="rendererScalingFilterValues"> @@ -256,6 +258,8 @@ <item>10</item> <item>11</item> <item>12</item> + <item>13</item> + <item>14</item> </integer-array> <string-array name="rendererAntiAliasingNames"> diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 815660fe5c..77be250537 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -468,8 +468,8 @@ <string name="renderer_resolution">Resolution (Handheld/Docked)</string> <string name="renderer_vsync">VSync mode</string> <string name="renderer_scaling_filter">Window adapting filter</string> - <string name="fsr_sharpness">FSR sharpness</string> - <string name="fsr_sharpness_description">Determines how sharpened the image will look while using FSR\'s dynamic contrast</string> + <string name="fsr_sharpness">FSR/SGSR sharpness</string> + <string name="fsr_sharpness_description">Determines how sharpened the image will look while using FSR or SGSR filters</string> <string name="renderer_anti_aliasing">Anti-aliasing method</string> @@ -1080,6 +1080,8 @@ <string name="scaling_filter_bspline" translatable="false">B-Spline</string> <string name="scaling_filter_mitchell" translatable="false">Mitchell</string> <string name="scaling_filter_mmpx" translatable="false">MMPX</string> + <string name="scaling_filter_sgsr" translatable="false">Snapdragon GSR</string> + <string name="scaling_filter_sgsr_edge" translatable="false">Snapdragon GSR EdgeDir</string> <!-- Anti-Aliasing --> <string name="anti_aliasing_none">None</string> |
