[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Qemu vnc color depth

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



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.