From 2c490cd4e3da4a0f484f97bc339beb43950d110c Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sun, 6 Feb 2022 10:06:00 -0500 Subject: [PATCH] asahi: Align linear texture's strides to 64 bytes Required to pack the stride, and should improve cache performance. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/asahi/agx_pipe.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index 4da5409e810..2b8ee981883 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -178,8 +178,11 @@ agx_resource_create(struct pipe_screen *screen, height = ALIGN_POT(height, tile); } - nresource->slices[l].line_stride = - util_format_get_stride(templ->format, width); + /* Align stride to presumed cache line */ + nresource->slices[l].line_stride = util_format_get_stride(templ->format, width); + if (nresource->modifier == DRM_FORMAT_MOD_LINEAR) { + nresource->slices[l].line_stride = ALIGN_POT(nresource->slices[l].line_stride, 64); + } nresource->slices[l].offset = offset; offset += ALIGN_POT(nresource->slices[l].line_stride * height, 0x80);