QEMU/Guest graphics acceleration

From ArchWiki

There are multiple methods for virtual machine (VM) graphics display which yield greatly accelerated or near-bare metal performance.

Methods for QEMU guest graphics acceleration

QXL video driver and SPICE client for display

QXL/SPICE is a high-performance display method. However, it is not designed to offer near-bare metal performance.

PCI GPU passthrough

PCI VGA/GPU passthrough via OVMF

PCI passthrough currently seems to be the most popular method for optimal performance. This forum thread (now closed, and may be outdated) may be of interest for problem solving.

Looking Glass

There is a fairly recent passthrough method called Looking Glass. See this guide to getting started which provides some problem solving and user support. Looking Glass uses DXGI (MS DirectX Graphics Infrastructure) to pass complete frames captured from the VM's passed-through video card via shared memory to the host system where they are read (scraped) by a display client running on the bare-metal host.

Fully virtualized GPU support via Intel-specific iGVT-g extension

iGVT-g is limited to integrated Intel graphics on recent Intel CPUs (starting with 5th generation Intel Core(TM) processors). For more information, see Intel GVT-g.

Virgil3d virtio-gpu paravirtualized device driver

Virgil3d virtio-gpu is a paravirtualized 3d accelerated graphics driver, similar to non-graphics virtio drivers (see virtio driver information and virtio Windows guest drivers). For Linux guests, virtio-gpu is fairly mature, having been available since Linux kernel version 4.4 and QEMU version 2.6. See this Reddit Arch thread and Gerd Hoffmann's blog for using this with libvirt and spice.

For Windows guests, there is very little information on VirtIO-gpu OpenGL drivers but there is a report that Red Hat abandoned work on it. There is also a project summary, the DOD (Windows kernel) driver and the ICD (Windows userland) driver are available. In addition, see this Phoronix article and its comments.