In Vulkan, operations are processed in a pipeline. Even though the processing of operations needs to be started in the order in which they were submitted, parts of the pipeline may still be executed concurrently. But sometimes, we may need to synchronize these operations and tell the driver that we want some of them to wait for results of other operations.
Barriers are needed for memory operations to become visible for later commands. In cases where the operations write data to images ...