Mesa (gallium-0.2): nv50: slightly better miptree allocation

Ben Skeggs darktama at kemper.freedesktop.org
Mon Jan 5 22:05:49 UTC 2009


Module: Mesa
Branch: gallium-0.2
Commit: 108942f22a51bc1435c34b04b2c9747825ccefb7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=108942f22a51bc1435c34b04b2c9747825ccefb7

Author: Ben Skeggs <skeggsb at gmail.com>
Date:   Mon Jan  5 14:07:48 2009 +1100

nv50: slightly better miptree allocation

I swear this didn't work last time I tried it..  Anyhow, still only
suitable for 2D miptrees - more coming once I know the layout.

---

 src/gallium/drivers/nv50/nv50_miptree.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/nv50/nv50_miptree.c b/src/gallium/drivers/nv50/nv50_miptree.c
index 28a8bdc..0e46a2b 100644
--- a/src/gallium/drivers/nv50/nv50_miptree.c
+++ b/src/gallium/drivers/nv50/nv50_miptree.c
@@ -31,7 +31,7 @@ nv50_miptree_create(struct pipe_screen *pscreen, const struct pipe_texture *pt)
 {
 	struct pipe_winsys *ws = pscreen->winsys;
 	struct nv50_miptree *mt = CALLOC_STRUCT(nv50_miptree);
-	unsigned usage, pitch;
+	unsigned usage, pitch, width, height;
 
 	mt->base = *pt;
 	mt->base.refcount = 1;
@@ -47,11 +47,12 @@ nv50_miptree_create(struct pipe_screen *pscreen, const struct pipe_texture *pt)
 		break;
 	}
 
-	pitch = ((pt->width[0] + 63) & ~63) * pt->block.size;
-	/*XXX*/
-	pitch *= 2;
+	width = align(pt->width[0], 8);
+	height = align(pt->height[0], 8);
+	pitch = width * pt->block.size;
+	pitch = (pitch + 63) & ~63;
 
-	mt->buffer = ws->buffer_create(ws, 256, usage, pitch * pt->height[0]);
+	mt->buffer = ws->buffer_create(ws, 256, usage, pitch * height);
 	if (!mt->buffer) {
 		FREE(mt);
 		return NULL;




More information about the mesa-commit mailing list