diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/QuickSettings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/QuickSettings.kt index 400257e8d9..7ba7772bd7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/QuickSettings.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/QuickSettings.kt @@ -57,7 +57,8 @@ class QuickSettings(val emulationFragment: EmulationFragment) { container: ViewGroup, setting: IntSetting, namesArrayId: Int, - valuesArrayId: Int + valuesArrayId: Int, + onValueChanged: ((Int) -> Unit)? = null ) { val inflater = LayoutInflater.from(emulationFragment.requireContext()) val itemView = inflater.inflate(R.layout.item_quick_settings_menu, container, false) @@ -89,6 +90,7 @@ class QuickSettings(val emulationFragment: EmulationFragment) { setting.setInt(values[index]) saveSettings() valueView.text = name + onValueChanged?.invoke(values[index]) } } radioGroup.addView(radioButton) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index 2418003904..3dee92b0aa 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt @@ -22,6 +22,8 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { USE_AUTO_STUB("use_auto_stub"), RENDERER_USE_DISK_SHADER_CACHE("use_disk_shader_cache"), RENDERER_FORCE_MAX_CLOCK("force_max_clock"), + RENDERER_ASYNCHRONOUS_GPU_EMULATION("use_asynchronous_gpu_emulation"), + RENDERER_ASYNC_PRESENTATION("async_presentation"), RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders"), RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"), ENABLE_BUFFER_HISTORY("enable_buffer_history"), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt index 4c70d2b35b..99f51243db 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt @@ -17,7 +17,6 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { RENDERER_VRAM_USAGE_MODE("vram_usage_mode"), RENDERER_NVDEC_EMULATION("nvdec_emulation"), RENDERER_ASTC_DECODE_METHOD("accelerate_astc"), - RENDERER_ASTC_RECOMPRESSION("astc_recompression"), RENDERER_ACCURACY("gpu_accuracy"), RENDERER_RESOLUTION("resolution_setup"), RENDERER_VSYNC("use_vsync"), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index 6f25856cbf..9ddb414193 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -349,15 +349,6 @@ abstract class SettingsItem( valuesId = R.array.astcDecodingMethodValues ) ) - put( - SingleChoiceSetting( - IntSetting.RENDERER_ASTC_RECOMPRESSION, - titleId = R.string.astc_recompression, - descriptionId = R.string.astc_recompression_description, - choicesId = R.array.astcRecompressionMethodNames, - valuesId = R.array.astcRecompressionMethodValues - ) - ) put( SingleChoiceSetting( IntSetting.RENDERER_VRAM_USAGE_MODE, @@ -652,6 +643,20 @@ abstract class SettingsItem( descriptionId = R.string.renderer_force_max_clock_description ) ) + put( + SwitchSetting( + BooleanSetting.RENDERER_ASYNCHRONOUS_GPU_EMULATION, + titleId = R.string.renderer_asynchronous_gpu_emulation, + descriptionId = R.string.renderer_asynchronous_gpu_emulation_description + ) + ) + put( + SwitchSetting( + BooleanSetting.RENDERER_ASYNC_PRESENTATION, + titleId = R.string.renderer_async_presentation, + descriptionId = R.string.renderer_async_presentation_description + ) + ) put( SingleChoiceSetting( IntSetting.RENDERER_OPTIMIZE_SPIRV_OUTPUT, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt index 4dcb35c010..4e4ac47ea2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt @@ -29,6 +29,7 @@ import org.yuzu.yuzu_emu.databinding.DialogSliderBinding import org.yuzu.yuzu_emu.databinding.DialogSpinboxBinding import org.yuzu.yuzu_emu.features.input.NativeInput import org.yuzu.yuzu_emu.features.input.model.AnalogDirection +import org.yuzu.yuzu_emu.features.settings.model.IntSetting import org.yuzu.yuzu_emu.features.settings.model.view.AnalogInputSetting import org.yuzu.yuzu_emu.features.settings.model.view.ButtonInputSetting import org.yuzu.yuzu_emu.features.settings.model.view.IntSingleChoiceSetting @@ -381,6 +382,10 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener } scSetting.setSelectedValue(value) + if (scSetting.setting.key == IntSetting.RENDERER_SCALING_FILTER.key) { + settingsViewModel.setShouldReloadSettingsList(true) + } + if (scSetting.setting.key == "app_language") { settingsViewModel.setShouldRecreateForLanguageChange(true) // recreate page apply language change instantly 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 060a6fe9ae..eaf1ed2c00 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 @@ -58,19 +58,38 @@ class SettingsFragmentPresenter( val pairedSettingKey = item.setting.pairedSettingKey if (pairedSettingKey.isNotEmpty()) { + val needsGlobal = getNeedsGlobalForKey(pairedSettingKey) val pairedSettingValue = NativeConfig.getBoolean( pairedSettingKey, - if (NativeLibrary.isRunning() && !NativeConfig.isPerGameConfigLoaded()) { - !NativeConfig.usingGlobal(pairedSettingKey) - } else { - NativeConfig.usingGlobal(pairedSettingKey) - } + needsGlobal ) if (!pairedSettingValue) return } add(item) } + private fun getNeedsGlobalForKey(key: String): Boolean { + return if (NativeLibrary.isRunning() && !NativeConfig.isPerGameConfigLoaded()) { + !NativeConfig.usingGlobal(key) + } else { + NativeConfig.usingGlobal(key) + } + } + + private fun isFsrScalingFilterSelected(): Boolean { + val fsrFilterValue = resolveFsrScalingFilterValue() ?: return false + val needsGlobal = getNeedsGlobalForKey(IntSetting.RENDERER_SCALING_FILTER.key) + val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal) + return selectedFilter == fsrFilterValue + } + + private fun resolveFsrScalingFilterValue(): 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 + } + // Allows you to show/hide abstract settings based on the paired setting key private fun ArrayList.addAbstract(item: SettingsItem) { val pairedSettingKey = item.setting.pairedSettingKey @@ -248,7 +267,9 @@ class SettingsFragmentPresenter( add(IntSetting.RENDERER_RESOLUTION.key) add(IntSetting.RENDERER_VSYNC.key) add(IntSetting.RENDERER_SCALING_FILTER.key) - add(IntSetting.FSR_SHARPENING_SLIDER.key) + if (isFsrScalingFilterSelected()) { + add(IntSetting.FSR_SHARPENING_SLIDER.key) + } add(IntSetting.RENDERER_ANTI_ALIASING.key) add(IntSetting.RENDERER_OPTIMIZE_SPIRV_OUTPUT.key) @@ -259,11 +280,12 @@ class SettingsFragmentPresenter( add(IntSetting.MAX_ANISOTROPY.key) add(IntSetting.RENDERER_VRAM_USAGE_MODE.key) add(IntSetting.RENDERER_ASTC_DECODE_METHOD.key) - add(IntSetting.RENDERER_ASTC_RECOMPRESSION.key) add(BooleanSetting.SYNC_MEMORY_OPERATIONS.key) add(BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE.key) add(BooleanSetting.RENDERER_FORCE_MAX_CLOCK.key) + add(BooleanSetting.RENDERER_ASYNCHRONOUS_GPU_EMULATION.key) + add(BooleanSetting.RENDERER_ASYNC_PRESENTATION.key) add(BooleanSetting.RENDERER_REACTIVE_FLUSHING.key) add(BooleanSetting.ENABLE_BUFFER_HISTORY.key) add(BooleanSetting.USE_OPTIMIZED_VERTEX_BUFFERS.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 b67bc6a9cc..3d3749d4b3 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 @@ -1078,6 +1078,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private fun addQuickSettings() { binding.quickSettingsSheet.apply { val container = binding.quickSettingsSheet.findViewById(R.id.quick_settings_container) + val isFsrSelected = isFsrScalingFilterSelected() container.removeAllViews() @@ -1159,16 +1160,20 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { IntSetting.RENDERER_SCALING_FILTER, R.array.rendererScalingFilterNames, R.array.rendererScalingFilterValues - ) + ) { + addQuickSettings() + } - quickSettings.addSliderSetting( - R.string.fsr_sharpness, - container, - IntSetting.FSR_SHARPENING_SLIDER, - minValue = 0, - maxValue = 100, - units = "%" - ) + if (isFsrSelected) { + quickSettings.addSliderSetting( + R.string.fsr_sharpness, + container, + IntSetting.FSR_SHARPENING_SLIDER, + minValue = 0, + maxValue = 100, + units = "%" + ) + } quickSettings.addIntSetting( R.string.renderer_anti_aliasing, @@ -1180,6 +1185,19 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } + private fun isFsrScalingFilterSelected(): Boolean { + val fsrFilterValue = resolveFsrScalingFilterValue() ?: return false + val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal = false) + return selectedFilter == fsrFilterValue + } + + private fun resolveFsrScalingFilterValue(): 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 + } + private fun openQuickSettingsMenu() { binding.drawerLayout.closeDrawer(binding.inGameMenu) binding.drawerLayout.openDrawer(binding.quickSettingsSheet) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt index 3904f83279..41f03c2488 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt @@ -58,6 +58,7 @@ class DriverViewModel : ViewModel() { private val driversToDelete = mutableListOf() private var previousDriverPath: String = "" + private var activeGame: Game? = null private val _shouldShowDriverShaderDialog = MutableStateFlow(false) val shouldShowDriverShaderDialog: StateFlow get() = _shouldShowDriverShaderDialog @@ -98,6 +99,7 @@ class DriverViewModel : ViewModel() { } fun onOpenDriverManager(game: Game?) { + activeGame = game if (game != null) { SettingsFile.loadCustomConfig(game) } @@ -116,10 +118,12 @@ class DriverViewModel : ViewModel() { } if (!skipShaderWipe && newDriverPath != previousDriverPath) { - wipeAllShaders() + activeGame?.let { + wipeGameShaders(it) - if (!BooleanSetting.DONT_SHOW_DRIVER_SHADER_WARNING.getBoolean(needsGlobal = true)) { - _shouldShowDriverShaderDialog.value = true + if (!BooleanSetting.DONT_SHOW_DRIVER_SHADER_WARNING.getBoolean(needsGlobal = true)) { + _shouldShowDriverShaderDialog.value = true + } } } @@ -139,12 +143,14 @@ class DriverViewModel : ViewModel() { _shouldShowDriverShaderDialog.value = false } - private fun wipeAllShaders() { + private fun wipeGameShaders(game: Game) { viewModelScope.launch { withContext(Dispatchers.IO) { + val externalFilesDir = YuzuApplication.appContext.getExternalFilesDir(null) + ?: return@withContext val shaderDir = File( - YuzuApplication.appContext.getExternalFilesDir(null)?.canonicalPath + - "/shader/" + externalFilesDir.absolutePath + + "/shader/" + game.settingsName.lowercase() ) if (shaderDir.exists()) { shaderDir.deleteRecursively() @@ -202,6 +208,7 @@ class DriverViewModel : ViewModel() { } driversToDelete.clear() } finally { + activeGame = null _isDeletingDrivers.value = false } } diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index 577b88396b..87d7cb2cac 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -479,8 +479,6 @@ تحكم في مدى قوة تخصيص المحاكي لذاكرة وحدة معالجة الرسومات وتحريرها. طريقة فك ضغط ASTC حدد كيفية فك ضغط نسيج ASTC للعرض: CPU (بطيء، آمن)، GPU (سريع، موصى به)، أو CPU Async (بدون توقف، قد يسبب مشاكل) - طريقة إعادة ضغط ASTC - حدد كيفية إعادة ضغط نسيج ASTC لتحسين التوافق والأداء. تمكين هذا الخيار يوفر VRAM ولكن قد يقلل من جودة النسيج. مزامنة عمليات الذاكرة يضمن اتساق البيانات بين عمليات الحوسبة والذاكرة. هذا الخيار قد يحل المشكلات في بعض الألعاب، ولكن قد يقلل الأداء في بعض الحالات. يبدو أن الألعاب التي تستخدم Unreal Engine 4 هي الأكثر تأثرًا. @@ -997,9 +995,6 @@ غير آمن آمن - - غير مضغوط - محافظ عدواني diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index 3adce117c3..b22fbe0298 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -343,8 +343,6 @@ کۆنتڕۆڵی بەکارهێنانی VRAM ڕێگای دیکۆدکردنی ASTC هەڵبژێرە چۆن تێکستوورە پەستووکراوەکانی ASTC دەکرێنەوە بۆ ڕێندرکردن: CPU (هێواش، سەلامەت)، GPU (خێرا، پێشنیارکراو)، یان CPU Async (بێ ستەتەر، لەوانەیە کێشە دروست بکات) - ڕێگای پێکهێنانەوەی ASTC - هەڵبژێرە چۆن تێکستوورەکانی ASTC پەستوو دەکرێنەوە بۆ باشترکردنی گونجاندن و کارایی. چالاککردنی ئەم هەڵبژاردە VRAM هەڵدەگرێت بەڵام لەوانەیە کەمکردنەوەی کوالێتی تێکستوور بکات. هاوبەشیی کردارەکانی بیرگە دڵنیایی داتا لە نێوان کردارەکانی کۆمپیوتەر و بیرگە. ئەم هەڵبژاردە کێشەکان لە هەندێک یاری چارەسەر دەکات، بەڵام لە هەندێک حاڵەت کارایی کەم دەکاتەوە. وا دیارە یارییەکانی Unreal Engine 4 زۆرترین کاریگەریان هەیە. @@ -577,9 +575,6 @@ بنەڕەتی - - پێکهێنەنەوە - پارێزەر توند diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index f42e743173..530a33f3b2 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -458,8 +458,6 @@ Určuje, jak moc agresivně emulátor přiděluje a uvolňuje grafickou paměť. Metoda dekódování ASTC Vyberte způsob jak se dekódují ASTC textury: CPU (pomalé, bezpečné), GPU (rychlé, doporučené) nebo CPU Async (asynchronní, žádné zasekávání, ale může způsobit problémy) - Metoda rekomprese ASTC - Vyberte způsob rekomprese textur ASTC pro zlepšení kompatibility a výkonu. Zapnutí této volby ušetří VRAM, ale může snížit kvalitu textur. Synchronizace paměťových operací Zajišťuje konzistenci dat mezi výpočetními a paměťovými operacemi. Tato volba by měla opravit problémy v některých hrách, ale může v některých případech snížit výkon. Největší změny se týkají her založených na Unreal Engine 4. @@ -727,9 +725,6 @@ Nebezpečné Bezpečné - - Nekomprimované - Konzervativní Agresivní diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 764e1b9b16..f2c91fe74e 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -458,8 +458,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Steuerung der GPU-Speicherzuweisung ASTC-Decodierung Wählen Sie aus, wie ASTC-komprimierte Texturen für das Rendering decodiert werden: CPU (langsam, sicher), GPU (schnell, empfohlen) oder CPU Async (kein Ruckeln, kann Probleme verursachen) - ASTC-Neukompression - Wählen Sie, wie ASTC-Texturen neu komprimiert werden, um die Kompatibilität und Leistung zu verbessern. Diese Option spart VRAM, kann aber die Texturqualität verringern. Speicheroperationen synchronisieren Stellt die Datenkonsistenz zwischen Compute- und Speicheroperationen sicher. Diese Option sollte Probleme in einigen Spielen beheben, kann aber in einigen Fällen die Leistung verringern. Spiele mit Unreal Engine 4 scheinen am stärksten betroffen zu sein. @@ -935,9 +933,6 @@ Wirklich fortfahren? Unsicher Sicher - - Unkomprimiert - Konservativ Aggressiv diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index f9d921745e..c83025f949 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -473,8 +473,6 @@ Controla con qué agresividad el emulador asigna y libera la memoria de la GPU. Método de decodificación ASTC Elija cómo se descodifican las texturas comprimidas ASTC para el renderizado: CPU (lento, seguro), GPU (rápido, recomendado) o CPU Async (sin tirones, puede causar problemas) - Método de recompresión ASTC - Elija cómo se recomprimen las texturas ASTC para mejorar la compatibilidad y el rendimiento. Habilitar esta opción ahorra VRAM pero puede reducir la calidad de las texturas. Sincronizar operaciones de memoria Garantiza la consistencia de los datos entre las operaciones de computación y memoria. Esta opción debería solucionar problemas en algunos juegos, pero también puede reducir el rendimiento en algunos casos. Los juegos de Unreal Engine 4 a menudo ven los cambios más significativos de los mismos. @@ -991,9 +989,6 @@ Inseguro Seguro - - Sin compresión - Conservador Agresivo diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index 80e40444c2..05c146ea0e 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -114,12 +114,6 @@ GPU CPU ناهمگام - - روش فشرده‌سازی مجدد ASTC - انتخاب کنید که بافت‌های ASTC چگونه فشرده‌سازی مجدد شوند تا سازگاری و عملکرد بهبود یابد. فعال کردن این گزینه VRAM را ذخیره می‌کند اما ممکن است کیفیت بافت را کاهش دهد. - فشرده‌نشده - BC1 (کیفیت پایین) - BC3 (کیفیت متوسط) حالت استفاده از VRAM diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index cab267ec09..56e150a949 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -452,8 +452,6 @@ Gestion de la mémoire GPU Méthode ASTC Choisissez comment les textures compressées ASTC sont décodées pour le rendu : CPU (lent, sûr), GPU (rapide, recommandé) ou CPU Async (pas de saccades, peut causer des problèmes) - Recompression ASTC - Choisissez comment les textures ASTC sont recompressées pour améliorer la compatibilité et les performances. Activer cette option économise la VRAM mais peut réduire la qualité des textures. Synchroniser les opérations mémoire Garantit la cohérence des données entre les opérations de calcul et de mémoire. Cette option devrait résoudre les problèmes dans certains jeux, mais peut réduire les performances dans certains cas. Les jeux utilisant Unreal Engine 4 semblent être les plus affectés. @@ -850,9 +848,6 @@ Dangereux Sûr - - Non compressé - Conservateur Agressif diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index 74d61af932..b498c7eb64 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -373,8 +373,6 @@ שליטה בקצב הקצאת ושחרור זיכרון GPU שיטת פענוח ASTC בחר כיצד לפרק את הטקסטורות הדחוסות ב-ASTC עבור רינדור: CPU (איטי, בטוח), GPU (מהיר, מומלץ) או CPU Async (ללא קפיצות, עלול לגרום לבעיות) - שיטת דחיסת ASTC - בחר כיצד דחיסה מחדש של טקסטורות ASTC משפרת תאימות וביצועים. הפעלת אפשרות זו חוסכת VRAM אך עלולה להוריד את איכות הטקסטורה. סנכרון פעולות זיכרון מבטיח עקביות נתונים בין פעולות חישוב וזיכרון. אפשרות זו אמורה לתקן בעיות במשחקים מסוימים, אך עלולה להפחית ביצועים במקרים מסוימים. נראה שהמשחקים עם Unreal Engine 4 הם המושפעים ביותר. @@ -622,9 +620,6 @@ ברירת מחדל - - לא דחוס - שמרני אגרסיבי diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index aae6766321..2c777e3d3f 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -362,8 +362,6 @@ GPU memória kezelésének módja ASTC dekódolási módszer Válassza ki, hogyan legyenek dekódolva az ASTC tömörített textúrák a rendereléshez: CPU (lassú, biztonságos), GPU (gyors, ajánlott) vagy CPU Async (nincs megakadás, de problémákat okozhat) - ASTC újratömörítési módszer - Válassza ki, hogyan történik az ASTC textúrák újratömörítése a kompatibilitás és a teljesítmény javításáért. Ez az opció VRAM-ot takarít meg, de csökkentheti a textúra minőségét. Memória-műveletek szinkronizálása Biztosítja az adatok konzisztenciáját a számítási és memória-műveletek között. Ez az opciónak javítania kell néhány játékban előforduló problémát, de bizonyos esetekben csökkentheti a teljesítményt. Az Unreal Engine 4-et használó játékok látszanak a legérintettebbek. @@ -711,9 +709,6 @@ Alapértelmezett - - Tömörítetlen - Konzervatív Aggresszív diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index 02ed67feb6..247510efb9 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -394,8 +394,6 @@ Kontrol seberapa agresif emulator mengalokasikan dan membebaskan memori GPU. Metode Dekoding ASTC Pilih cara tekstur terkompresi ASTC didekode untuk rendering: CPU (lambat, aman), GPU (cepat, direkomendasikan), atau CPU Async (tanpa lag, mungkin menyebabkan masalah) - Metode Rekompresi ASTC - Pilih cara tekstur ASTC dikompresi ulang untuk meningkatkan kompatibilitas dan performa. Mengaktifkan opsi ini menghemat VRAM tetapi dapat menurunkan kualitas tekstur. Sinkronisasi Operasi Memori Memastikan konsistensi data antara operasi komputasi dan memori. Opsi ini seharusnya memperbaiki masalah di beberapa game, tetapi mungkin mengurangi performa dalam beberapa kasus. Game dengan Unreal Engine 4 tampaknya yang paling terpengaruh. @@ -757,9 +755,6 @@ Bawaan - - Tidak Dikompresi - Konservatif Agresif diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index cc32cac3ed..7b4e8b1959 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -401,8 +401,6 @@ Controlla l`allocazione della memoria GPU Metodo decodifica ASTC Scegli come decodificare le texture compresse ASTC per il rendering: CPU (lento, sicuro), GPU (veloce, consigliato) o CPU Async (senza stuttering, può causare problemi) - Metodo ricompressione ASTC - Scegli come ricomprimere le texture ASTC per migliorare compatibilità e prestazioni. Abilitare questa opzione salva VRAM ma può ridurre la qualità delle texture. Sincronizza operazioni di memoria Garantisce la coerenza dei dati tra le operazioni di calcolo e memoria. Questa opzione dovrebbe risolvere problemi in alcuni giochi, ma potrebbe ridurre le prestazioni in alcuni casi. I giochi con Unreal Engine 4 sembrano essere i più colpiti. @@ -797,9 +795,6 @@ Non sicura Sicura - - Non compresso - Conservativa Aggressiva diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index 34fd473de3..647b6f82b4 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -360,8 +360,6 @@ VRAMの使用効率を設定 ASTCデコード方法 ASTC圧縮テクスチャのデコード方法を選択: CPU (低速、安全)、GPU (高速、推奨)、またはCPU非同期 (カクつきなし、問題が発生する可能性あり) - ASTC再圧縮方法 - ASTCテクスチャの再圧縮方法を選択して互換性とパフォーマンスを向上させます。このオプションを有効にするとVRAMを節約できますが、テクスチャ品質が低下する可能性があります。 メモリ操作の同期 計算処理とメモリ操作間のデータ一貫性を保証します。 このオプションは一部のゲームの問題を修正しますが、場合によってはパフォーマンスが低下する可能性があります。 Unreal Engine 4のゲームが最も影響を受けるようです。 @@ -618,9 +616,6 @@ デフォルト - - 非圧縮 - 保守的 積極的 diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index 30b9feb33e..0b2b1af8ac 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -360,8 +360,6 @@ GPU 메모리 할당/해제 방식 선택 ASTC 디코딩 방법 ASTC 압축 텍스처의 디코딩 방식을 선택하세요: CPU (느림, 안전), GPU (빠름, 권장), 또는 CPU 비동기 (끊김 없음, 문제 발생 가능) - ASTC 재압축 방법 - ASTC 텍스처의 재압축 방식을 선택하여 호환성과 성능을 향상시킵니다. 이 옵션을 활성화하면 VRAM을 절약할 수 있지만 텍스처 품질이 저하될 수 있습니다. 메모리 작업 동기화 컴퓨팅 및 메모리 작업 간 데이터 일관성을 보장합니다. 이 옵션은 일부 게임의 문제를 해결할 수 있지만 경우에 따라 성능이 저하될 수 있습니다. Unreal Engine 4 게임이 가장 큰 영향을 받는 것으로 보입니다. @@ -670,9 +668,6 @@ 기본값 - - 비압축 - 보수적 적극적 diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 559c1f61f4..fb507c8b36 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -343,8 +343,6 @@ Kontroller minnetildeling for GPU ASTC-dekoding Velg hvordan ASTC-komprimerte teksturer skal dekodes for rendering: CPU (tregt, sikkert), GPU (raskt, anbefalt) eller CPU Async (ingen stuttering, kan forårsake problemer) - ASTC-komprimering - Velg hvordan ASTC-teksturer komprimeres på nytt for å forbedre kompatibilitet og ytelse. Å aktivere dette alternativet sparer VRAM, men kan redusere teksturkvaliteten. Synkroniser minneoperasjoner Sikrer datakonsistens mellom beregnings- og minneoperasjoner. Dette alternativet bør fikse problemer i noen spill, men kan redusere ytelsen i noen tilfeller. Spill med Unreal Engine 4 ser ut til å være de mest berørte. @@ -590,9 +588,6 @@ Standard - - Ukomprimert - Konservativ Aggressiv diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 9cea367838..046b32d41c 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -458,8 +458,6 @@ Kontroluj alokację i zwalnianie pamięci GPU. Metoda dekodowania ASTC Wybierz sposób dekodowania tekstur skompresowanych w formacie ASTC do renderowania: CPU (wolne, bezpieczne), GPU (szybkie, zalecane) lub CPU Async (bez zacięć, może powodować problemy) - Metoda rekompresji ASTC - Wybierz sposób ponownej kompresji tekstur ASTC w celu poprawy zgodności i wydajności. Włączenie tej opcji oszczędza VRAM, ale może obniżyć jakość tekstur. Synchronizuj operacje pamięci Zapewnia spójność danych między operacjami obliczeniowymi i pamięciowymi. Ta opcja powinna naprawiać problemy w niektórych grach, ale może zmniejszyć wydajność w niektórych przypadkach. Gry z Unreal Engine 4 wydają się być najbardziej dotknięte. @@ -913,9 +911,6 @@ Niezalecane Bezpieczne - - Bez kompresji - Oszczędny Agresywny diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index e016ad5da0..86c1ccc1fd 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -446,8 +446,6 @@ Controla a alocação de memória GPU Método de decodificação ASTC Escolha como as texturas comprimidas em ASTC são decodificadas para renderização: CPU (lenta, segura), GPU (rápida, recomendada) ou CPU Assíncrona (sem travamentos, mas pode causar problemas). - Método de recompressão ASTC - Escolha como as texturas ASTC são recompactadas para melhorar a compatibilidade e o desempenho. Ativar esta opção economiza VRAM, mas pode reduzir a qualidade da textura. Sincronizar Operações de Memória Garante a consistência de dados entre operações de computação e memória. Esta opção pode corrigir problemas em alguns jogos, mas também pode reduzir o desempenho, sendo os jogos da Unreal Engine 4 os mais afetados. @@ -858,9 +856,6 @@ Insegura Segura - - Não comprimido - Conservador Agressivo diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 05612390a8..9e8eb88729 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -366,8 +366,6 @@ Controla alocação de memória GPU. Método ASTC Escolha como as texturas comprimidas em ASTC são descodificadas para renderização: CPU (lento, seguro), GPU (rápido, recomendado) ou CPU Async (sem engasgos, pode causar problemas) - Recompressão ASTC - Escolha como as texturas ASTC são recomprimidas para melhorar a compatibilidade e o desempenho. Ativar esta opção poupa VRAM, mas pode reduzir a qualidade da textura. Sincronizar Operações de Memória Garante a consistência dos dados entre operações de computação e memória. Esta opção deve corrigir problemas em alguns jogos, mas pode reduzir o desempenho nalguns casos. Os jogos com Unreal Engine 4 parecem ser os mais afectados. @@ -723,9 +721,6 @@ uma tentativa de mapeamento automático Predefinido - - Não Comprimido - Conservador Agressivo diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 718b2da696..9afdb3cfcf 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -474,8 +474,6 @@ Стратегия управления видеопамятью Метод декодирования ASTC Выберите способ декодирования сжатых текстур ASTC для рендеринга: ЦП (медленно, безопасно), ГПУ (быстро, рекомендуется) или ЦП асинхронно (без заиканий, могут возникнуть проблемы) - Метод пережатия ASTC - Выберите способ пересжатия текстур ASTC для улучшения совместимости и производительности. Включение этой опции экономит VRAM, но может снизить качество текстур. Синхронизация операций с памятью Обеспечивает согласованность данных между вычислительными операциями и операциями с памятью. Эта опция должна исправлять проблемы в некоторых играх, но может снижать производительность в некоторых случаях. Наиболее сильно это затрагивает игры на Unreal Engine 4. @@ -992,9 +990,6 @@ Небезопасно Безопасный - - Без сжатия - Консервативный Агрессивный diff --git a/src/android/app/src/main/res/values-sr/strings.xml b/src/android/app/src/main/res/values-sr/strings.xml index 7ac829cd91..a8e5fbb39f 100644 --- a/src/android/app/src/main/res/values-sr/strings.xml +++ b/src/android/app/src/main/res/values-sr/strings.xml @@ -365,8 +365,6 @@ Контролишите колико агресивно емулатор додељује и ослобађа ГПУ меморију. АСТЦ метода декодирања Изаберите како су текстуре са компримираним текстовима декодиране за приказивање: ЦПУ (споро, сигуран), ГПУ (Фаст, Препоручи) или ЦПУ АСИНЦ (без затезача, могу да изазове питања) - Метода рекомпресије АСТЦ-а - Изаберите како се текстуре АСТЦ препоручују да би се побољшале компатибилност и перформансе. Омогућавање ове опције штеди ВРАМ, али може смањити квалитет текстуре. Синхронизација меморијских операција Осигурава конзистентност података између рачунских и меморијских операција. Ова опција би требало да поправи проблеме у неким играма, али може смањити перформансе у неким случајевима. Чини се да су игре са Unreal Engine 4 највише погођене. @@ -720,9 +718,6 @@ Подразумевано - - Некомпримован - Конзервативан Агресиван diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 5f1dbd8e28..1df9ae4178 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -475,8 +475,6 @@ Налаштування виділення пам`яті GPU Метод декодування ASTC Виберіть спосіб декодування стиснених текстур ASTC для рендерингу: CPU (повільно, безпечно), GPU (швидко, рекомендовано) або CPU Async (без затримок, можуть виникнути несправності) - Метод перестиснення ASTC - Виберіть спосіб перестиснення текстур ASTC для покращення сумісності та продуктивності. Увімкнення цієї опції зберігає VRAM, але може знизити якість текстур. Синхронізація операцій з пам\'яттю Забезпечує узгодженість даних між обчислювальними операціями та операціями з пам\'яттю. Ця опція має виправляти проблеми в деяких іграх, але може знижувати продуктивність у деяких випадках. Ігри на Unreal Engine 4, здається, найбільш постраждалі. @@ -993,9 +991,6 @@ Небезпечно Безпечно - - Без стиснення - Консервативний Агресивний diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index fe3e3037b1..d6ee495098 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -341,8 +341,6 @@ Kiểm soát cách cấp phát bộ nhớ GPU Phương thức giải mã ASTC Chọn cách giải mã texture nén ASTC để kết xuất: CPU (chậm, an toàn), GPU (nhanh, khuyên dùng) hoặc CPU Async (không giật, có thể gây ra sự cố) - Phương thức nén lại ASTC - Chọn cách nén lại texture ASTC để cải thiện khả năng tương thích và hiệu suất. Bật tùy chọn này tiết kiệm VRAM nhưng có thể làm giảm chất lượng texture. Đồng bộ hoá thao tác bộ nhớ Đảm bảo tính nhất quán dữ liệu giữa các thao tác tính toán và bộ nhớ. Tùy chọn này nên khắc phục sự cố trong một số trò chơi, nhưng có thể làm giảm hiệu suất trong một số trường hợp. Các trò chơi với Unreal Engine 4 có vẻ bị ảnh hưởng nhiều nhất. @@ -586,9 +584,6 @@ Mặc định - - Không nén - Bảo thủ Mạnh diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index beda261a2e..9353ce01b4 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -468,8 +468,6 @@ 控制显存分配策略 ASTC解码方式 选择ASTC压缩纹理的解码方式:CPU(慢速、安全)、GPU(快速、推荐)或CPU异步(无卡顿,可能导致问题) - ASTC重压缩方式 - 选择ASTC纹理的重新压缩方式以提高兼容性和性能。启用此选项可节省VRAM,但可能会降低纹理质量。 同步内存操作 确保计算和内存操作之间的数据一致性。 此选项应能修复某些游戏中的问题,但在某些情况下可能会降低性能。 使用Unreal Engine 4的游戏似乎受影响最大。 @@ -986,9 +984,6 @@ 不安全 安全 - - 不压缩 - 保守模式 激进模式 diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index 65f96057ce..3bbe7eaffe 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -451,8 +451,6 @@ 控制GPU記憶體的分配與釋放策略 ASTC解碼方式 選擇ASTC壓縮紋理的解碼方式:CPU(慢速、安全)、GPU(快速、推薦)或CPU非同步(無卡頓,可能導致問題) - ASTC重新壓縮方式 - 選擇ASTC紋理的重新壓縮方式以提高相容性和效能。啟用此選項可節省VRAM,但可能會降低紋理品質。 同步記憶體操作 確保計算和記憶體操作之間的資料一致性。 此選項應能修復某些遊戲中的問題,但在某些情況下可能會降低效能。 使用Unreal Engine 4的遊戲似乎受影響最大。 @@ -861,9 +859,6 @@ 不安全 安全 - - 未壓縮 - 保守 積極 diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 9f787ab00c..99838b98cc 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -138,21 +138,6 @@ 1 2 - - - - @string/astc_recompression_uncompressed - @string/astc_recompression_bc1 - @string/astc_recompression_bc3 - - - - - 0 - 1 - 2 - - @string/nvdec_emulation_none diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 74c5bcd276..68d3502d52 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -485,8 +485,6 @@ Control how aggressively the emulator allocates and frees GPU memory. ASTC Decoding Method Pick how ASTC-compressed textures are decoded for rendering: CPU (slow, safe), GPU (fast, recommended), or CPU Async (no stutters, may cause issues) - ASTC Recompression Method - Choose how ASTC textures are recompressed to improve compatibility and performance. Enabling this option saves VRAM but may lower texture quality. Sync Memory Operations Ensures data consistency between compute and memory operations. This option should fix issues in some games, but may also reduce performance in some cases. Unreal Engine 4 games often see the most significant changes thereof. @@ -494,6 +492,10 @@ Reduces stuttering by locally storing and loading generated shaders. Force maximum clocks (Adreno only) Forces the GPU to run at the maximum possible clocks (thermal constraints will still be applied). + GPU async emulation + Runs GPU emulation asynchronously to reduce CPU stalls and improve throughput. Disable this only if you run into timing-related issues. + Asynchronous presentation + Slightly improves performance by moving presentation to a separate CPU thread. Use reactive flushing Improves rendering accuracy in some games at the cost of performance. Enable buffer history @@ -1041,12 +1043,7 @@ GPU CPU Async - - Uncompressed - BC1 - BC3 - Conservative Aggressive diff --git a/src/common/settings.h b/src/common/settings.h index 2540282790..24f1732d62 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -359,7 +359,11 @@ struct Values { true, true}; SwitchableSetting fsr_sharpening_slider{linkage, +#ifdef ANDROID + 0, +#else 25, +#endif 0, 200, "fsr_sharpening_slider", @@ -450,11 +454,7 @@ struct Values { "max_anisotropy", Category::RendererAdvanced}; SwitchableSetting accelerate_astc{linkage, -#ifdef ANDROID - AstcDecodeMode::Cpu, -#else AstcDecodeMode::Gpu, -#endif "accelerate_astc", Category::RendererAdvanced}; @@ -583,7 +583,9 @@ struct Values { Category::RendererHacks}; SwitchableSetting dyna_state{linkage, -#if defined (ANDROID) || defined (__APPLE__) +#if defined(ANDROID) + ExtendedDynamicState::EDS1, +#elif defined(__APPLE__) ExtendedDynamicState::Disabled, #else ExtendedDynamicState::EDS2,