Skip to content

Commit d3d6b3a

Browse files
committed
Add missing depth attachment barrier
1 parent 284832c commit d3d6b3a

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

base/VulkanFrameBuffer.hpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ namespace vks
304304
}
305305

306306
// Use subpass dependencies for attachment layout transitions
307-
std::array<VkSubpassDependency, 3> dependencies{};
307+
std::array<VkSubpassDependency, 4> dependencies{};
308308

309309
dependencies[0].srcSubpass = VK_SUBPASS_EXTERNAL;
310310
dependencies[0].dstSubpass = 0;
@@ -313,6 +313,7 @@ namespace vks
313313
dependencies[0].srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
314314
dependencies[0].dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
315315

316+
316317
dependencies[1].srcSubpass = VK_SUBPASS_EXTERNAL;
317318
dependencies[1].dstSubpass = 0;
318319
dependencies[1].srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
@@ -327,14 +328,21 @@ namespace vks
327328
dependencies[2].srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
328329
dependencies[2].dstAccessMask = VK_ACCESS_MEMORY_READ_BIT;
329330

331+
dependencies[3].srcSubpass = 0;
332+
dependencies[3].dstSubpass = VK_SUBPASS_EXTERNAL;
333+
dependencies[3].srcStageMask = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT;
334+
dependencies[3].dstStageMask = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
335+
dependencies[3].srcAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
336+
dependencies[3].dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
337+
330338
// Create render pass
331339
VkRenderPassCreateInfo renderPassInfo = {};
332340
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
333341
renderPassInfo.pAttachments = attachmentDescriptions.data();
334342
renderPassInfo.attachmentCount = static_cast<uint32_t>(attachmentDescriptions.size());
335343
renderPassInfo.subpassCount = 1;
336344
renderPassInfo.pSubpasses = &subpass;
337-
renderPassInfo.dependencyCount = 3;
345+
renderPassInfo.dependencyCount = 4;
338346
renderPassInfo.pDependencies = dependencies.data();
339347
VK_CHECK_RESULT(vkCreateRenderPass(vulkanDevice->logicalDevice, &renderPassInfo, nullptr, &renderPass));
340348

examples/deferredshadows/deferredshadows.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#include "VulkanglTFModel.h"
1414

1515
// Must match the LIGHT_COUNT define in the shadow and deferred shaders
16-
#define LIGHT_COUNT 3
16+
constexpr auto LIGHT_COUNT = 3;
1717

1818
class VulkanExample : public VulkanExampleBase
1919
{

0 commit comments

Comments
 (0)