[FIX] qemu 3D : le module virtio-vga-gl manquait au relevé des pièces
Les deux devices accélérés sont des modules séparés, empaquetés à part sur les distributions qui découpent QEMU. Le relevé ne cherchait que « virtio-gpu-gl » ; c'est « virtio-vga-gl » que libvirt exige pour un écran principal compatible VGA, soit le cas d'une VM graphique. Le rapport ressortait donc tout en vert à côté de la pièce absente. Sans ce module, QEMU n'annonce pas le device, libvirt le remplace en silence par « virtio-vga » nu et la VM démarre sans 3D — l'egl-headless demandé restant en place, rien dans la définition ne trahit le repli. --- EN --- The two accelerated devices are separate modules, packaged apart on distributions that split QEMU. The survey looked only for « virtio-gpu-gl »; libvirt needs « virtio-vga-gl » for a VGA-compatible primary display, which is what a graphical VM gets. The report therefore came back all green next to the missing piece. Without that module QEMU does not advertise the device, libvirt quietly falls back to plain « virtio-vga » and the VM boots with no 3D — the requested egl-headless still in place, nothing in the definition telling. Assisted-by: Claude Opus 5
This commit is contained in:
parent
9370bff319
commit
94090d5280
2 changed files with 29 additions and 0 deletions
|
|
@ -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"),
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue