From c4ac522511d20683c09441a9e96ddfbc1b540c00 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sun, 17 Sep 2017 20:17:33 -0700 Subject: [PATCH] ac/surface: handle S8 on gfx9 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit If we don't have a depth piece, we don't get a correct swizzle mode and we hit an assert in addrlib. In case of no depth get the preferrred swizzle mode for stencil alone. Reviewed-by: Marek Olšák Cc: "17.2" Signed-off-by: Dave Airlie --- src/amd/common/ac_surface.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c index 88cc8a10681..850d70715e5 100644 --- a/src/amd/common/ac_surface.c +++ b/src/amd/common/ac_surface.c @@ -1138,9 +1138,14 @@ static int gfx9_compute_surface(ADDR_HANDLE addrlib, /* Calculate texture layout information for stencil. */ if (surf->flags & RADEON_SURF_SBUFFER) { - AddrSurfInfoIn.bpp = 8; - AddrSurfInfoIn.flags.depth = 0; AddrSurfInfoIn.flags.stencil = 1; + AddrSurfInfoIn.bpp = 8; + + if (!AddrSurfInfoIn.flags.depth) + r = gfx9_get_preferred_swizzle_mode(addrlib, &AddrSurfInfoIn, false, + &AddrSurfInfoIn.swizzleMode); + else + AddrSurfInfoIn.flags.depth = 0; r = gfx9_compute_miptree(addrlib, surf, compressed, &AddrSurfInfoIn); if (r) -- 2.30.2