diff options
| author | 2023-11-03 21:16:35 -0400 | |
|---|---|---|
| committer | 2023-11-03 21:16:35 -0400 | |
| commit | a80e0e7da506d6fdebf908d669749ce7d22db467 (patch) | |
| tree | 50b959946354aa2f31e2d118b8566008ceeb98e7 /src | |
| parent | Merge pull request #11955 from t895/cntfrq-fix (diff) | |
| parent | android: Log more system information during startup (diff) | |
| download | yuzu-a80e0e7da506d6fdebf908d669749ce7d22db467.tar.gz yuzu-a80e0e7da506d6fdebf908d669749ce7d22db467.tar.xz yuzu-a80e0e7da506d6fdebf908d669749ce7d22db467.zip | |
Merge pull request #11954 from t895/log-hardware
android: Log more system information
Diffstat (limited to 'src')
4 files changed, 31 insertions, 19 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt index 8c053670c..d114bd53d 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt | |||
| @@ -11,6 +11,7 @@ import java.io.File | |||
| 11 | import org.yuzu.yuzu_emu.utils.DirectoryInitialization | 11 | import org.yuzu.yuzu_emu.utils.DirectoryInitialization |
| 12 | import org.yuzu.yuzu_emu.utils.DocumentsTree | 12 | import org.yuzu.yuzu_emu.utils.DocumentsTree |
| 13 | import org.yuzu.yuzu_emu.utils.GpuDriverHelper | 13 | import org.yuzu.yuzu_emu.utils.GpuDriverHelper |
| 14 | import org.yuzu.yuzu_emu.utils.Log | ||
| 14 | 15 | ||
| 15 | fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir | 16 | fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir |
| 16 | 17 | ||
| @@ -49,6 +50,7 @@ class YuzuApplication : Application() { | |||
| 49 | DirectoryInitialization.start() | 50 | DirectoryInitialization.start() |
| 50 | GpuDriverHelper.initializeDriverParameters() | 51 | GpuDriverHelper.initializeDriverParameters() |
| 51 | NativeLibrary.logDeviceInfo() | 52 | NativeLibrary.logDeviceInfo() |
| 53 | Log.logDeviceInfo() | ||
| 52 | 54 | ||
| 53 | createNotificationChannels() | 55 | createNotificationChannels() |
| 54 | } | 56 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt index da98d4ef5..054e4b755 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt | |||
| @@ -107,7 +107,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { | |||
| 107 | 107 | ||
| 108 | val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) | 108 | val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) |
| 109 | if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) { | 109 | if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) { |
| 110 | if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.Gb)) { | 110 | if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.totalMemory)) { |
| 111 | Toast.makeText( | 111 | Toast.makeText( |
| 112 | this, | 112 | this, |
| 113 | getString( | 113 | getString( |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt index fb682c344..aebe84b0f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt | |||
| @@ -3,6 +3,8 @@ | |||
| 3 | 3 | ||
| 4 | package org.yuzu.yuzu_emu.utils | 4 | package org.yuzu.yuzu_emu.utils |
| 5 | 5 | ||
| 6 | import android.os.Build | ||
| 7 | |||
| 6 | object Log { | 8 | object Log { |
| 7 | // Tracks whether we should share the old log or the current log | 9 | // Tracks whether we should share the old log or the current log |
| 8 | var gameLaunched = false | 10 | var gameLaunched = false |
| @@ -16,4 +18,14 @@ object Log { | |||
| 16 | external fun error(message: String) | 18 | external fun error(message: String) |
| 17 | 19 | ||
| 18 | external fun critical(message: String) | 20 | external fun critical(message: String) |
| 21 | |||
| 22 | fun logDeviceInfo() { | ||
| 23 | info("Device Manufacturer - ${Build.MANUFACTURER}") | ||
| 24 | info("Device Model - ${Build.MODEL}") | ||
| 25 | if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { | ||
| 26 | info("SoC Manufacturer - ${Build.SOC_MANUFACTURER}") | ||
| 27 | info("SoC Model - ${Build.SOC_MODEL}") | ||
| 28 | } | ||
| 29 | info("Total System Memory - ${MemoryUtil.getDeviceRAM()}") | ||
| 30 | } | ||
| 19 | } | 31 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt index aa4a5539a..9076a86c4 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/MemoryUtil.kt | |||
| @@ -27,7 +27,7 @@ object MemoryUtil { | |||
| 27 | const val Pb = Tb * 1024 | 27 | const val Pb = Tb * 1024 |
| 28 | const val Eb = Pb * 1024 | 28 | const val Eb = Pb * 1024 |
| 29 | 29 | ||
| 30 | private fun bytesToSizeUnit(size: Float): String = | 30 | private fun bytesToSizeUnit(size: Float, roundUp: Boolean = false): String = |
| 31 | when { | 31 | when { |
| 32 | size < Kb -> { | 32 | size < Kb -> { |
| 33 | context.getString( | 33 | context.getString( |
| @@ -39,63 +39,59 @@ object MemoryUtil { | |||
| 39 | size < Mb -> { | 39 | size < Mb -> { |
| 40 | context.getString( | 40 | context.getString( |
| 41 | R.string.memory_formatted, | 41 | R.string.memory_formatted, |
| 42 | (size / Kb).hundredths, | 42 | if (roundUp) ceil(size / Kb) else (size / Kb).hundredths, |
| 43 | context.getString(R.string.memory_kilobyte) | 43 | context.getString(R.string.memory_kilobyte) |
| 44 | ) | 44 | ) |
| 45 | } | 45 | } |
| 46 | size < Gb -> { | 46 | size < Gb -> { |
| 47 | context.getString( | 47 | context.getString( |
| 48 | R.string.memory_formatted, | 48 | R.string.memory_formatted, |
| 49 | (size / Mb).hundredths, | 49 | if (roundUp) ceil(size / Mb) else (size / Mb).hundredths, |
| 50 | context.getString(R.string.memory_megabyte) | 50 | context.getString(R.string.memory_megabyte) |
| 51 | ) | 51 | ) |
| 52 | } | 52 | } |
| 53 | size < Tb -> { | 53 | size < Tb -> { |
| 54 | context.getString( | 54 | context.getString( |
| 55 | R.string.memory_formatted, | 55 | R.string.memory_formatted, |
| 56 | (size / Gb).hundredths, | 56 | if (roundUp) ceil(size / Gb) else (size / Gb).hundredths, |
| 57 | context.getString(R.string.memory_gigabyte) | 57 | context.getString(R.string.memory_gigabyte) |
| 58 | ) | 58 | ) |
| 59 | } | 59 | } |
| 60 | size < Pb -> { | 60 | size < Pb -> { |
| 61 | context.getString( | 61 | context.getString( |
| 62 | R.string.memory_formatted, | 62 | R.string.memory_formatted, |
| 63 | (size / Tb).hundredths, | 63 | if (roundUp) ceil(size / Tb) else (size / Tb).hundredths, |
| 64 | context.getString(R.string.memory_terabyte) | 64 | context.getString(R.string.memory_terabyte) |
| 65 | ) | 65 | ) |
| 66 | } | 66 | } |
| 67 | size < Eb -> { | 67 | size < Eb -> { |
| 68 | context.getString( | 68 | context.getString( |
| 69 | R.string.memory_formatted, | 69 | R.string.memory_formatted, |
| 70 | (size / Pb).hundredths, | 70 | if (roundUp) ceil(size / Pb) else (size / Pb).hundredths, |
| 71 | context.getString(R.string.memory_petabyte) | 71 | context.getString(R.string.memory_petabyte) |
| 72 | ) | 72 | ) |
| 73 | } | 73 | } |
| 74 | else -> { | 74 | else -> { |
| 75 | context.getString( | 75 | context.getString( |
| 76 | R.string.memory_formatted, | 76 | R.string.memory_formatted, |
| 77 | (size / Eb).hundredths, | 77 | if (roundUp) ceil(size / Eb) else (size / Eb).hundredths, |
| 78 | context.getString(R.string.memory_exabyte) | 78 | context.getString(R.string.memory_exabyte) |
| 79 | ) | 79 | ) |
| 80 | } | 80 | } |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | // Devices are unlikely to have 0.5GB increments of memory so we'll just round up to account for | 83 | val totalMemory: Float |
| 84 | // the potential error created by memInfo.totalMem | ||
| 85 | private val totalMemory: Float | ||
| 86 | get() { | 84 | get() { |
| 87 | val memInfo = ActivityManager.MemoryInfo() | 85 | val memInfo = ActivityManager.MemoryInfo() |
| 88 | with(context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager) { | 86 | with(context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager) { |
| 89 | getMemoryInfo(memInfo) | 87 | getMemoryInfo(memInfo) |
| 90 | } | 88 | } |
| 91 | 89 | ||
| 92 | return ceil( | 90 | return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { |
| 93 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { | 91 | memInfo.advertisedMem.toFloat() |
| 94 | memInfo.advertisedMem.toFloat() | 92 | } else { |
| 95 | } else { | 93 | memInfo.totalMem.toFloat() |
| 96 | memInfo.totalMem.toFloat() | 94 | } |
| 97 | } | ||
| 98 | ) | ||
| 99 | } | 95 | } |
| 100 | 96 | ||
| 101 | fun isLessThan(minimum: Int, size: Float): Boolean = | 97 | fun isLessThan(minimum: Int, size: Float): Boolean = |
| @@ -109,5 +105,7 @@ object MemoryUtil { | |||
| 109 | else -> totalMemory < Kb && totalMemory < minimum | 105 | else -> totalMemory < Kb && totalMemory < minimum |
| 110 | } | 106 | } |
| 111 | 107 | ||
| 112 | fun getDeviceRAM(): String = bytesToSizeUnit(totalMemory) | 108 | // Devices are unlikely to have 0.5GB increments of memory so we'll just round up to account for |
| 109 | // the potential error created by memInfo.totalMem | ||
| 110 | fun getDeviceRAM(): String = bytesToSizeUnit(totalMemory, true) | ||
| 113 | } | 111 | } |