From: Dave Airlie Date: Mon, 18 Sep 2017 03:17:33 +0000 (-0700) Subject: ac/surface: handle S8 on gfx9 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c4ac522511d20683c09441a9e96ddfbc1b540c00;p=mesa.git ac/surface: handle S8 on gfx9 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 --- 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)