From 27df52f55895cdabc918c945ebddba4cd06fe2fa Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 7 Aug 2025 15:09:45 -0700 Subject: [PATCH] freedreno/layout: Don't align explicit layouts to page size This could cause importing buffers, in particular multiplanar YUV, since when the offset of the plane is added, the aligned size could be beyond the end of the buffer. Fixes: 27b0f64b3ed0 ("freedreno/a6xx: Use handle for explicit layout") Signed-off-by: Rob Clark Part-of: (cherry picked from commit 8c59aacc10c1bdcb0b4febfe2b8068309516194d) --- .pick_status.json | 2 +- src/freedreno/ci/freedreno-a618-fails.txt | 11 ----------- src/freedreno/fdl/fd6_layout.c | 2 +- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 3beb2846f68..f5e9198342d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5364,7 +5364,7 @@ "description": "freedreno/layout: Don't align explicit layouts to page size", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "27b0f64b3ed04c7ebf98405cd5515af44be9ee24", "notes": null diff --git a/src/freedreno/ci/freedreno-a618-fails.txt b/src/freedreno/ci/freedreno-a618-fails.txt index d9a90fb757c..27b9f1b1962 100644 --- a/src/freedreno/ci/freedreno-a618-fails.txt +++ b/src/freedreno/ci/freedreno-a618-fails.txt @@ -226,17 +226,6 @@ spec@arb_base_instance@arb_base_instance-drawarrays,Fail spec@ext_base_instance@arb_base_instance-baseinstance-doesnt-affect-gl-instance-id_gles3,Fail spec@ext_base_instance@arb_base_instance-drawarrays_gles3,Fail -# Bad assumptions in piglit about layout of multiplanar formats, -# it should use separate buffers per plane: -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-export,Fail -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_nv12,Fail -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_nv21,Fail -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_p010,Fail -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_p012,Fail -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_p016,Fail -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_yuv420,Fail -spec@ext_image_dma_buf_import@ext_image_dma_buf_import-sample_yvu420,Fail - # Regression from https://gitlab.freedesktop.org/mesa/mesa/-/compare/ace49d9e52a6156f114ee00eec759d734bd84fc0...88c79a13b9056099048080e7d41576e0cb69c347 spec@glsl-1.50@execution@variable-indexing@vs-output-array-vec2-index-wr-before-gs,Fail spec@glsl-1.50@execution@variable-indexing@vs-output-array-vec3-index-wr-before-gs,Fail diff --git a/src/freedreno/fdl/fd6_layout.c b/src/freedreno/fdl/fd6_layout.c index d5464ee624a..dfd60d0bd3a 100644 --- a/src/freedreno/fdl/fd6_layout.c +++ b/src/freedreno/fdl/fd6_layout.c @@ -317,7 +317,7 @@ fdl6_layout_image(struct fdl_layout *layout, const struct fd_dev_info *info, } } - if (layout->layer_first) { + if (layout->layer_first && !explicit_layout) { layout->layer_size = align64(layout->size, 4096); layout->size = layout->layer_size * params->array_size; }