From 12d428bc689d1508e2efb8ebe0012f446bfdb94c Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Thu, 11 Jan 2024 14:55:15 -0800 Subject: [PATCH] venus: avoid redundant layout transition for optimal internal layout This ensures no extra barriers when internal layout is wsi layout. Signed-off-by: Yiwei Zhang Part-of: --- src/virtio/vulkan/vn_render_pass.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/virtio/vulkan/vn_render_pass.c b/src/virtio/vulkan/vn_render_pass.c index c2f17482c31..ac229183742 100644 --- a/src/virtio/vulkan/vn_render_pass.c +++ b/src/virtio/vulkan/vn_render_pass.c @@ -76,25 +76,33 @@ } \ } while (false) -static void +static inline void vn_render_pass_count_present_src(const VkRenderPassCreateInfo *create_info, uint32_t *initial_count, uint32_t *final_count) { + if (VN_PRESENT_SRC_INTERNAL_LAYOUT == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR) { + *initial_count = *final_count = 0; + return; + } COUNT_PRESENT_SRC(create_info->pAttachments, create_info->attachmentCount, initial_count, final_count); } -static void +static inline void vn_render_pass_count_present_src2(const VkRenderPassCreateInfo2 *create_info, uint32_t *initial_count, uint32_t *final_count) { + if (VN_PRESENT_SRC_INTERNAL_LAYOUT == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR) { + *initial_count = *final_count = 0; + return; + } COUNT_PRESENT_SRC(create_info->pAttachments, create_info->attachmentCount, initial_count, final_count); } -static void +static inline void vn_render_pass_replace_present_src(struct vn_render_pass *pass, const VkRenderPassCreateInfo *create_info, VkAttachmentDescription *out_atts) @@ -103,7 +111,7 @@ vn_render_pass_replace_present_src(struct vn_render_pass *pass, create_info->attachmentCount, out_atts); } -static void +static inline void vn_render_pass_replace_present_src2(struct vn_render_pass *pass, const VkRenderPassCreateInfo2 *create_info, VkAttachmentDescription2 *out_atts)