Module: Mesa
Branch: main
Commit: 2ed4f048699b6ca065a8fc8f4c5ed009a519add7
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ed4f048699b6ca065a8fc8f4c5ed009a519add7

Author: Yiwei Zhang <[email protected]>
Date:   Tue Jul 11 20:24:31 2023 -0700

venus: use in_render_pass to skip present_src counting

It's an early return also benefiting dynamic rendering. We then no
longer need to track the legacy pass from inheritance info.

Signed-off-by: Yiwei Zhang <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24103>

---

 src/virtio/vulkan/vn_command_buffer.c | 26 +++++++++-----------------
 1 file changed, 9 insertions(+), 17 deletions(-)

diff --git a/src/virtio/vulkan/vn_command_buffer.c 
b/src/virtio/vulkan/vn_command_buffer.c
index 153416304da..41b1b74f742 100644
--- a/src/virtio/vulkan/vn_command_buffer.c
+++ b/src/virtio/vulkan/vn_command_buffer.c
@@ -316,7 +316,7 @@ vn_cmd_wait_events_fix_image_memory_barriers(
 {
    *out_transfer_count = 0;
 
-   if (cmd->builder.render_pass ||
+   if (cmd->builder.in_render_pass ||
        !vn_image_memory_barrier_has_present_src(src_barriers, count))
       return src_barriers;
 
@@ -369,7 +369,7 @@ vn_cmd_pipeline_barrier_fix_image_memory_barriers(
    const VkImageMemoryBarrier *src_barriers,
    uint32_t count)
 {
-   if (cmd->builder.render_pass ||
+   if (cmd->builder.in_render_pass ||
        !vn_image_memory_barrier_has_present_src(src_barriers, count))
       return src_barriers;
 
@@ -393,7 +393,7 @@ vn_cmd_fix_dependency_infos(struct vn_command_buffer *cmd,
                             uint32_t dep_count,
                             const VkDependencyInfo *dep_infos)
 {
-   if (cmd->builder.render_pass ||
+   if (cmd->builder.in_render_pass ||
        !vn_dependency_info_has_present_src(dep_count, dep_infos))
       return dep_infos;
 
@@ -636,20 +636,19 @@ static void
 vn_cmd_end_render_pass(struct vn_command_buffer *cmd)
 {
    const struct vn_render_pass *pass = cmd->builder.render_pass;
+   const struct vn_image **images = cmd->builder.present_src_images;
 
    vn_cmd_record_batched_query_feedback(cmd);
 
    cmd->builder.render_pass = NULL;
+   cmd->builder.present_src_images = NULL;
    cmd->builder.in_render_pass = false;
    cmd->builder.subpass_index = 0;
    cmd->builder.view_mask = 0;
 
-   if (!pass->present_count || !cmd->builder.present_src_images)
+   if (!pass->present_count || !images)
       return;
 
-   const struct vn_image **images = cmd->builder.present_src_images;
-   cmd->builder.present_src_images = NULL;
-
    if (pass->present_release_count) {
       vn_cmd_transfer_present_src_images(
          cmd, false, images + pass->present_acquire_count,
@@ -1066,20 +1065,14 @@ vn_BeginCommandBuffer(VkCommandBuffer commandBuffer,
 
    if (inheritance_info) {
       cmd->builder.in_render_pass = local_begin_info.in_render_pass;
-      if (local_begin_info.has_inherited_pass) {
-         const struct vn_render_pass *pass =
-            vn_render_pass_from_handle(inheritance_info->renderPass);
-
-         /* Track the inherited render pass in the secondary cmd to fix wsi
-          * image ownership and layout transitions.
-          */
-         cmd->builder.render_pass = pass;
 
+      if (local_begin_info.has_inherited_pass) {
          /* Store the viewMask from the inherited render pass subpass for
           * query feedback.
           */
          cmd->builder.view_mask = vn_render_pass_get_subpass_view_mask(
-            pass, inheritance_info->subpass);
+            vn_render_pass_from_handle(inheritance_info->renderPass),
+            inheritance_info->subpass);
       } else {
          /* Store the viewMask from the
           * VkCommandBufferInheritanceRenderingInfo.
@@ -1088,7 +1081,6 @@ vn_BeginCommandBuffer(VkCommandBuffer commandBuffer,
             *inheritance_rendering_info = vk_find_struct_const(
                inheritance_info->pNext,
                COMMAND_BUFFER_INHERITANCE_RENDERING_INFO);
-
          if (inheritance_rendering_info)
             cmd->builder.view_mask = inheritance_rendering_info->viewMask;
       }

Reply via email to