Re: VNC framebuffer block artefacts on qemu-kvm-0.12.1.1

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

 



On Tue, Jan 05, 2010 at 04:11:26PM +0000, Mark Cave-Ayland wrote:
> Hi all,
>
> Having just upgraded from kvm-85 to qemu-kvm-0.12.1.1 on one of our  
> servers, I've noticed that I am seeing block artefacts when connecting  
> using VNC to the graphical VGA console of a WinXP guest.
>
> Looking at the VNC output, what I am seeing is that instead of updating  
> some parts of the screen which require a redraw, they are just being  
> replaced by light grey blocks of around 16x16 pixels. Generally, but not  
> always, several of these blocks appear in a row. Moving the mouse over  
> the relevant sections of the screen causes them to be redrawn correctly.
>
> I've tried this using both the cirrus and vga drivers, switching between  
> 16/24/32 bit colour and also different resolutions and unfortunately the  
> effect still remains :( Is there anything else I can do to help try and  
> debug this? Again this is on an x86_64 Debian Lenny host with a 2.6.32.2  
> kernel on Intel.

Mark,

Can you confirm that reverting commit
02c2b87fff97e77a1f6033fb09f53afa267c0c1e fixes the problem? (patch
attached).

Anthony: its reproducible with upstream/tcg.

diff --git a/vnchextile.h b/vnchextile.h
index 432ed89..c96ede3 100644
--- a/vnchextile.h
+++ b/vnchextile.h
@@ -73,7 +73,7 @@ static void CONCAT(send_hextile_tile_, NAME)(VncState *vs,
 	*last_bg = bg;
     }
 
-    if (n_colors < 3 && (!*has_fg || *last_fg != fg)) {
+    if (!*has_fg || *last_fg != fg) {
 	flags |= 0x04;
 	*has_fg = 1;
 	*last_fg = fg;
@@ -165,6 +165,8 @@ static void CONCAT(send_hextile_tile_, NAME)(VncState *vs,
 	    irow += ds_get_linesize(vs->ds) / sizeof(pixel_t);
 	}
 
+	/* A SubrectsColoured subtile invalidates the foreground color */
+	*has_fg = 0;
 	if (n_data > (w * h * sizeof(pixel_t))) {
 	    n_colors = 4;
 	    flags = 0x01;

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux