Mesa VirGL, Hardware unterstützte Video Encoding für VMs (H.264/H.265)

MAButz

Member
Jan 21, 2021
13
3
8
43
Hallo zusammen,
ich versuche mit PVE8 seit ein paar Tagen in einer VM mit Debian 12 das hier zu testen:

Accelerated Video Encoding To Guest VMs

Auf Host Seite sollte der Virglrenderer zumindest laut Versionsnummer das unterstüzen, sowie die mesa auf Guest Seite.

Auf dem PVE8 habe ich eine AMD Radeon RX 550 / 550 Series polaris12 hierfür verbaut.

Die VM hat als Display VirGL.

in der VM zeigt mir vainfo folgendes an:

Bash:
libva info: VA-API version 1.18.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/virtio_gpu_drv_video.so
libva info: Found init function __vaDriverInit_1_18
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.18 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 23.1.2-1 for virgl (AMD Radeon RX 550 / 550 Series (polaris12, LLVM 15.0...)
vainfo: Supported profile and entrypoints
      VAProfileNone                   :    VAEntrypointVideoProc

Und auf dem Host zeit mir vainfo folgendes an:

Bash:
libva info: VA-API version 1.17.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.17 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 22.3.6 for AMD Radeon RX 550 / 550 Series (polaris12, LLVM 15.0.6, DRM 3.49, 6.2.16-3-pve)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :    VAEntrypointVLD
      VAProfileMPEG2Main              :    VAEntrypointVLD
      VAProfileVC1Simple              :    VAEntrypointVLD
      VAProfileVC1Main                :    VAEntrypointVLD
      VAProfileVC1Advanced            :    VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:    VAEntrypointEncSlice
      VAProfileH264Main               :    VAEntrypointVLD
      VAProfileH264Main               :    VAEntrypointEncSlice
      VAProfileH264High               :    VAEntrypointVLD
      VAProfileH264High               :    VAEntrypointEncSlice
      VAProfileHEVCMain               :    VAEntrypointVLD
      VAProfileHEVCMain               :    VAEntrypointEncSlice
      VAProfileHEVCMain10             :    VAEntrypointVLD
      VAProfileJPEGBaseline           :    VAEntrypointVLD
      VAProfileNone                   :    VAEntrypointVideoProc


Habe auch schon die Virglrenderer auf dem Host neu kompiliert und "versucht" gegen die vorhandene Bibliothek austauschen, keine Veränderung.

Meine Frage daher, hat das jemand von euch schon erfolgreich hinbekommen?

Das sollte dann ungefähr wie hier aussehen...? -> https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22108

Danke und Grüße
Marc
 
  • Like
Reactions: Tmanok
Hallo zusammen,
ich habe nun schon öfters den virglrenderer auf dem PVE Host neu kompiliert

Bash:
git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git
cd virglrenderer
meson build -Dvenus=true -Dvideo=True -Dprefix=/usr/local
cd build
ninja install

Sowie mesa auf Host und VM neu kompilliert
Bash:
apt build-dep mesa
git clone https://gitlab.freedesktop.org/mesa/mesa.git
cd mesa
meson build -Dvideo-codecs="['vc1dec', 'h264dec', 'h264enc', 'h265dec', 'h265enc']" -Dprefix=/usr
cd build
ninja install

vainfo auf dem Host:
Bash:
libva info: VA-API version 1.18.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_18
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.18 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 23.2.0-devel for AMD Radeon RX 550 / 550 Series (polaris12, LLVM 15.0.6, DRM 3.49, 6.2.16-3-pve)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :    VAEntrypointVLD
      VAProfileMPEG2Main              :    VAEntrypointVLD
      VAProfileVC1Simple              :    VAEntrypointVLD
      VAProfileVC1Main                :    VAEntrypointVLD
      VAProfileVC1Advanced            :    VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:    VAEntrypointEncSlice
      VAProfileH264Main               :    VAEntrypointVLD
      VAProfileH264Main               :    VAEntrypointEncSlice
      VAProfileH264High               :    VAEntrypointVLD
      VAProfileH264High               :    VAEntrypointEncSlice
      VAProfileHEVCMain               :    VAEntrypointVLD
      VAProfileHEVCMain               :    VAEntrypointEncSlice
      VAProfileHEVCMain10             :    VAEntrypointVLD
      VAProfileJPEGBaseline           :    VAEntrypointVLD
      VAProfileNone                   :    VAEntrypointVideoProc

vainfo in der vm:
Bash:
libva info: VA-API version 1.18.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/virtio_gpu_drv_video.so
libva info: Found init function __vaDriverInit_1_18
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.18 (libva 2.12.0)
vainfo: Driver version: Mesa Gallium driver 23.2.0-devel for virgl (AMD Radeon RX 550 / 550 Series (polaris12, LLVM 15.0...)
vainfo: Supported profile and entrypoints
      VAProfileNone                   :    VAEntrypointVideoProc

Um zu überprüfen das QEMU auf dem Host auch wirklich die neu kompilierte virglrenderer nutzt
Bash:
ldd /bin/qemu-system-x86_64  | grep virgl
    libvirglrenderer.so.1 => /usr/local/lib/x86_64-linux-gnu/libvirglrenderer.so.1 (0x00007fa5e43f1000)
Wenn ich die Datei kontrolliere
Bash:
ls -lahrt /usr/local/lib/x86_64-linux-gnu/libvirglrenderer.so.1

Ist der Timestamp der Datei mit dem Zeitpunkt der Kompilierung passend, so das ich denke QEMU sollte diese nutzen...?

Ich habe im Moment keine Idee mehr was ich noch probieren könnte.

Ihr evtl.?

Vielen Dank schon mal.

Grüße
Marc
 
Last edited:
  • Like
Reactions: Tmanok
Konntest du etwas herrausfinden @MAButz ? Ich habe testweise auf meinem Proxmox-Test-Host Debian-Testing aktiviert und damit Mesa 23.x installieren können, samt aktueller VAAPI / mesa-va-drivers-Version und trotzdem läuft es nicht. Auf dem Gast ist Ubuntu 23.10 samt aktueller Bibliotheken im Einsatz. Ich habe das gleiche "Fehlerbild" wie du, sprich keine Entrypoints beim Gast, jedoch beim Host. Hat noch jemand Ideen?

Dank virgl-OpenGL-Support würden sich die VMs theoretisch sogar zum Spielen nicht allzu anspruchsvoller Spiele eignen. Da es ohne vernünftiges Video-Encoding jedoch keine Möglichkeit gibt, den Bildschirm mit geringer Latenz in guter Qualität zu streamen, funktioniert es kaum.

Ich wünsche ein frohes Weihnachtsfest! :)
 
Last edited:
Leider nein. Die Video Beschleunigung soll wohl auch nicht so Performant sein, aber ob das stimmt konnte ich leider noch nicht testen. Würde die gerne für meinen Linux Terminalserver mit xrdp haben, damit die CPU etwas entlastet wird, aber da werde ich noch ein wenig warten müssen.

Es gibt einen 1.0 Release vom virgelrenderer in einen anderen Beitrag hatte ich gefragt ob dieses Release in Proxmox implementiert wird und evtl. Haben wir Glück das das vor 2025 bzw 2026 passiert.

Also schöne Weihnachten .
 
2025 bzw. 2026 wäre schon reichlich spät. Ist eben die Frage, obs am Debian-Unterbau oder wirklich an einer PVE Implementation hakt. Wenn ich etwas raus bekomme bzw. es zum Laufen, melde ich mich.
 
OK danke, ob nun Unterbau oder virgelrenderer und qemu im Prinzip nur neu gebaut werden müssen, das muss das proxmox Team noch untersuchen, ich hoffe ja das wir Glück haben und das evtl im nächsten Quartal schon im testing haben
 
  • Like
Reactions: cRaZy-bisCuiT
Ich hatte letzte Woche hierzu ein Ticket bei geöffnet. Laut Support gibt es die nötige Unterstüzung in QEMU (noch) nicht. In Mesa und dem virglrenderer auch nicht in der Version, die in Debian enthalten ist.:(
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!