• Instalar los controladores de VirGL en una máquina virtual Debian de Proxmox

    Si tenemos una máquina virtual Debian ejecutándose en Proxmox VE y configuramos como dispositivo gráfico una GPU VirtIO con aceleración 3D mediante VirGL, no necesitamos instalar dentro de Debian los controladores propietarios de NVIDIA, AMD o Intel. La máquina virtual no accede directamente a la tarjeta gráfica física del servidor Proxmox. En su lugar, Debian ve una GPU virtual VirtIO y la aceleración gráfica se realiza mediante el controlador virtio_gpu del kernel y los controladores de espacio de usuario proporcionados por Mesa.

    Instalar los controladores necesarios

    En Debian 13 podemos instalar todo lo necesario con:

    sudo apt update
    sudo apt install libgl1-mesa-dri mesa-vulkan-drivers mesa-utils vulkan-tools

    El paquete más importante para utilizar VirGL con OpenGL es:

    libgl1-mesa-dri

    Este paquete contiene los módulos DRI de Mesa utilizados para proporcionar renderizado gráfico acelerado. También instalamos:

    mesa-vulkan-drivers

    …que proporciona los controladores Vulkan de Mesa, incluido el soporte para dispositivos VirtIO cuando la configuración de QEMU/Proxmox permite utilizarlo.

    Los paquetes:

    mesa-utils
    vulkan-tools

    …no son estrictamente necesarios para que VirGL funcione, pero son muy útiles para comprobar posteriormente qué controlador y qué renderer gráfico está utilizando realmente nuestra máquina virtual.

    Comprobar el controlador del kernel

    El controlador utilizado por Linux para una GPU VirtIO es virtio_gpu. Podemos comprobar si está cargado ejecutando:

    lsmod | grep virtio_gpu

    También podemos comprobar qué dispositivo gráfico detecta Debian con:

    lspci -k | grep -A3 -i vga

    Dependiendo de la versión de QEMU, del kernel y de cómo esté configurada la máquina virtual, veremos un dispositivo VirtIO relacionado con la GPU y referencias al controlador virtio_gpu.

    Comprobar que VirGL está utilizando aceleración 3D

    Una de las comprobaciones más útiles consiste en ejecutar:

    glxinfo -B

    Debemos fijarnos especialmente en la línea:

    OpenGL renderer string:

    Si VirGL está funcionando correctamente deberíamos encontrar un renderer relacionado con virgl o con el dispositivo VirtIO utilizado por Mesa. Por ejemplo, dependiendo de las versiones instaladas, podemos encontrarnos con una salida similar a:

    OpenGL renderer string: virgl

    Lo importante es que no aparezca un renderer puramente software como:

    OpenGL renderer string: llvmpipe

    Si aparece llvmpipe, Mesa está realizando el renderizado mediante CPU y no estamos utilizando correctamente la aceleración gráfica proporcionada por VirGL. También podemos obtener información resumida de OpenGL ejecutando:

    glxinfo -B | grep -E "direct rendering|OpenGL vendor|OpenGL renderer|OpenGL version"

    Una configuración correcta debería indicar además:

    direct rendering: Yes

    Comprobar Vulkan

    Si queremos comprobar si la máquina virtual dispone también de soporte Vulkan podemos ejecutar:

    vulkaninfo --summary

    La disponibilidad de Vulkan no depende únicamente de instalar el paquete mesa-vulkan-drivers. También depende de las capacidades que Proxmox, QEMU, VirtIO-GPU y la pila gráfica del host estén exponiendo a la máquina virtual. Por tanto, podemos tener OpenGL acelerado mediante VirGL funcionando perfectamente sin disponer necesariamente de Vulkan acelerado dentro de la máquina virtual.

    Controladores que no necesitamos instalar

    Si estamos utilizando VirGL no debemos instalar controladores gráficos específicos de la GPU física del servidor simplemente porque el host tenga una tarjeta NVIDIA, AMD o Intel. Por ejemplo, si nuestro servidor Proxmox tiene una NVIDIA, no necesitamos instalar dentro de la VM:

    nvidia-driver

    Tampoco necesitamos instalar controladores AMD específicos para la GPU física ni controladores Intel pensando que la máquina virtual va a acceder directamente a ese hardware.

    Desde el punto de vista de Debian, el dispositivo gráfico es VirtIO-GPU. La arquitectura simplificada es:

    Aplicación gráfica en Debian
            ↓
    OpenGL / Mesa
            ↓
    VirGL / VirtIO-GPU
            ↓
    QEMU
            ↓
    Proxmox VE
            ↓
    Mesa / GPU del host
            ↓
    GPU física

    Esto es diferente de configurar PCI passthrough. Si pasamos una GPU física completa a la máquina virtual mediante VFIO, entonces Debian sí verá directamente una GPU AMD, NVIDIA o Intel y tendremos que instalar dentro de la VM los controladores correspondientes a ese hardware.

    Con VirGL, en cambio, los paquetes que nos interesa tener instalados en Debian son:

    sudo apt install libgl1-mesa-dri mesa-vulkan-drivers mesa-utils vulkan-tools

    …y el controlador encargado de comunicarse con la GPU virtual es el módulo virtio_gpu incluido directamente en el kernel de Linux.

    Dejar un comentario