MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ find_queue_families()

QueueFamilyIndices MayaFlux::Core::VKDevice::find_queue_families ( vk::PhysicalDevice  device)
staticprivate

Find queue families on the given physical device.

Parameters
devicePhysical device to query
Returns
QueueFamilyIndices with found queue family indices

Definition at line 538 of file VKDevice.cpp.

539{
540 QueueFamilyIndices indices;
541 auto queue_families = device.getQueueFamilyProperties();
542
543 int i = 0;
544 for (const auto& queue_family : queue_families) {
545 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eGraphics) {
546 indices.graphics_family = i;
547 }
548
549 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eCompute && !(queue_family.queueFlags & vk::QueueFlagBits::eGraphics)) {
550 indices.compute_family = i;
551 }
552
553 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eTransfer && !(queue_family.queueFlags & vk::QueueFlagBits::eGraphics) && !(queue_family.queueFlags & vk::QueueFlagBits::eCompute)) {
554 indices.transfer_family = i;
555 }
556
557 i++;
558 }
559
560 if (indices.graphics_family.has_value()) {
561 if (!indices.compute_family.has_value()) {
562 indices.compute_family = indices.graphics_family;
563 }
564 if (!indices.transfer_family.has_value()) {
565 indices.transfer_family = indices.graphics_family;
566 }
567 }
568
569 return indices;
570}
std::vector< uint32_t > indices
vk::PhysicalDevice device
Definition VKDevice.cpp:121

References device, MayaFlux::Core::QueueFamilyIndices::graphics_family, and indices.

Referenced by pick_physical_device().

+ Here is the caller graph for this function: