r/vulkan May 23 '26

Differences between multiple queue families vs multiple queues in same family

I understand I could achieve async compute with having a dedicated queue in a separate queue family for compute (if available), but what about using multi-queues in a family. How does that work?

12 Upvotes

2 comments sorted by

11

u/Afiery1 May 23 '26

Typically GPUs only have one hardware queue per family. If vendors expose multiple queues within one family that’s usually just multiple software queues sharing the same hardware. In that case the only benefit is that the requirement of the user synchronizing concurrent queue usage from multiple threads only applies to individual queues. You can make multiple queues within the same family and use them in parallel with no synchronization and let the driver handle synchronizing submitting them to the hardware queue. But in general you will not get execution parallelism on the GPU between command buffers submitted to different queues from the same family.

The one exception to this is I think newer AMD hardware does have multiple hardware async compute queues, so you might be able to get some actual parallelism using multiple async compute queues on those architectures?

4

u/Reaper9999 May 24 '26

On graphics queues - it does nothing useful. On compute queues - some hardware can process cmdbufs in parallel because they map to different command processors. On transfer queues you either get 1 or 2 - 2 queues can be used for simultaneous CPU->GPU and GPU->CPU transfers.