summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2009-08-17 12:17:31 +1000
committerDave Airlie <airlied@itt42.(none)>2009-08-17 12:17:31 +1000
commit36e51c4d63836863dd7a17cbf6e5a9b7c1bbd31a (patch)
treef77b0c1d50430413dc90eeebda386ec1a19895bc
parent595f7c3a60ca982ca2836a0174e1f36f9d1a4fec (diff)
r100/r200: dont emit wrong clamp modes.
for rect textures you don't want to use wrap clamping which is the default.
-rw-r--r--src/radeon_exa_render.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index c35ecba8..4dbdc147 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -410,8 +410,7 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
RADEON_FALLBACK(("Bad filter 0x%x\n", pPict->filter));
}
- if (repeat) {
- switch (pPict->repeatType) {
+ switch (pPict->repeatType) {
case RepeatNormal:
txfilter |= RADEON_CLAMP_S_WRAP | RADEON_CLAMP_T_WRAP;
break;
@@ -422,9 +421,10 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
txfilter |= RADEON_CLAMP_S_MIRROR | RADEON_CLAMP_T_MIRROR;
break;
case RepeatNone:
- /* Nothing to do */
+ /* don't set an illegal clamp mode for rects */
+ if (txformat & RADEON_TXFORMAT_NON_POWER2)
+ txfilter |= RADEON_CLAMP_S_CLAMP_LAST | RADEON_CLAMP_T_CLAMP_LAST;
break;
- }
}
BEGIN_ACCEL_RELOC(5, 1);
@@ -793,8 +793,7 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
RADEON_FALLBACK(("Bad filter 0x%x\n", pPict->filter));
}
- if (repeat) {
- switch (pPict->repeatType) {
+ switch (pPict->repeatType) {
case RepeatNormal:
txfilter |= R200_CLAMP_S_WRAP | R200_CLAMP_T_WRAP;
break;
@@ -805,9 +804,10 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
txfilter |= R200_CLAMP_S_MIRROR | R200_CLAMP_T_MIRROR;
break;
case RepeatNone:
- /* Nothing to do */
+ /* don't set an illegal clamp mode for rect textures */
+ if (txformat & R200_TXFORMAT_NON_POWER2)
+ txfilter |= R200_CLAMP_S_CLAMP_LAST | R200_CLAMP_T_CLAMP_LAST;
break;
- }
}
BEGIN_ACCEL_RELOC(6, 1);