diff options
author | Dave Airlie <airlied@linux.ie> | 2009-04-24 17:30:57 +1000 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2009-04-24 17:32:20 +1000 |
commit | 5998f262a52cb85b334fcc1fe24c7b2ae474ce93 (patch) | |
tree | 973de42ea986796816f8fbb8ed30c8ec289ded93 /src/radeon_exa_render.c | |
parent | 7ed27b926f28a1f088eace5034a7d9985f13752d (diff) |
radeon: attempt to fix R clamping for repeat again
Diffstat (limited to 'src/radeon_exa_render.c')
-rw-r--r-- | src/radeon_exa_render.c | 65 |
1 files changed, 30 insertions, 35 deletions
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c index 71f96523..02bada4d 100644 --- a/src/radeon_exa_render.c +++ b/src/radeon_exa_render.c @@ -1104,41 +1104,36 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, txfilter = (unit << R300_TX_ID_SHIFT); - if (pPict->repeat) { - switch (pPict->repeatType) { - case RepeatNormal: - if (unit != 0 || !info->accel_state->need_src_tile_x) - txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP); - else - txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL); - - if (unit != 0 || !info->accel_state->need_src_tile_y) - txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP); - 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_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_R(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_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_R(R300_TX_CLAMP_CLAMP_GL); + switch (pPict->repeatType) { + case RepeatNormal: + if (unit != 0 || !info->accel_state->need_src_tile_x) + txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP); + else + txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL); + + if (unit != 0 || !info->accel_state->need_src_tile_y) + txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP); + else + txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL); + + txfilter |= R300_TX_CLAMP_R(R300_TX_CLAMP_CLAMP_BORDER); + 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_R(R300_TX_CLAMP_CLAMP_BORDER); + break; + case RepeatReflect: + txfilter |= R300_TX_CLAMP_S(R300_TX_CLAMP_MIRROR) | + R300_TX_CLAMP_T(R300_TX_CLAMP_MIRROR) | + R300_TX_CLAMP_R(R300_TX_CLAMP_CLAMP_BORDER); + 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_R(R300_TX_CLAMP_CLAMP_BORDER); + break; + } switch (pPict->filter) { case PictFilterNearest: |