diff options
| author | Tony-LunarG <tony@lunarg.com> | 2019-06-13 15:32:05 -0600 |
|---|---|---|
| committer | Tony Barbour <tony@lunarg.com> | 2019-06-17 13:08:41 -0600 |
| commit | 495604b6aa704fe961ef59d69e69bb39c1aaa9ee (patch) | |
| tree | 912910730a72f8c1992f6439244804fe7040613f /cube/cube.cpp | |
| parent | 122ac06d314c391d12d05f96aa8420010b123da2 (diff) | |
| download | usermoji-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.cpp | 30 |
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); |
