[Spice-devel] New xrandr multi-mon / arbitrary resolution support issues
Alon Levy
alevy at redhat.com
Sun Aug 26 07:02:21 PDT 2012
On Sun, Aug 26, 2012 at 03:48:44PM +0200, Hans de Goede wrote:
> Hi,
>
> As part of integrating the spice-vdagent xrandr patches
> (done, as there were many other patches pending, so fixes
> can just be applied on top), I've been testing the new
> xrandr multi-mon / arbitrary resolution support.
>
> With single monitor setups, things work fine, but with
> multiple monitor setups things don't work as advertised.
>
> 1) There is no way to enable extra monitors from
> remote-viewer, with the new xrandr code I would expect
> there to be 4 displays under the view->displays menu, but
> there is only 1.
>
> 2) Starting remote viewer with --full-screen=auto-conf,
> does result in the 2nd qxl head being enabled, but
> remote-viewer viewer does not see it as a separate
> display, instead the 2 monitors are rendered next to
> each other in a single window. And since windows full
> screen to a single monitor, this means that after
> --full-screen=auto-conf, the user gets 2 small views
> into the guest next to each other in a single full-screen
> window, with large black areas above and below, see the
> attached screenshot (which shows both my monitors)
This sounds like an old remote-viewer which ignores the
SpiceDisplayMonitorsConfig message. But otoh it can't be since in that
case remote-viewer would see only one display channel and not try to use
two monitors.
>
> 3) Exiting fullscreen mode after using --full-screen=auto-conf
> results in remote-viewer resizing its window to fit both
> monitors next to each other, so in my case to 3840x1080, and
> then telling the agent to resize monitor 1 inside the guest
> to 3840x1080, and not touching monitor 2. So the guest now
> thinks it has 2 monitors 1 of 3840x1080, and a second one
> mapped of 1920x1080+1920+0, so it thinks the second monitor
> is a clone of the right halve of the screen... And remote-viewer
> does not show this clone at all
There are all kinds of wrong here:
* if spice-server thinks it is working with an old client, it should
not allow multiple monitors to be set. Maybe send a warning (main
channel message) to the client "need client version >= X for multiple
monitors on a single display channel".
>
> 4) Resizing the window after step 3. (since 3840x1080 won't fit
> when adding window decorations, etc. results in the per x-session
> agent process in the guest crashing with:
>
> spice-vdagent[1483]: 0xc07010 received monitors config, arg1: 0, arg2: 0, size 48
> spice-vdagent[1483]: from guest: 2, 1
> spice-vdagent[1483]: received monitor 0 config 3840x1080+0+0
> spice-vdagent[1483]: received monitor 1 config 1920x1080+1920+0
So remote-viewer is passing a configuration that contains overlap -
that's wrong. It's also wrong for the agent to try to use it, it should
ignore requests with overlap.
> spice-vdagent[1483]: after zeroing: 2, 1
> spice-vdagent[1483]: received monitor 0 config 3840x1080+0+0
> spice-vdagent[1483]: received monitor 1 config 1920x1080+1920+0
> spice-vdagent[1483]: delete_mode of in use mode, setting crtc to NULL mode
> X Error of failed request: BadMatch (invalid parameter attributes)
> Major opcode of failed request: 148 (RANDR)
> Minor opcode of failed request: 21 (RRSetCrtcConfig)
> Serial number of failed request: 100
> Current serial number in output stream: 100
> [hans at localhost ~]$
:(
Using the error handler will work around this.
>
> Regards,
>
> Hans
More information about the Spice-devel
mailing list