aboutsummaryrefslogtreecommitdiff
path: root/cube/cube.cpp
diff options
context:
space:
mode:
authorTony-LunarG <tony@lunarg.com>2019-06-13 15:32:05 -0600
committerTony Barbour <tony@lunarg.com>2019-06-17 13:08:41 -0600
commit495604b6aa704fe961ef59d69e69bb39c1aaa9ee (patch)
tree912910730a72f8c1992f6439244804fe7040613f /cube/cube.cpp
parent122ac06d314c391d12d05f96aa8420010b123da2 (diff)
downloadusermoji-495604b6aa704fe961ef59d69e69bb39c1aaa9ee.tar.xz
cube: Add subpass dependencies
Shared depth buffer and image layout transition both need to be accounted for Change-Id: Id26bc47798c58e4435a5585def3161105b7fffd1
Diffstat (limited to 'cube/cube.cpp')
-rw-r--r--cube/cube.cpp30
1 files changed, 25 insertions, 5 deletions
diff --git a/cube/cube.cpp b/cube/cube.cpp
index 4f3032af..04447fcd 100644
--- a/cube/cube.cpp
+++ b/cube/cube.cpp
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2015-2016 The Khronos Group Inc.
- * Copyright (c) 2015-2016 Valve Corporation
- * Copyright (c) 2015-2016 LunarG, Inc.
+ * Copyright (c) 2015-2019 The Khronos Group Inc.
+ * Copyright (c) 2015-2019 Valve Corporation
+ * Copyright (c) 2015-2019 LunarG, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1975,13 +1975,33 @@ void Demo::prepare_render_pass() {
.setPreserveAttachmentCount(0)
.setPPreserveAttachments(nullptr);
+ vk::PipelineStageFlags stages = vk::PipelineStageFlagBits::eEarlyFragmentTests | vk::PipelineStageFlagBits::eLateFragmentTests;
+ vk::SubpassDependency const dependencies[2] = {
+ vk::SubpassDependency() // Depth buffer is shared between swapchain images
+ .setSrcSubpass(VK_SUBPASS_EXTERNAL)
+ .setDstSubpass(0)
+ .setSrcStageMask(stages)
+ .setDstStageMask(stages)
+ .setSrcAccessMask(vk::AccessFlagBits::eDepthStencilAttachmentWrite)
+ .setDstAccessMask(vk::AccessFlagBits::eDepthStencilAttachmentRead | vk::AccessFlagBits::eDepthStencilAttachmentWrite)
+ .setDependencyFlags(vk::DependencyFlags()),
+ vk::SubpassDependency() // Image layout transition
+ .setSrcSubpass(VK_SUBPASS_EXTERNAL)
+ .setDstSubpass(0)
+ .setSrcStageMask(vk::PipelineStageFlagBits::eColorAttachmentOutput)
+ .setDstStageMask(vk::PipelineStageFlagBits::eColorAttachmentOutput)
+ .setSrcAccessMask(vk::AccessFlagBits())
+ .setDstAccessMask(vk::AccessFlagBits::eColorAttachmentWrite | vk::AccessFlagBits::eColorAttachmentRead)
+ .setDependencyFlags(vk::DependencyFlags()),
+ };
+
auto const rp_info = vk::RenderPassCreateInfo()
.setAttachmentCount(2)
.setPAttachments(attachments)
.setSubpassCount(1)
.setPSubpasses(&subpass)
- .setDependencyCount(0)
- .setPDependencies(nullptr);
+ .setDependencyCount(2)
+ .setPDependencies(dependencies);
auto result = device.createRenderPass(&rp_info, nullptr, &render_pass);
VERIFY(result == vk::Result::eSuccess);