summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Faye-Lund <erik.faye-lund@collabora.com>2023-04-05 10:04:32 +0200
committerErik Faye-Lund <erik.faye-lund@collabora.com>2023-04-17 08:53:22 +0200
commit94f75710bdff678f33d6d12d26858ffb453bf07f (patch)
tree8552226a135ed12a7d00d5663b4c65e60b54051e
parent0cc3100fe300d7050d8b2abef125a14682d4f4d2 (diff)
downloadmesa-demos-94f75710bdff678f33d6d12d26858ffb453bf07f.tar.gz
vkgears: add missing subpass-dependencies
This adds a few missing subpass-dependencies to the render-pass. Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
-rw-r--r--src/vulkan/vkgears.c38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/vulkan/vkgears.c b/src/vulkan/vkgears.c
index b6b560a6..c16fab8b 100644
--- a/src/vulkan/vkgears.c
+++ b/src/vulkan/vkgears.c
@@ -313,7 +313,7 @@ create_image_view(VkImage image,
static void
create_render_pass()
{
- int attachment_count, color_attachment_index;
+ int attachment_count, color_attachment_index, dependency_count;
VkAttachmentReference *resolve_attachments = (VkAttachmentReference []) {
{
.attachment = 0,
@@ -323,9 +323,11 @@ create_render_pass()
if (sample_count != VK_SAMPLE_COUNT_1_BIT) {
attachment_count = 3;
+ dependency_count = 3;
color_attachment_index = 2;
} else {
attachment_count = 2;
+ dependency_count = 2;
resolve_attachments = NULL;
color_attachment_index = 0;
}
@@ -385,7 +387,39 @@ create_render_pass()
.pPreserveAttachments = NULL,
}
},
- .dependencyCount = 0
+ .dependencyCount = dependency_count,
+ .pDependencies = (VkSubpassDependency []) {
+ {
+ /* depth buffer is shared between swapchain images */
+ .srcSubpass = VK_SUBPASS_EXTERNAL,
+ .dstSubpass = 0,
+ .srcStageMask = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+ .dstStageMask = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
+ .srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+ .dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
+ .dependencyFlags = 0,
+ },
+ {
+ /* image layout */
+ .srcSubpass = VK_SUBPASS_EXTERNAL,
+ .dstSubpass = 0,
+ .srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ .dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ .srcAccessMask = 0,
+ .dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
+ .dependencyFlags = 0,
+ },
+ {
+ /* msaa buffer is shared between swapchain images */
+ .srcSubpass = VK_SUBPASS_EXTERNAL,
+ .dstSubpass = 0,
+ .srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ .dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
+ .srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+ .dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+ .dependencyFlags = 0,
+ },
+ },
},
NULL,
&render_pass);