diff --git a/src/nouveau/nil/nil_image.c b/src/nouveau/nil/nil_image.c index f6577951894..7caeaa238fa 100644 --- a/src/nouveau/nil/nil_image.c +++ b/src/nouveau/nil/nil_image.c @@ -188,8 +188,11 @@ nil_image_init(struct nouveau_ws_device *dev, (uint64_t)lvl_ext_B.d; } + /* Align the image and array stride to a single level0 tile */ + image->align_B = nil_tiling_size_B(image->levels[0].tiling); + /* I have no idea why but hardware seems to align layer strides */ - image->array_stride_B = ALIGN(layer_size_B, 0x800); + image->array_stride_B = ALIGN(layer_size_B, image->align_B); image->size_B = (uint64_t)image->array_stride_B * image->extent_px.a; diff --git a/src/nouveau/nil/nil_image.h b/src/nouveau/nil/nil_image.h index e8378492171..69573954073 100644 --- a/src/nouveau/nil/nil_image.h +++ b/src/nouveau/nil/nil_image.h @@ -101,6 +101,7 @@ struct nil_image { uint32_t array_stride_B; + uint32_t align_B; uint64_t size_B; };