rpms/xorg-x11-drv-ati/F-10 radeon-modeset.patch, 1.44, 1.45 xorg-x11-drv-ati.spec, 1.156, 1.157

Dave Airlie airlied at fedoraproject.org
Sun Nov 23 08:16:00 UTC 2008


Author: airlied

Update of /cvs/pkgs/rpms/xorg-x11-drv-ati/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv28598

Modified Files:
	radeon-modeset.patch xorg-x11-drv-ati.spec 
Log Message:
- fix some issues with UTS and 2d state flush


radeon-modeset.patch:

Index: radeon-modeset.patch
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-ati/F-10/radeon-modeset.patch,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- radeon-modeset.patch	20 Nov 2008 06:52:12 -0000	1.44
+++ radeon-modeset.patch	23 Nov 2008 08:15:29 -0000	1.45
@@ -1,3 +1,33 @@
+commit 0e9f5f28a24d297d3fcd59dcebd4a6a74e4110dd
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Sun Nov 23 18:10:41 2008 +1000
+
+    radeon: switch to 3D slightly earlier
+
+commit 4f1dc1fc2a025d103263fdf55d4429583c302f5f
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Sun Nov 23 17:56:02 2008 +1000
+
+    radeon: wait for rendering before doing UTS
+
+commit 97f13799475a0583be1ffc318aaf3b840a7cfa63
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Sun Nov 23 17:54:27 2008 +1000
+
+    radeon: stop this_op_read from going negative
+
+commit 71915dae562835a397490311f01fdc1005243f01
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Sun Nov 23 17:52:42 2008 +1000
+
+    radeon: return flush for conflicting domains
+
+commit dc1d2bbac69d4ef8fa7d570a5775ed8e6af0e3c4
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Sun Nov 23 17:50:47 2008 +1000
+
+    radeon: only reset state2d before emitting cache flush
+
 commit 2697016d4ae42e457e9552d42b1d3a609472a7c4
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Thu Nov 20 16:48:33 2008 +1000
@@ -2406,10 +2436,10 @@
 +#endif
 diff --git a/src/radeon_bufmgr_gem.c b/src/radeon_bufmgr_gem.c
 new file mode 100644
-index 0000000..e1c2006
+index 0000000..30f439f
 --- /dev/null
 +++ b/src/radeon_bufmgr_gem.c
-@@ -0,0 +1,645 @@
+@@ -0,0 +1,649 @@
 +/**************************************************************************
 + *
 + * Copyright © 2007-2008 Red Hat Inc.
@@ -2922,10 +2952,14 @@
 +					ErrorF("WRITE DOMAIN RELOC FAILURE 0x%x %d %d\n", gem_bo->gem_handle, write_domain, old_write);
 +				if (read_domains != old_read)
 +					ErrorF("READ DOMAIN RELOC FAILURE 0x%x %d %d\n", gem_bo->gem_handle, read_domains, old_read);
++				return BUFMGR_SPACE_FLUSH;
 +			}
 +		}
 +	}
 +	
++	if (this_op_read < 0)
++		this_op_read = 0;
++
 +	/* check sizes - operation first */
 +	if ((this_op_read + this_op_gart_write > bufmgr_gem->gart_limit) ||
 +	    (this_op_vram_write > bufmgr_gem->vram_limit)) {
@@ -6504,7 +6538,7 @@
  }
  #endif
 diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c
-index 62224d0..8fc3839 100644
+index 62224d0..eba325e 100644
 --- a/src/radeon_exa_funcs.c
 +++ b/src/radeon_exa_funcs.c
 @@ -74,21 +74,73 @@ FUNC_NAME(RADEONSync)(ScreenPtr pScreen, int marker)
@@ -6656,11 +6690,16 @@
  
      return TRUE;
  }
