From c19de0b7f619e0e3677fc9b19bd63a4809e8b715 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 29 Mar 2006 15:21:01 +0000 Subject: FP textures and fixes (Ewald Snel) --- src/mesa/drivers/dri/r300/r300_texmem.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers/dri/r300/r300_texmem.c') diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 90d8b2fd8e..a9f64b47c4 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -382,7 +382,17 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, /* copy (x,y,width,height,data) */ memcpy( &tmp, &t->image[face][hwlevel], sizeof(tmp) ); - if (texImage->TexFormat->TexelBytes) { + if (texImage->TexFormat->TexelBytes > 4) { + const int log2TexelBytes = (3 + (texImage->TexFormat->TexelBytes >> 4)); + tex.format = RADEON_TXFORMAT_I8; /* any 1-byte texel format */ + tex.pitch = MAX2((texImage->Width * texImage->TexFormat->TexelBytes) / 64, 1); + tex.height = imageHeight; + tex.width = imageWidth << log2TexelBytes; + tex.offset += (tmp.x << log2TexelBytes) & ~1023; + tmp.x = tmp.x % (1024 >> log2TexelBytes); + tmp.width = tmp.width << log2TexelBytes; + } + else if (texImage->TexFormat->TexelBytes) { /* use multi-byte upload scheme */ tex.height = imageHeight; tex.width = imageWidth; -- cgit v1.2.3