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

Author: Christoph Bumiller <e0425...@student.tuwien.ac.at>
Date:   Wed Apr  3 00:18:29 2013 +0200

nv50: account for pesky prefetch in size calculation of linear textures

---

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

diff --git a/src/gallium/drivers/nv50/nv50_miptree.c 
b/src/gallium/drivers/nv50/nv50_miptree.c
index 5c839a8..ed0f8c2 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;
 }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to