vk_compute_pass: Fix ASTC buffer setup synchronization

This commit is contained in:
ReinUsesLisp 2021-07-18 17:59:31 -03:00
parent 8b53209362
commit a3ce26ae01

View file

@ -374,20 +374,20 @@ void ASTCDecoderPass::MakeDataBuffer() {
scheduler.Record([src = staging_ref.buffer, offset = staging_ref.offset, dst = *data_buffer, scheduler.Record([src = staging_ref.buffer, offset = staging_ref.offset, dst = *data_buffer,
TOTAL_BUFFER_SIZE](vk::CommandBuffer cmdbuf) { TOTAL_BUFFER_SIZE](vk::CommandBuffer cmdbuf) {
cmdbuf.CopyBuffer(src, dst, static constexpr VkMemoryBarrier write_barrier{
VkBufferCopy{ .sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
.pNext = nullptr,
.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT,
.dstAccessMask = VK_ACCESS_SHADER_READ_BIT,
};
const VkBufferCopy copy{
.srcOffset = offset, .srcOffset = offset,
.dstOffset = 0, .dstOffset = 0,
.size = TOTAL_BUFFER_SIZE, .size = TOTAL_BUFFER_SIZE,
}); };
cmdbuf.PipelineBarrier( cmdbuf.CopyBuffer(src, dst, copy);
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, cmdbuf.PipelineBarrier(VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
VkMemoryBarrier{ 0, write_barrier);
.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
.pNext = nullptr,
.srcAccessMask = 0,
.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT,
});
}); });
} }