-@@ -148,8 +233,10 @@ FUNC_NAME(RADEONDoneSolid)(PixmapPtr pPix)
+@@ -143,6 +228,7 @@ FUNC_NAME(RADEONDoneSolid)(PixmapPtr pPix)
+ 
+     TRACE;
+ 
++    info->state_2d.op = 0;
+     BEGIN_ACCEL(2);
+     OUT_ACCEL_REG(RADEON_DSTCACHE_CTLSTAT, RADEON_RB2D_DC_FLUSH_ALL);
      OUT_ACCEL_REG(RADEON_WAIT_UNTIL,
-                   RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE);
+@@ -150,6 +236,7 @@ FUNC_NAME(RADEONDoneSolid)(PixmapPtr pPix)
      FINISH_ACCEL();
-+    info->state_2d.op = 0;
  }
  
 +
@@ -6775,16 +6814,15 @@
  
      FUNC_NAME(RADEONDoPrepareCopy)(pScrn, src_pitch_offset, dst_pitch_offset,
  				   datatype, rop, planemask);
-@@ -250,6 +380,8 @@ FUNC_NAME(RADEONDoneCopy)(PixmapPtr pDst)
-     OUT_ACCEL_REG(RADEON_WAIT_UNTIL,
-                   RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE);
-     FINISH_ACCEL();
-+
-+    info->state_2d.op = 0;
- }
+@@ -245,6 +375,7 @@ FUNC_NAME(RADEONDoneCopy)(PixmapPtr pDst)
  
- static Bool
-@@ -260,6 +392,8 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h,
+     TRACE;
+ 
++    info->state_2d.op = 0;
+     BEGIN_ACCEL(2);
+     OUT_ACCEL_REG(RADEON_DSTCACHE_CTLSTAT, RADEON_RB2D_DC_FLUSH_ALL);
+     OUT_ACCEL_REG(RADEON_WAIT_UNTIL,
+@@ -260,6 +391,8 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h,
      uint8_t	   *dst	     = info->FB + exaGetPixmapOffset(pDst);
      unsigned int   dst_pitch = exaGetPixmapPitch(pDst);
      unsigned int   bpp	     = pDst->drawable.bitsPerPixel;
@@ -6793,7 +6831,7 @@
  #ifdef ACCEL_CP
      unsigned int   hpass;
      uint32_t	   buf_pitch, dst_pitch_off;
-@@ -276,10 +410,48 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h,
+@@ -276,10 +409,50 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h,
      if (bpp < 8)
  	return FALSE;
  
@@ -6818,6 +6856,8 @@
 +	    if (radeon_bufmgr_gem_has_references(driver_priv->bo))
 +		RADEONCPFlushIndirect(pScrn, 0);
 +
++	    radeon_bufmgr_gem_wait_rendering(driver_priv->bo);
++
 +	    /* use pwrites - maybe require some sort of fallback */
 +	    bo_width = w * (bpp / 8);
 +	    offset = (x * bpp / 8) + (y * dst_pitch);
@@ -6845,7 +6885,7 @@
  	int cpp = bpp / 8;
  	ACCEL_PREAMBLE();
  
-@@ -294,9 +466,10 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h,
+@@ -294,9 +467,10 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h,
  
  	exaMarkSync(pDst->drawable.pScreen);
  	return TRUE;
@@ -6858,7 +6898,7 @@
      /* Do we need that sync here ? probably not .... */
      exaWaitSync(pDst->drawable.pScreen);
  
-@@ -335,14 +508,20 @@ FUNC_NAME(RADEONUploadToScreen)(PixmapPtr pDst, int x, int y, int w, int h,
+@@ -335,14 +509,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
@@ -6881,7 +6921,7 @@
      OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL,
  		  RADEON_GMC_DST_PITCH_OFFSET_CNTL |
  		  RADEON_GMC_SRC_PITCH_OFFSET_CNTL |
-@@ -353,8 +532,14 @@ RADEONBlitChunk(ScrnInfoPtr pScrn, uint32_t datatype, uint32_t src_pitch_offset,
+@@ -353,8 +533,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);
@@ -6896,7 +6936,7 @@
      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 +550,174 @@ RADEONBlitChunk(ScrnInfoPtr pScrn, uint32_t datatype, uint32_t src_pitch_offset,
+@@ -365,6 +551,174 @@ RADEONBlitChunk(ScrnInfoPtr pScrn, uint32_t datatype, uint32_t src_pitch_offset,
                    RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE);
      FINISH_ACCEL();
  }
@@ -7071,7 +7111,7 @@
  #endif
  
  static Bool
-@@ -389,12 +742,18 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h,
+@@ -389,12 +743,18 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h,
      TRACE;
  
  #ifdef ACCEL_CP
@@ -7091,7 +7131,7 @@
  	RADEONGetPixmapOffsetPitch(pSrc, &src_pitch_offset) &&
  	(scratch = RADEONCPGetBuffer(pScrn)))
      {
-@@ -409,7 +768,8 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h,
+@@ -409,7 +769,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 */
@@ -7101,7 +7141,7 @@
  			x, y, 0, 0, w, hpass);
  	FLUSH_RING();
  
-@@ -436,7 +796,8 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h,
+@@ -436,7 +797,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;
@@ -7111,7 +7151,7 @@
  				x, y, 0, 0, w, hpass);
  	    }
  
