Mesa (radeon-rewrite): radeon: steal miptree optimisation from intel codebase

Dave Airlie airlied at kemper.freedesktop.org
Tue Feb 17 00:29:44 UTC 2009


Module: Mesa
Branch: radeon-rewrite
Commit: 0a8cba9a65e6ec1159a08725d2101e7eabb4526b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0a8cba9a65e6ec1159a08725d2101e7eabb4526b

Author: Dave Airlie <airlied at redhat.com>
Date:   Tue Feb 17 10:26:58 2009 +1000

radeon: steal miptree optimisation from intel codebase

This replaces a miptree if it won't distrub anything else.

---

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

diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c
index 4aa081c..6949ee4 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -517,6 +517,16 @@ static void radeon_teximage(
 	/* Allocate memory for image */
 	radeonFreeTexImageData(ctx, texImage); /* Mesa core only clears texImage->Data but not image->mt */
 
+	if (t->mt &&
+	    t->mt->firstLevel == level &&
+	    t->mt->lastLevel == level &&
+	    t->mt->target != GL_TEXTURE_CUBE_MAP_ARB &&
+	    !radeon_miptree_matches_image(t->mt, texImage, face, level)) {
+	  fprintf(stderr,"freeing old miptree\n");
+	  radeon_miptree_unreference(t->mt);
+	  t->mt = NULL;
+	}
+
 	if (!t->mt)
 		radeon_try_alloc_miptree(rmesa, t, texImage, face, level);
 	if (t->mt && radeon_miptree_matches_image(t->mt, texImage, face, level)) {




More information about the mesa-commit mailing list