On Fri, 2002-04-12 at 02:23, Andrew P. Lentvorski wrote: 
> Okay, after tracking this, it turns out to be a pixmap cache bug.  At
> least, I can stop the problem from occurring by adding the "Option
> "XaaNoPixmapCache"" line to my XF86Config file.

That's coincidence, the same is true for "XaaNoScreenToScreenCopy".

The problem is that RADEONCPSetClippingRectangle() is called between
RADEONSetupForScreenToScreenCopy() and
RADEONSubsequentScreenToScreenCopy() and messes up the
DP_GUI_MASTER_CNTL register.

I don't see a proper solution to this problem so the attached patch just
disables hardware clipping for screen to screen copies. I wonder what
impact on performance this has, if any - Mark?


-- 
Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer
XFree86 and DRI project member   /  CS student, Free Software enthusiast
Index: radeon_accel.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c,v
retrieving revision 1.14
diff -u -r1.14 radeon_accel.c
--- radeon_accel.c	9 Apr 2002 21:54:52 -0000	1.14
+++ radeon_accel.c	20 Apr 2002 15:22:19 -0000
@@ -1654,8 +1937,8 @@
     a->ClippingFlags = 	HARDWARE_CLIP_SOLID_LINE  |
 		HARDWARE_CLIP_DASHED_LINE |
 		/*HARDWARE_CLIP_SOLID_FILL  |*/ /* seems very slow with this on ???*/
-		HARDWARE_CLIP_MONO_8x8_FILL |
-		HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY;
+		HARDWARE_CLIP_MONO_8x8_FILL;
+		/*HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY breaks with transparency (at least) */
 
     if(!info->IsSecondary && xf86IsEntityShared(pScrn->entityList[0]))
         a->RestoreAccelState           = RADEONRestoreCPAccelState;
@@ -1740,8 +2014,8 @@
     a->ClippingFlags = 	HARDWARE_CLIP_SOLID_LINE  |
 		HARDWARE_CLIP_DASHED_LINE |
 		/*HARDWARE_CLIP_SOLID_FILL  |*/ /* seems very slow with this on ???*/
-		HARDWARE_CLIP_MONO_8x8_FILL |
-		HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY;
+		HARDWARE_CLIP_MONO_8x8_FILL;
+		/* HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY breaks with transparency (at least) */
 
 
     if(xf86IsEntityShared(pScrn->entityList[0]))

Reply via email to