I am currently trying to migrate away from VMware Workstation on a Linux host (thanks, Broadcom!) to using KVM virtual machines.
I run many Linux virtual machines, and in many of these I use the GUI, so want well performing video and sound! This was one of the original justifications for VMware Workstation.
The default configuration on Arch was to use the Virtio video driver and a “Display Spice” entry in the VM configuration to support video and sound output.
However, I would experience choppy audio and video output. On the display, it seemed that, roughly vertically, some of the pixels in the framebuffer would not be updated, especially when lots of display changes occurred. This created a sort of irregular “interlaced” look, as you can see here as I have moved the mouse down the menu:
I have been able to work around this issue by enabling OpenGL acceleration in the guest.
Configuration
For an Arch guest, it needs the package qemu-hw-display-virtio-gpu installed.
Check the guest is showing the virtio_gpudrmfb frame buffer device:
# dmesg | grep '\[drm'
...
virtio-pci 0000:00:01.0: [drm] fb0: virtio_gpudrmfb frame buffer device
The guest configuration is as follows:
3D acceleration enabled in the Video Virtio driver. Ensure this is ticked.
On the Display Spice object, the configuration is set to Listen type None and OpenGL is set to on.
References
The idea that enabling OpenGL with the virtio video driver may help was derived from https://www.kraxel.org/blog/2016/09/using-virtio-gpu-with-libvirt-and-spice/.