qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] Fix hardware accelerated video to video copy on


From: C . W . Betts
Subject: Re: [Qemu-devel] [PATCH] Fix hardware accelerated video to video copy on Cirrus VGA
Date: Sat, 14 Feb 2009 22:23:48 -0700

I have also noticed that, when emulating Rhapsody, if I have the color set to millions (32 bit) then it has issues redrawing lines.  I do not know if this patch will fix it, but I'll look into it.
On Feb 14, 2009, at 9:50 PM, Brian Kress wrote:

  cirrus_do_copy() in hw/cirrus_vga.c seems to make some incorrect assumptions about video
memory layout.  It tries to convert addresses to coordinates assuming that one row of data is
(width * depth) bytes long.  The correct way seems to be to use the pitch fields in the
CirrusVGAState structure instead.
  Without this patch, I get lots of screen corruption when I try to drag a window under X as it's
passing the wrong coordinates to the display surface for the copy.  With this patch I can drag a
window with no screen corruption.


Signed-off-by: Brian Kressb <address@hidden

Index: hw/cirrus_vga.c
===================================================================
--- hw/cirrus_vga.c (revision 6619)
+++ hw/cirrus_vga.c (working copy)
@@ -730,10 +730,10 @@
    s->get_resolution((VGAState *)s, &width, &height);

    /* extra x, y */
-    sx = (src % (width * depth)) / depth;
-    sy = (src / (width * depth));
-    dx = (dst % (width *depth)) / depth;
-    dy = (dst / (width * depth));
+    sx = (src % ABS(s->cirrus_blt_srcpitch)) / depth;
+    sy = (src / ABS(s->cirrus_blt_srcpitch));
+    dx = (dst % ABS(s->cirrus_blt_dstpitch)) / depth;
+    dy = (dst / ABS(s->cirrus_blt_dstpitch));

    /* normalize width */
    w /= depth;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]