summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2007-01-04 12:34:47 -0800
committerEric Anholt <eric@anholt.net>2007-01-11 17:19:54 -0800
commit45696aa29124e2852f94880642e70bb2e0cee827 (patch)
tree9cf288e726bb4146750889ee7bbbdb5f29cb4a8a
parent6874a6f25ac87783d3770f77b9192e2d36d083a3 (diff)
EXA: Use PRIM3D_RECTLIST instead of TRIFAN so we don't get diagonal tearing.
A side effect is the reduction in vertex dispatch, which is nice.
-rw-r--r--src/i830_exa.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/src/i830_exa.c b/src/i830_exa.c
index f11424f2..f1cd1e36 100644
--- a/src/i830_exa.c
+++ b/src/i830_exa.c
@@ -345,9 +345,9 @@ IntelEXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
int vertex_count;
if (pMask)
- vertex_count = 4*6;
+ vertex_count = 3*6;
else
- vertex_count = 4*4;
+ vertex_count = 3*4;
BEGIN_LP_RING(6+vertex_count);
@@ -357,7 +357,7 @@ IntelEXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
OUT_RING(MI_NOOP);
OUT_RING(MI_NOOP);
- OUT_RING(PRIM3D_INLINE | PRIM3D_TRIFAN | (vertex_count-1));
+ OUT_RING(PRIM3D_INLINE | PRIM3D_RECTLIST | (vertex_count-1));
OUT_RING_F(dstX);
OUT_RING_F(dstY);
@@ -385,15 +385,6 @@ IntelEXAComposite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY,
OUT_RING_F(maskXend / pI830->scale_units[1][0]);
OUT_RING_F(maskYend / pI830->scale_units[1][1]);
}
-
- OUT_RING_F(dstX + w);
- OUT_RING_F(dstY);
- OUT_RING_F(srcXend / pI830->scale_units[0][0]);
- OUT_RING_F(srcY / pI830->scale_units[0][1]);
- if (pMask) {
- OUT_RING_F(maskXend / pI830->scale_units[1][0]);
- OUT_RING_F(maskY / pI830->scale_units[1][1]);
- }
ADVANCE_LP_RING();
}
}