From ba9b0b682f51222752ac56e7a0615f9bbb686089 Mon Sep 17 00:00:00 2001 From: Christoph Bumiller Date: Wed, 3 Apr 2013 00:18:29 +0200 Subject: [PATCH] nv50: account for pesky prefetch in size calculation of linear textures --- src/gallium/drivers/nv50/nv50_miptree.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/nv50/nv50_miptree.c b/src/gallium/drivers/nv50/nv50_miptree.c index 5c839a81104..ed0f8c2b2f1 100644 --- a/src/gallium/drivers/nv50/nv50_miptree.c +++ b/src/gallium/drivers/nv50/nv50_miptree.c @@ -217,6 +217,7 @@ nv50_miptree_init_layout_linear(struct nv50_miptree *mt) { struct pipe_resource *pt = &mt->base.base; const unsigned blocksize = util_format_get_blocksize(pt->format); + unsigned h = pt->height0; if (util_format_is_depth_or_stencil(pt->format)) return FALSE; @@ -228,7 +229,11 @@ nv50_miptree_init_layout_linear(struct nv50_miptree *mt) mt->level[0].pitch = align(pt->width0 * blocksize, 64); - mt->total_size = mt->level[0].pitch * pt->height0; + /* Account for very generous prefetch (allocate size as if tiled). */ + h = MAX2(h, 8); + h = util_next_power_of_two(h); + + mt->total_size = mt->level[0].pitch * h; return TRUE; } -- 2.30.2