[android] build id and driver version overlays added + vulkan driver version fix (#3381)

About overlays: just as the title suggest. added to avoid misleading user feedbacks, as now captures can bring proof of build and driver in use.

About driver version: Android always showed stock driver version (major.minor.patch) as 0.x.x and that because getSystemDriverInfo() from GpuDriverHelper driver version getter has no proper treatment for qualcomm driver version values. BUT getVulkanDriverVersion from NativeLibrary does! So i just migrated to Native's getter.

A low prio todo would be to merge all VersionString getters into a single centered one inside vk device class. Suit yourselves.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3381
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Co-authored-by: xbzk <xbzk@eden-emu.dev>
Co-committed-by: xbzk <xbzk@eden-emu.dev>
This commit is contained in:
xbzk 2026-01-25 16:18:13 +01:00 committed by crueter
parent 6504c7cc4c
commit 64ff59e82f
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
30 changed files with 124 additions and 20 deletions

View File

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
@ -45,6 +45,8 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
AIRPLANE_MODE("airplane_mode"),
SHOW_SOC_OVERLAY("show_soc_overlay"),
SHOW_BUILD_ID("show_build_id"),
SHOW_DRIVER_VERSION("show_driver_version"),
SHOW_DEVICE_MODEL("show_device_model"),
SHOW_GPU_MODEL("show_gpu_model"),
SHOW_SOC_MODEL("show_soc_model"),

View File

@ -511,7 +511,20 @@ abstract class SettingsItem(
valuesId = R.array.staticThemeValues
)
)
put(
SwitchSetting(
BooleanSetting.SHOW_BUILD_ID,
titleId = R.string.show_build_id,
descriptionId = 0
)
)
put(
SwitchSetting(
BooleanSetting.SHOW_DRIVER_VERSION,
titleId = R.string.show_driver_version,
descriptionId = 0
)
)
put(
SwitchSetting(
BooleanSetting.SHOW_DEVICE_MODEL,

View File

@ -350,6 +350,8 @@ class SettingsFragmentPresenter(
add(IntSetting.SOC_OVERLAY_POSITION.key)
add(HeaderSetting(R.string.stats_overlay_items))
add(BooleanSetting.SHOW_BUILD_ID.key)
add(BooleanSetting.SHOW_DRIVER_VERSION.key)
add(BooleanSetting.SHOW_DEVICE_MODEL.key)
add(BooleanSetting.SHOW_GPU_MODEL.key)

View File

@ -127,6 +127,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
private lateinit var gpuModel: String
private lateinit var fwVersion: String
private lateinit var buildId: String
private lateinit var driverInUse: String
private var intentGame: Game? = null
private var isCustomSettingsIntent = false
@ -642,6 +644,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
gpuModel = GpuDriverHelper.hookLibPath?.let { GpuDriverHelper.getGpuModel(hookLibPath = it).toString() } ?: "Unknown"
fwVersion = NativeLibrary.firmwareVersion()
val buildVersion = NativeLibrary.getBuildVersion()
buildId = buildVersion.split("-").getOrNull(0) ?: ""
driverInUse = driverViewModel.selectedDriverVersion.value
updateQuickOverlayMenuEntry(BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean())
binding.surfaceEmulation.holder.addCallback(this)
@ -1481,26 +1487,44 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
if (showSOCOverlay) {
val sb = StringBuilder()
val appendWithPipe: (String) -> Unit = { text ->
if (text.isNotEmpty()) {
if (sb.isNotEmpty()) sb.append(" | ")
sb.append(text)
}
}
socUpdater = {
if (emulationViewModel.emulationStarted.value &&
!emulationViewModel.isEmulationStopping.value
) {
sb.setLength(0)
if (BooleanSetting.SHOW_BUILD_ID.getBoolean(
NativeConfig.isPerGameConfigLoaded()
)
) {
appendWithPipe(buildId)
}
if (BooleanSetting.SHOW_DRIVER_VERSION.getBoolean(
NativeConfig.isPerGameConfigLoaded()
)
) {
appendWithPipe(driverInUse)
}
if (BooleanSetting.SHOW_DEVICE_MODEL.getBoolean(
NativeConfig.isPerGameConfigLoaded()
)
) {
sb.append(Build.MODEL)
appendWithPipe(Build.MODEL)
}
if (BooleanSetting.SHOW_GPU_MODEL.getBoolean(
NativeConfig.isPerGameConfigLoaded()
)
) {
if (sb.isNotEmpty()) sb.append(" | ")
sb.append(gpuModel)
appendWithPipe(gpuModel)
}
if (Build.VERSION.SDK_INT >= 31) {
@ -1508,8 +1532,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
NativeConfig.isPerGameConfigLoaded()
)
) {
if (sb.isNotEmpty()) sb.append(" | ")
sb.append(Build.SOC_MODEL)
appendWithPipe(Build.SOC_MODEL)
}
}
@ -1517,8 +1540,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
NativeConfig.isPerGameConfigLoaded()
)
) {
if (sb.isNotEmpty()) sb.append(" | ")
sb.append(fwVersion)
appendWithPipe(fwVersion)
}
binding.showSocOverlayText.text = sb.toString()

View File

@ -1,9 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.model
import androidx.lifecycle.ViewModel
@ -24,6 +21,7 @@ import org.yuzu.yuzu_emu.features.settings.model.StringSetting
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
import org.yuzu.yuzu_emu.model.Driver.Companion.toDriver
import org.yuzu.yuzu_emu.utils.GpuDriverHelper
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.utils.GpuDriverMetadata
import org.yuzu.yuzu_emu.utils.NativeConfig
import java.io.File
@ -51,6 +49,9 @@ class DriverViewModel : ViewModel() {
private val _selectedDriverTitle = MutableStateFlow("")
val selectedDriverTitle: StateFlow<String> get() = _selectedDriverTitle
private val _selectedDriverVersion = MutableStateFlow("")
val selectedDriverVersion: StateFlow<String> get() = _selectedDriverVersion
private val _showClearButton = MutableStateFlow(false)
val showClearButton = _showClearButton.asStateFlow()
@ -77,11 +78,13 @@ class DriverViewModel : ViewModel() {
fun updateDriverList() {
val selectedDriver = GpuDriverHelper.customDriverSettingData
val systemDriverData = GpuDriverHelper.getSystemDriverInfo()
val systemDriverTitle = YuzuApplication.appContext.getString(R.string.system_gpu_driver)
val newDriverList = mutableListOf(
Driver(
selectedDriver == GpuDriverMetadata(),
YuzuApplication.appContext.getString(R.string.system_gpu_driver),
systemDriverData?.get(0) ?: "",
systemDriverTitle,
//systemDriverData?.get(0) ?: "",
NativeLibrary.getVulkanDriverVersion().takeIf { !it.isNullOrEmpty() } ?: systemDriverTitle,
systemDriverData?.get(1) ?: ""
)
)
@ -233,8 +236,15 @@ class DriverViewModel : ViewModel() {
}
private fun updateName() {
_selectedDriverTitle.value = GpuDriverHelper.customDriverSettingData.name
?: YuzuApplication.appContext.getString(R.string.system_gpu_driver)
val systemDriverTitle = YuzuApplication.appContext.getString(R.string.system_gpu_driver)
//val systemDriverVersion = GpuDriverHelper.getSystemDriverInfo()?.get(0) ?: systemDriverTitle //title as fallback just in case
val systemDriverVersion = NativeLibrary.getVulkanDriverVersion().takeIf { !it.isNullOrEmpty() } ?: systemDriverTitle
val customDriver = GpuDriverHelper.customDriverSettingData
_selectedDriverTitle.value = customDriver.name
?: systemDriverTitle
_selectedDriverVersion.value = customDriver.version
?: systemDriverVersion
}
private fun setDriverReady() {

View File

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
@ -160,7 +160,14 @@ namespace AndroidSettings {
Settings::Setting<bool> show_soc_overlay{linkage, true, "show_soc_overlay",
Settings::Category::Overlay,
Settings::Specialization::Paired, true, true};
Settings::Setting<bool> show_build_id{linkage, true, "show_build_id",
Settings::Category::Overlay,
Settings::Specialization::Default, true, true,
&show_performance_overlay};
Settings::Setting<bool> show_driver_version{linkage, true, "show_driver_version",
Settings::Category::Overlay,
Settings::Specialization::Default, true, true,
&show_performance_overlay};
Settings::Setting<bool> show_device_model{linkage, true, "show_device_model",
Settings::Category::Overlay,
Settings::Specialization::Default, true, true,

View File

@ -80,6 +80,8 @@
<string name="soc_overlay_options">طبقة الجهاز</string>
<string name="soc_overlay_options_description">ضبط المعلومات التي يتم عرضها في طبقة الجهاز</string>
<string name="show_build_id">عرض معرف البناء</string>
<string name="show_driver_version">عرض إصدار برنامج التشغيل</string>
<string name="show_device_model">عرض طراز الجهاز</string>
<string name="show_gpu_model">عرض طراز وحدة معالجة الرسومات</string>
<string name="show_soc_model">عرض طراز الرقائق</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">ئامێر</string>
<string name="soc_overlay_options_description">ڕێکخستنی زانیارییەکانی نیشاندراو لە ئامێرەکە</string>
<string name="show_build_id">نیشاندانی IDی بینا</string>
<string name="show_driver_version">نیشاندانی وەشانی درایڤەر</string>
<string name="show_device_model">نیشاندانی مۆدێلی ئامێر</string>
<string name="show_gpu_model">نیشاندانی مۆدێلی GPU</string>
<string name="show_soc_model">نیشاندانی مۆدێلی SoC</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">Překryv zařízení</string>
<string name="soc_overlay_options_description">Konfigurovat, jaké informace se zobrazí v překryvu zařízení</string>
<string name="show_build_id">Zobrazit ID sestavení</string>
<string name="show_driver_version">Zobrazit verzi ovladače</string>
<string name="show_device_model">Zobrazit model zařízení</string>
<string name="show_gpu_model">Zobrazit model GPU</string>
<string name="show_soc_model">Zobrazit model SoC</string>

View File

@ -55,6 +55,8 @@
<string name="soc_overlay_options">Geräte-Overlay</string>
<string name="soc_overlay_options_description">Konfigurieren Sie, welche Informationen im Geräte-Overlay angezeigt werden</string>
<string name="show_build_id">Build-ID anzeigen</string>
<string name="show_driver_version">Treiberversion anzeigen</string>
<string name="show_device_model">Gerätemodell anzeigen</string>
<string name="show_gpu_model">GPU-Modell anzeigen</string>
<string name="show_soc_model">SoC-Modell anzeigen</string>

View File

@ -65,6 +65,8 @@
<string name="soc_overlay_options">Superposición del dispositivo</string>
<string name="soc_overlay_options_description">Configurar qué información se muestra en la superposición del dispositivo</string>
<string name="show_build_id">Mostrar ID de compilación</string>
<string name="show_driver_version">Mostrar versión del controlador</string>
<string name="show_device_model">Mostrar modelo del dispositivo</string>
<string name="show_gpu_model">Mostrar modelo de la GPU</string>
<string name="show_soc_model">Mostrar modelo del SoC</string>

View File

@ -48,6 +48,8 @@
<string name="soc_overlay_options">نمایش اطلاعات دستگاه</string>
<string name="soc_overlay_options_description">تنظیم اطلاعات نمایش داده شده در نمایشگر دستگاه</string>
<string name="show_build_id">نمایش ID بیلد</string>
<string name="show_driver_version">نمایش نسخه درایور</string>
<string name="show_device_model">نمایش مدل دستگاه</string>
<string name="show_gpu_model">نمایش مدل GPU</string>
<string name="show_soc_model">نمایش مدل SoC</string>

View File

@ -65,6 +65,8 @@
<string name="soc_overlay_options">Overlay de l\'appareil</string>
<string name="soc_overlay_options_description">Configurer les informations affichées dans l\'overlay de l\'appareil</string>
<string name="show_build_id">Afficher l\'ID de build</string>
<string name="show_driver_version">Afficher la version du pilote</string>
<string name="show_device_model">Afficher le modèle de l\'appareil</string>
<string name="show_gpu_model">Afficher le modèle du GPU</string>
<string name="show_soc_model">Afficher le modèle du SoC</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">הצגת מידע על המכשיר</string>
<string name="soc_overlay_options_description">הגדר אילו פרטים יוצגו בהצגת המידע על המכשיר</string>
<string name="show_build_id">הצג מזהה Build</string>
<string name="show_driver_version">הצג גרסת דרייבר</string>
<string name="show_device_model">הצג דגם מכשיר</string>
<string name="show_gpu_model">הצג דגם GPU</string>
<string name="show_soc_model">הצג דגם SoC</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">Eszköz információk</string>
<string name="soc_overlay_options_description">Állítsd be, milyen információk jelenjenek meg az eszköz információiban</string>
<string name="show_build_id">Build azonosító megjelenítése</string>
<string name="show_driver_version">Illesztőprogram-verzió megjelenítése</string>
<string name="show_device_model">Eszköz modell megjelenítése</string>
<string name="show_gpu_model">GPU modell megjelenítése</string>
<string name="show_soc_model">SoC modell megjelenítése</string>

View File

@ -65,6 +65,8 @@
<string name="soc_overlay_options">Overlay Perangkat</string>
<string name="soc_overlay_options_description">Konfigurasi informasi yang ditampilkan di overlay perangkat</string>
<string name="show_build_id">Tampilkan ID Build</string>
<string name="show_driver_version">Tampilkan Versi Driver</string>
<string name="show_device_model">Tampilkan Model Perangkat</string>
<string name="show_gpu_model">Tampilkan Model GPU</string>
<string name="show_soc_model">Tampilkan Model SoC</string>

View File

@ -65,6 +65,8 @@
<string name="soc_overlay_options">Overlay dispositivo</string>
<string name="soc_overlay_options_description">Configura quali informazioni mostrare nell\'overlay del dispositivo</string>
<string name="show_build_id">Mostra ID build</string>
<string name="show_driver_version">Mostra versione driver</string>
<string name="show_device_model">Mostra modello dispositivo</string>
<string name="show_gpu_model">Mostra modello GPU</string>
<string name="show_soc_model">Mostra modello SoC</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">デバイスオーバーレイ</string>
<string name="soc_overlay_options_description">デバイスオーバーレイに表示される情報を設定</string>
<string name="show_build_id">ビルドIDを表示</string>
<string name="show_driver_version">ドライバーのバージョンを表示</string>
<string name="show_device_model">デバイスモデルを表示</string>
<string name="show_gpu_model">GPUモデルを表示</string>
<string name="show_soc_model">SoCモデルを表示</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">장치 오버레이</string>
<string name="soc_overlay_options_description">장치 오버레이에 표시할 정보 구성</string>
<string name="show_build_id">빌드 ID 표시</string>
<string name="show_driver_version">드라이버 버전 표시</string>
<string name="show_device_model">장치 모델 표시</string>
<string name="show_gpu_model">GPU 모델 표시</string>
<string name="show_soc_model">SoC 모델 표시</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">Enhetsoverlegg</string>
<string name="soc_overlay_options_description">Konfigurer hvilken informasjon som vises i enhetsoverlegget</string>
<string name="show_build_id">Vis Build-ID</string>
<string name="show_driver_version">Vis driver-versjon</string>
<string name="show_device_model">Vis enhetsmodell</string>
<string name="show_gpu_model">Vis GPU-modell</string>
<string name="show_soc_model">Vis SoC-modell</string>

View File

@ -68,6 +68,8 @@
<string name="soc_overlay_options">Nakładka urządzenia</string>
<string name="soc_overlay_options_description">Skonfiguruj, jakie informacje są wyświetlane w nakładce urządzenia</string>
<string name="show_build_id">Pokaż ID kompilacji</string>
<string name="show_driver_version">Pokaż wersję sterownika</string>
<string name="show_device_model">Pokaż model urządzenia</string>
<string name="show_gpu_model">Pokaż model GPU</string>
<string name="show_soc_model">Pokaż model SoC</string>

View File

@ -68,6 +68,8 @@
<string name="soc_overlay_options">Sobreposição do Dispositivo</string>
<string name="soc_overlay_options_description">Configurar quais informações são mostradas na sobreposição do dispositivo</string>
<string name="show_build_id">Mostrar ID da Build</string>
<string name="show_driver_version">Mostrar Versão do Driver</string>
<string name="show_device_model">Mostrar Modelo do Dispositivo</string>
<string name="show_gpu_model">Mostrar Modelo da GPU</string>
<string name="show_soc_model">Mostrar Modelo do SoC</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">Sobreposição do dispositivo</string>
<string name="soc_overlay_options_description">Configurar quais informações são mostradas na sobreposição do dispositivo</string>
<string name="show_build_id">Mostrar ID da Build</string>
<string name="show_driver_version">Mostrar Versão do Driver</string>
<string name="show_device_model">Mostrar modelo do dispositivo</string>
<string name="show_gpu_model">Mostrar modelo da GPU</string>
<string name="show_soc_model">Mostrar modelo do SoC</string>

View File

@ -68,6 +68,8 @@
<string name="soc_overlay_options">Оверлей устройства</string>
<string name="soc_overlay_options_description">Настроить, какая информация отображается в оверлее устройства</string>
<string name="show_build_id">Показать ID сборки</string>
<string name="show_driver_version">Показать версию драйвера</string>
<string name="show_device_model">Показать модель устройства</string>
<string name="show_gpu_model">Показать модель ГПУ</string>
<string name="show_soc_model">Показать модель SoC</string>

View File

@ -45,6 +45,8 @@
<string name="soc_overlay_options">Прекривање уређаја</string>
<string name="soc_overlay_options_description">Конфигуришите које се информације приказују у прекривању уређаја</string>
<string name="show_build_id">Прикажи ID билда</string>
<string name="show_driver_version">Прикажи верзију драјвера</string>
<string name="show_device_model">Прикажи модел уређаја</string>
<string name="show_gpu_model">Прикажи ГПУ модел</string>
<string name="show_soc_model">Прикажи соц модел</string>

View File

@ -68,6 +68,8 @@
<string name="soc_overlay_options">Накладання пристрою</string>
<string name="soc_overlay_options_description">Налаштувати, яка інформація відображається в накладанні пристрою</string>
<string name="show_build_id">Показати ID збірки</string>
<string name="show_driver_version">Показати версію драйвера</string>
<string name="show_device_model">Показати модель пристрою</string>
<string name="show_gpu_model">Показати модель GPU</string>
<string name="show_soc_model">Показати модель SoC</string>

View File

@ -47,6 +47,8 @@
<string name="soc_overlay_options">Lớp phủ thiết bị</string>
<string name="soc_overlay_options_description">Cấu hình thông tin hiển thị trong lớp phủ thiết bị</string>
<string name="show_build_id">Hiển thị ID build</string>
<string name="show_driver_version">Hiển thị phiên bản driver</string>
<string name="show_device_model">Hiển thị model thiết bị</string>
<string name="show_gpu_model">Hiển thị model GPU</string>
<string name="show_soc_model">Hiển thị model SoC</string>

View File

@ -65,6 +65,8 @@
<string name="soc_overlay_options">设备叠加层</string>
<string name="soc_overlay_options_description">配置设备叠加层中显示的信息</string>
<string name="show_build_id">显示构建ID</string>
<string name="show_driver_version">显示驱动版本</string>
<string name="show_device_model">显示设备型号</string>
<string name="show_gpu_model">显示GPU型号</string>
<string name="show_soc_model">显示SoC型号</string>

View File

@ -68,6 +68,8 @@
<string name="soc_overlay_options">裝置浮層</string>
<string name="soc_overlay_options_description">設定裝置浮層中顯示的資訊</string>
<string name="show_build_id">顯示建構ID</string>
<string name="show_driver_version">顯示驅動程式版本</string>
<string name="show_device_model">顯示裝置型號</string>
<string name="show_gpu_model">顯示GPU型號</string>
<string name="show_soc_model">顯示SoC型號</string>

View File

@ -86,6 +86,8 @@
<string name="soc_overlay_options">Device Overlay</string>
<string name="soc_overlay_options_description">Configure what information is shown in the device overlay</string>
<string name="show_build_id">Show Build ID</string>
<string name="show_driver_version">Show Driver Version</string>
<string name="show_device_model">Show Device Model</string>
<string name="show_gpu_model">Show GPU Model</string>
<string name="show_soc_model">Show SoC Model</string>