diff options
| author | 2023-11-30 09:20:55 -0500 | |
|---|---|---|
| committer | 2023-11-30 09:20:55 -0500 | |
| commit | 57a391e71db13ade7a3d96f59d53781eff18d2ac (patch) | |
| tree | 0b4223de40a2d77598ac9095b1374353c2e9da7c /src/android | |
| parent | Merge pull request #12223 from liamwhite/fruit-company (diff) | |
| parent | core: Rename patcher file (diff) | |
| download | yuzu-57a391e71db13ade7a3d96f59d53781eff18d2ac.tar.gz yuzu-57a391e71db13ade7a3d96f59d53781eff18d2ac.tar.xz yuzu-57a391e71db13ade7a3d96f59d53781eff18d2ac.zip | |
Merge pull request #12074 from GPUCode/yuwu-on-the-metal
Implement Native Code Execution (NCE)
Diffstat (limited to 'src/android')
8 files changed, 50 insertions, 1 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt index f2ba2504c..e0f01127c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt | |||
| @@ -300,6 +300,11 @@ object NativeLibrary { | |||
| 300 | external fun getPerfStats(): DoubleArray | 300 | external fun getPerfStats(): DoubleArray |
| 301 | 301 | ||
| 302 | /** | 302 | /** |
| 303 | * Returns the current CPU backend. | ||
| 304 | */ | ||
| 305 | external fun getCpuBackend(): String | ||
| 306 | |||
| 307 | /** | ||
| 303 | * Notifies the core emulation that the orientation has changed. | 308 | * Notifies the core emulation that the orientation has changed. |
| 304 | */ | 309 | */ |
| 305 | external fun notifyOrientationChange(layout_option: Int, rotation: Int) | 310 | external fun notifyOrientationChange(layout_option: Int, rotation: Int) |
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 151362124..ef10b209f 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 | |||
| @@ -10,6 +10,7 @@ enum class IntSetting( | |||
| 10 | override val category: Settings.Category, | 10 | override val category: Settings.Category, |
| 11 | override val androidDefault: Int? = null | 11 | override val androidDefault: Int? = null |
| 12 | ) : AbstractIntSetting { | 12 | ) : AbstractIntSetting { |
| 13 | CPU_BACKEND("cpu_backend", Settings.Category.Cpu), | ||
| 13 | CPU_ACCURACY("cpu_accuracy", Settings.Category.Cpu), | 14 | CPU_ACCURACY("cpu_accuracy", Settings.Category.Cpu), |
| 14 | REGION_INDEX("region_index", Settings.Category.System), | 15 | REGION_INDEX("region_index", Settings.Category.System), |
| 15 | LANGUAGE_INDEX("language_index", Settings.Category.System), | 16 | LANGUAGE_INDEX("language_index", Settings.Category.System), |
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 6aba69dbe..e198b18a0 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 | |||
| @@ -79,6 +79,15 @@ abstract class SettingsItem( | |||
| 79 | ) | 79 | ) |
| 80 | put( | 80 | put( |
| 81 | SingleChoiceSetting( | 81 | SingleChoiceSetting( |
| 82 | IntSetting.CPU_BACKEND, | ||
| 83 | R.string.cpu_backend, | ||
| 84 | 0, | ||
| 85 | R.array.cpuBackendArm64Names, | ||
| 86 | R.array.cpuBackendArm64Values | ||
| 87 | ) | ||
| 88 | ) | ||
| 89 | put( | ||
| 90 | SingleChoiceSetting( | ||
| 82 | IntSetting.CPU_ACCURACY, | 91 | IntSetting.CPU_ACCURACY, |
| 83 | R.string.cpu_accuracy, | 92 | R.string.cpu_accuracy, |
| 84 | 0, | 93 | 0, |
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 8b71e32f3..7425728c6 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 | |||
| @@ -269,6 +269,7 @@ class SettingsFragmentPresenter( | |||
| 269 | add(BooleanSetting.RENDERER_DEBUG.key) | 269 | add(BooleanSetting.RENDERER_DEBUG.key) |
| 270 | 270 | ||
| 271 | add(HeaderSetting(R.string.cpu)) | 271 | add(HeaderSetting(R.string.cpu)) |
| 272 | add(IntSetting.CPU_BACKEND.key) | ||
| 272 | add(IntSetting.CPU_ACCURACY.key) | 273 | add(IntSetting.CPU_ACCURACY.key) |
| 273 | add(BooleanSetting.CPU_DEBUG_MODE.key) | 274 | add(BooleanSetting.CPU_DEBUG_MODE.key) |
| 274 | add(SettingsItem.FASTMEM_COMBINED) | 275 | add(SettingsItem.FASTMEM_COMBINED) |
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 c32fa0d7e..734c1d5ca 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 | |||
| @@ -414,8 +414,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { | |||
| 414 | perfStatsUpdater = { | 414 | perfStatsUpdater = { |
| 415 | if (emulationViewModel.emulationStarted.value) { | 415 | if (emulationViewModel.emulationStarted.value) { |
| 416 | val perfStats = NativeLibrary.getPerfStats() | 416 | val perfStats = NativeLibrary.getPerfStats() |
| 417 | val cpuBackend = NativeLibrary.getCpuBackend() | ||
| 417 | if (_binding != null) { | 418 | if (_binding != null) { |
| 418 | binding.showFpsText.text = String.format("FPS: %.1f", perfStats[FPS]) | 419 | binding.showFpsText.text = |
| 420 | String.format("FPS: %.1f\n%s", perfStats[FPS], cpuBackend) | ||
| 419 | } | 421 | } |
| 420 | perfStatsUpdateHandler.postDelayed(perfStatsUpdater!!, 800) | 422 | perfStatsUpdateHandler.postDelayed(perfStatsUpdater!!, 800) |
| 421 | } | 423 | } |
diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index 617288ae4..ed5ce6f8a 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp | |||
| @@ -694,6 +694,14 @@ jdoubleArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getPerfStats(JNIEnv* env, jcl | |||
| 694 | return j_stats; | 694 | return j_stats; |
| 695 | } | 695 | } |
| 696 | 696 | ||
| 697 | jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getCpuBackend(JNIEnv* env, jclass clazz) { | ||
| 698 | if (Settings::IsNceEnabled()) { | ||
| 699 | return ToJString(env, "NCE"); | ||
| 700 | } | ||
| 701 | |||
| 702 | return ToJString(env, "JIT"); | ||
| 703 | } | ||
| 704 | |||
| 697 | void Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_setSysDirectory(JNIEnv* env, | 705 | void Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_setSysDirectory(JNIEnv* env, |
| 698 | jclass clazz, | 706 | jclass clazz, |
| 699 | jstring j_path) {} | 707 | jstring j_path) {} |
diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index 51bcc49a3..ab435dce9 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml | |||
| @@ -175,6 +175,24 @@ | |||
| 175 | <item>2</item> | 175 | <item>2</item> |
| 176 | </integer-array> | 176 | </integer-array> |
| 177 | 177 | ||
| 178 | <string-array name="cpuBackendArm64Names"> | ||
| 179 | <item>@string/cpu_backend_dynarmic</item> | ||
| 180 | <item>@string/cpu_backend_nce</item> | ||
| 181 | </string-array> | ||
| 182 | |||
| 183 | <integer-array name="cpuBackendArm64Values"> | ||
| 184 | <item>0</item> | ||
| 185 | <item>1</item> | ||
| 186 | </integer-array> | ||
| 187 | |||
| 188 | <string-array name="cpuBackendX86Names"> | ||
| 189 | <item>@string/cpu_backend_dynarmic</item> | ||
| 190 | </string-array> | ||
| 191 | |||
| 192 | <integer-array name="cpuBackendX86Values"> | ||
| 193 | <item>0</item> | ||
| 194 | </integer-array> | ||
| 195 | |||
| 178 | <string-array name="cpuAccuracyNames"> | 196 | <string-array name="cpuAccuracyNames"> |
| 179 | <item>@string/auto</item> | 197 | <item>@string/auto</item> |
| 180 | <item>@string/cpu_accuracy_accurate</item> | 198 | <item>@string/cpu_accuracy_accurate</item> |
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index fa9b153b6..a6ccef8a1 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml | |||
| @@ -191,6 +191,7 @@ | |||
| 191 | <string name="frame_limit_enable_description">Limits emulation speed to a specified percentage of normal speed.</string> | 191 | <string name="frame_limit_enable_description">Limits emulation speed to a specified percentage of normal speed.</string> |
| 192 | <string name="frame_limit_slider">Limit speed percent</string> | 192 | <string name="frame_limit_slider">Limit speed percent</string> |
| 193 | <string name="frame_limit_slider_description">Specifies the percentage to limit emulation speed. 100% is the normal speed. Values higher or lower will increase or decrease the speed limit.</string> | 193 | <string name="frame_limit_slider_description">Specifies the percentage to limit emulation speed. 100% is the normal speed. Values higher or lower will increase or decrease the speed limit.</string> |
| 194 | <string name="cpu_backend">CPU backend</string> | ||
| 194 | <string name="cpu_accuracy">CPU accuracy</string> | 195 | <string name="cpu_accuracy">CPU accuracy</string> |
| 195 | <string name="value_with_units">%1$s%2$s</string> | 196 | <string name="value_with_units">%1$s%2$s</string> |
| 196 | 197 | ||
| @@ -423,6 +424,10 @@ | |||
| 423 | <string name="ratio_force_sixteen_ten">Force 16:10</string> | 424 | <string name="ratio_force_sixteen_ten">Force 16:10</string> |
| 424 | <string name="ratio_stretch">Stretch to window</string> | 425 | <string name="ratio_stretch">Stretch to window</string> |
| 425 | 426 | ||
| 427 | <!-- CPU Backend --> | ||
| 428 | <string name="cpu_backend_dynarmic">Dynarmic (Slow)</string> | ||
| 429 | <string name="cpu_backend_nce">Native code execution (NCE)</string> | ||
| 430 | |||
| 426 | <!-- CPU Accuracy --> | 431 | <!-- CPU Accuracy --> |
| 427 | <string name="cpu_accuracy_accurate">Accurate</string> | 432 | <string name="cpu_accuracy_accurate">Accurate</string> |
| 428 | <string name="cpu_accuracy_unsafe">Unsafe</string> | 433 | <string name="cpu_accuracy_unsafe">Unsafe</string> |