This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] Qemu vnc color depth

To: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Qemu vnc color depth
From: "Daniel P. Berrange" <berrange@xxxxxxxxxx>
Date: Mon, 11 Feb 2008 14:54:14 +0000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 11 Feb 2008 06:55:03 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <47B02F63.4010406@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <47B02F63.4010406@xxxxxxxxxxxxx>
Reply-to: "Daniel P. Berrange" <berrange@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.4.1i
On Mon, Feb 11, 2008 at 11:20:03AM +0000, Stefano Stabellini wrote:
> the qemu vnc server changes its internal colour depth based on the 
> client request. This way just one colour conversion is done: the one in 
> vga_template.h, from the guest colour depth and the vnc server internal 
> colour depth.
> This patch is meant to remove this colour conversion to improve 
> performances. It accomplishes the goal making the qemu internal colour 
> depth always the same as the guest colour depth.
> The basic idea is that the vnc client is the one that should do the 
> colour conversion, if necessary. In general it should accept the pixel 
> format suggested by the server during the initial negotiation. This 
> behaviour can be set in most vnc clients (vncviewer included).
> If the guest changes colour depth, the qemu vnc server changes colour 
> depth too and notifies the client. The problem is that the vnc protocol 
> doesn't provide a message from the server to the client to ask for a 
> colour depth change. So what I am doing is either:
> 1) quietly starting to do the conversion on vnc server (not gaining any 
> performances here);

This should be the default behaviour
> 2) closing the vnc connection with the client, so the client can 
> reconnect and choose the new pixel format.

This is evil. If we need a way to notify the client of colour depth
changes, then we should define an official VNC extension for this 
that clients can implement. cf the desktop-resize extension

So, if the client supports the extension use that to notify, otherwise
fallback to doing server-side conversions. 

> By default I am doing 1), however the second choice can be enabled 
> passing the -vnc-switch-bpp command line option.

Don't add more command line options - the existing -vnc flag already
has the ability to take multiple flags in the format:

    -vnc hostname:display,flag,flag,flag,flag


    -vnc localhost:1,passwd,tls

> A last note: to get most out of this patch it is best to set Windows to 
> 16 bit colour depth, because the 24 bit mode is 24 bit depth and 24 bpp, 
> meaning no alpha channel. The vnc protocol doesn't support 24 bpp, only 
> 32 bpp, so this conversion is unavoidable.
> Comments and critics are welcome.

Please send this to qemu-devel - we should not be introducing yet more
xen-specific forks to the QEMU code we have - it is a maintainance
disaster already with the number of patches we have.

|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>