summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/radeon.h2
-rw-r--r--src/radeon_textured_video.c3
-rw-r--r--src/radeon_video.c7
3 files changed, 10 insertions, 2 deletions
diff --git a/src/radeon.h b/src/radeon.h
index c9f388ad..182e946e 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -949,6 +949,8 @@ typedef struct {
uint16_t video_decoder_type;
int overlay_scaler_buffer_width;
int ecp_div;
+ unsigned int xv_max_width;
+ unsigned int xv_max_height;
/* general */
Bool showCache;
diff --git a/src/radeon_textured_video.c b/src/radeon_textured_video.c
index 7396f6f0..2e5d7637 100644
--- a/src/radeon_textured_video.c
+++ b/src/radeon_textured_video.c
@@ -863,6 +863,9 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen)
if (IS_R500_3D || IS_R300_3D)
radeon_load_bicubic_texture(pScrn);
+ info->xv_max_width = adapt->pEncodings->width;
+ info->xv_max_height = adapt->pEncodings->height;
+
return adapt;
}
diff --git a/src/radeon_video.c b/src/radeon_video.c
index 7aaa2665..b1b3f158 100644
--- a/src/radeon_video.c
+++ b/src/radeon_video.c
@@ -1511,6 +1511,8 @@ RADEONAllocAdaptor(ScrnInfoPtr pScrn)
RADEONVIP_init(pScrn, pPriv);
info->adaptor = adapt;
+ info->xv_max_width = 2048;
+ info->xv_max_height = 2048;
if(!xf86LoadSubModule(pScrn,"theatre_detect"))
{
@@ -3077,10 +3079,11 @@ RADEONQueryImageAttributes(
unsigned short *w, unsigned short *h,
int *pitches, int *offsets
){
+ const RADEONInfoRec * const info = RADEONPTR(pScrn);
int size, tmp;
- if(*w > 2048) *w = 2048;
- if(*h > 2048) *h = 2048;
+ if(*w > info->xv_max_width) *w = info->xv_max_width;
+ if(*h > info->xv_max_height) *h = info->xv_max_height;
*w = (*w + 1) & ~1;
if(offsets) offsets[0] = 0;