diff --git a/radeon-dont-flush-new-pixmaps.patch b/radeon-dont-flush-new-pixmaps.patch new file mode 100644 index 0000000..89f9a3b --- /dev/null +++ b/radeon-dont-flush-new-pixmaps.patch @@ -0,0 +1,56 @@ +From 2ea53929c2e0ed0d9a184680812d8bdacb9d51f2 Mon Sep 17 00:00:00 2001 +From: Owen Taylor +Date: Fri, 26 Sep 2008 16:17:49 -0400 +Subject: [PATCH] Don't flush when mapping a newly created pixmap into system ram + If we have a pixmap that has never been mapped into vram (and thus + never written to by the GPU), there is no need to flush the graphics + pipeline and wait for idle before starting to write to it. + +--- + src/radeon_bufmgr_gem.c | 7 +++++++ + src/radeon_bufmgr_gem.h | 1 + + src/radeon_exa.c | 3 ++- + 3 files changed, 10 insertions(+), 1 deletions(-) + +diff --git a/src/radeon_bufmgr_gem.c b/src/radeon_bufmgr_gem.c +index db28edc..d7b5644 100644 +--- a/src/radeon_bufmgr_gem.c ++++ b/src/radeon_bufmgr_gem.c +@@ -528,3 +528,10 @@ void radeon_bufmgr_emit_reloc(dri_bo *buf, uint32_t *head, uint32_t *count_p, ui + radeon_bufmgr = (struct radeon_bufmgr *)(buf->bufmgr + 1); + radeon_bufmgr->emit_reloc(buf, head, count_p, read_domains, write_domain); + } ++ ++int radeon_bufmgr_gem_in_vram(dri_bo *buf) ++{ ++ dri_bo_gem *gem_bo = (dri_bo_gem *)buf; ++ ++ return gem_bo->in_vram; ++} +diff --git a/src/radeon_bufmgr_gem.h b/src/radeon_bufmgr_gem.h +index e2f1ca6..d67ddf6 100644 +--- a/src/radeon_bufmgr_gem.h ++++ b/src/radeon_bufmgr_gem.h +@@ -11,4 +11,5 @@ void radeon_bufmgr_post_submit(dri_bufmgr *bufmgr); + void radeon_bufmgr_pin(dri_bo *buf); + void radeon_bufmgr_unpin(dri_bo *buf); + uint32_t radeon_bufmgr_get_handle(dri_bo *buf); ++int radeon_bufmgr_gem_in_vram(dir_bo *buf); + #endif +diff --git a/src/radeon_exa.c b/src/radeon_exa.c +index 555ae16..dee537c 100644 +--- a/src/radeon_exa.c ++++ b/src/radeon_exa.c +@@ -235,7 +235,8 @@ static Bool RADEONPrepareAccess(PixmapPtr pPix, int index) + if (driver_priv->bo) { + int ret; + +- RADEONCPFlushIndirect(pScrn, 0); ++ if (radeon_bufmgr_gem_in_vram (driver_priv->bo)) ++ RADEONCPFlushIndirect(pScrn, 0); + + //radeon_bufmgr_gem_wait_rendering(driver_priv->bo); + +-- +1.6.0.1 + diff --git a/xorg-x11-drv-ati.spec b/xorg-x11-drv-ati.spec index 19456f7..15f0552 100644 --- a/xorg-x11-drv-ati.spec +++ b/xorg-x11-drv-ati.spec @@ -5,7 +5,7 @@ Summary: Xorg X11 ati video driver Name: xorg-x11-drv-ati Version: 6.9.0 -Release: 17%{?dist} +Release: 18%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X Hardware Support @@ -20,6 +20,7 @@ Patch3: radeon-exa-fixes.patch Patch4: radeon-6.9.0-remove-limit-heuristics.patch Patch5: radeon-6.9.0-panel-size-sanity.patch Patch6: copy-fb-contents.patch +Patch7: radeon-dont-flush-new-pixmaps.patch ExcludeArch: s390 s390x @@ -44,6 +45,7 @@ X.Org X11 ati video driver. %patch4 -p1 -b .remove-limit-heuristics %patch5 -p1 -b .panel-size %patch6 -p1 -b .copy-fb-contents +%patch7 -p1 -b .dont-flush %build autoreconf @@ -75,6 +77,10 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man4/radeon.4* %changelog +* Sat Sep 27 2008 Dave Airlie 6.9.0-18 +- fix fb contents patch +- EXA speedup from otaylor. + * Fri Sep 26 2008 Dave Airlie 6.9.0-17 - exa offset fixes for changes in X server