From b2917efb4b049abd07318af3c851f47b19501763 Mon Sep 17 00:00:00 2001 From: Esther1024 Date: Mon, 7 Jul 2025 18:54:28 +0100 Subject: [PATCH 1/6] ignore cache --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 970127309f..7484a368e6 100644 --- a/.gitignore +++ b/.gitignore @@ -19,8 +19,14 @@ dist/english_plurals/generated_en.ts .idea/ .vs/ .vscode/ +.cache/ +profile.json.gz CMakeLists.txt.user* +# kdevelop +.kdev4/ +*.kdev4 + # *nix related # Common convention for backup or temporary files *~ -- 2.39.5 From 9d60900ecffe05c601176913aab1f16efc27f159 Mon Sep 17 00:00:00 2001 From: Esther1024 Date: Tue, 8 Jul 2025 21:00:45 +0000 Subject: [PATCH 2/6] .gitignore cache things (#25) annoying Reviewed-on: https://git.bixed.xyz/Bix/eden/pulls/25 Co-authored-by: Esther1024 Co-committed-by: Esther1024 --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 970127309f..7484a368e6 100644 --- a/.gitignore +++ b/.gitignore @@ -19,8 +19,14 @@ dist/english_plurals/generated_en.ts .idea/ .vs/ .vscode/ +.cache/ +profile.json.gz CMakeLists.txt.user* +# kdevelop +.kdev4/ +*.kdev4 + # *nix related # Common convention for backup or temporary files *~ -- 2.39.5 From 347d54bc26073f47690f03a26d58df82c08dff29 Mon Sep 17 00:00:00 2001 From: crueter Date: Tue, 8 Jul 2025 21:12:02 +0000 Subject: [PATCH 3/6] [android] add power consumption and battery status overlay (#22) - adds the option to show power draw in amperes - shows if the battery is charging Signed-off-by: Aleksandr Popovich Co-authored-by: Aleksandr Popovich Reviewed-on: https://git.bixed.xyz/Bix/eden/pulls/22 --- .../features/settings/model/BooleanSetting.kt | 2 + .../features/settings/model/IntSetting.kt | 2 +- .../settings/model/view/SettingsItem.kt | 45 ++++++++++----- .../settings/ui/SettingsFragmentPresenter.kt | 2 + .../yuzu_emu/fragments/EmulationFragment.kt | 42 ++++++++++---- .../app/src/main/jni/android_settings.h | 52 +++++++++++------ .../app/src/main/res/values-sr/strings.xml | 57 +++++++++++-------- .../app/src/main/res/values/arrays.xml | 10 ++++ .../app/src/main/res/values/strings.xml | 11 +++- src/common/settings_enums.h | 2 + 10 files changed, 156 insertions(+), 69 deletions(-) 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 21dc51513d..79cfed1cd0 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 @@ -58,7 +58,9 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { SHOW_APP_RAM_USAGE("show_app_ram_usage"), SHOW_SYSTEM_RAM_USAGE("show_system_ram_usage"), SHOW_BAT_TEMPERATURE("show_bat_temperature"), + SHOW_POWER_INFO("show_power_info"), SHOW_SHADERS_BUILDING("show_shaders_building"), + DEBUG_FLUSH_BY_LINE("flush_lines"), USE_LRU_CACHE("use_lru_cache"),; 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 63206e0bee..a674857bc1 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 @@ -42,7 +42,7 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { FAST_CPU_TIME("fast_cpu_time"), CPU_TICKS("cpu_ticks"), FAST_GPU_TIME("fast_gpu_time"), - + BAT_TEMPERATURE_UNIT("bat_temperature_unit"), CABINET_APPLET("cabinet_applet_mode"), CONTROLLER_APPLET("controller_applet_mode"), DATA_ERASE_APPLET("data_erase_applet_mode"), 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 f225d8d8b7..4e206ab541 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 @@ -78,7 +78,7 @@ abstract class SettingsItem( val needsRuntimeGlobal: Boolean get() = NativeLibrary.isRunning() && !setting.global && - !NativeConfig.isPerGameConfigLoaded() + !NativeConfig.isPerGameConfigLoaded() val clearable: Boolean get() = !setting.global && NativeConfig.isPerGameConfigLoaded() @@ -260,12 +260,12 @@ abstract class SettingsItem( ) ) put( - SwitchSetting( - BooleanSetting.CORE_SYNC_CORE_SPEED, - titleId = R.string.use_sync_core, - descriptionId = R.string.use_sync_core_description - ) - ) + SwitchSetting( + BooleanSetting.CORE_SYNC_CORE_SPEED, + titleId = R.string.use_sync_core, + descriptionId = R.string.use_sync_core_description + ) + ) put( SingleChoiceSetting( @@ -443,6 +443,21 @@ abstract class SettingsItem( descriptionId = R.string.show_bat_temperature_description ) ) + put( + SingleChoiceSetting( + IntSetting.BAT_TEMPERATURE_UNIT, + R.string.bat_temperature_unit, + choicesId = R.array.temperatureUnitEntries, + valuesId = R.array.temperatureUnitValues + ) + ) + put( + SwitchSetting( + BooleanSetting.SHOW_POWER_INFO, + R.string.show_power_info, + descriptionId = R.string.show_power_info_description + ) + ) put( SwitchSetting( BooleanSetting.SHOW_SHADERS_BUILDING, @@ -688,12 +703,12 @@ abstract class SettingsItem( ) ) put( - SwitchSetting( - BooleanSetting.USE_AUTO_STUB, - titleId = R.string.use_auto_stub, - descriptionId = R.string.use_auto_stub_description - ) - ) + SwitchSetting( + BooleanSetting.USE_AUTO_STUB, + titleId = R.string.use_auto_stub, + descriptionId = R.string.use_auto_stub_description + ) + ) put( SwitchSetting( BooleanSetting.CPU_DEBUG_MODE, @@ -705,7 +720,7 @@ abstract class SettingsItem( val fastmem = object : AbstractBooleanSetting { override fun getBoolean(needsGlobal: Boolean): Boolean = BooleanSetting.FASTMEM.getBoolean() && - BooleanSetting.FASTMEM_EXCLUSIVES.getBoolean() + BooleanSetting.FASTMEM_EXCLUSIVES.getBoolean() override fun setBoolean(value: Boolean) { BooleanSetting.FASTMEM.setBoolean(value) @@ -720,7 +735,7 @@ abstract class SettingsItem( override var global: Boolean get() { return BooleanSetting.FASTMEM.global && - BooleanSetting.FASTMEM_EXCLUSIVES.global + BooleanSetting.FASTMEM_EXCLUSIVES.global } set(value) { BooleanSetting.FASTMEM.global = value 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 0cf7be74d3..430e2f3426 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 @@ -260,6 +260,8 @@ class SettingsFragmentPresenter( add(BooleanSetting.SHOW_APP_RAM_USAGE.key) add(BooleanSetting.SHOW_SYSTEM_RAM_USAGE.key) add(BooleanSetting.SHOW_BAT_TEMPERATURE.key) + add(IntSetting.BAT_TEMPERATURE_UNIT.key) + add(BooleanSetting.SHOW_POWER_INFO.key) add(BooleanSetting.SHOW_SHADERS_BUILDING.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 9ba2d9e625..05c14e278d 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 @@ -17,6 +17,7 @@ import android.content.pm.ActivityInfo import android.content.res.Configuration import android.net.Uri import android.os.BatteryManager +import android.os.BatteryManager.* import android.os.Build import android.os.Bundle import android.os.Handler @@ -574,12 +575,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { if (emulationViewModel.emulationStarted.value && !emulationViewModel.isEmulationStopping.value ) { + val needsGlobal = NativeConfig.isPerGameConfigLoaded() sb.setLength(0) val perfStats = NativeLibrary.getPerfStats() val actualFps = perfStats[FPS] - if (BooleanSetting.SHOW_FPS.getBoolean(NativeConfig.isPerGameConfigLoaded())) { + if (BooleanSetting.SHOW_FPS.getBoolean(needsGlobal)) { val enableFrameInterpolation = BooleanSetting.FRAME_INTERPOLATION.getBoolean() // val enableFrameSkipping = BooleanSetting.FRAME_SKIPPING.getBoolean() @@ -597,7 +599,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { sb.append(fpsText) } - if (BooleanSetting.SHOW_FRAMETIME.getBoolean(NativeConfig.isPerGameConfigLoaded())) { + if (BooleanSetting.SHOW_FRAMETIME.getBoolean(needsGlobal)) { if (sb.isNotEmpty()) sb.append(" | ") sb.append( String.format( @@ -607,13 +609,14 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { ) } - if (BooleanSetting.SHOW_APP_RAM_USAGE.getBoolean(NativeConfig.isPerGameConfigLoaded())) { + if (BooleanSetting.SHOW_APP_RAM_USAGE.getBoolean(needsGlobal)) { if (sb.isNotEmpty()) sb.append(" | ") - val appRamUsage = File("/proc/self/statm").readLines()[0].split(' ')[1].toLong() * 4096 / 1000000 + val appRamUsage = + File("/proc/self/statm").readLines()[0].split(' ')[1].toLong() * 4096 / 1000000 sb.append(getString(R.string.process_ram, appRamUsage)) } - if (BooleanSetting.SHOW_SYSTEM_RAM_USAGE.getBoolean(NativeConfig.isPerGameConfigLoaded())) { + if (BooleanSetting.SHOW_SYSTEM_RAM_USAGE.getBoolean(needsGlobal)) { if (sb.isNotEmpty()) sb.append(" | ") context?.let { ctx -> val activityManager = @@ -625,16 +628,35 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } - if (BooleanSetting.SHOW_BAT_TEMPERATURE.getBoolean(NativeConfig.isPerGameConfigLoaded())) { + if (BooleanSetting.SHOW_BAT_TEMPERATURE.getBoolean(needsGlobal)) { if (sb.isNotEmpty()) sb.append(" | ") + val batteryTemp = getBatteryTemperature() - val tempF = celsiusToFahrenheit(batteryTemp) - sb.append(String.format("%.1f°C/%.1f°F", batteryTemp, tempF)) + when (IntSetting.BAT_TEMPERATURE_UNIT.getInt(needsGlobal)) { + 0 -> sb.append(String.format("%.1f°C", batteryTemp)) + 1 -> sb.append(String.format("%.1f°F", celsiusToFahrenheit(batteryTemp))) + } + } + + if (BooleanSetting.SHOW_POWER_INFO.getBoolean(needsGlobal)) { + if (sb.isNotEmpty()) sb.append(" | ") + + val battery: BatteryManager = + requireContext().getSystemService(Context.BATTERY_SERVICE) as BatteryManager + + val capacity = battery.getIntProperty(BATTERY_PROPERTY_CAPACITY) + val nowUAmps = battery.getIntProperty(BATTERY_PROPERTY_CURRENT_NOW) + + sb.append(String.format("%.1fA (%d%%)", nowUAmps / 1000000.0, capacity)) + + if (battery.isCharging || nowUAmps > 0.0) { + sb.append(" ${getString(R.string.charging)}") + } } val shadersBuilding = NativeLibrary.getShadersBuilding() - if (BooleanSetting.SHOW_SHADERS_BUILDING.getBoolean(NativeConfig.isPerGameConfigLoaded()) && shadersBuilding != 0) { + if (BooleanSetting.SHOW_SHADERS_BUILDING.getBoolean(needsGlobal) && shadersBuilding != 0) { if (sb.isNotEmpty()) sb.append(" | ") val prefix = getString(R.string.shaders_prefix) @@ -642,7 +664,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { sb.append(String.format("$prefix %d $suffix", shadersBuilding)) } - if (BooleanSetting.PERF_OVERLAY_BACKGROUND.getBoolean(NativeConfig.isPerGameConfigLoaded())) { + if (BooleanSetting.PERF_OVERLAY_BACKGROUND.getBoolean(needsGlobal)) { binding.showStatsOverlayText.setBackgroundResource(R.color.yuzu_transparent_black) } else { binding.showStatsOverlayText.setBackgroundResource(0) diff --git a/src/android/app/src/main/jni/android_settings.h b/src/android/app/src/main/jni/android_settings.h index e7401a8947..cd18f1e5b3 100644 --- a/src/android/app/src/main/jni/android_settings.h +++ b/src/android/app/src/main/jni/android_settings.h @@ -9,6 +9,7 @@ #include #include "common/common_types.h" #include "common/settings_setting.h" +#include "common/settings_enums.h" namespace AndroidSettings { @@ -79,9 +80,10 @@ namespace AndroidSettings { Settings::Specialization::Paired, true, true}; Settings::Setting perf_overlay_background{linkage, false, "perf_overlay_background", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; + Settings::Category::Overlay, + Settings::Specialization::Default, true, + true, + &show_performance_overlay}; Settings::Setting perf_overlay_position{linkage, 0, "perf_overlay_position", Settings::Category::Overlay, Settings::Specialization::Default, true, true, @@ -107,10 +109,23 @@ namespace AndroidSettings { Settings::Category::Overlay, Settings::Specialization::Default, true, true, &show_performance_overlay}; + Settings::Setting bat_temperature_unit{linkage, + Settings::TemperatureUnits::Celsius, + "bat_temperature_unit", + Settings::Category::Overlay, + Settings::Specialization::Default, + true, true, + &show_bat_temperature}; + Settings::Setting show_power_info{linkage, false, "show_power_info", + Settings::Category::Overlay, + Settings::Specialization::Default, true, true, + &show_performance_overlay}; Settings::Setting show_shaders_building{linkage, true, "show_shaders_building", Settings::Category::Overlay, Settings::Specialization::Default, true, true, &show_performance_overlay}; + + Settings::Setting show_input_overlay{linkage, true, "show_input_overlay", Settings::Category::Overlay}; Settings::Setting touchscreen{linkage, true, "touchscreen", @@ -125,14 +140,14 @@ namespace AndroidSettings { Settings::Specialization::Paired, true, true}; Settings::Setting show_device_model{linkage, true, "show_device_model", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_soc_overlay}; + Settings::Category::Overlay, + Settings::Specialization::Default, true, true, + &show_performance_overlay}; Settings::Setting show_gpu_model{linkage, true, "show_gpu_model", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_soc_overlay}; + Settings::Category::Overlay, + Settings::Specialization::Default, true, true, + &show_performance_overlay}; Settings::Setting show_soc_model{linkage, true, "show_soc_model", Settings::Category::Overlay, @@ -140,18 +155,19 @@ namespace AndroidSettings { &show_soc_overlay}; Settings::Setting show_fw_version{linkage, true, "show_firmware_version", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_soc_overlay}; + Settings::Category::Overlay, + Settings::Specialization::Default, true, true, + &show_performance_overlay}; Settings::Setting soc_overlay_background{linkage, false, "soc_overlay_background", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_soc_overlay}; + Settings::Category::Overlay, + Settings::Specialization::Default, true, + true, + &show_soc_overlay}; Settings::Setting soc_overlay_position{linkage, 2, "soc_overlay_position", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_soc_overlay}; + Settings::Category::Overlay, + Settings::Specialization::Default, true, true, + &show_soc_overlay}; Settings::Setting dont_show_eden_veil_warning{linkage, false, "dont_show_eden_veil_warning", 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 814466a707..d0cb8d5d14 100644 --- a/src/android/app/src/main/res/values-sr/strings.xml +++ b/src/android/app/src/main/res/values-sr/strings.xml @@ -14,6 +14,8 @@ Зграда Схадер (с) Систем: + (Пуњење) + Покажи Статистика перформанси Статистика Прилагођавање Видљивост @@ -31,7 +33,10 @@ Прикажи употребу система меморије Прикажите износ РАМ-а који користи систем Прикажи температуру батерије - Прикажи тренутну температуру батерије у Целзијусу и Фахренхеиту + Прикажи тренутну температуру батерије + Јединице за температуру батерије + Прикажи информације о батерији + Приказ тренутне потрошње енергије и преостали капацитет батерије Прикажи Схадерс Буилдинг Прикажи тренутни број саграђених Схадера Положај прекривања @@ -98,11 +103,11 @@ Изглед меморије (Експериментално) Промените изглед емулираног меморије. Ово постављање неће повећати перформансе, али може помоћи у играма које користе високе резолуције путем модова. Не користите на телефонима са 8 ГБ РАМ-а или мање. Ради само на динамичком (ЈИТ) бацкенд-у. - Семпловање сенчења - Омогућава фрагмент шејдеру да се извршава по узорку у вишеузорачном фрагменту уместо једном по фрагменту. Побољшава квалитет графике на рачун перформанси. Само Vulkan 1.1+ уређаји подржавају ову екстензију. - Прилагођени CPU тактови - Поставите прилагођену вредност CPU тактова. Веће вредности могу повећати перформансе, али могу изазвати залеђивање игре. Препоручује се опсег 77–21000. - Тактови + Семпловање сенчења + Омогућава фрагмент шејдеру да се извршава по узорку у вишеузорачном фрагменту уместо једном по фрагменту. Побољшава квалитет графике на рачун перформанси. Само Vulkan 1.1+ уређаји подржавају ову екстензију. + Прилагођени CPU тактови + Поставите прилагођену вредност CPU тактова. Веће вредности могу повећати перформансе, али могу изазвати залеђивање игре. Препоручује се опсег 77–21000. + Тактови Схадер Бацкенд @@ -205,23 +210,23 @@ Није пронађена није пронађена игара Морате одабрати преферирану игру да бисте угостили собу. Мора бити дугачко 48 знакова и садржати само мала слова a-z - Тип лобија - Јавно - Неприказано - Име је прекратко - Неисправна адреса - Мора бити између 4–20 знакова + Тип лобија + Јавно + Неприказано + Име је прекратко + Неисправна адреса + Мора бити између 4–20 знакова Отказати У реду Освежити Листа соба Придружујем се… - Креирам… - Обавезно - Потребан је веб токен, идите на Напредне поставке -> Систем -> Мрежа - Неисправан ИП формат - Мора бити између 1 и 65535 - Мора бити између 3 и 20 знакова + Креирам… + Обавезно + Потребан је веб токен, идите на Напредне поставке -> Систем -> Мрежа + Неисправан ИП формат + Мора бити између 1 и 65535 + Мора бити између 3 и 20 знакова Добродошли! @@ -428,16 +433,16 @@ Генериши - Веб корисничко име - Корисничко име које ће бити приказано у мултиплејер лобијима. Мора бити дугачко 4–20 знакова. + Веб корисничко име + Корисничко име које ће бити приказано у мултиплејер лобијима. Мора бити дугачко 4–20 знакова. Веб токен Веб токен који се користи за стварање јавних лобија. То је низ од 48 знакова који садржи само мала слова А-З. Мрежа Бекенд - Приказ - Постпроцесирање + Приказ + Постпроцесирање ВИП: Фрамескип Пребацивање оквира прескакање да бисте побољшали перформансе смањењем броја пружених оквира. Ова функција се и даље ради и биће омогућена у будућим издањима. Ниво тачности @@ -791,6 +796,10 @@ Средња (256) Висок (512) + + Целзијус + Фаренхајт + 日本語 English @@ -979,8 +988,8 @@ Софтверска тастатура - Авионски режим - Прослеђује авионски режим на Switch OS + Авионски режим + Прослеђује авионски режим на Switch OS Лиценце diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 23514a0a23..42dcfbc68b 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -471,4 +471,14 @@ 1 2 + + + @string/temperature_celsius + @string/temperature_fahrenheit + + + + 0 + 1 + diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 454e633cc3..658dfedc6b 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -14,6 +14,8 @@ Process RAM: %1$d MB Building Shader(s) + (Charging) + System: Show Performance Stats Overlay Customization @@ -32,7 +34,10 @@ Show System Memory Usage Display the amount of RAM used by the system Show Battery Temperature - Display current Battery temperature in Celsius and Fahrenheit + Display current battery temperature + Battery Temperature Units + Show Battery Info + Display current power draw and remaining capacity on battery Show Shaders Building Display current number of shaders being built Overlay Position @@ -818,6 +823,10 @@ Medium (256) High (512) + + Celsius + Fahrenheit + 日本語 English diff --git a/src/common/settings_enums.h b/src/common/settings_enums.h index f0c5c96cc4..c2347f74d0 100644 --- a/src/common/settings_enums.h +++ b/src/common/settings_enums.h @@ -178,6 +178,8 @@ ENUM(SpirvOptimizeMode, Never, OnLoad, Always); ENUM(GpuOverclock, Low, Medium, High) +ENUM(TemperatureUnits, Celsius, Fahrenheit) + template inline std::string CanonicalizeEnum(Type id) { const auto group = EnumMetadata::Canonicalizations(); -- 2.39.5 From 693404bf3755e6e9b09b83bdaccff7423542a081 Mon Sep 17 00:00:00 2001 From: Esther1024 Date: Wed, 9 Jul 2025 01:31:18 +0000 Subject: [PATCH 4/6] fix LLVM not using current top level src dir (#30) Reviewed-on: https://git.bixed.xyz/Bix/eden/pulls/30 Co-authored-by: Esther1024 Co-committed-by: Esther1024 --- CMakeModules/FindLLVM.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeModules/FindLLVM.cmake b/CMakeModules/FindLLVM.cmake index efbd0ca460..8dc064d5d1 100644 --- a/CMakeModules/FindLLVM.cmake +++ b/CMakeModules/FindLLVM.cmake @@ -19,7 +19,7 @@ if (LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle) target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS}) # prefer shared LLVM: https://github.com/llvm/llvm-project/issues/34593 # but use ugly hack because llvm_config doesn't support interface library - add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL src/yuzu/main.cpp) + add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL ${CMAKE_SOURCE_DIR}/src/yuzu/main.cpp) llvm_config(_dummy_lib USE_SHARED demangle) get_target_property(LLVM_LIBRARIES _dummy_lib LINK_LIBRARIES) target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES}) -- 2.39.5 From 3e44389bfcde32ce70be2bf17e374c0e50bcc138 Mon Sep 17 00:00:00 2001 From: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com> Date: Wed, 9 Jul 2025 04:23:07 +0200 Subject: [PATCH 5/6] [Rasterizer]: Implement "Skip CPU Inner Invalidation" hack --- .../yuzu_emu/features/settings/model/BooleanSetting.kt | 1 + .../yuzu_emu/features/settings/model/view/SettingsItem.kt | 7 +++++++ .../features/settings/ui/SettingsFragmentPresenter.kt | 1 + src/android/app/src/main/res/values/strings.xml | 2 ++ src/common/settings.h | 7 +++++++ src/video_core/rasterizer_interface.h | 7 +++++-- src/yuzu/configuration/shared_translation.cpp | 5 +++++ 7 files changed, 28 insertions(+), 2 deletions(-) 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 79cfed1cd0..a558afab47 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 @@ -17,6 +17,7 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { RENDERER_USE_SPEED_LIMIT("use_speed_limit"), USE_FAST_CPU_TIME("use_fast_cpu_time"), USE_CUSTOM_CPU_TICKS("use_custom_cpu_ticks"), + SKIP_CPU_INNER_INVALIDATION("skip_cpu_inner_invalidation"), USE_DOCKED_MODE("use_docked_mode"), USE_AUTO_STUB("use_auto_stub"), RENDERER_USE_DISK_SHADER_CACHE("use_disk_shader_cache"), 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 4e206ab541..ec56362f77 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 @@ -655,6 +655,13 @@ abstract class SettingsItem( max = 65535 ) ) + put( + SwitchSetting( + BooleanSetting.SKIP_CPU_INNER_INVALIDATION, + titleId = R.string.skip_cpu_inner_invalidation, + descriptionId = R.string.skip_cpu_inner_invalidation_description + ) + ) put( SwitchSetting( BooleanSetting.RENDERER_REACTIVE_FLUSHING, 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 430e2f3426..31e2873b58 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 @@ -463,6 +463,7 @@ class SettingsFragmentPresenter( add(IntSetting.FAST_CPU_TIME.key) add(BooleanSetting.USE_CUSTOM_CPU_TICKS.key) add(IntSetting.CPU_TICKS.key) + add(BooleanSetting.SKIP_CPU_INNER_INVALIDATION.key) add(BooleanSetting.USE_LRU_CACHE.key) add(BooleanSetting.CORE_SYNC_CORE_SPEED.key) add(IntSetting.MEMORY_LAYOUT.key) diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 658dfedc6b..6f446758b5 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -104,6 +104,8 @@ Custom CPU Ticks Set a custom value of CPU ticks. Higher values can increase performance, but may also cause the game to freeze. A range of 77–21000 is recommended. Ticks + Skip CPU Inner Invalidation + Skips certain CPU-side cache invalidations during memory updates, reducing CPU usage and improving it's performance. This may cause glitches or crashes on some games. CPU Clock Use Boost (1700MHz) to run at the Switch\'s highest native clock, or Fast (2000MHz) to run at 2x clock. Memory Layout diff --git a/src/common/settings.h b/src/common/settings.h index 2d5a1c4736..941a4513e6 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -450,6 +450,13 @@ struct Values { VramUsageMode::Aggressive, "vram_usage_mode", Category::RendererAdvanced}; + SwitchableSetting skip_cpu_inner_invalidation{linkage, + true, + "skip_cpu_inner_invalidation", + Category::RendererAdvanced, + Specialization::Default, + true, + true}; SwitchableSetting async_presentation{linkage, #ifdef ANDROID true, diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h index 6e2eccfbf0..481efbf53b 100644 --- a/src/video_core/rasterizer_interface.h +++ b/src/video_core/rasterizer_interface.h @@ -9,6 +9,7 @@ #include #include "common/common_types.h" #include "common/polyfill_thread.h" +#include "common/settings.h" #include "video_core/cache_types.h" #include "video_core/engines/fermi_2d.h" #include "video_core/gpu.h" @@ -100,8 +101,10 @@ public: VideoCommon::CacheType which = VideoCommon::CacheType::All) = 0; virtual void InnerInvalidation(std::span> sequences) { - for (const auto& [cpu_addr, size] : sequences) { - InvalidateRegion(cpu_addr, size); + if (!Settings::values.skip_cpu_inner_invalidation.GetValue()) { + for (const auto& [cpu_addr, size] : sequences) { + InvalidateRegion(cpu_addr, size); + } } } diff --git a/src/yuzu/configuration/shared_translation.cpp b/src/yuzu/configuration/shared_translation.cpp index 2ff2626b6c..c743e65ae3 100644 --- a/src/yuzu/configuration/shared_translation.cpp +++ b/src/yuzu/configuration/shared_translation.cpp @@ -250,6 +250,11 @@ std::unique_ptr InitializeTranslations(QWidget* parent) "of available video memory for performance. Has no effect on integrated graphics. " "Aggressive mode may severely impact the performance of other applications such as " "recording software.")); + INSERT(Settings, + skip_cpu_inner_invalidation, + tr("Skip CPU Inner Invalidation"), + tr("Skips certain CPU-side cache invalidations during memory updates, reducing CPU usage and " + "improving it's performance. This may cause glitches or crashes on some games.")); INSERT( Settings, vsync_mode, -- 2.39.5 From 312b3d4743ad734ac3234385f1edaa94d5b69440 Mon Sep 17 00:00:00 2001 From: crueter Date: Wed, 9 Jul 2025 17:19:26 +0000 Subject: [PATCH 6/6] [android] update icon background (#31) credit: AntaBaka Signed-off-by: crueter Reviewed-on: https://git.bixed.xyz/Bix/eden/pulls/31 --- .../app/src/main/res/drawable/ic_icon_bg.xml | 1701 +++++++++-------- 1 file changed, 951 insertions(+), 750 deletions(-) diff --git a/src/android/app/src/main/res/drawable/ic_icon_bg.xml b/src/android/app/src/main/res/drawable/ic_icon_bg.xml index df62dde92e..b409a61ea2 100644 --- a/src/android/app/src/main/res/drawable/ic_icon_bg.xml +++ b/src/android/app/src/main/res/drawable/ic_icon_bg.xml @@ -1,751 +1,952 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.39.5