From 4d6f5cd57282f5af28ac47193810d7a03c4be073 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Fri, 1 Oct 2021 16:41:39 -0700 Subject: [PATCH] freedreno/a6xx: Use fd6_pipe2tex() for the 2D src format. The differences between the two are: - tex supports more formats (fine, we've already decided on which formats we can blit) - FMT6_10_10_10_2_UNORM instead of FMT6_10_10_10_2_UNORM_DEST. - FMT6_A8_UNORM for PIPE_FORMAT_A8_UNORM. For 1555 support we get another difference between tex and color, and we need 2/3 of the tex differences for blit srcs, so switch it over. This also matches what turnip does (except it doesn't have A8 as a format). Part-of: --- src/gallium/drivers/freedreno/a6xx/fd6_blitter.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c index c7d893c14f0..dc79c7f5a94 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c @@ -571,7 +571,7 @@ emit_blit_src(struct fd_ringbuffer *ring, const struct pipe_blit_info *info, unsigned layer, unsigned nr_samples) { struct fd_resource *src = fd_resource(info->src.resource); - enum a6xx_format sfmt = fd6_pipe2color(info->src.format); + enum a6xx_format sfmt = fd6_pipe2tex(info->src.format); enum a6xx_tile_mode stile = fd_resource_tile_mode(info->src.resource, info->src.level); enum a3xx_color_swap sswap = fd6_resource_swap(src, info->src.format); @@ -587,8 +587,8 @@ emit_blit_src(struct fd_ringbuffer *ring, const struct pipe_blit_info *info, enum a3xx_msaa_samples samples = fd_msaa_samples(src->b.b.nr_samples); - if (sfmt == FMT6_10_10_10_2_UNORM_DEST) - sfmt = FMT6_10_10_10_2_UNORM; + if (info->src.format == PIPE_FORMAT_A8_UNORM) + sfmt = FMT6_A8_UNORM; OUT_PKT4(ring, REG_A6XX_SP_PS_2D_SRC_INFO, 10); OUT_RING(ring, A6XX_SP_PS_2D_SRC_INFO_COLOR_FORMAT(sfmt) |