diff options
author | Dave Airlie <[email protected]> | 2011-01-20 14:34:32 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2011-01-20 14:35:09 +1000 |
commit | 8c68362d7c3ab9a49714b59255d05c871d8d2eff (patch) | |
tree | 85498308cacab22ebfd3970cda4732925c468dd6 /src | |
parent | 7e86d9bd8c48626c9f2dbd8b96da055e329d5bc1 (diff) |
r200: fix up some problems with TFP on r200
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/r200/r200_texstate.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c index 24fb031ecb9..7adf9ad73ed 100644 --- a/src/mesa/drivers/dri/r200/r200_texstate.c +++ b/src/mesa/drivers/dri/r200/r200_texstate.c @@ -777,10 +777,9 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format struct radeon_framebuffer *rfb; radeonTexObjPtr t; uint32_t pitch_val; - uint32_t internalFormat, type, format; + uint32_t internalFormat, format; gl_format texFormat; - type = GL_BGRA; format = GL_UNSIGNED_BYTE; internalFormat = (texture_format == __DRI_TEXTURE_FORMAT_RGB ? 3 : 4); @@ -860,9 +859,20 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format t->pp_txsize = ((rb->base.Width - 1) << RADEON_TEX_USIZE_SHIFT) | ((rb->base.Height - 1) << RADEON_TEX_VSIZE_SHIFT); - t->pp_txformat |= R200_TXFORMAT_NON_POWER2; - t->pp_txpitch = pitch_val; - t->pp_txpitch -= 32; + + if (target == GL_TEXTURE_RECTANGLE_NV) { + t->pp_txformat |= R200_TXFORMAT_NON_POWER2; + t->pp_txpitch = pitch_val; + t->pp_txpitch -= 32; + } else { + t->pp_txformat &= ~(R200_TXFORMAT_WIDTH_MASK | + R200_TXFORMAT_HEIGHT_MASK | + R200_TXFORMAT_CUBIC_MAP_ENABLE | + R200_TXFORMAT_F5_WIDTH_MASK | + R200_TXFORMAT_F5_HEIGHT_MASK); + t->pp_txformat |= ((texImage->WidthLog2 << R200_TXFORMAT_WIDTH_SHIFT) | + (texImage->HeightLog2 << R200_TXFORMAT_HEIGHT_SHIFT)); + } t->validated = GL_TRUE; _mesa_unlock_texture(radeon->glCtx, texObj); |