[Mesa-dev] [PATCH] ac/surface: Allow S swizzle for displayable surfaces.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Wed Apr 11 00:10:29 UTC 2018


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"
---
 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 1b4d72e31b..7558dd91e3 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.17.0



More information about the mesa-dev mailing list