diff --git a/lsfg-vk-backend/src/modules/pipeline.cpp b/lsfg-vk-backend/src/modules/pipeline.cpp index 163346f..207abcb 100644 --- a/lsfg-vk-backend/src/modules/pipeline.cpp +++ b/lsfg-vk-backend/src/modules/pipeline.cpp @@ -794,6 +794,19 @@ vk::CommandBuffer Pipeline::buildTransCmdbuf( vk::CommandBufferUsageFlagBits::eOneTimeSubmit }, dld); + vk::BufferMemoryBarrier2KHR barrier{ + .srcStageMask = vk::PipelineStageFlagBits2::eComputeShader, + .srcAccessMask = vk::AccessFlagBits2::eUniformRead, + .dstStageMask = vk::PipelineStageFlagBits2::eTransfer, + .dstAccessMask = vk::AccessFlagBits2::eTransferWrite, + .buffer = *this->m_descriptorSet.buffer.first, + .size = 4 + }; + cmdbuf->pipelineBarrier2KHR({ + .bufferMemoryBarrierCount = 1, + .pBufferMemoryBarriers = &barrier + }, dld); + const UniformBuffer buf{ .timestamp = static_cast(index + 1) / static_cast(total + 1), .iteration = iteration @@ -806,6 +819,19 @@ vk::CommandBuffer Pipeline::buildTransCmdbuf( dld ); + barrier = { + .srcStageMask = vk::PipelineStageFlagBits2::eTransfer, + .srcAccessMask = vk::AccessFlagBits2::eTransferWrite, + .dstStageMask = vk::PipelineStageFlagBits2::eComputeShader, + .dstAccessMask = vk::AccessFlagBits2::eUniformRead, + .buffer = *this->m_descriptorSet.buffer.first, + .size = 4 + }; + cmdbuf->pipelineBarrier2KHR({ + .bufferMemoryBarrierCount = 1, + .pBufferMemoryBarriers = &barrier + }, dld); + cmdbuf->end(dld); return *cmdbuf;