From 7eff8d7d3564f67b3165ec4120d9840580d5eb5a Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Wed, 11 Apr 2018 02:10:29 +0200 Subject: [PATCH] ac/surface: Allow S swizzle for displayable surfaces. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit For dcn1 && < 64 bpp displayable surfaces, addrlib only accepts S swizzles. At the same time addrlib prefers D swizzles is allowed, so we can just allow S swizzles as fallback. Fixes: b64b712558 "ac/surface/gfx9: request desired micro tile mode explicitly" Reviewed-by: Marek Olšák --- src/amd/common/ac_surface.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c index 1b4d72e31bd..7558dd91e34 100644 --- a/src/amd/common/ac_surface.c +++ b/src/amd/common/ac_surface.c @@ -865,9 +865,12 @@ gfx9_get_preferred_swizzle_mode(ADDR_HANDLE addrlib, sin.numSamples = in->numSamples; sin.numFrags = in->numFrags; - if (flags & RADEON_SURF_SCANOUT) + if (flags & RADEON_SURF_SCANOUT) { sin.preferredSwSet.sw_D = 1; - else if (in->flags.depth || in->flags.stencil || is_fmask) + /* Raven only allows S for displayable surfaces with < 64 bpp, so + * allow it as fallback */ + sin.preferredSwSet.sw_S = 1; + } else if (in->flags.depth || in->flags.stencil || is_fmask) sin.preferredSwSet.sw_Z = 1; else sin.preferredSwSet.sw_S = 1; -- 2.30.2