diff options
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 {      external fun getPerfStats(): DoubleArray      /** +     * Returns the current CPU backend. +     */ +    external fun getCpuBackend(): String + +    /**       * Notifies the core emulation that the orientation has changed.       */      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(      override val category: Settings.Category,      override val androidDefault: Int? = null  ) : AbstractIntSetting { +    CPU_BACKEND("cpu_backend", Settings.Category.Cpu),      CPU_ACCURACY("cpu_accuracy", Settings.Category.Cpu),      REGION_INDEX("region_index", Settings.Category.System),      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(              )              put(                  SingleChoiceSetting( +                    IntSetting.CPU_BACKEND, +                    R.string.cpu_backend, +                    0, +                    R.array.cpuBackendArm64Names, +                    R.array.cpuBackendArm64Values +                ) +            ) +            put( +                SingleChoiceSetting(                      IntSetting.CPU_ACCURACY,                      R.string.cpu_accuracy,                      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(              add(BooleanSetting.RENDERER_DEBUG.key)              add(HeaderSetting(R.string.cpu)) +            add(IntSetting.CPU_BACKEND.key)              add(IntSetting.CPU_ACCURACY.key)              add(BooleanSetting.CPU_DEBUG_MODE.key)              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 {              perfStatsUpdater = {                  if (emulationViewModel.emulationStarted.value) {                      val perfStats = NativeLibrary.getPerfStats() +                    val cpuBackend = NativeLibrary.getCpuBackend()                      if (_binding != null) { -                        binding.showFpsText.text = String.format("FPS: %.1f", perfStats[FPS]) +                        binding.showFpsText.text = +                            String.format("FPS: %.1f\n%s", perfStats[FPS], cpuBackend)                      }                      perfStatsUpdateHandler.postDelayed(perfStatsUpdater!!, 800)                  } 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      return j_stats;  } +jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getCpuBackend(JNIEnv* env, jclass clazz) { +    if (Settings::IsNceEnabled()) { +        return ToJString(env, "NCE"); +    } + +    return ToJString(env, "JIT"); +} +  void Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_setSysDirectory(JNIEnv* env,                                                                             jclass clazz,                                                                             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 @@          <item>2</item>      </integer-array> +    <string-array name="cpuBackendArm64Names"> +        <item>@string/cpu_backend_dynarmic</item> +        <item>@string/cpu_backend_nce</item> +    </string-array> + +    <integer-array name="cpuBackendArm64Values"> +        <item>0</item> +        <item>1</item> +    </integer-array> + +    <string-array name="cpuBackendX86Names"> +        <item>@string/cpu_backend_dynarmic</item> +    </string-array> + +    <integer-array name="cpuBackendX86Values"> +        <item>0</item> +    </integer-array> +      <string-array name="cpuAccuracyNames">          <item>@string/auto</item>          <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 @@      <string name="frame_limit_enable_description">Limits emulation speed to a specified percentage of normal speed.</string>      <string name="frame_limit_slider">Limit speed percent</string>      <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> +    <string name="cpu_backend">CPU backend</string>      <string name="cpu_accuracy">CPU accuracy</string>      <string name="value_with_units">%1$s%2$s</string> @@ -423,6 +424,10 @@      <string name="ratio_force_sixteen_ten">Force 16:10</string>      <string name="ratio_stretch">Stretch to window</string> +    <!-- CPU Backend --> +    <string name="cpu_backend_dynarmic">Dynarmic (Slow)</string> +    <string name="cpu_backend_nce">Native code execution (NCE)</string> +      <!-- CPU Accuracy -->      <string name="cpu_accuracy_accurate">Accurate</string>      <string name="cpu_accuracy_unsafe">Unsafe</string>  | 
