LINUX.ORG.RU

аппаратное декодирование видео в виртуальной машине

 , ,


0

3

У кого-то получалось заставить работать декодирование с аппаратным ускорением в виртуалке с virgl (vga-virtio-gl)?
С какими железками на хосте, с какими версиями qemu, virglrenderer, mesa, драйвера для libva и т.д., на хосте и в гостевой системе?
А то вроде функциональность запилили ещё летом 2022 года, но у меня никак не получается хоть как-то его запустить.
virglrenderer последняя версия (1.0.1), собрана с -Dvideo=true, intel-media-driver как с блобами, так и без, и ни фига.
На хосте всё нормально, а в гостевой системе

vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
При этом opengl 3d ускорение работает.

Вообще всё, что нагугливается - такие же жалобы, но не работает
https://forum.proxmox.com/threads/virgl-hardware-accelerated-h264-h265.137023/
https://www.phoronix.com/forums/forum/hardware/general-hardware/1357918-virgl...
https://forum.proxmox.com/threads/mesa-virgl-hardware-unterstützte-video-enco...
https://gitlab.freedesktop.org/virgl/virglrenderer/-/issues/301
Интересно, оно в принципе где-то работает?

Ответ на: комментарий от TheAnonymous

Там кроме ксеновских коммитов затесались и те которые включают видео-фичи… как я понимаю. Возможно что если просто собрать qemu из этой ветки и попробовать в нём (там ещё нужно параметер blob=yes передать при ините с командной строки, см. commit messages.) запускать, и если заработает то вычленить комменты реально необходимые только для видео и переприменить их к нужной версии qemu?

https://gitlab.com/huangrui123/qemu/-/commit/5e4ce15f4f30d983b57778a44436833b6eabd7bc

как минимум, скорее всего ещё несколько предыдущих

Andrew-R ★★★★
()
Последнее исправление: Andrew-R (всего исправлений: 1)
Ответ на: комментарий от TheAnonymous
git clone --depth 30 https://gitlab.com/huangrui123/qemu.git -b upstream-for-xen
               
cd qemu/

mkdir build

cd build/

../configure --target-list=x86_64-softmmu

setarch i686 ninja

./x86_64-softmmu/qemu-system-x86_64 --enable-kvm -vga none  -device virtio-vga-gl  -display gtk,gl=on -cdrom ~/ISO/slackellive64-openbox-7.7.1.iso -m 1024          

но у меня сам vaapi битый на nv106:

./x86_64-softmmu/qemu-system-x86_64 --enable-kvm -vga none  -device virtio-vga-gl  -display gtk,gl=on -cdrom ~/ISO/slackellive64-openbox-7.7.1.iso -m 1024
gl_version 43 - core profile enabled
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA8)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA16)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA8UI_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE8UI_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE_ALPHA8UI_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA8I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE8I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE_ALPHA8I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA16UI_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE16UI_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE_ALPHA16UI_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA16I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE16I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE_ALPHA16I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA32UI_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE_ALPHA32UI_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA32I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE32I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE_ALPHA32I_EXT)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA16F_ARB)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE16F_ARB)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE_ALPHA16F_ARB)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA32F_ARB)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE32F_ARB)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE_ALPHA32F_ARB)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA8_SNORM)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE8_ALPHA8_SNORM)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_ALPHA16_SNORM)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_LUMINANCE16_ALPHA16_SNORM)
Mesa: error: GL_INVALID_VALUE in glTexImage2D(internalFormat=GL_SRG8_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_SR8_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RGB_S3TC_DXT1_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RGBA_S3TC_DXT1_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RGBA_S3TC_DXT3_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_SRGB_S3TC_DXT1_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RED_RGTC1)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_SIGNED_RED_RGTC1)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RG_RGTC2)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_SIGNED_RG_RGTC2)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RGBA_BPTC_UNORM)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT)
Mesa: error: GL_INVALID_ENUM in glTexStorage2DMultisample(internalformat=GL_SR8_EXT)
VA-API version: 1.19
Driver version: Mesa Gallium driver 24.1.0-devel for NV106
GLSL feature level 430
qemu-system-x86_64: ../src/gallium/drivers/nouveau/nouveau_vp3_video.c:106: nouveau_vp3_video_buffer_create: Проверочное утверждение «templat->interlaced» не выполнено.
Аварийный останов
Andrew-R ★★★★
()
Ответ на: комментарий от Andrew-R

Благодарю.
Штош, может быть, и так.
Если всё так, и оно даже не в master ветке, тогда я лучше штеудовское ядро попробую собрать с SR-IOV (или dkms модулем), оно вроде лучше для видеоускорения в виртуалке со штеудом, чем virtio (не только декодер, но и 3d, поддержка шиндошс опять же), правда оно тоже не в mainline репе.

TheAnonymous ★★★★★
() автор топика