40ef143
diff -up xf86-video-ati-6.11.0/src/drmmode_display.c.jx xf86-video-ati-6.11.0/src/drmmode_display.c
40ef143
--- xf86-video-ati-6.11.0/src/drmmode_display.c.jx	2009-03-12 16:00:29.000000000 -0400
40ef143
+++ xf86-video-ati-6.11.0/src/drmmode_display.c	2009-03-12 16:04:43.497426645 -0400
40ef143
@@ -153,6 +153,9 @@ copy_fb_contents (drmmode_ptr drmmode,
40ef143
 	PixmapPtr src_pixmap, dest_pixmap;
40ef143
 	ScreenPtr pScreen = pScrn->pScreen;
40ef143
 
40ef143
+	if (info->ChipFamily >= CHIP_FAMILY_R600)
40ef143
+		return;
40ef143
+
40ef143
 	dest_fb = drmModeGetFB(drmmode->fd, dest_id);
40ef143
 	src_fb = drmModeGetFB(drmmode->fd, src_id);
40ef143
 	if (src_fb == NULL || dest_fb == NULL) {
40ef143
diff -up xf86-video-ati-6.11.0/src/radeon_driver.c.jx xf86-video-ati-6.11.0/src/radeon_driver.c
40ef143
--- xf86-video-ati-6.11.0/src/radeon_driver.c.jx	2009-03-12 16:00:29.317422095 -0400
40ef143
+++ xf86-video-ati-6.11.0/src/radeon_driver.c	2009-03-12 16:00:29.340421256 -0400
40ef143
@@ -1991,6 +1991,15 @@ static Bool RADEONPreInitAccel(ScrnInfoP
40ef143
     }
40ef143
     info->accel_state->fifo_slots                 = 0;
40ef143
 
40ef143
+    if (info->drm_mode_setting && info->ChipFamily >= CHIP_FAMILY_R600) {
40ef143
+	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
40ef143
+		   "Using shadowfb for KMS on R600+\n");
40ef143
+	info->r600_shadow_fb = TRUE;
40ef143
+	if (!xf86LoadSubModule(pScrn, "shadow"))
40ef143
+	    info->r600_shadow_fb = FALSE;
40ef143
+	return TRUE;
40ef143
+    }
40ef143
+
40ef143
     if ((info->ChipFamily == CHIP_FAMILY_RS100) ||
40ef143
 	(info->ChipFamily == CHIP_FAMILY_RS200) ||
40ef143
 	(info->ChipFamily == CHIP_FAMILY_RS300) ||
40ef143
diff -up xf86-video-ati-6.11.0/src/radeon_video.c.jx xf86-video-ati-6.11.0/src/radeon_video.c
40ef143
--- xf86-video-ati-6.11.0/src/radeon_video.c.jx	2009-03-12 16:00:29.309397119 -0400
40ef143
+++ xf86-video-ati-6.11.0/src/radeon_video.c	2009-03-12 16:00:29.344420788 -0400
40ef143
@@ -297,7 +297,10 @@ void RADEONInitVideo(ScreenPtr pScreen)
40ef143
 	RADEONInitOffscreenImages(pScreen);
40ef143
     }
40ef143
 
40ef143
-    if (info->ChipFamily != CHIP_FAMILY_RV250) {
40ef143
+    if (info->ChipFamily >= CHIP_FAMILY_R600 && info->drm_mode_setting) {
40ef143
+	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
40ef143
+		   "Disabling textured video for KMS On R600+\n");
40ef143
+    } else if (info->ChipFamily != CHIP_FAMILY_RV250) {
40ef143
 	if ((info->ChipFamily < CHIP_FAMILY_RS400)
40ef143
 #ifdef XF86DRI
40ef143
 	    || (info->directRenderingEnabled || info->drm_mode_setting)