Mesa (master): nouveau: only try to get new storage if there are any levels

Ilia Mirkin imirkin at kemper.freedesktop.org
Wed Aug 13 14:12:21 UTC 2014


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

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Sun Aug 10 11:52:55 2014 -0400

nouveau: only try to get new storage if there are any levels

This would try to allocate 0-sized bo's when the max level was below the
base level.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Francisco Jerez <currojerez at riseup.net>

---

 src/mesa/drivers/dri/nouveau/nouveau_texture.c |   23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
index e7d5c02..4626cc3 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
@@ -345,16 +345,19 @@ relayout_texture(struct gl_context *ctx, struct gl_texture_object *t)
 			height = minify(height, 1);
 		}
 
-		/* Get new storage. */
-		size = align(offset, 64);
-
-		ret = nouveau_bo_new(context_dev(ctx), NOUVEAU_BO_MAP |
-				     NOUVEAU_BO_GART | NOUVEAU_BO_VRAM,
-				     0, size, NULL, &ss[last].bo);
-		assert(!ret);
-
-		for (i = t->BaseLevel; i < last; i++)
-			nouveau_bo_ref(ss[last].bo, &ss[i].bo);
+		if (t->BaseLevel <= last) {
+			/* Get new storage. */
+			size = align(offset, 64);
+			assert(size);
+
+			ret = nouveau_bo_new(context_dev(ctx), NOUVEAU_BO_MAP |
+					     NOUVEAU_BO_GART | NOUVEAU_BO_VRAM,
+					     0, size, NULL, &ss[last].bo);
+			assert(!ret);
+
+			for (i = t->BaseLevel; i < last; i++)
+				nouveau_bo_ref(ss[last].bo, &ss[i].bo);
+		}
 	}
 }
 




More information about the mesa-commit mailing list