ac/surface: Allow S swizzle for displayable surfaces.

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 <marek.olsak@amd.com>
This commit is contained in:
Bas Nieuwenhuizen 2018-04-11 02:10:29 +02:00
parent 7bc77dbb00
commit 7eff8d7d35

View file

@ -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;