[PATCH 1/2] xv: only use bicubic filtering when scaling >=2x

Ben Skeggs skeggsb at beleth.localdomain
Mon May 4 00:04:34 PDT 2009


---
 src/nv30_xv_tex.c |    7 +++++--
 src/nv40_xv_tex.c |    8 ++++++--
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/nv30_xv_tex.c b/src/nv30_xv_tex.c
index 617e63b..f4bc1da 100644
--- a/src/nv30_xv_tex.c
+++ b/src/nv30_xv_tex.c
@@ -258,7 +258,7 @@ NV30PutTextureImage(ScrnInfoPtr pScrn, struct nouveau_bo *src, int src_offset,
 	struct nouveau_channel *chan = pNv->chan;
 	struct nouveau_grobj *rankine = pNv->Nv3D;
 	struct nouveau_bo *bo = nouveau_pixmap_bo(ppix);
-	Bool redirected = FALSE;
+	Bool redirected = FALSE, bicubic = pPriv->bicubic;
 	float X1, X2, Y1, Y2;
 	BoxPtr pbox;
 	int nbox;
@@ -342,7 +342,10 @@ NV30PutTextureImage(ScrnInfoPtr pScrn, struct nouveau_bo *src, int src_offset,
 	BEGIN_RING(chan, rankine, NV34TCL_TX_ENABLE(3), 1);
 	OUT_RING  (chan, 0x0);
 
-	if (!NV30_LoadFragProg(pScrn, pPriv->bicubic ?
+	if (drw_w / 2 < src_w || drw_h / 2 < src_h)
+		bicubic = FALSE;
+
+	if (!NV30_LoadFragProg(pScrn, bicubic ?
 			       &nv30_fp_yv12_bicubic :
 			       &nv30_fp_yv12_bilinear)) {
 		MARK_UNDO(chan);
diff --git a/src/nv40_xv_tex.c b/src/nv40_xv_tex.c
index 3a5d439..a46f1e3 100644
--- a/src/nv40_xv_tex.c
+++ b/src/nv40_xv_tex.c
@@ -262,7 +262,7 @@ NV40PutTextureImage(ScrnInfoPtr pScrn,
 	struct nouveau_channel *chan = pNv->chan;
 	struct nouveau_grobj *curie = pNv->Nv3D;
 	struct nouveau_bo *bo = nouveau_pixmap_bo(ppix);
-	Bool redirected = FALSE;
+	Bool redirected = FALSE, bicubic = pPriv->bicubic;
 	float X1, X2, Y1, Y2;
 	BoxPtr pbox;
 	int nbox;
@@ -322,7 +322,11 @@ NV40PutTextureImage(ScrnInfoPtr pScrn,
 	}
 
 	NV40_LoadVtxProg(pScrn, &nv40_vp_video);
-	if (!NV40_LoadFragProg(pScrn, pPriv->bicubic ?
+
+	if (drw_w / 2 < src_w || drw_h / 2 < src_h)
+		bicubic = FALSE;
+
+	if (!NV40_LoadFragProg(pScrn, bicubic ?
 			       &nv40_fp_yv12_bicubic :
 			       &nv30_fp_yv12_bilinear)) {
 		MARK_UNDO(chan);
-- 
1.7.0.1


--=-qqXAqmwS2+3WML2GfFEt--



More information about the Nouveau mailing list