diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-11-20 01:06:49 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-11-20 01:08:19 -0500 |
commit | dd3eab848cf352bb96c3d01fe6028d8a4a8e451e (patch) | |
tree | cdede8f1c0563fccf7a2b7dd3355f934f4625f6f /src | |
parent | eb9bc133fc426e67b397e661bfd22bf62009d9d3 (diff) |
r300: render target limit is 2560
limit was increased to 4021 in r4xx.
fixes fdo bug 25191.
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/radeon.h | 6 | ||||
-rw-r--r-- | src/radeon_exa_render.c | 9 | ||||
-rw-r--r-- | src/radeon_textured_videofuncs.c | 15 |
3 files changed, 23 insertions, 7 deletions
diff --git a/src/radeon.h b/src/radeon.h index 5cdc3dbb..1e479f4e 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 b7457057..c1448900 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 6ac2d6ea..bd3fa174 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. */ |