From 1d77569cbc0a425d8b7f8dbe6bb96bcde72c1fe5 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Mon, 2 Jun 2025 13:31:43 -0700 Subject: [PATCH] pan/layout: exclude plane offset from plane data size for import This doesn't affect gallium side behavior since data_size_B is never looked at for imported planar plane. For panvk, it doesn't affect imported single planar image, and multi-planar side is still broken. Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/lib/pan_layout.c | 7 ++++--- src/panfrost/lib/pan_layout.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/panfrost/lib/pan_layout.c b/src/panfrost/lib/pan_layout.c index 627a8b1b9e9..68a630c2003 100644 --- a/src/panfrost/lib/pan_layout.c +++ b/src/panfrost/lib/pan_layout.c @@ -552,11 +552,12 @@ pan_image_layout_init(unsigned arch, const struct pan_image_props *props, /* Arrays and cubemaps have the entire miptree duplicated */ layout->array_stride_B = ALIGN_POT(offset_B, 64); - if (wsi_layout) - layout->data_size_B = offset_B; - else + if (wsi_layout) { + layout->data_size_B = offset_B - wsi_layout->offset_B; + } else { layout->data_size_B = ALIGN_POT( (uint64_t)layout->array_stride_B * (uint64_t)props->array_size, 4096); + } return true; } diff --git a/src/panfrost/lib/pan_layout.h b/src/panfrost/lib/pan_layout.h index d649d7dd4f0..edef9b8efe0 100644 --- a/src/panfrost/lib/pan_layout.h +++ b/src/panfrost/lib/pan_layout.h @@ -89,6 +89,7 @@ struct pan_image_props { struct pan_image_layout { struct pan_image_slice_layout slices[MAX_MIP_LEVELS]; + /* Image plane data size in bytes */ uint64_t data_size_B; uint64_t array_stride_B; };