Mesa (master): turnip: support copying both aspects of D32_SFLOAT_S8_UINT

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Apr 12 15:21:06 UTC 2021


Module: Mesa
Branch: master
Commit: 16fd5bd99654d4f148ccce55a0aef0a54bdd5a12
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=16fd5bd99654d4f148ccce55a0aef0a54bdd5a12

Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date:   Fri Apr  9 18:02:26 2021 +0300

turnip: support copying both aspects of D32_SFLOAT_S8_UINT

We cannot copy both aspects at the same time, so copy them one by one.

Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10140>

---

 src/freedreno/vulkan/tu_clear_blit.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c
index 425f723969e..57e812433c0 100644
--- a/src/freedreno/vulkan/tu_clear_blit.c
+++ b/src/freedreno/vulkan/tu_clear_blit.c
@@ -1590,8 +1590,19 @@ tu_CmdCopyImage(VkCommandBuffer commandBuffer,
    TU_FROM_HANDLE(tu_image, src_image, srcImage);
    TU_FROM_HANDLE(tu_image, dst_image, destImage);
 
-   for (uint32_t i = 0; i < regionCount; ++i)
+   for (uint32_t i = 0; i < regionCount; ++i) {
+      if (src_image->vk_format == VK_FORMAT_D32_SFLOAT_S8_UINT) {
+         VkImageCopy info = pRegions[i];
+         u_foreach_bit(b, pRegions[i].dstSubresource.aspectMask) {
+            info.srcSubresource.aspectMask = BIT(b);
+            info.dstSubresource.aspectMask = BIT(b);
+            tu_copy_image_to_image(cmd, src_image, dst_image, &info);
+         }
+         continue;
+      }
+
       tu_copy_image_to_image(cmd, src_image, dst_image, pRegions + i);
+   }
 }
 
 static void



More information about the mesa-commit mailing list