aboutsummaryrefslogtreecommitdiff
path: root/src/android
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-05-24 01:38:19 +0200
committercrueter <crueter@eden-emu.dev>2026-05-24 01:38:19 +0200
commit0c74a495f534078487ae5413a17d53ba84e70b8c (patch)
treef22e17c74d70281b2badb3c336aa96f5d6dd296e /src/android
parentc6afeb2bf83d026a3a84557789842bdfddae816b (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')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt21
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt23
-rw-r--r--src/android/app/src/main/res/values/arrays.xml4
-rw-r--r--src/android/app/src/main/res/values/strings.xml6
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>