r300g: fix alignement for NPOT values in hyperz setup
authorNicolas Peninguy <nico@lostgeeks.org>
Thu, 10 Mar 2011 21:48:44 +0000 (21:48 +0000)
committerMarek Olšák <maraeo@gmail.com>
Fri, 11 Mar 2011 03:36:37 +0000 (04:36 +0100)
With 3 pipes cards we need to align with NPOT values. This fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=32945

Signed-off-by: Nicolas Peninguy <nico@lostgeeks.org>
src/gallium/drivers/r300/r300_texture_desc.c

index 3846fb8b6b380d6492e6984cd99681f968f1db3e..2910666dd512e745801a7f57d4e42eff99f56db7 100644 (file)
@@ -315,7 +315,7 @@ static unsigned r300_pixels_to_dwords(unsigned stride,
                                       unsigned height,
                                       unsigned xblock, unsigned yblock)
 {
-    return (align(stride, xblock) * align(height, yblock)) / (xblock * yblock);
+    return (util_align_npot(stride, xblock) * align(height, yblock)) / (xblock * yblock);
 }
 
 static void r300_setup_hyperz_properties(struct r300_screen *screen,
@@ -390,7 +390,7 @@ static void r300_setup_hyperz_properties(struct r300_screen *screen,
                 tex->tex.zcomp8x8[i] = zcompsize == 8;
 
                 tex->tex.zmask_stride_in_pixels[i] =
-                    align(stride, zmask_blocks_x_per_dw[pipes-1] * zcompsize);
+                    util_align_npot(stride, zmask_blocks_x_per_dw[pipes-1] * zcompsize);
             } else {
                 tex->tex.zmask_dwords[i] = 0;
                 tex->tex.zcomp8x8[i] = FALSE;
@@ -398,7 +398,7 @@ static void r300_setup_hyperz_properties(struct r300_screen *screen,
             }
 
             /* Now setup HIZ. */
-            stride = align(stride, hiz_align_x[pipes-1]);
+            stride = util_align_npot(stride, hiz_align_x[pipes-1]);
             height = align(height, hiz_align_y[pipes-1]);
 
             /* Get the HIZ buffer size in dwords. */