Over the last months I've worked on adding EDID support to qemu. This allows to pass all kinds of information about the (virtual) display to the guest. Preferred video mode, display resolution, monitor name, monitor serial number and more. Current focus is getting the infrastructure in place. Once we have this we can build new features on top. HiDPI support comes to mind for example.
New in qemu 3.1
In qemu 3.1 the EDID generator code and support for the qemu stdvga
was added. Right now EDID support is turned off by default, use
edid=on to enable it. With EDID enabled you can also use the xres and
yres properties to set the preferred video mode. Here is an example:
qemu -device VGA,edid=on,xres=1280,yres=800
The qemu-edid utility has been added too. Main purpose is to allow testing the generator code without having to boot a guest for that, so typically the qemu-edid output is piped into the edid-decode utility to verify the generator works correctly. If you need an EDID blob for other reasons you might find this useful.
New in linux kernel 5.0
Infrastructure work: Some interface updates have been merged:
- EDID support has been added to the virtio-gpu protocol.
- The vfio mdev interface for vgpus got EDID support too.
We also got EDID support in drm drivers for both qemu stdvga (bochs-drm.ko) and virtio-gpu.
If both guest (linux kernel) and host are (qemu) are new enough the
drm drivers will use the informations from the edid blob to create the
video mode list. It will also be available in sysfs, you can use
edid-decode to get a human-readable version:
Planned for qemu 4.0
Support for EDID in virtio-gpu will be added, it is already merged in master branch. It is also turned off by default, use edid=on to enable it (simliar to stdvga).
Support for EDID in vgpus (i.e. vfio-mdev) is planned too, patches are out for review right now. Note that the kernel's mdev driver must support that too.
The qemu macos driver for the stdvga have been updated to support EDID.
Intel is working on adding EDID support to gvt (the intel graphics mdev driver). Should land in the 5.1 or 5.2 linux kernel merge window.
Once the EDID support got some real world testing it will be enabled by default for both stdvga and virtio-gpu. Unless something unexpected happens that will probably happen in qemu 4.1.
As already mentioned above looking at HiDPI support (starting with the gtk UI probably) is something I plan to look at when I find some time.