kvm-guest-drivers-windows: viogpu: can't set resolution higher than 1024x768
In Windows display settings I see 3 resolution options:
- 3840x1912
- 1024x768
- 800x600
When I select 3840x1912
, I immediately see “Guest disabled display.” message and then guest reboots.
No memory dump is created.
With https://gitlab.freedesktop.org/spice/win32/virtio-gpu-wddm-dod I see more resolution options, and 1920x1080
is working.
The same (almost) issue reported there: https://gitlab.freedesktop.org/spice/win32/virtio-gpu-wddm-dod/-/issues/5 (before I found that the driver is now included here)
About this issue
- Original URL
- State: open
- Created 3 years ago
- Comments: 30
@marioroy I will try to add more resolutions/memory allocation support in the next release.
Currently viogpudo driver allocates 16MB memory buffer, which is too small for resolutions like 3840x1880 .
I will try to increase this size in the next release. Vadim.
This is a really helpful thread, as I also wanted to set a resolution of 2560 x 1440. Thank you so much @vrozenfe!
Just an FYI follow-up on the additional query @BentHaase raised, which i will paraphrase as to how to set this via the XML definition?.
I was able to achieve this by configuring the resolution element as shown below. This is documented as being a supported element in the libvirt XML docs so hopefully also answers that additional query
With this in place, i was then able to see the correct parameters being passed to qemu in the libvirt log for the VM. FYI they were as follows:-
@amezin
I will try too support the bigger resolutions soon.
4K resolutions should work with the following fix https://github.com/virtio-win/kvm-guest-drivers-windows/pull/1019
the latest virtio-gpu-dod 64-bit drivers for Win10 and Win11 platforms can be found here https://people.redhat.com/vrozenfe/viogpu247.zip.
Not officially tested yet. Use it on your own rick. Best, Vadim.
@BentHaase It has to be “-device virtio-vga,edid=on,xres=2560,yres=1440” of course, but let me check if it works fine with the recent drivers.
@Lilith2208 currently we pre-allocate 16MB buffer on Win10 and 8MB on Win8/8.1 https://github.com/virtio-win/kvm-guest-drivers-windows/blob/master/viogpu/viogpudo/viogpudo.cpp#L2368 16MB should be enough to handle 2048x2048 resolution in 32bit per pixel mode. 2560x1600x4 requires even a bit less than 16MB. What kind of viewer do use?
In any case 16MB is a temporary limit that planed to be fixed in the future versions.
Vadim.
@jwatt
Win10 currently (latest-build 204) works with up to 16MB (2KB x 2KB x 32bpp) surface. I still have a plan to make it bigger (up to 256 MB) but it might take some time. There is also a new feature introduced in build 204 that allows to change the Windows VM screen resolution dynamically https://bugzilla.redhat.com/show_bug.cgi?id=1923886.
Vadim.