aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConnor Abbott <[email protected]>2020-05-19 15:39:18 +0200
committerMarge Bot <[email protected]>2020-05-19 19:55:11 +0000
commitda68c727156babbb25392d8c2efeec410cb69d2e (patch)
treec7538ff5cfefcc70d00e42674c155bb6339bff4e
parent3d5cc5ff22164ab8effd5d1cc5ef3a16fb2e0984 (diff)
tu: Fall back to 3d blit path for BC1_RGB_* formats
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5098>
-rw-r--r--src/freedreno/vulkan/tu_clear_blit.c12
1 files changed, 11 insertions, 1 deletions
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,