-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
get_dedicated_queue_index excludes VK_QUEUE_TRANSFER_BIT #321
Comments
The point of the 'get dedicated queue' function is to try and find a queue (family) that supports the desired operations and is distinct from the other queues. But therein lies a conundrum - to get a dedicated compute queue is impossible as you point out. The best I can do is find a queue that reports "only" compute operations and nothing else, even if transfer ops are required to be supported for that queue. The problem with the 'get dedicated queue' logic is that not all hardware has 'dedicated' queues. The variability of queue (families) means its practically impossible to get the "right" queue in all situations. Plus, the whole point of queue families For example, I wanted there to be a "graphics queue", "compute queue", and "transfer queue" since that is broadly what people need. But whenever there is only a single queue family, it would be bad for users to think they have separate queues when they actually have the same one. This would cause unexpected stalls and deadlocks when submitting complex workloads. |
Sorry for answering so late but I had issues. I see, I opened this issues because vulkaninfo does report a "dedicated" compute queue for my gpu, but the library doesn't seem to select it for some reason instead it selects the one of the more generic ones:
Here vk-bootstrap keeps selecting the first queue as dedicated compute, while technically the second one would be better? maybe I'm wrong, I'm still trying to wrap my head around this |
When searching for a dedicated compute queue,
detail::get_dedicated_queue_index
will always try to find a queue withoutVK_QUEUE_TRANSFER_BIT
. This is against what the Vulkan specifications say about VkQueueFlagBits:Because all compute queues are transfer queues too,
get_dedicated_queue_index
will indeed always fail to find a dedicated compute queueThe text was updated successfully, but these errors were encountered: