From: Kristian H. Kristensen Date: Tue, 26 Nov 2019 05:50:57 +0000 (-0800) Subject: freedreno/a6xx: Pick blitter swap based on resource tiling X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e0ebaa819df33de74f73f42e17536f4f2dc5446a;p=mesa.git freedreno/a6xx: Pick blitter swap based on resource tiling The linear levels in a tiled resource are stored in the canonical swap, WZYX. We need to pick the swap based on whether or not the resource is tiled, not whether the the level in question is tiled. Reviewed-by: Eric Anholt Signed-off-by: Kristian H. Kristensen Part-of: --- diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c index 98e2ab9d71c..58b564f8f4b 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c @@ -387,8 +387,11 @@ emit_blit_or_clear_texture(struct fd_context *ctx, struct fd_ringbuffer *ring, stile = fd_resource_tile_mode(info->src.resource, info->src.level); dtile = fd_resource_tile_mode(info->dst.resource, info->dst.level); - sswap = stile ? WZYX : fd6_pipe2swap(info->src.format); - dswap = dtile ? WZYX : fd6_pipe2swap(info->dst.format); + /* Linear levels of a tiled resource are always WZYX, so look at + * rsc->tile_mode to determine the swap. + */ + sswap = src->layout.tile_mode ? WZYX : fd6_pipe2swap(info->src.format); + dswap = dst->layout.tile_mode ? WZYX : fd6_pipe2swap(info->dst.format); if (util_format_is_compressed(info->src.format)) { debug_assert(info->src.format == info->dst.format);