xf86-video-ati: Branch 'master' - 2 commits

Michel Dänzer daenzer at kemper.freedesktop.org
Thu Feb 12 10:30:46 PST 2009


 src/radeon_exa.c        |   10 ++++++++--
 src/radeon_exa_render.c |    9 +++++++--
 2 files changed, 15 insertions(+), 4 deletions(-)

New commits:
commit 3ff1eb7e50fef22adb6280dd7de77c3ecafdb451
Author: Michel Dänzer <daenzer at vmware.com>
Date:   Thu Feb 12 19:24:41 2009 +0100

    EXA: If making a pixmap offscreen fails, return ~0ULL as texture offset.
    
    This allows AIGLX to fall back to the non-zero-copy code rather than messing up
    the 3D driver.

diff --git a/src/radeon_exa.c b/src/radeon_exa.c
index c4bc1bb..2f36d71 100644
--- a/src/radeon_exa.c
+++ b/src/radeon_exa.c
@@ -520,10 +520,16 @@ extern void ExaOffscreenMarkUsed(PixmapPtr);
 unsigned long long
 RADEONTexOffsetStart(PixmapPtr pPix)
 {
+    RINFO_FROM_SCREEN(pPix->drawable.pScreen);
+    unsigned long long offset;
     exaMoveInPixmap(pPix);
     ExaOffscreenMarkUsed(pPix);
 
-    return RADEONPTR(xf86Screens[pPix->drawable.pScreen->myNum])->fbLocation +
-	exaGetPixmapOffset(pPix);
+    offset = exaGetPixmapOffset(pPix);
+
+    if (offset > info->FbMapSize)
+	return ~0ULL;
+    else
+	return info->fbLocation + offset;
 }
 #endif
commit c19aa4fc8da7ac4745624098b146bcc42c0436dd
Author: Michel Dänzer <daenzer at vmware.com>
Date:   Thu Feb 12 19:22:12 2009 +0100

    EXA: The source tiling code can't handle RepeatReflect yet.

diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index a8d99ec..c44502c 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -284,7 +284,7 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict,
     info->accel_state->need_src_tile_x = info->accel_state->need_src_tile_y = FALSE;
     info->accel_state->src_tile_width = info->accel_state->src_tile_height = 65536; /* "infinite" */
 	    
-    if (pPict->repeat && pPict->repeatType == RepeatNormal) {
+    if (pPict->repeat && pPict->repeatType != RepeatPad) {
 	Bool badPitch = needMatchingPitch && !RADEONPitchMatches(pPix);
 	
 	int w = pPict->pDrawable->width;
@@ -297,7 +297,12 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict,
 	} else {
 	    info->accel_state->need_src_tile_x = (w & (w - 1)) != 0 || badPitch;
 	    info->accel_state->need_src_tile_y = (h & (h - 1)) != 0;
-	    
+
+	    if ((info->accel_state->need_src_tile_x ||
+		 info->accel_state->need_src_tile_y) &&
+		pPict->repeatType != RepeatNormal)
+		RADEON_FALLBACK(("Can only tile RepeatNormal at this time\n"));
+
 	    if (!canTile1d)
 		info->accel_state->need_src_tile_x =
 		    info->accel_state->need_src_tile_y =


More information about the xorg-commit mailing list