xf86-video-ati: Branch 'master'

Michel Dänzer daenzer at kemper.freedesktop.org
Thu Sep 13 11:58:42 PDT 2012


 src/radeon.h        |    1 +
 src/radeon_dri2.c   |    2 ++
 src/radeon_glamor.c |    8 ++++++--
 3 files changed, 9 insertions(+), 2 deletions(-)

New commits:
commit 8637f772347c958fa3beea6c0dc9c22255db70e5
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Thu Sep 13 19:50:35 2012 +0200

    glamor: Force acceleration for DRI2 copies.
    
    Improves performance of non-pageflipped 3D apps on SI.
    
    Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

diff --git a/src/radeon.h b/src/radeon.h
index eb46db2..9c2073f 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -402,6 +402,7 @@ struct radeon_accel_state {
     int               vline_y1;
     int               vline_y2;
 
+    Bool              force;
 };
 
 typedef struct {
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 7c5898c..1e04b85 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -633,10 +633,12 @@ radeon_dri2_copy_region2(ScreenPtr pScreen,
 
     /* Driver option "SwapbuffersWait" defines if we vsync DRI2 copy-swaps. */ 
     info->accel_state->vsync = info->swapBuffersWait;
+    info->accel_state->force = TRUE;
 
     (*gc->ops->CopyArea)(src_drawable, dst_drawable, gc,
                          0, 0, drawable->width, drawable->height, off_x, off_y);
 
+    info->accel_state->force = FALSE;
     info->accel_state->vsync = vsync;
 
     FreeScratchGC(gc);
diff --git a/src/radeon_glamor.c b/src/radeon_glamor.c
index 12dfd38..99bc666 100644
--- a/src/radeon_glamor.c
+++ b/src/radeon_glamor.c
@@ -151,8 +151,12 @@ Bool radeon_glamor_prepare_access(PixmapPtr pixmap, glamor_access_t access)
 	struct radeon_bo *bo;
 	int ret;
 
-	if (access == GLAMOR_GPU_ACCESS_RW || access == GLAMOR_GPU_ACCESS_RO)
-		return info->ChipFamily < CHIP_FAMILY_TAHITI;
+	if (access == GLAMOR_GPU_ACCESS_RW || access == GLAMOR_GPU_ACCESS_RO) {
+		if (info->ChipFamily < CHIP_FAMILY_TAHITI)
+			return TRUE;
+
+		return info->accel_state->force;
+	}
 
 	bo = radeon_get_pixmap_bo(pixmap);
 	if (bo) {


More information about the xorg-commit mailing list