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

◆ find_queue_families()

QueueFamilyIndices MayaFlux::Core::VKDevice::find_queue_families ( vk::PhysicalDevice  device,
vk::SurfaceKHR  surface = nullptr 
)
private

Find queue families on the given physical device.

Parameters
devicePhysical device to query
surfaceOptional surface to check for presentation support
Returns
QueueFamilyIndices with found queue family indices

Definition at line 103 of file VKDevice.cpp.

104{
105 QueueFamilyIndices indices;
106 auto queue_families = device.getQueueFamilyProperties();
107
108 int i = 0;
109 for (const auto& queue_family : queue_families) {
110 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eGraphics) {
111 indices.graphics_family = i;
112 }
113
114 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eCompute && !(queue_family.queueFlags & vk::QueueFlagBits::eGraphics)) {
115 indices.compute_family = i;
116 }
117
118 if (queue_family.queueCount > 0 && queue_family.queueFlags & vk::QueueFlagBits::eTransfer && !(queue_family.queueFlags & vk::QueueFlagBits::eGraphics) && !(queue_family.queueFlags & vk::QueueFlagBits::eCompute)) {
119 indices.transfer_family = i;
120 }
121
122 if (surface && queue_family.queueCount > 0) {
123 vk::Bool32 presentSupport = device.getSurfaceSupportKHR(i, surface);
124 if (presentSupport) {
125 indices.present_family = i;
127 "Found presentation support in queue family {}", i);
128 }
129 }
130
131 i++;
132 }
133
134 if (indices.graphics_family.has_value()) {
135 if (!indices.compute_family.has_value()) {
136 indices.compute_family = indices.graphics_family;
137 }
138 if (!indices.transfer_family.has_value()) {
139 indices.transfer_family = indices.graphics_family;
140 }
141 }
142
143 return indices;
144}
#define MF_INFO(comp, ctx,...)
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.

References MayaFlux::Core::QueueFamilyIndices::compute_family, MayaFlux::Journal::Core, MayaFlux::Core::QueueFamilyIndices::graphics_family, MayaFlux::Journal::GraphicsBackend, MF_INFO, MayaFlux::Core::QueueFamilyIndices::present_family, and MayaFlux::Core::QueueFamilyIndices::transfer_family.

Referenced by pick_physical_device().

+ Here is the caller graph for this function: