vk_compute_pass: Fix ASTC buffer setup synchronization
This commit is contained in:
parent
8b53209362
commit
a3ce26ae01
|
@ -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,
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue