On 09/20/12 17:33, Stefano Stabellini wrote: > On Thu, 20 Sep 2012, Stefano Stabellini wrote: >> On Thu, 20 Sep 2012, Gerd Hoffmann wrote: >>> Hi, >>> >>>>> In any graphics mode relevant today vga emulation will use >>>>> qemu_create_displaysurface_from(). Whenever a DisplayAllocator is >>>>> present or not doesn't make any difference then. >>>> >>>> Unfortunately if my memory doesn't fail me, Windows uses 24 bpp. >>>> So actually the DisplayAllocator interface is the one that is going to be >>>> used all the time. >>> >>> Guess we want implement 24bpp support in displaylisteners then. >> >> vnc doesn't support 24bpp > > I mean the vnc protocol doesn't support 24bpp, so it couldn't help vnc > (I am aware that at the moment vnc is not using a DisplayAllocator, but > I guess it could in the future).
Yes, vnc should transform 24bpp into 32bpp. Given that vnc keeps a shadow copy of the guest display _anyway_ (to figure which parts of the guest display did _really_ change) we don't have to do any extra copying work in vnc. We can just keep the shadow at 32bpp. The 'compare+copy' code in vnc_refresh_server_surface must be able to cope with 24bpp guest + 32bpp server surface. Done. And we've dropped the 24->32 bpp conversion in the vga emulation along the way. cheers, Gerd