Replace fence wait by pipeline memory barrier

This commit is contained in:
mittorn 2024-11-11 19:35:44 +03:00
parent 84b6c1d31a
commit a01c830da5

View file

@ -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;
}