tu: Fall back to 3d blit path for BC1_RGB_* formats
authorConnor Abbott <cwabbott0@gmail.com>
Tue, 19 May 2020 13:39:18 +0000 (15:39 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 19 May 2020 19:55:11 +0000 (19:55 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5098>

src/freedreno/vulkan/tu_clear_blit.c

index 3c2411e76a42238a1d541e74db612c605bec6511..2b6668a1785dded431233917fc014a8af89eb444 100644 (file)
@@ -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,