Author: ken
Date: 2011-11-29 18:09:31 -0700 (Tue, 29 Nov 2011)
New Revision: 2342
Added:
trunk/xf86-video-ati/
trunk/xf86-video-ati/xf86-video-ati-6.14.3-old_agp_card_fixes-1.patch
Log:
Add fix for old AGP radeon cards.
Added: trunk/xf86-video-ati/xf86-video-ati-6.14.3-old_agp_card_fixes-1.patch
===================================================================
--- trunk/xf86-video-ati/xf86-video-ati-6.14.3-old_agp_card_fixes-1.patch
(rev 0)
+++ trunk/xf86-video-ati/xf86-video-ati-6.14.3-old_agp_card_fixes-1.patch
2011-11-30 01:09:31 UTC (rev 2342)
@@ -0,0 +1,83 @@
+Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
+Date: 2011-11-30
+Initial Package Version: 6.13.2
+Upstream Status: Unknown, still applies in 6.14.
+Origin: Uncertain, I thought I found it included in cgit.freedesktop.org
+ on a stable branch of xf86-video-ati, but I had previously created my
+ own revert without the 'blames'.
+Description: Makes things 'just work' with my R200 (7500, 9200se) cards.
+(bug 32282 was mine, system unusable with the gimp's perspective tool).
+
+ This patch reverts:
+commit f8fb9312d791af1f77020e8c2d35bb30841ed9aa
+Author: Karl Tomlinson <[email protected]>
+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, ¤t_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/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page