How should I manage resources used in multiple queue families?

14 hours ago 1
ARTICLE AD BOX

I've been using Vulkan for about 7 months now and I've decided to start building a render graph. I was working on barrier generation when I realized I knew nothing about cross queue transfers and release/acquire barrier pairs. Most of what I know has been through AI, so forgive me if anything I say is flawed. I have a handful of questions regarding this matter that I would love help from a real person from though.

1: I noticed on this website this note:

VkSharingMode is ignored by the driver, so VK_SHARING_MODE_CONCURRENT incurs no overhead relative to VK_SHARING_MODE_EXCLUSIVE.

Is that really true? Can I still write relatively simple barriers for no cost?

2: If I have a release barrier at the end of a frame that should send a resource from Queue A to Queue B, but my render graph is recompiled and barriers are re-generated, can I treat the orphaned release barrier as if it never existed, or do I have to place an acquire on Queue B before I can do anything meaningful with the resource again?

3: I'm assuming the answer is yes, but is queue family ownership static? For example, if a resource is used on Queue B, I assume I can't use it Queue A even if I want a couple frames.

Any help would be appreciated on all of these.

Read Entire Article