summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc5
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2018-02-23 15:35:25 -0800
committerEric Anholt <[email protected]>2018-02-28 13:59:50 -0800
commite4e79a02da2e813284aa8a82dfd4423f0ae9923a (patch)
tree9eb4b3b17ef2989be4881c273746204f00ffd575 /src/gallium/drivers/vc5
parenta2c1e48f15995a826dc759e064c2603882a37e0c (diff)
broadcom/vc5: Fix regression in the page-cache slice size alignment.
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.")
Diffstat (limited to 'src/gallium/drivers/vc5')
-rw-r--r--src/gallium/drivers/vc5/vc5_resource.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/drivers/vc5/vc5_resource.c b/src/gallium/drivers/vc5/vc5_resource.c
index e1645a4fde9..86a0a0c139f 100644
--- a/src/gallium/drivers/vc5/vc5_resource.c
+++ b/src/gallium/drivers/vc5/vc5_resource.c
@@ -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;