diff --git a/radeon-r600-kms-shadowfb.patch b/radeon-r600-kms-shadowfb.patch new file mode 100644 index 0000000..07d611e --- /dev/null +++ b/radeon-r600-kms-shadowfb.patch @@ -0,0 +1,47 @@ +diff -up xf86-video-ati-6.11.0/src/drmmode_display.c.jx xf86-video-ati-6.11.0/src/drmmode_display.c +--- xf86-video-ati-6.11.0/src/drmmode_display.c.jx 2009-03-12 16:00:29.000000000 -0400 ++++ xf86-video-ati-6.11.0/src/drmmode_display.c 2009-03-12 16:04:43.497426645 -0400 +@@ -153,6 +153,9 @@ copy_fb_contents (drmmode_ptr drmmode, + PixmapPtr src_pixmap, dest_pixmap; + ScreenPtr pScreen = pScrn->pScreen; + ++ if (info->ChipFamily >= CHIP_FAMILY_R600) ++ return; ++ + dest_fb = drmModeGetFB(drmmode->fd, dest_id); + src_fb = drmModeGetFB(drmmode->fd, src_id); + if (src_fb == NULL || dest_fb == NULL) { +diff -up xf86-video-ati-6.11.0/src/radeon_driver.c.jx xf86-video-ati-6.11.0/src/radeon_driver.c +--- xf86-video-ati-6.11.0/src/radeon_driver.c.jx 2009-03-12 16:00:29.317422095 -0400 ++++ xf86-video-ati-6.11.0/src/radeon_driver.c 2009-03-12 16:00:29.340421256 -0400 +@@ -1991,6 +1991,15 @@ static Bool RADEONPreInitAccel(ScrnInfoP + } + info->accel_state->fifo_slots = 0; + ++ if (info->drm_mode_setting && info->ChipFamily >= CHIP_FAMILY_R600) { ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, ++ "Using shadowfb for KMS on R600+\n"); ++ info->r600_shadow_fb = TRUE; ++ if (!xf86LoadSubModule(pScrn, "shadow")) ++ info->r600_shadow_fb = FALSE; ++ return TRUE; ++ } ++ + if ((info->ChipFamily == CHIP_FAMILY_RS100) || + (info->ChipFamily == CHIP_FAMILY_RS200) || + (info->ChipFamily == CHIP_FAMILY_RS300) || +diff -up xf86-video-ati-6.11.0/src/radeon_video.c.jx xf86-video-ati-6.11.0/src/radeon_video.c +--- xf86-video-ati-6.11.0/src/radeon_video.c.jx 2009-03-12 16:00:29.309397119 -0400 ++++ xf86-video-ati-6.11.0/src/radeon_video.c 2009-03-12 16:00:29.344420788 -0400 +@@ -297,7 +297,10 @@ void RADEONInitVideo(ScreenPtr pScreen) + RADEONInitOffscreenImages(pScreen); + } + +- if (info->ChipFamily != CHIP_FAMILY_RV250) { ++ if (info->ChipFamily >= CHIP_FAMILY_R600 && info->drm_mode_setting) { ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, ++ "Disabling textured video for KMS On R600+\n"); ++ } else if (info->ChipFamily != CHIP_FAMILY_RV250) { + if ((info->ChipFamily < CHIP_FAMILY_RS400) + #ifdef XF86DRI + || (info->directRenderingEnabled || info->drm_mode_setting) diff --git a/xorg-x11-drv-ati.spec b/xorg-x11-drv-ati.spec index 0bc27a8..453622f 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.11.0 -Release: 8%{?dist} +Release: 9%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X Hardware Support @@ -21,6 +21,7 @@ Patch5: radeon-6.9.0-panel-size-sanity.patch Patch6: radeon-6.9.0-bgnr-enable.patch Patch7: radeon-fix-r600-xv.patch Patch8: radeon-r600-gart-table.patch +Patch9: radeon-r600-kms-shadowfb.patch ExcludeArch: s390 s390x @@ -49,6 +50,7 @@ X.Org X11 ati video driver. %patch6 -p1 -b .bgnr %patch7 -p1 -b .r600xv %patch8 -p1 -b .r600gart +%patch9 -p1 -b .kms-shadowfb %build autoreconf -iv @@ -80,6 +82,10 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man4/radeon.4* %changelog +* Thu Mar 12 2009 Adam Jackson 6.11.0-9 +- radeon-r600-kms-shadowfb.patch: Make R600 fall back to shadowfb whne KMS + is enabled (as opposed to crashing). + * Thu Mar 12 2009 Dave Airlie 6.11.0-8 - fix r600 GART table sizing bug