v3dv: don't merge subpasses with different view masks
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 22 Jul 2021 11:49:48 +0000 (13:49 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 27 Jul 2021 07:31:31 +0000 (07:31 +0000)
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12034>

src/broadcom/vulkan/v3dv_cmd_buffer.c

index 68bc716..36cf6eb 100644 (file)
@@ -398,6 +398,13 @@ cmd_buffer_can_merge_subpass(struct v3dv_cmd_buffer *cmd_buffer,
    struct v3dv_subpass *prev_subpass = &state->pass->subpasses[state->subpass_idx];
    struct v3dv_subpass *subpass = &state->pass->subpasses[subpass_idx];
 
+   /* Don't merge if the subpasses have different view masks, since in that
+    * case the framebuffer setup is different and we need to emit different
+    * RCLs.
+    */
+   if (subpass->view_mask != prev_subpass->view_mask)
+      return false;
+
    /* Because the list of subpass attachments can include VK_ATTACHMENT_UNUSED,
     * we need to check that for each subpass all its used attachments are
     * used by the other subpass.