Replace fence wait by pipeline memory barrier
This commit is contained in:
parent
84b6c1d31a
commit
a01c830da5
1 changed files with 5 additions and 2 deletions
|
@ -242,7 +242,10 @@ struct ComputeApplication {
|
|||
VK_CHECK_RESULT(vkCreateFence(dev.device, &fenceCreateInfo, NULL, &chain[chidx].decomposeFence));
|
||||
|
||||
chain[chidx].compressCommandBuffer = dev.CreateCommandBuffer();
|
||||
// todo: pipeline barrier here
|
||||
CallWith($M(VkMemoryBarrier{VK_STRUCTURE_TYPE_MEMORY_BARRIER},
|
||||
$(srcAccessMask) = VK_ACCESS_SHADER_WRITE_BIT,
|
||||
$(dstAccessMask) = VK_ACCESS_SHADER_READ_BIT),
|
||||
vkCmdPipelineBarrier(chain[chidx].compressCommandBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, 1, &ref, 0, NULL, 0, NULL));
|
||||
vkCmdBindPipeline(chain[chidx].compressCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, compressPipeline.pipeline);
|
||||
vkCmdBindDescriptorSets(chain[chidx].compressCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, compressPipeline.pipelineLayout, 0, 1, &chain[chidx].compressDescriptorSet, 0, NULL);
|
||||
vkCmdDispatch(chain[chidx].compressCommandBuffer, (uint32_t)ceil(WIDTH/2 / float(WORKGROUP_SIZE)), (uint32_t)ceil(HEIGHT/2 / float(WORKGROUP_SIZE)), 1);
|
||||
|
@ -262,7 +265,7 @@ struct ComputeApplication {
|
|||
vkResetFences(dev.device, 1, &chain[chidx].decomposeFence);
|
||||
vkResetFences(dev.device, 1, &chain[chidx].compressFence);
|
||||
VK_CHECK_RESULT(vkQueueSubmit(dev.defaultQueue, 1, &submitInfo, chain[chidx].decomposeFence));
|
||||
VK_CHECK_RESULT(vkWaitForFences(dev.device, 1, &chain[chidx].decomposeFence, VK_TRUE, 100000000000));
|
||||
//VK_CHECK_RESULT(vkWaitForFences(dev.device, 1, &chain[chidx].decomposeFence, VK_TRUE, 100000000000));
|
||||
CallWith(SubmitInfo(chain[chidx].compressCommandBuffer),vkQueueSubmit(dev.defaultQueue, 1, &ref, chain[chidx].compressFence));
|
||||
chain[chidx].running = true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue