From 29c342649db73b7342c29a36da45fabdef7cea6a Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 30 Jun 2025 14:23:36 -0700 Subject: [PATCH] freedreno: Avoid unnecessarily aligning to gmem_align_w If we aren't going to be rendering to this resource, we don't need to take gmem alignment into account. Signed-off-by: Rob Clark Part-of: --- .../drivers/freedreno/freedreno_resource.c | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index 456c6e508bb..8a2bbaf00a9 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -1531,14 +1531,18 @@ fd_resource_from_handle(struct pipe_screen *pscreen, slice->offset = handle->offset; slice->size0 = handle->stride * prsc->height0; - /* use a pitchalign of gmem_align_w pixels, because GMEM resolve for - * lower alignments is not implemented (but possible for a6xx at least) - * - * for UBWC-enabled resources, layout_resource_for_modifier will further - * validate the pitch and set the right pitchalign - */ - rsc->layout.pitchalign = - fdl_cpp_shift(&rsc->layout) + util_logbase2(screen->info->gmem_align_w); + if (usage & PIPE_HANDLE_USAGE_FRAMEBUFFER_WRITE) { + /* use a pitchalign of gmem_align_w pixels, because GMEM resolve for + * lower alignments is not implemented (but possible for a6xx at least) + * + * for UBWC-enabled resources, layout_resource_for_modifier will further + * validate the pitch and set the right pitchalign + */ + rsc->layout.pitchalign = + fdl_cpp_shift(&rsc->layout) + util_logbase2(screen->info->gmem_align_w); + } else { + rsc->layout.pitchalign = fdl_cpp_shift(&rsc->layout); + } /* apply the minimum pitchalign (note: actually 4 for a3xx but doesn't * matter) */