A brief experiment comparing graphics on native qemu-kvm vs libvirt. I tried to make them as close to similar in operation as possible. Here's the relevant flags:

* qemu-kvm -device virtio-gpu -vga none -display "sdl,gl=on"
* virt-install --graphics spice,gl.enable=yes,listen=none

Result:
- qemu's sdl display is pretty fast, supports resizing/scaling in a way that the guest vm will detect.
- libvirt and virt-install's method requires a separate viewer tool, virt-viewer, which is ... *extremely* laggy and much lower-than-acceptable framerate, even local-only enabled by 'listen=none'

I dunno. I don't enjoy qemu's endless number of flags, but I'm not enjoying libvirt either as it doesn't seem to simplify anything and makes performance worse.

(If you know a better graphics configuration for libvirt/virt-install, please let me know)

@whack The reasonably fast setup I use is done in virt-manager with spice, GL enabled, then video 'virtio', 3d acceleration enabled. In the XML for <graphics>, there is a 'rendernode=' pointing to a /dev/dri (host) entry. This doesn't work remotely, but on the local machine it appears decently fast although not native. (I just called up a dense Grafana dashboard in guest Firefox and it was fine in virt-viewer.)
@whack I prefer to use virt-viewer for eccentric reasons, because it doesn't resize the guest display most of the time when I enlarge the VV window, which matters for me on my HiDPI display. I think I may have set a preference for that in both VV and virt-manager.