From da68c727156babbb25392d8c2efeec410cb69d2e Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 19 May 2020 15:39:18 +0200 Subject: [PATCH] tu: Fall back to 3d blit path for BC1_RGB_* formats Part-of: --- src/freedreno/vulkan/tu_clear_blit.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c index 3c2411e76a4..2b6668a1785 100644 --- a/src/freedreno/vulkan/tu_clear_blit.c +++ b/src/freedreno/vulkan/tu_clear_blit.c @@ -1141,7 +1141,17 @@ tu6_blit_image(struct tu_cmd_buffer *cmd, mask = 0x8; } - if (dst_image->samples > 1) + /* BC1_RGB_* formats need to have their last components overriden with 1 + * when sampling, which is normally handled with the texture descriptor + * swizzle. The 2d path can't handle that, so use the 3d path. + * + * TODO: we could use RB_2D_BLIT_CNTL::MASK to make these formats work with + * the 2d path. + */ + + if (dst_image->samples > 1 || + src_image->vk_format == VK_FORMAT_BC1_RGB_UNORM_BLOCK || + src_image->vk_format == VK_FORMAT_BC1_RGB_SRGB_BLOCK) ops = &r3d_ops; /* TODO: shader path fails some of blit_image.all_formats.generate_mipmaps.* tests, -- 2.30.2