xf86-video-intel: src/i830_video.c

Zhenyu Wang zhen at kemper.freedesktop.org
Thu Sep 18 00:43:50 PDT 2008


 src/i830_video.c |   14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

New commits:
commit 1fbe4d602816c9dfc5fba917b9fdc257d8d025b0
Author: David Schleef <ds at schleef.org>
Date:   Thu Sep 18 15:37:00 2008 +0800

    Bug #17277: fix upscaling limit
    
    Oh duh (i830_video.c):
    
            /* Clamp dst width & height to 7x of src (overlay limit) */
            if(drw_w > (src_w * 7))
                drw_w = src_w * 7;
    
    	if(drw_h > (src_h * 7))
                drw_h = src_h * 7;
    
    The condition I see in the documentation appears to be src_h/drw_h < 8, that
    is, src_h < 8*drw_h.  It appears this was "fixed" incorrectly in e784e152.
    It seems difficult to believe that this limitation would exist at all for the
    texture unit.

diff --git a/src/i830_video.c b/src/i830_video.c
index 5e6ebd7..6645daa 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2245,12 +2245,16 @@ I830PutImage(ScrnInfoPtr pScrn,
 	pI830->entityPrivate->XvInUse = i830_crtc_pipe (pPriv->current_crtc);;
     }
 
-    /* Clamp dst width & height to 7x of src (overlay limit) */
-    if(drw_w > (src_w * 7))
-	drw_w = src_w * 7;
+    if (!pPriv->textured) {
+        /* If dst width and height are less than 1/8th the src size, the
+         * src/dst scale factor becomes larger than 8 and doesn't fit in
+         * the scale register. */
+        if(src_w >= (drw_w * 8))
+            drw_w = src_w/7;
 
-    if(drw_h > (src_h * 7))
-	drw_h = src_h * 7;
+        if(src_h >= (drw_h * 8))
+            drw_h = src_h/7;
+    }
 
     /* Clip */
     x1 = src_x;


More information about the xorg-commit mailing list