xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Thu Nov 19 22:12:24 PST 2009


 src/radeon.h                     |    6 ++++++
 src/radeon_exa_render.c          |    9 +++++++--
 src/radeon_textured_videofuncs.c |   15 ++++++++++-----
 3 files changed, 23 insertions(+), 7 deletions(-)

New commits:
commit dd3eab848cf352bb96c3d01fe6028d8a4a8e451e
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Fri Nov 20 01:06:49 2009 -0500

    r300: render target limit is 2560
    
    limit was increased to 4021 in r4xx.
    
    fixes fdo bug 25191.
    
    Signed-off-by: Alex Deucher <alexdeucher at gmail.com>

diff --git a/src/radeon.h b/src/radeon.h
index 5cdc3db..1e479f4 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -382,6 +382,12 @@ typedef enum {
 	(info->ChipFamily == CHIP_FAMILY_RV560)  ||  \
 	(info->ChipFamily == CHIP_FAMILY_RV570))
 
+#define IS_R400_3D ((info->ChipFamily == CHIP_FAMILY_R420)  ||  \
+	(info->ChipFamily == CHIP_FAMILY_RV410) ||  \
+	(info->ChipFamily == CHIP_FAMILY_RS690) ||  \
+	(info->ChipFamily == CHIP_FAMILY_RS600) ||  \
+	(info->ChipFamily == CHIP_FAMILY_RS740))
+
 #define IS_R300_3D ((info->ChipFamily == CHIP_FAMILY_R300)  ||  \
 	(info->ChipFamily == CHIP_FAMILY_RV350) ||  \
 	(info->ChipFamily == CHIP_FAMILY_R350)  ||  \
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index b745705..c144890 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -1348,8 +1348,13 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP
     } else {
 	max_tex_w = 2048;
 	max_tex_h = 2048;
-	max_dst_w = 4021;
-	max_dst_h = 4021;
+	if (IS_R400_3D) {
+	    max_dst_w = 4021;
+	    max_dst_h = 4021;
+	} else {
+	    max_dst_w = 2560;
+	    max_dst_h = 2560;
+	}
     }
 
     if (pSrcPixmap->drawable.width > max_tex_w ||
diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c
index 6ac2d6e..bd3fa17 100644
--- a/src/radeon_textured_videofuncs.c
+++ b/src/radeon_textured_videofuncs.c
@@ -387,7 +387,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
      *     We render a single, large triangle and use the scissor
      *     functionality to restrict it to the desired rectangle.
      *     Due to guardband limits on r3xx/r4xx, we can only use
-     *     the single triangle up to 4021 pixels; above that we
+     *     the single triangle up to 2560/4021 pixels; above that we
      *     render as a quad.
      */
 
@@ -955,7 +955,7 @@ FUNC_NAME(R200DisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv)
      *     We render a single, large triangle and use the scissor
      *     functionality to restrict it to the desired rectangle.
      *     Due to guardband limits on r3xx/r4xx, we can only use
-     *     the single triangle up to 4021 pixels; above that we
+     *     the single triangle up to 2560/4021 pixels; above that we
      *     render as a quad.
      */
 
@@ -2331,7 +2331,7 @@ FUNC_NAME(R300DisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv)
      *     We render a single, large triangle and use the scissor
      *     functionality to restrict it to the desired rectangle.
      *     Due to guardband limits on r3xx/r4xx, we can only use
-     *     the single triangle up to 4021 pixels; above that we
+     *     the single triangle up to 2560/4021 pixels; above that we
      *     render as a quad.
      */
 
@@ -2359,8 +2359,13 @@ FUNC_NAME(R300DisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv)
 	ErrorF("src: %d, %d, %d, %d\n", srcX, srcY, srcw, srch);
 #endif
 
-	if ((dstw+dsth) > 4021)
-	    use_quad = TRUE;
+	if (IS_R400_3D) {
+	    if ((dstw+dsth) > 4021)
+		use_quad = TRUE;
+	} else {
+	    if ((dstw+dsth) > 2560)
+		use_quad = TRUE;
+	}
 	/*
 	 * Set up the scissor area to that of the output size.
 	 */


More information about the xorg-commit mailing list