Bug 93304

Summary: Arbitrary resolution setting for Windows 8.1 and 10 not working
Product: Spice Reporter: Fabian Tobias Rajter <fabrox>
Component: win32 agentAssignee: Spice Bug List <spice-bugs>
Status: RESOLVED NOTABUG QA Contact:
Severity: normal    
Priority: medium CC: dsjstc, tn
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Windows (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: Libvirt XML for Win10 device without "arbitrary resolution"
Libvirt XML on OVMF/Q35 Win10P with no arbitrary resolution

Description Fabian Tobias Rajter 2015-12-09 17:34:55 UTC
While dynamic setting of arbitrary resolutions on window size change is working for some OS, it is not working for Windows 8.1 and 10 clients.

What the win32 agent currently does on window size change is setting the client resolution to one fixed resolution "near" to the window size.
In some cases it even sets a resolution higher than the actual window size.
Comment 1 Alessandro Nardecchia 2015-12-10 15:13:30 UTC
(In reply to Fabian Tobias Rajter from comment #0)
> While dynamic setting of arbitrary resolutions on window size change is
> working for some OS, it is not working for Windows 8.1 and 10 clients.
> 
> What the win32 agent currently does on window size change is setting the
> client resolution to one fixed resolution "near" to the window size.
> In some cases it even sets a resolution higher than the actual window size.

Same problem.

Arbitrary resolutions releated to the window of my spice client (spicy, my python connector-spicegtk 0.30 and all previous releases) not working with qxl 0.12/0.11 (qxl wddm) on windows 8/10 as expected like windows 7.

Problem occures on differents hypervisors (ubuntu 14.04 / fedora 23)
Comment 2 dsjstc 2017-02-25 20:25:33 UTC
I upgraded my vdagent to 0.8.0 and qxl-wddm-dod to 0.16 as described in 
https://bugzilla.redhat.com/show_bug.cgi?id=895356#c191

There is still no dynamic change of guest resolution on Windows 10.

I submitted a bug against the user manual as well, at 
https://bugs.freedesktop.org/show_bug.cgi?id=99965
Comment 3 Pavel Grunt 2017-02-27 09:22:13 UTC
(In reply to dsjstc from comment #2)
> I upgraded my vdagent to 0.8.0 and qxl-wddm-dod to 0.16 as described in 
> https://bugzilla.redhat.com/show_bug.cgi?id=895356#c191
> 
> There is still no dynamic change of guest resolution on Windows 10.

It works fine in Win10 guests, what is your vm configuration (libvirt xml / qemu command). Does it have the qxl device?

> 
> I submitted a bug against the user manual as well, at 
> https://bugs.freedesktop.org/show_bug.cgi?id=99965
Comment 4 dsjstc 2017-03-01 17:52:47 UTC
Created attachment 130017 [details]
Libvirt XML for Win10 device without "arbitrary resolution"
Comment 5 dsjstc 2017-03-01 18:26:36 UTC
Created attachment 130019 [details]
Libvirt XML on OVMF/Q35 Win10P with no arbitrary resolution
Comment 6 dsjstc 2017-03-01 18:33:01 UTC
Thanks Pavel.  Hadn't had it work in a couple of Win7 VMs, so I assumed it was still broken.  To be absolutely clear here: I'm talking about the ability of the guest to dynamically adjust its resolution to match the size of the window its being displayed in.

Host: 
Ubuntu 16.10

Guest 1: 
Windows 10 Pro, x64
Not activated (won't move my license until I know this works!)
spice guest tools .100, then vdagent 0.8.0, qxl-wddm-dod 0.16
Firmware: "BIOS"
Chipset: i440FX
Guest display adapter: "Red Hat QXL controller" (0.16)

Guest 2: 
Windows 10 Pro, x64
Not activated
Fresh install, nothing but spice-guest-tools-0.100.exe
Firmware: OVMF
Chipset: Q35
Guest display adapter: "microsoft basic display adapter" 
(Also tried with qxl-wddm-dod 0.16)

In both cases, virt-manager shows a "Video QXL" device and a "Display Spice" device for my guest.  My virsh dumps are attached.  Comments or suggestions would be most welcome.
Comment 7 Pavel Grunt 2017-03-01 18:50:04 UTC
Just to be sure - do you use remote-viewer (or virt-viewer) ? virt-manager has a checkbox (View -> Scale Display -> Auto resize ..) to enable the arbitrary resolution. the dumps look ok

please get debug logs from client (use --spice-debug cli option)
and from the spice agent (C:\WINDOWS\TEMP\VDAGENT.LOG and C:\WINDOWS\TEMP\VDSERVICE.LOG)
Comment 8 dsjstc 2017-03-01 19:45:30 UTC
Thanks Pavel.  I'm using virt-manager's builtin viewer.  For me, at least, View->Scale Display does scaling in the viewer, it doesn't change resolution in the guest.  

1) It doesn't change aspect ratio, 

2) If guest resolution starts low, scaling up looks like a magnified low-res display,

3) If guest resolution starts high, scaling down shrinks the contents, making fonts unreadable.  If resolution were changing to match the window, fonts would remain constant size.

Would you mind confirming that you actually have dynamic resolution changes happening in your guest before I provide debug logs?  From your description I don't think you do.
Comment 9 Pavel Grunt 2017-03-01 19:49:02 UTC
It works for me,
so you are saying that you have the checkbox "Auto resize VM" checked ?
Comment 10 dsjstc 2017-03-01 20:15:42 UTC
Wow, my bad, and do I feel dumb.  

I was using the "always" setting in scaling, not the one you pointed me to.  I honestly didn't look very hard at it -- assuming that because the setting was under "scaling", it wasn't something I was interested in.

The menu structure is a little confusing -- it would be much more intuitive if it consisted of a single View->Resizing submenu, containing the six options currently available.  If you have no objection, I'll file that as an enhancement on virt-manager.

Thanks very much for your help!  I'll amend my documentation bug too.
Comment 11 dsjstc 2017-03-01 20:19:11 UTC
Given that it at least works for me on Windows 10, I believe this could be closed?
Comment 12 Pavel Grunt 2017-03-01 20:22:51 UTC
I would just repeat what we say in documentation - the recommended client is virt-viewer / remote-viewer

works much better for viewing and offers better functionality - eg. multimonitor support, shared folders...

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.