From 767818d8d97cd98581138889dd0c004cb42a4fb6 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 18 Feb 2025 14:05:07 -0500 Subject: [PATCH] tu: Handle D32S8 -> R32 and R32 -> D32S8 copies When we copy the depth aspect of a D32S8 image to or from a R32 image, we don't need to split the copy or modify the aspect mask. Limit this path to "true" D32S8->D32S8 copies. Part-of: --- src/freedreno/vulkan/tu_clear_blit.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/freedreno/vulkan/tu_clear_blit.cc b/src/freedreno/vulkan/tu_clear_blit.cc index db79a72c885..1c1cc8bb2e1 100644 --- a/src/freedreno/vulkan/tu_clear_blit.cc +++ b/src/freedreno/vulkan/tu_clear_blit.cc @@ -3028,7 +3028,8 @@ tu_CmdCopyImage2(VkCommandBuffer commandBuffer, VK_FROM_HANDLE(tu_image, dst_image, pCopyImageInfo->dstImage); for (uint32_t i = 0; i < pCopyImageInfo->regionCount; ++i) { - if (src_image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) { + if (src_image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT && + dst_image->vk.format == VK_FORMAT_D32_SFLOAT_S8_UINT) { VkImageCopy2 info = pCopyImageInfo->pRegions[i]; u_foreach_bit(b, info.dstSubresource.aspectMask) { info.srcSubresource.aspectMask = BIT(b);