Closed dorian-apanel-intel closed 1 year ago
Issue can be reproduced on NVidia by commenting those two lines (pretending that single universal queue is advertised):
// Search for main queue that should be able to do all work (graphics, compute and transfer)
if ( (queue_family.queueFlags & ( VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT )) == ( VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT ) ) {
main_queue_family_index = fi;
if ( queue_family.queueCount > 1 ) {
// compute_queue_family_index = fi;
// compute_queue_index = 1;
}
continue;
}
After grepping the whole solution, I do not see vulkan_compute_queue_family
being used anywhere,
Pool of vkCommandPools are created either for universal, or for transfer queues.
Hi Dorian, many thanks for reporting this and a few other issues. Thank you also for the PRs. We'll take a look soon, we are in the middle of preparing for a conference :)
I "merged" your changes. If you're happy with them, could you close this issue?
Thanks for merging. Verified it with 47e8c21 on top.
Side note: On GPU's with no compute queue, there is crash when creating device. The same is when you have two GPUs, and one without compute queue is picked. (Family index passed is 0xFFFFFFFF)
Thanks, I'll have a look at this as well. I thought we had checks in place for that scenario, but clearly they don't cover all cases.
When running on Intel A770, following core validation error is triggered in Chapter5:
Command buffer created for universal queue is submitted to compute only queue.
Log regarding queues: