summaryrefslogtreecommitdiff
path: root/src/android
diff options
context:
space:
mode:
authorGravatar liamwhite2023-11-30 09:20:55 -0500
committerGravatar GitHub2023-11-30 09:20:55 -0500
commit57a391e71db13ade7a3d96f59d53781eff18d2ac (patch)
tree0b4223de40a2d77598ac9095b1374353c2e9da7c /src/android
parentMerge pull request #12223 from liamwhite/fruit-company (diff)
parentcore: Rename patcher file (diff)
downloadyuzu-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')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt5
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt1
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt9
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt1
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt4
-rw-r--r--src/android/app/src/main/jni/native.cpp8
-rw-r--r--src/android/app/src/main/res/values/arrays.xml18
-rw-r--r--src/android/app/src/main/res/values/strings.xml5
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
697jstring 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
697void Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_setSysDirectory(JNIEnv* env, 705void 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>