diff --git a/src/radeon.h b/src/radeon.h index 1b8ae3c..60487c7 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 7396f6f..2e5d763 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 7aaa266..b1b3f15 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;