Skip to content

Commit cc0e612

Browse files
Handle VK_PIPELINE_STAGE_TRANSFER_BIT in `bufferBarrier()
1 parent f6623cb commit cc0e612

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

lvk/vulkan/VulkanClasses.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2004,15 +2004,26 @@ void lvk::CommandBuffer::bufferBarrier(BufferHandle handle, VkPipelineStageFlags
20042004

20052005
VkBufferMemoryBarrier barrier = {
20062006
.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
2007-
.srcAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT,
2008-
.dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT,
2007+
.srcAccessMask = 0,
2008+
.dstAccessMask = 0,
20092009
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
20102010
.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
20112011
.buffer = buf->vkBuffer_,
20122012
.offset = 0,
20132013
.size = VK_WHOLE_SIZE,
20142014
};
20152015

2016+
if (srcStage & VK_PIPELINE_STAGE_TRANSFER_BIT) {
2017+
barrier.srcAccessMask |= VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT;
2018+
} else {
2019+
barrier.srcAccessMask |= VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT;
2020+
}
2021+
2022+
if (dstStage & VK_PIPELINE_STAGE_TRANSFER_BIT) {
2023+
barrier.dstAccessMask |= VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT;
2024+
} else {
2025+
barrier.dstAccessMask |= VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT;
2026+
}
20162027
if (dstStage & VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT) {
20172028
barrier.dstAccessMask |= VK_ACCESS_INDIRECT_COMMAND_READ_BIT;
20182029
}

0 commit comments

Comments
 (0)