librashader/librashader-runtime-vk/src/queue_selection.rs
2023-01-13 01:48:04 -05:00

29 lines
829 B
Rust

use ash::vk;
fn find_graphics_queue_family(
instance: &ash::Instance,
physical_device: vk::PhysicalDevice,
) -> u32 {
let queue_families =
unsafe { instance.get_physical_device_queue_family_properties(physical_device) };
// find the most specialized transfer queue.
for (index, queue_family) in queue_families.iter().enumerate() {
if queue_family.queue_count > 0
&& queue_family.queue_flags.contains(vk::QueueFlags::GRAPHICS)
{
return index as u32;
}
}
return 0;
}
pub fn get_graphics_queue(
instance: &ash::Instance,
device: &ash::Device,
physical_device: vk::PhysicalDevice,
) -> vk::Queue {
let queue_family = find_graphics_queue_family(instance, physical_device);
unsafe { device.get_device_queue(queue_family, 0) }
}