tu: Flush depth on depth img transition from undef layout
authorDanylo Piliaiev <dpiliaiev@igalia.com>
Fri, 5 Aug 2022 12:49:49 +0000 (15:49 +0300)
committerMarge Bot <emma+marge@anholt.net>
Mon, 8 Aug 2022 13:01:28 +0000 (13:01 +0000)
Same logic as in tu_subpass_barrier.

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

src/freedreno/vulkan/tu_cmd_buffer.c

index f4c8ed4..cf3ac6e 100644 (file)
@@ -5321,7 +5321,13 @@ tu_barrier(struct tu_cmd_buffer *cmd,
           * to the image. We don't want these entries being flushed later and
           * overwriting the actual image, so we need to flush the CCU.
           */
-         src_flags |= TU_ACCESS_CCU_COLOR_INCOHERENT_WRITE;
+         TU_FROM_HANDLE(tu_image, image, dep_info->pImageMemoryBarriers[i].image);
+
+         if (vk_format_is_depth_or_stencil(image->vk.format)) {
+            src_flags |= TU_ACCESS_CCU_DEPTH_INCOHERENT_WRITE;
+         } else {
+            src_flags |= TU_ACCESS_CCU_COLOR_INCOHERENT_WRITE;
+         }
       }
       VkPipelineStageFlags2 sanitized_src_stage =
          sanitize_src_stage(dep_info->pImageMemoryBarriers[i].srcStageMask);