summaryrefslogtreecommitdiff
path: root/src/radeon_exa_render.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2009-04-23 15:46:44 +1000
committerDave Airlie <airlied@redhat.com>2009-04-23 15:46:44 +1000
commitdab3d61619d91ae6a3da3e9b29b8258313653813 (patch)
tree8d484994afccad81269f2e3c8d57b24fc789d420 /src/radeon_exa_render.c
parentbbfd4625478e37d10fd58b23f46153f349370a52 (diff)
r300/r500: set R clamp mode.
On rs690 without this set, we appear to end up fetching from well outside the texture sometimes into memory that isn't mapped. This "shouldn't" have any effect.
Diffstat (limited to 'src/radeon_exa_render.c')
-rw-r--r--src/radeon_exa_render.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index 831a6ff5..b5e36e71 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -1117,23 +1117,28 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
else
txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
+ txfilter |= R300_TX_CLAMP_R(R300_TX_CLAMP_CLAMP_GL);
break;
case RepeatPad:
txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_LAST) |
- R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_LAST);
+ R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_LAST) |
+ R300_TX_CLAMP_R(R300_TX_CLAMP_CLAMP_LAST);
break;
case RepeatReflect:
txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_MIRROR) |
+ R300_TX_CLAMP_T(R300_TX_CLAMP_MIRROR) |
R300_TX_CLAMP_T(R300_TX_CLAMP_MIRROR);
break;
case RepeatNone:
txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL) |
- R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
+ R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL) |
+ R300_TX_CLAMP_R(R300_TX_CLAMP_CLAMP_GL);
break;
}
} else
txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL) |
- R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL);
+ R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL) |
+ R300_TX_CLAMP_R(R300_TX_CLAMP_CLAMP_GL);
switch (pPict->filter) {
case PictFilterNearest: