From 1dcd19b02fb02cfcaf845db64288d5004d6ceed0 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Wed, 19 Aug 2026 02:03:42 -0400 Subject: [PATCH] [FIX] todo qemu: name a GPU mode the emulator still accepts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported from a workstation: "Selected GPU option 'swiftshader_indirect' is not valid, switching to auto", then "Your GPU drivers may have a bug". That mode no longer exists in emulator 37.1; it fell back to swangle by itself, so it worked while printing two errors that read like a fault. emulator -help-gpu lists exactly four modes: auto, host, swiftshader, swangle. The AVD now asks for swangle. Checked on the VM: zero GPU errors where there were two, vulkan:swiftshader gles:swangle selected outright, boot in 55 s. --- FR --- Remonté depuis un poste : « Selected GPU option 'swiftshader_indirect' is not valid, switching to auto », puis « Your GPU drivers may have a bug ». Ce mode n'existe plus dans l'émulateur 37.1 ; il retombait de lui-même sur swangle, donc cela fonctionnait en affichant deux erreurs qui se lisent comme une panne. « emulator -help-gpu » énumère exactement quatre modes : auto, host, swiftshader, swangle. L'AVD demande désormais swangle. Vérifié sur la VM : zéro erreur GPU là où il y en avait deux, vulkan:swiftshader gles:swangle choisis d'emblée, boot en 55 s. Assisted-by: Claude Opus 5 --- script/todo/todo.py | 18 +++++++++++++----- test/test_qemu_desktop_tools.py | 5 ++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/script/todo/todo.py b/script/todo/todo.py index 3ede25f..0277423 100755 --- a/script/todo/todo.py +++ b/script/todo/todo.py @@ -5897,10 +5897,18 @@ class TODO: L'image système suit la plateforme du projet, et redescend si elle n'est pas publiée — Google ne fournit pas d'image pour toutes les API. - Le rendu est réglé sur swiftshader_indirect, DANS la configuration de - l'AVD plutôt qu'en option de lancement : par « ssh -X » il n'y a pas de - GLX direct, et l'émulateur s'ouvrirait sur un écran noir. Ainsi - « emulator -avd erplibre » suffit, sans rien à retenir. + Le rendu est réglé en logiciel DANS la configuration de l'AVD plutôt + qu'en option de lancement : par « ssh -X » il n'y a pas de GLX direct, et + l'émulateur s'ouvrirait sur un écran noir. Ainsi « emulator -avd + erplibre » suffit, sans rien à retenir. + + Le mode est « swangle » — ANGLE sur SwiftShader — et non + « swiftshader_indirect », qui n'existe PLUS : l'émulateur 37.1 répond + « Selected GPU option 'swiftshader_indirect' is not valid, switching to + auto », puis « Your GPU drivers may have a bug », avant de retomber de + lui-même sur swangle. Il fonctionnait, en affichant deux erreurs qui + laissaient croire à une panne. Les modes valides sont exactement quatre, + que « emulator -help-gpu » énumère : auto, host, swiftshader, swangle. """ return ( f'echo " == {t("Android emulator (AVD)")} =="; ' @@ -5946,7 +5954,7 @@ class TODO: # 0,62 Mpixel — 4,2 fois moins. Android gère la densité et # l'application ne s'en aperçoit pas ; qui veut la taille # réelle l'écrase au lancement par « -skin 1080x2400 ». - 'printf "hw.gpu.enabled=yes\\nhw.gpu.mode=swiftshader_indirect\\nhw.lcd.width=540\\nhw.lcd.height=1140\\nhw.lcd.density=240\\n" ' + 'printf "hw.gpu.enabled=yes\\nhw.gpu.mode=swangle\\nhw.lcd.width=540\\nhw.lcd.height=1140\\nhw.lcd.density=240\\n" ' ">> $HOME/.android/avd/erplibre.avd/config.ini' && " f'echo " ✅ {t("AVD ready:")} ' "$(cat $HOME/.erplibre-avd-device) / " diff --git a/test/test_qemu_desktop_tools.py b/test/test_qemu_desktop_tools.py index f6e2bd4..26f7503 100644 --- a/test/test_qemu_desktop_tools.py +++ b/test/test_qemu_desktop_tools.py @@ -407,8 +407,11 @@ class TestAndroidEmulator(unittest.TestCase): """Par « ssh -X » il n'y a pas de GLX direct : en « auto », l'émulateur s'ouvre sur un écran noir. Le réglage va dans config.ini pour qu'« emulator -avd erplibre » suffise.""" - self.assertIn("hw.gpu.mode=swiftshader_indirect", self.cmd) + self.assertIn("hw.gpu.mode=swangle", self.cmd) self.assertIn("config.ini", self.cmd) + # « swiftshader_indirect » n'existe plus : l'émulateur 37.1 le refuse, + # affiche deux erreurs et retombe sur swangle de lui-même. Mesuré. + self.assertNotIn("swiftshader_indirect", self.cmd) def test_xauth_is_installed(self): """Sans xauth dans la VM, « ssh -X » n'ouvre aucun affichage — et le