diff --git a/script/todo/qemu_manage.py b/script/todo/qemu_manage.py index 5f4788d..8ee735c 100644 --- a/script/todo/qemu_manage.py +++ b/script/todo/qemu_manage.py @@ -385,8 +385,17 @@ class QemuManageMixin: # # Les fichiers plutôt que les paquets : leurs noms changent d'une # distribution à l'autre, leur emplacement beaucoup moins. + # Les deux devices 3D sont des modules SÉPARÉS, empaquetés à part sur + # les distributions qui découpent QEMU. Lequel sert dépend du type de + # vidéo : « virtio-vga-gl » pour l'écran principal compatible VGA, + # « virtio-gpu-gl » pour un affichage sans VGA. Ne chercher que le + # second laisse le rapport tout en vert alors que le premier manque. + # QEMU n'annonce pas un device dont le module est absent, libvirt le + # remplace alors par « virtio-vga » nu, et rien ne le signale : la VM + # démarre sans 3D, avec l'egl-headless demandé toujours en place. _GPU_3D_PIECES = ( ("qemu ui-egl-headless", "qemu/ui-egl-headless.so"), + ("qemu virtio-vga-gl", "qemu/hw-display-virtio-vga-gl.so"), ("qemu virtio-gpu-gl", "qemu/hw-display-virtio-gpu-gl.so"), ("virglrenderer", "libvirglrenderer.so"), ("mesa libgbm", "libgbm.so"), diff --git a/test/test_qemu_start_egl.py b/test/test_qemu_start_egl.py index 948ff79..d8c6e03 100644 --- a/test/test_qemu_start_egl.py +++ b/test/test_qemu_start_egl.py @@ -597,3 +597,23 @@ class LaSondeVideo(unittest.TestCase): sondes = dict(QemuManageMixin._DIAG_PROBES) self.assertIn("video du qemu en cours", sondes) + + +class LesPieces3D(unittest.TestCase): + """Le rapport 3D cherche les DEUX devices accélérés, non un seul. + + « virtio-vga-gl » et « virtio-gpu-gl » sont des modules distincts, et + les distributions qui découpent QEMU les empaquettent séparément. + Celui qui sert dépend du type de vidéo demandé ; n'en chercher qu'un + rend un rapport tout vert à côté de la pièce absente. + """ + + def test_both_accelerated_devices_are_looked_for(self): + from script.todo.qemu_manage import QemuManageMixin + + motifs = [m for _, m in QemuManageMixin._GPU_3D_PIECES] + for module in ( + "qemu/hw-display-virtio-vga-gl.so", + "qemu/hw-display-virtio-gpu-gl.so", + ): + self.assertIn(module, motifs)