From bf024c96ad33dccbbd8e823407e085e75171b5a5 Mon Sep 17 00:00:00 2001 From: Jonathan Marek Date: Tue, 12 May 2020 21:31:52 -0400 Subject: [PATCH] freedreno/a6xx: don't use gmem_alignw for imported buffers Signed-off-by: Jonathan Marek Part-of: --- src/gallium/drivers/freedreno/freedreno_resource.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index 5d8a5c76f19..93738e20f74 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -855,7 +855,7 @@ fd_resource_create_with_modifiers(struct pipe_screen *pscreen, struct renderonly_scanout *scanout; struct winsys_handle handle; - /* apply freedreno alignment requirement */ + /* note: alignment is wrong for a6xx */ scanout_templat.width0 = align(tmpl->width0, screen->gmem_alignw); scanout = renderonly_scanout_for_resource(&scanout_templat, @@ -1027,6 +1027,10 @@ fd_resource_from_handle(struct pipe_screen *pscreen, uint32_t pitchalign = fd_screen(pscreen)->gmem_alignw * rsc->layout.cpp; + /* use 64 pitchalign on a6xx where gmem_alignw is not right */ + if (is_a6xx(screen)) + pitchalign = 64 * rsc->layout.cpp; + if ((slice->pitch < align(prsc->width0 * rsc->layout.cpp, pitchalign)) || (slice->pitch & (pitchalign - 1))) goto fail; -- 2.30.2