[Mesa-dev] [PATCH v3 06/14] anv/pass: Store the per-subpass view mask

Jason Ekstrand jason at jlekstrand.net
Thu Apr 27 16:31:35 UTC 2017


Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
---
 src/intel/vulkan/anv_pass.c    | 19 +++++++++++++++++++
 src/intel/vulkan/anv_private.h |  2 ++
 2 files changed, 21 insertions(+)

diff --git a/src/intel/vulkan/anv_pass.c b/src/intel/vulkan/anv_pass.c
index dcd9aaf..93f1483 100644
--- a/src/intel/vulkan/anv_pass.c
+++ b/src/intel/vulkan/anv_pass.c
@@ -23,6 +23,8 @@
 
 #include "anv_private.h"
 
+#include "util/vk_util.h"
+
 static unsigned
 num_subpass_attachments(const VkSubpassDescription *desc)
 {
@@ -102,6 +104,7 @@ VkResult anv_CreateRenderPass(
       subpass->color_count = desc->colorAttachmentCount;
       subpass->attachment_count = num_subpass_attachments(desc);
       subpass->attachments = subpass_attachments;
+      subpass->view_mask = 0;
 
       if (desc->inputAttachmentCount > 0) {
          subpass->input_attachments = subpass_attachments;
@@ -261,6 +264,22 @@ VkResult anv_CreateRenderPass(
          ANV_PIPE_DEPTH_CACHE_FLUSH_BIT;
    }
 
+   vk_foreach_struct(ext, pCreateInfo->pNext) {
+      switch (ext->sType) {
+      case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX: {
+         VkRenderPassMultiviewCreateInfoKHX *mv = (void *)ext;
+
+         for (uint32_t i = 0; i < mv->subpassCount; i++) {
+            pass->subpasses[i].view_mask = mv->pViewMasks[i];
+         }
+         break;
+      }
+
+      default:
+         anv_debug_ignored_stype(ext->sType);
+      }
+   }
+
    *pRenderPass = anv_render_pass_to_handle(pass);
 
    return VK_SUCCESS;
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index dbe1e04..47d8cd2 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -2143,6 +2143,8 @@ struct anv_subpass {
 
    VkAttachmentReference                        depth_stencil_attachment;
 
+   uint32_t                                     view_mask;
+
    /** Subpass has a depth/stencil self-dependency */
    bool                                         has_ds_self_dep;
 
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list