On Fri, Dec 10, 2010 at 12:58:41AM +0000, Ken Moffat wrote:
> 
>  Thanks, but I've bisected and locally reverted the commit it
> highlighted.  The change was to speed up html5 on a more modern
> radeon, and is to do with letting EXA manage a system memory cache
> instead of making 'costly CPU VRAM reads'.  Bug raised, meanwhile I
> can get back to photo manipulation and playing with ghostscript.
> 
 Turned out there are other bugs raised against that commit.  I
imagine few people here use old AGP radeons (the problem for me is
with a radeon 7500, not sure if it also applies to my 9200se).  Just
in case anyone else is using xf86-video-ati-6.13.2 I'll attach a
patch to effect the reversion.  The use case is uncommon enough that
I don't think this belongs in -patches.

ĸen
-- 
das eine Mal als Tragödie, das andere Mal als Farce
 This patch reverts:
commit f8fb9312d791af1f77020e8c2d35bb30841ed9aa
Author: Karl Tomlinson <kar...@karlt.net>
Date:   Sun Aug 22 22:46:33 2010 +1200

    RADEONPrepareAccess_CS: fallback to DFS when pixmap is in VRAM
    
    This avoids costly CPU VRAM reads and lets EXA manage a system memory cache
    of the portions of pixmaps needed for unaccelerated operations.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=27139

:040000 040000 94afde6673141f2976633cbba6a946e336856e5f 
d7184fa36bb29ec3fd00d564293c041efd132e18 M      src

 which is blamed for radeon bugs 30679, 30785, 32282 (probably all on old AGP 
cards).

diff -Naur xf86-video-ati-6.13.2.orig//src/radeon_exa.c 
xf86-video-ati-6.13.2/src/radeon_exa.c
--- xf86-video-ati-6.13.2.orig//src/radeon_exa.c        2010-09-27 
18:34:37.000000000 +0100
+++ xf86-video-ati-6.13.2/src/radeon_exa.c      2010-12-10 20:03:46.462288009 
+0000
@@ -284,21 +284,12 @@
     ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
     RADEONInfoPtr info = RADEONPTR(pScrn);
     struct radeon_exa_pixmap_priv *driver_priv;
-    uint32_t possible_domains = ~0U;
-    uint32_t current_domain = 0;
-#ifdef EXA_MIXED_PIXMAPS
-    Bool can_fail = !(pPix->drawable.bitsPerPixel < 8) &&
-       pPix != pScreen->GetScreenPixmap(pScreen) &&
-        (info->accel_state->exa->flags & EXA_MIXED_PIXMAPS);
-#else
-    Bool can_fail = FALSE;
-#endif
-    Bool flush = FALSE;
     int ret;
 
 #if X_BYTE_ORDER == X_BIG_ENDIAN
     /* May need to handle byte swapping in DownloadFrom/UploadToScreen */
-    if (can_fail && pPix->drawable.bitsPerPixel > 8)
+    if (pPix->drawable.bitsPerPixel > 8 &&
+       pPix != pScreen->GetScreenPixmap(pScreen))
        return FALSE;
 #endif
 
@@ -307,28 +298,7 @@
       return FALSE;
 
     /* if we have more refs than just the BO then flush */
-    if (radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs)) {
-       flush = TRUE;
-
-       if (can_fail) {
-           possible_domains = radeon_bo_get_src_domain(driver_priv->bo);
-           if (possible_domains == RADEON_GEM_DOMAIN_VRAM)
-               return FALSE; /* use DownloadFromScreen */
-       }
-    }
-
-    /* if the BO might end up in VRAM, prefer DownloadFromScreen */
-    if (can_fail && (possible_domains & RADEON_GEM_DOMAIN_VRAM)) {
-       radeon_bo_is_busy(driver_priv->bo, &current_domain);
-
-       if (current_domain & possible_domains) {
-           if (current_domain == RADEON_GEM_DOMAIN_VRAM)
-               return FALSE;
-       } else if (possible_domains & RADEON_GEM_DOMAIN_VRAM)
-           return FALSE;
-    }
-
-    if (flush)
+    if (radeon_bo_is_referenced_by_cs(driver_priv->bo, info->cs))
         radeon_cs_flush_indirect(pScrn);
     
     /* flush IB */
-- 
http://linuxfromscratch.org/mailman/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to