MayaFlux 0.5.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 558 of file VKDevice.cpp.

559{
560 QueueFamilyIndices indices;
561 auto queue_families = device.getQueueFamilyProperties();
562
563 int i = 0;
564 for (const auto& queue_family : queue_families) {
565 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eGraphics) {
566 indices.graphics_family = i;
567 }
568
569 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eCompute && !(queue_family.queueFlags & vk::QueueFlagBits::eGraphics)) {
570 indices.compute_family = i;
571 }
572
573 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eTransfer && !(queue_family.queueFlags & vk::QueueFlagBits::eGraphics) && !(queue_family.queueFlags & vk::QueueFlagBits::eCompute)) {
574 indices.transfer_family = i;
575 }
576
577 i++;
578 }
579
580 if (indices.graphics_family.has_value()) {
581 if (!indices.compute_family.has_value()) {
582 indices.compute_family = indices.graphics_family;
583 }
584 if (!indices.transfer_family.has_value()) {
585 indices.transfer_family = indices.graphics_family;
586 }
587 }
588
589 return indices;
590}
vk::PhysicalDevice device
Definition VKDevice.cpp:141

References MayaFlux::Core::QueueFamilyIndices::compute_family, device, MayaFlux::Core::QueueFamilyIndices::graphics_family, and MayaFlux::Core::QueueFamilyIndices::transfer_family.

Referenced by pick_physical_device().

+ Here is the caller graph for this function: