From: Christoph Bumiller Date: Tue, 2 Apr 2013 22:18:29 +0000 (+0200) Subject: nv50: account for pesky prefetch in size calculation of linear textures X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ba9b0b682f51222752ac56e7a0615f9bbb686089;p=mesa.git nv50: account for pesky prefetch in size calculation of linear textures --- 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; }