summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mga_exa.c13
-rw-r--r--src/mga_reg.h1
2 files changed, 10 insertions, 4 deletions
diff --git a/src/mga_exa.c b/src/mga_exa.c
index a5812ad..7ba62d5 100644
--- a/src/mga_exa.c
+++ b/src/mga_exa.c
@@ -412,6 +412,7 @@ PrepareSourceTexture(int tmu, PicturePtr pSrcPicture, PixmapPtr pSrc)
int texctl = MGA_PITCHLIN | ((pitch & (2048 - 1)) << 9) |
MGA_NOPERSPECTIVE | MGA_TAKEY;
int texctl2 = MGA_G400_TC2_MAGIC | MGA_TC2_CKSTRANSDIS;
+ int texfilter = MGA_FILTERALPHA | (0x10 << 21);
for (i = 0; i < sizeof(texformats) / sizeof(texformats[0]); i++) {
if (texformats[i].fmt == pSrcPicture->format) {
@@ -420,6 +421,11 @@ PrepareSourceTexture(int tmu, PicturePtr pSrcPicture, PixmapPtr pSrc)
}
}
+ if (pSrcPicture->filter == PictFilterBilinear)
+ texfilter |= MGA_MAG_BILIN | MGA_MIN_BILIN;
+ else
+ texfilter |= MGA_MAG_NRST | MGA_MIN_NRST;
+
if (!pSrcPicture->repeat)
texctl |= MGA_CLAMPUV;
@@ -429,15 +435,14 @@ PrepareSourceTexture(int tmu, PicturePtr pSrcPicture, PixmapPtr pSrc)
WAITFIFO(6);
OUTREG(MGAREG_TEXCTL2, texctl2);
OUTREG(MGAREG_TEXCTL, texctl);
+
/* Source (texture) address + pitch */
OUTREG(MGAREG_TEXORG, exaGetPixmapOffset(pSrc));
OUTREG(MGAREG_TEXWIDTH, (w - 1) << 18 | ((8 - w_log2) & 63) << 9 | w_log2);
OUTREG(MGAREG_TEXHEIGHT, (h - 1) << 18 | ((8 - h_log2) & 63) << 9 | h_log2);
+
/* Set blit filtering flags */
- if (pSrcPicture->filter == PictFilterBilinear)
- OUTREG(MGAREG_TEXFILTER, (0x10 << 21) | MGA_MAG_BILIN | MGA_MIN_BILIN);
- else
- OUTREG(MGAREG_TEXFILTER, (0x10 << 21) | MGA_MAG_NRST | MGA_MIN_NRST);
+ OUTREG(MGAREG_TEXFILTER, texfilter);
if (tmu == 1) {
WAITFIFO(1);
diff --git a/src/mga_reg.h b/src/mga_reg.h
index 8e844f2..9a64955 100644
--- a/src/mga_reg.h
+++ b/src/mga_reg.h
@@ -502,6 +502,7 @@
# define MGA_MIN_ANISO (0x0000000D)
# define MGA_MAG_NRST (0x00000000)
# define MGA_MAG_BILIN (0x00000020)
+# define MGA_FILTERALPHA (0x00100000)
#define MGAREG_ALPHASTART 0x2c70
#define MGAREG_ALPHAXINC 0x2c74
#define MGAREG_ALPHAYINC 0x2c78