From 8c59aacc10c1bdcb0b4febfe2b8068309516194d 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: --- src/freedreno/ci/freedreno-a618-fails.txt | 11 ----------- src/freedreno/fdl/fd6_layout.c | 2 +- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/freedreno/ci/freedreno-a618-fails.txt b/src/freedreno/ci/freedreno-a618-fails.txt index c437bbfa9ba..2f687d2aaf0 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 - # glcts update dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear,Fail KHR-GL46.texture_view.view_classes,Fail diff --git a/src/freedreno/fdl/fd6_layout.c b/src/freedreno/fdl/fd6_layout.c index d85f86b97cd..dd32d470e42 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; }