broadcom/vc5: Fix regression in the page-cache slice size alignment.
authorEric Anholt <eric@anholt.net>
Fri, 23 Feb 2018 23:35:25 +0000 (15:35 -0800)
committerEric Anholt <eric@anholt.net>
Wed, 28 Feb 2018 21:59:50 +0000 (13:59 -0800)
We need to align the size of the slice, not the offset of the next slice.
Fixes KHR-GLES3.texture_repeat_mode.rgba32ui_11x131_2_clamp_to_edge.

Fixes: b4b4ada7616d ("broadcom/vc5: Fix layout of 3D textures.")
src/gallium/drivers/vc5/vc5_resource.c

index e1645a4fde91b28456329a31ecceaed2324fbdcc..86a0a0c139fd6f15643f73e075d04e3ec7c0582c 100644 (file)
@@ -488,8 +488,7 @@ vc5_setup_slices(struct vc5_resource *rsc)
                 slice->padded_height = level_height;
                 slice->size = level_height * slice->stride;
 
-                offset += slice->size * level_depth;
-
+                uint32_t slice_total_size = slice->size * level_depth;
 
                 /* The HW aligns level 1's base to a page if any of level 1 or
                  * below could be UIF XOR.  The lower levels then inherit the
@@ -499,8 +498,12 @@ vc5_setup_slices(struct vc5_resource *rsc)
                 if (i == 1 &&
                     level_width > 4 * uif_block_w &&
                     level_height > PAGE_CACHE_MINUS_1_5_UB_ROWS * uif_block_h) {
-                        offset = align(offset, VC5_UIFCFG_PAGE_SIZE);
+                        slice_total_size = align(slice_total_size,
+                                                 VC5_UIFCFG_PAGE_SIZE);
                 }
+
+                offset += slice_total_size;
+
         }
         rsc->size = offset;