-@@ -543,14 +904,17 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
+@@ -543,14 +905,17 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
      info->accel_state->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen);
      info->accel_state->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen);
  
@@ -7132,7 +7172,7 @@
  
  #ifdef RENDER
      if (info->RenderAccel) {
-@@ -560,7 +924,7 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
+@@ -560,7 +925,7 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
  	else if (IS_R300_3D || IS_R500_3D) {
  	    if ((info->ChipFamily < CHIP_FAMILY_RS400)
  #ifdef XF86DRI
@@ -7141,7 +7181,7 @@
  #endif
  		) {
  		xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "
-@@ -595,6 +959,16 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
+@@ -595,6 +960,16 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
      }
  #endif
  
@@ -7159,7 +7199,7 @@
      xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Setting EXA maxPitchBytes\n");
  
 diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
-index 97199ae..820f3c5 100644
+index 97199ae..ed82878 100644
 --- a/src/radeon_exa_render.c
 +++ b/src/radeon_exa_render.c
 @@ -355,12 +355,14 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
@@ -7643,7 +7683,24 @@
  	RADEON_FALLBACK(("Bad destination offset 0x%x\n", (int)dst_offset));
      if (((dst_pitch >> pixel_shift) & 0x7) != 0)
  	RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch));
-@@ -1829,9 +2048,18 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -1218,6 +1437,8 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+     if (!RADEONSetupSourceTile(pSrcPicture, pSrc, TRUE, FALSE))
+ 	return FALSE;
+ 
++    RADEON_SWITCH_TO_3D();
++
+     if (!FUNC_NAME(R300TextureSetup)(pSrcPicture, pSrc, 0))
+ 	return FALSE;
+     txenable = R300_TEX_0_ENABLE;
+@@ -1230,7 +1451,6 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+ 	info->accel_state->is_transform[1] = FALSE;
+     }
+ 
+-    RADEON_SWITCH_TO_3D();
+ 
+     /* setup the VAP */
+     if (info->accel_state->has_tcl) {
+@@ -1829,9 +2049,18 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
  	FINISH_ACCEL();
      }
  


Index: xorg-x11-drv-ati.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-ati/F-10/xorg-x11-drv-ati.spec,v
retrieving revision 1.156
retrieving revision 1.157
diff -u -r1.156 -r1.157
--- xorg-x11-drv-ati.spec	20 Nov 2008 06:47:09 -0000	1.156
+++ xorg-x11-drv-ati.spec	23 Nov 2008 08:15:29 -0000	1.157
@@ -5,7 +5,7 @@
 Summary:   Xorg X11 ati video driver
 Name:      xorg-x11-drv-ati
 Version:   6.9.0
-Release:   55%{?dist}
+Release:   56%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X Hardware Support
@@ -82,6 +82,9 @@
 %{_mandir}/man4/radeon.4*
 
 %changelog
+* Sun Nov 23 2008 Dave Airlie <airlied at redhat.com> 6.9.0-56
+- fix some issues with UTS and 2d state flush
+
 * Tue Nov 18 2008 Dave Airlie <airlied at redhat.com> 6.9.0-55
 - attempt to resolve DFS with a worse idea.
 




More information about the fedora-extras-commits mailing list