Pat Campbell
2008-Feb-26 17:06 UTC
[Xen-devel] vnc client, 16 bit, strange colors when viewing a PV guest
Using tightVNC, the colors are messed up when viewing a PV guest running
on a 3.2 hypervisor from a client system with a 16 bit deep display.
virt-manager --> viewer works OK.
Standalone virt-viewer and other VNC clients have bad colors.
This problem is new with Xen 3.2 and the qemu xenfb code.
As a short term fix I added a second macro in tools/ioemu/hw/xenfb.c to
munge the colors from 32 bit to 16 bit based on an algorithm used by
RealVNC. Patch I used is attached, not suggesting it be merged.
Is anybody else seeing this problem?
By the way, while looking at the original macro I think the last shift
for blue should of used BRS instead if GRS. ( Changing that did not
make the colors better. )
#define BLT(SRC_T,DST_T,RLS,GLS,BLS,RRS,GRS,BRS,RM,GM,BM) \
for (line = y ; line < h ; line++) { \
SRC_T *src = (SRC_T *)(xenfb->pixels \
+ (line * xenfb->row_stride) \
+ (x * xenfb->depth / 8)); \
DST_T *dst = (DST_T
*)(xenfb->ds->data \
+ (line *
xenfb->ds->linesize) \
+ (x * xenfb->ds->depth /
8)); \
int col; \
for (col = x ; col < w ; col++) { \
*dst = (((*src >> RRS) & RM) << RLS) |
\
(((*src >> GRS) & GM) << GLS) |
\
- (((*src >> GRS) & BM) << BLS);
\
+ (((*src >> BRS) & BM) << BLS);
\
src++; \
dst++; \
} \
}
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Daniel P. Berrange
2008-Feb-26 17:17 UTC
[Xen-devel] Re: vnc client, 16 bit, strange colors when viewing a PV guest
On Tue, Feb 26, 2008 at 10:06:13AM -0700, Pat Campbell wrote:> > Using tightVNC, the colors are messed up when viewing a PV guest running > on a 3.2 hypervisor from a client system with a 16 bit deep display. > virt-manager --> viewer works OK. > Standalone virt-viewer and other VNC clients have bad colors. > > This problem is new with Xen 3.2 and the qemu xenfb code. > > As a short term fix I added a second macro in tools/ioemu/hw/xenfb.c to > munge the colors from 32 bit to 16 bit based on an algorithm used by > RealVNC. Patch I used is attached, not suggesting it be merged. > > Is anybody else seeing this problem? > > By the way, while looking at the original macro I think the last shift > for blue should of used BRS instead if GRS. ( Changing that did not > make the colors better. )Yes, clearly that last GRS is bogus & should have been BRS.> int col; \ > for (col = x ; col < w ; col++) { \ > *dst = (((*src >> RRS) & RM) << RLS) | \ > (((*src >> GRS) & GM) << GLS) | \ > - (((*src >> GRS) & BM) << BLS); \ > + (((*src >> BRS) & BM) << BLS); \ > src++; \ > dst++; \ > } \ > }Note that there is also a colour shift problem in GTK-VNC (used by virt-viewer & virt-manager) - you need latest GTK-VNC from the source repo to get the fix. So you may have been seeing a cobmo of 2 bugs Dan. -- |=- 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 Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel