diff --git a/radeon-modeset.patch b/radeon-modeset.patch index 7147541..be103f8 100644 --- a/radeon-modeset.patch +++ b/radeon-modeset.patch @@ -1,3 +1,9 @@ +commit 2697016d4ae42e457e9552d42b1d3a609472a7c4 +Author: Dave Airlie +Date: Thu Nov 20 16:48:33 2008 +1000 + + flush on UTS if any references + commit b8264d48009b5e7b441d492f9c3fe45a6caa2f14 Author: Dave Airlie Date: Thu Nov 20 16:44:40 2008 +1000 @@ -6498,7 +6504,7 @@ index 0f86fdd..f0d1f48 100644 } #endif diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c -index 62224d0..d88a72f 100644 +index 62224d0..8fc3839 100644 --- a/src/radeon_exa_funcs.c +++ b/src/radeon_exa_funcs.c @@ -74,21 +74,73 @@ FUNC_NAME(RADEONSync)(ScreenPtr pScreen, int marker) @@ -6787,11 +6793,11 @@ index 62224d0..d88a72f 100644 #ifdef ACCEL_CP unsigned int hpass; uint32_t buf_pitch, dst_pitch_off; -@@ -276,10 +410,45 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h, +@@ -276,10 +410,48 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h, if (bpp < 8) return FALSE; -+ if (info->new_cs) ++ if (info->new_cs) + dst = info->mm.front_buffer->map + exaGetPixmapOffset(pDst); + #ifdef ACCEL_CP @@ -6809,6 +6815,9 @@ index 62224d0..d88a72f 100644 + return FALSE; + + ++ if (radeon_bufmgr_gem_has_references(driver_priv->bo)) ++ RADEONCPFlushIndirect(pScrn, 0); ++ + /* use pwrites - maybe require some sort of fallback */ + bo_width = w * (bpp / 8); + offset = (x * bpp / 8) + (y * dst_pitch); @@ -6836,7 +6845,7 @@ index 62224d0..d88a72f 100644 int cpp = bpp / 8; ACCEL_PREAMBLE(); -@@ -294,9 +463,10 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h, +@@ -294,9 +466,10 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h, exaMarkSync(pDst->drawable.pScreen); return TRUE; @@ -6849,7 +6858,7 @@ index 62224d0..d88a72f 100644 /* Do we need that sync here ? probably not .... */ exaWaitSync(pDst->drawable.pScreen); -@@ -335,14 +505,20 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h, +@@ -335,14 +508,20 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h, #ifdef ACCEL_CP /* Emit blit with arbitrary source and destination offsets and pitches */ static void @@ -6872,7 +6881,7 @@ index 62224d0..d88a72f 100644 OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, RADEON_GMC_DST_PITCH_OFFSET_CNTL | RADEON_GMC_SRC_PITCH_OFFSET_CNTL | -@@ -353,8 +529,14 @@ RADEONBlitChunk(ScrnInfoPtr pScrn, uint32_t datatype, uint32_t src_pitch_offset, +@@ -353,8 +532,14 @@ RADEONBlitChunk(ScrnInfoPtr pScrn, uint32_t datatype, uint32_t src_pitch_offset, RADEON_DP_SRC_SOURCE_MEMORY | RADEON_GMC_CLR_CMP_CNTL_DIS | RADEON_GMC_WR_MSK_DIS); @@ -6887,7 +6896,7 @@ index 62224d0..d88a72f 100644 OUT_ACCEL_REG(RADEON_SRC_Y_X, (srcY << 16) | srcX); OUT_ACCEL_REG(RADEON_DST_Y_X, (dstY << 16) | dstX); OUT_ACCEL_REG(RADEON_DST_HEIGHT_WIDTH, (h << 16) | w); -@@ -365,6 +547,174 @@ RADEONBlitChunk(ScrnInfoPtr pScrn, uint32_t datatype, uint32_t src_pitch_offset, +@@ -365,6 +550,174 @@ RADEONBlitChunk(ScrnInfoPtr pScrn, uint32_t datatype, uint32_t src_pitch_offset, RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE); FINISH_ACCEL(); } @@ -7062,7 +7071,7 @@ index 62224d0..d88a72f 100644 #endif static Bool -@@ -389,12 +739,18 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, +@@ -389,12 +742,18 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, TRACE; #ifdef ACCEL_CP @@ -7082,7 +7091,7 @@ index 62224d0..d88a72f 100644 RADEONGetPixmapOffsetPitch(pSrc, &src_pitch_offset) && (scratch = RADEONCPGetBuffer(pScrn))) { -@@ -409,7 +765,8 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, +@@ -409,7 +768,8 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, RADEON_SWITCH_TO_2D(); /* Kick the first blit as early as possible */ @@ -7092,7 +7101,7 @@ index 62224d0..d88a72f 100644 x, y, 0, 0, w, hpass); FLUSH_RING(); -@@ -436,7 +793,8 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, +@@ -436,7 +796,8 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, /* Prepare next blit if anything's left */ if (hpass) { scratch_off = scratch->total/2 - scratch_off; @@ -7102,7 +7111,7 @@ index 62224d0..d88a72f 100644 x, y, 0, 0, w, hpass); } -@@ -543,14 +901,17 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) +@@ -543,14 +904,17 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) info->accel_state->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen); info->accel_state->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen); @@ -7123,7 +7132,7 @@ index 62224d0..d88a72f 100644 #ifdef RENDER if (info->RenderAccel) { -@@ -560,7 +921,7 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) +@@ -560,7 +924,7 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) else if (IS_R300_3D || IS_R500_3D) { if ((info->ChipFamily < CHIP_FAMILY_RS400) #ifdef XF86DRI @@ -7132,7 +7141,7 @@ index 62224d0..d88a72f 100644 #endif ) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration " -@@ -595,6 +956,16 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) +@@ -595,6 +959,16 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) } #endif diff --git a/xorg-x11-drv-ati.spec b/xorg-x11-drv-ati.spec index a0df1ef..46ad03d 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: 54%{?dist} +Release: 55%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X Hardware Support @@ -82,6 +82,9 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man4/radeon.4* %changelog +* Tue Nov 18 2008 Dave Airlie 6.9.0-55 +- attempt to resolve DFS with a worse idea. + * Tue Nov 18 2008 Dave Airlie 6.9.0-54 - radeon attempt to fix suspend/resume