summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2018-04-11 02:10:29 +0200
committerBas Nieuwenhuizen <[email protected]>2018-04-12 21:24:55 +0200
commit7eff8d7d3564f67b3165ec4120d9840580d5eb5a (patch)
tree2bc6afc4304c9784b1eef13defb0df1a9a953408
parent7bc77dbb00a1032f79620751b934929eb0b25c66 (diff)
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 <[email protected]>
-rw-r--r--src/amd/common/ac_surface.c7
1 files 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;