Module: Mesa
Branch: master
Commit: 144626946e18d34111d4cc3013771cbc3bb8e740
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=144626946e18d34111d4cc3013771cbc3bb8e740

Author: Jason Ekstrand <[email protected]>
Date:   Tue Apr 24 12:57:39 2018 -0700

anv/pass: Move some dependency setup into a helper

This new helper takes a VkSubpassDependency2KHR for future-proofing.

Reviewed-by: Lionel Landwerlin <[email protected]>

---

 src/intel/vulkan/anv_pass.c | 52 +++++++++++++++++++++++++++++----------------
 1 file changed, 34 insertions(+), 18 deletions(-)

diff --git a/src/intel/vulkan/anv_pass.c b/src/intel/vulkan/anv_pass.c
index fe9b3d6981..b70de87a82 100644
--- a/src/intel/vulkan/anv_pass.c
+++ b/src/intel/vulkan/anv_pass.c
@@ -25,6 +25,29 @@
 
 #include "vk_util.h"
 
+static void
+anv_render_pass_add_subpass_dep(struct anv_render_pass *pass,
+                                const VkSubpassDependency2KHR *dep)
+{
+   if (dep->dstSubpass == VK_SUBPASS_EXTERNAL) {
+      pass->subpass_flushes[pass->subpass_count] |=
+         anv_pipe_invalidate_bits_for_access_flags(dep->dstAccessMask);
+   } else {
+      assert(dep->dstSubpass < pass->subpass_count);
+      pass->subpass_flushes[dep->dstSubpass] |=
+         anv_pipe_invalidate_bits_for_access_flags(dep->dstAccessMask);
+   }
+
+   if (dep->srcSubpass == VK_SUBPASS_EXTERNAL) {
+      pass->subpass_flushes[0] |=
+         anv_pipe_flush_bits_for_access_flags(dep->srcAccessMask);
+   } else {
+      assert(dep->srcSubpass < pass->subpass_count);
+      pass->subpass_flushes[dep->srcSubpass + 1] |=
+         anv_pipe_flush_bits_for_access_flags(dep->srcAccessMask);
+   }
+}
+
 /* Do a second "compile" step on a render pass */
 static void
 anv_render_pass_compile(struct anv_render_pass *pass)
@@ -223,24 +246,17 @@ VkResult anv_CreateRenderPass(
    }
 
    for (uint32_t i = 0; i < pCreateInfo->dependencyCount; i++) {
-      const VkSubpassDependency *dep = &pCreateInfo->pDependencies[i];
-      if (dep->dstSubpass == VK_SUBPASS_EXTERNAL) {
-         pass->subpass_flushes[pass->subpass_count] |=
-            anv_pipe_invalidate_bits_for_access_flags(dep->dstAccessMask);
-      } else {
-         assert(dep->dstSubpass < pass->subpass_count);
-         pass->subpass_flushes[dep->dstSubpass] |=
-            anv_pipe_invalidate_bits_for_access_flags(dep->dstAccessMask);
-      }
-
-      if (dep->srcSubpass == VK_SUBPASS_EXTERNAL) {
-         pass->subpass_flushes[0] |=
-            anv_pipe_flush_bits_for_access_flags(dep->srcAccessMask);
-      } else {
-         assert(dep->srcSubpass < pass->subpass_count);
-         pass->subpass_flushes[dep->srcSubpass + 1] |=
-            anv_pipe_flush_bits_for_access_flags(dep->srcAccessMask);
-      }
+      /* Convert to a Dependency2KHR */
+      struct VkSubpassDependency2KHR dep2 = {
+         .srcSubpass       = pCreateInfo->pDependencies[i].srcSubpass,
+         .dstSubpass       = pCreateInfo->pDependencies[i].dstSubpass,
+         .srcStageMask     = pCreateInfo->pDependencies[i].srcStageMask,
+         .dstStageMask     = pCreateInfo->pDependencies[i].dstStageMask,
+         .srcAccessMask    = pCreateInfo->pDependencies[i].srcAccessMask,
+         .dstAccessMask    = pCreateInfo->pDependencies[i].dstAccessMask,
+         .dependencyFlags  = pCreateInfo->pDependencies[i].dependencyFlags,
+      };
+      anv_render_pass_add_subpass_dep(pass, &dep2);
    }
 
    /* From the Vulkan 1.0.39 spec:

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to