Mesa (master): radeon: Cope better with texture images with no miptrees.

Michel Dänzer daenzer at kemper.freedesktop.org
Sat Oct 3 16:04:03 UTC 2009


Module: Mesa
Branch: master
Commit: b330cebe01c5574e203fa6b9d49fee4c01e1adb6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b330cebe01c5574e203fa6b9d49fee4c01e1adb6

Author: Michel Dänzer <daenzer at vmware.com>
Date:   Sat Oct  3 18:01:58 2009 +0200

radeon: Cope better with texture images with no miptrees.

Fixes crash with compiz magnifier plugin.

---

 src/mesa/drivers/dri/radeon/radeon_texture.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c
index 049284e..7b7392b 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -101,7 +101,12 @@ void radeonFreeTexImageData(GLcontext *ctx, struct gl_texture_image *timage)
 /* Set Data pointer and additional data for mapped texture image */
 static void teximage_set_map_data(radeon_texture_image *image)
 {
-	radeon_mipmap_level *lvl = &image->mt->levels[image->mtlevel];
+	radeon_mipmap_level *lvl;
+
+	if (!image->mt)
+		return;
+
+	lvl = &image->mt->levels[image->mtlevel];
 
 	image->base.Data = image->mt->bo->ptr + lvl->faces[image->mtface].offset;
 	image->base.RowStride = lvl->rowstride / image->mt->bpp;
@@ -969,7 +974,7 @@ int radeon_validate_texture_miptree(GLcontext * ctx, struct gl_texture_object *t
 			radeon_texture_image *image = get_radeon_texture_image(texObj->Image[face][level]);
 			if (RADEON_DEBUG & RADEON_TEXTURE)
 				fprintf(stderr, " face %i, level %i... %p vs %p ", face, level, t->mt, image->mt);
-			if (t->mt == image->mt) {
+			if (t->mt == image->mt || (!image->mt && !image->base.Data)) {
 				if (RADEON_DEBUG & RADEON_TEXTURE)
 					fprintf(stderr, "OK\n");
 




More information about the mesa-commit mailing list