xf86-video-ati: Branch 'r3xx-render'

Alex Deucher agd5f at kemper.freedesktop.org
Wed Mar 19 09:45:59 PDT 2008


 src/radeon_exa_render.c          |    4 ++--
 src/radeon_textured_video.c      |   20 +++++++++++++++++++-
 src/radeon_textured_videofuncs.c |   10 ++++++++--
 3 files changed, 29 insertions(+), 5 deletions(-)

New commits:
commit b6aa4279cbe68cc8e4523795e9714fb798b62d98
Author: Alex Deucher <alex at samba.(none)>
Date:   Wed Mar 19 12:45:01 2008 -0400

    R5xx: bump textured video limits to 4096

diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index f2f38c3..c881a28 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -345,7 +345,7 @@ RADEONGetDrawablePixmap(DrawablePtr pDrawable)
 	return pDrawable->pScreen->GetWindowPixmap((WindowPtr)pDrawable);
     else
 	return (PixmapPtr)pDrawable;
-}	
+}
 
 static Bool R100CheckComposite(int op, PicturePtr pSrcPicture,
 			       PicturePtr pMaskPicture, PicturePtr pDstPicture)
@@ -435,7 +435,7 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
 	RADEONInit3DEngine(pScrn);
 
     if (!RADEONGetDestFormat(pDstPicture, &dst_format))
-    	return FALSE;
+	return FALSE;
 
     pixel_shift = pDst->drawable.bitsPerPixel >> 4;
 
diff --git a/src/radeon_textured_video.c b/src/radeon_textured_video.c
index 05dd20e..0a6598d 100644
--- a/src/radeon_textured_video.c
+++ b/src/radeon_textured_video.c
@@ -46,6 +46,9 @@
 #define IMAGE_MAX_WIDTH		2048
 #define IMAGE_MAX_HEIGHT	2048
 
+#define IMAGE_MAX_WIDTH_R500	4096
+#define IMAGE_MAX_HEIGHT_R500	4096
+
 static Bool
 RADEONTilingEnabled(ScrnInfoPtr pScrn, PixmapPtr pPix)
 {
@@ -300,6 +303,16 @@ static XF86VideoEncodingRec DummyEncoding[1] =
     }
 };
 
+static XF86VideoEncodingRec DummyEncodingR500[1] =
+{
+    {
+	0,
+	"XV_IMAGE",
+	IMAGE_MAX_WIDTH_R500, IMAGE_MAX_HEIGHT_R500,
+	{1, 1}
+    }
+};
+
 #define NUM_FORMATS 3
 
 static XF86VideoFormatRec Formats[NUM_FORMATS] =
@@ -326,6 +339,8 @@ static XF86ImageRec Images[NUM_IMAGES] =
 XF86VideoAdaptorPtr
 RADEONSetupImageTexturedVideo(ScreenPtr pScreen)
 {
+    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+    RADEONInfoPtr    info = RADEONPTR(pScrn);
     RADEONPortPrivPtr pPortPriv;
     XF86VideoAdaptorPtr adapt;
     int i;
@@ -340,7 +355,10 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen)
     adapt->flags = 0;
     adapt->name = "Radeon Textured Video";
     adapt->nEncodings = 1;
-    adapt->pEncodings = DummyEncoding;
+    if (IS_R500_3D)
+	adapt->pEncodings = DummyEncodingR500;
+    else
+	adapt->pEncodings = DummyEncoding;
     adapt->nFormats = NUM_FORMATS;
     adapt->pFormats = Formats;
     adapt->nPorts = num_texture_ports;
diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c
index 8302509..6a2b8e1 100644
--- a/src/radeon_textured_videofuncs.c
+++ b/src/radeon_textured_videofuncs.c
@@ -160,8 +160,8 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
 
 	txformat1 |= R300_TX_FORMAT_YUV_TO_RGB_CLAMP;
 
-	txformat0 = (((pPriv->w - 1) << R300_TXWIDTH_SHIFT) |
-		     ((pPriv->h - 1) << R300_TXHEIGHT_SHIFT));
+	txformat0 = ((((pPriv->w - 1) & 0x7ff) << R300_TXWIDTH_SHIFT) |
+		     (((pPriv->h - 1) & 0x7ff) << R300_TXHEIGHT_SHIFT));
 
 	txformat0 |= R300_TXPITCH_EN;
 
@@ -176,6 +176,12 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
 	txpitch = pPriv->src_pitch / 2;
 	txpitch -= 1;
 
+	if (IS_R500_3D && ((pPriv->w - 1) & 0x800))
+	    txpitch |= R500_TXWIDTH_11;
+
+	if (IS_R500_3D && ((pPriv->h - 1) & 0x800))
+	    txpitch |= R500_TXHEIGHT_11;
+
 	txoffset = pPriv->src_offset;
 
 	BEGIN_VIDEO(6);


More information about the xorg-commit mailing list