|
|
|
@ -1159,6 +1159,23 @@ void BlockLinearUnswizzle3DPass::UnswizzleChunk( |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (!is_first_chunk) { |
|
|
|
const VkBufferMemoryBarrier reuse_barrier{ |
|
|
|
.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, |
|
|
|
.pNext = nullptr, |
|
|
|
.srcAccessMask = VK_ACCESS_TRANSFER_READ_BIT, |
|
|
|
.dstAccessMask = VK_ACCESS_SHADER_WRITE_BIT, |
|
|
|
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, |
|
|
|
.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, |
|
|
|
.buffer = out_buffer, |
|
|
|
.offset = 0, |
|
|
|
.size = VK_WHOLE_SIZE, |
|
|
|
}; |
|
|
|
cmdbuf.PipelineBarrier(VK_PIPELINE_STAGE_TRANSFER_BIT, |
|
|
|
VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, nullptr, |
|
|
|
reuse_barrier, nullptr); |
|
|
|
} |
|
|
|
|
|
|
|
device.GetLogical().UpdateDescriptorSet(set, *descriptor_template, descriptor_data); |
|
|
|
cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline); |
|
|
|
cmdbuf.BindDescriptorSets(VK_PIPELINE_BIND_POINT_COMPUTE, *layout, 0, set, {}); |
|
|
|
|