From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: VNC framebuffer block artefacts on qemu-kvm-0.12.1.1 Date: Wed, 6 Jan 2010 11:51:18 -0200 Message-ID: <20100106135118.GA28640@amt.cnet> References: <4B4364AE.8080509@siriusit.co.uk> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="opJtzjQTFsWo+cga" Cc: kvm@vger.kernel.org To: Mark Cave-Ayland , Anthony Liguori , Yaniv Kaul Return-path: Received: from mx1.redhat.com ([209.132.183.28]:57472 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755516Ab0AFNxF (ORCPT ); Wed, 6 Jan 2010 08:53:05 -0500 Content-Disposition: inline In-Reply-To: <4B4364AE.8080509@siriusit.co.uk> Sender: kvm-owner@vger.kernel.org List-ID: --opJtzjQTFsWo+cga Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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. --opJtzjQTFsWo+cga Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="qemu-revert-02c2.patch" 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; --opJtzjQTFsWo+cga--