I'm generally familiar with Vulkan, but I don't quite understand the rules around vkCmdPipelineBarrier, specifically for buffer memory barriers. My understanding is that depending on the source and destination access masks, a pipeline barrier may not always be necessary. Why is this?
ChatGPT:
Short answer: because a barrier only solves hazards, and many access-mask pairs don’t describe a hazard.
In Vulkan, a pipeline barrier does two distinct things:
- Execution dependency