diff options
| author | Robert Noland <rnoland@2hip.net> | 2009-10-19 09:47:39 -0500 | 
|---|---|---|
| committer | Alex Deucher <alexdeucher@gmail.com> | 2009-10-19 11:09:10 -0400 | 
| commit | 8123180ea649540fb7319bc79ad77dca0d5d68cd (patch) | |
| tree | cb326aad724136c51dd684b0a182db7aa7de221a | |
| parent | 3594b53c0173ac810106f667604bf94b5cfc4a1e (diff) | |
r600: Fix size calculation for 24 bit depth
size was being calculated based on 3 bytes per pixel with 24 bit depth
instead of 4 bytes.  This caused corruption in the bottom 25% of objects.
This finishes fixing the menu/text corruption in compiz/kde4.
Signed-off-by: Robert Noland <rnoland@2hip.net>
| -rw-r--r-- | src/mesa/drivers/dri/r600/r600_texstate.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c index 61ff7e8158..a30703e41b 100644 --- a/src/mesa/drivers/dri/r600/r600_texstate.c +++ b/src/mesa/drivers/dri/r600/r600_texstate.c @@ -723,7 +723,7 @@ void r600SetTexOffset(__DRIcontext * pDRICtx, GLint texname,  	radeonTexObjPtr t = radeon_tex_obj(tObj);  	int firstlevel = t->mt ? t->mt->firstLevel : 0;  	const struct gl_texture_image *firstImage; -	uint32_t pitch_val, size, row_align; +	uint32_t pitch_val, size, row_align, bpp;  	if (!tObj)  		return; @@ -733,9 +733,13 @@ void r600SetTexOffset(__DRIcontext * pDRICtx, GLint texname,  	if (!offset)  		return; +	bpp = depth / 8; +	if (bpp == 3)  +		bpp = 4; +  	firstImage = t->base.Image[0][firstlevel];  	row_align = rmesa->radeon.texture_row_align - 1; -	size = ((firstImage->Width * (depth / 8) + row_align) & ~row_align) * firstImage->Height; +	size = ((firstImage->Width * bpp + row_align) & ~row_align) * firstImage->Height;  	if (t->bo) {  		radeon_bo_unref(t->bo);  		t->bo = NULL; | 
