Refactor
This commit is contained in:
parent
d0c6f31a1a
commit
caa79270db
5 changed files with 58 additions and 42 deletions
|
@ -1,7 +1,7 @@
|
|||
use std::fmt::{Display, Formatter};
|
||||
use ash::vk;
|
||||
use crate::vulkan::utils::formatter::{format_driver_version, format_vulkan_version};
|
||||
use crate::vulkan::vk_surface::VkSurface;
|
||||
use ash::vk;
|
||||
use std::fmt::{Display, Formatter};
|
||||
|
||||
pub struct VkPhysicalDevice {
|
||||
// Vulkan properties
|
||||
|
@ -22,14 +22,14 @@ impl VkPhysicalDevice {
|
|||
handle: physical_device,
|
||||
properties: device_properties,
|
||||
features: device_features,
|
||||
queue_family_properties: device_queue_families
|
||||
queue_family_properties: device_queue_families,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub fn find_queue_family_by(
|
||||
&self,
|
||||
queue_flags: Option<vk::QueueFlags>,
|
||||
surface: Option<&VkSurface>
|
||||
surface: Option<&VkSurface>,
|
||||
) -> Option<(u32, &vk::QueueFamilyProperties)> {
|
||||
self.queue_family_properties
|
||||
.iter()
|
||||
|
@ -47,7 +47,7 @@ impl VkPhysicalDevice {
|
|||
Some(queue_flags) => {
|
||||
queue_family_property.queue_flags
|
||||
.contains(queue_flags)
|
||||
},
|
||||
}
|
||||
None => true
|
||||
};
|
||||
|
||||
|
@ -59,6 +59,19 @@ impl VkPhysicalDevice {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn pick_physical_device_and_queue_by<'a>(
|
||||
physical_devices: &'a Vec<VkPhysicalDevice>,
|
||||
queue_flags: Option<vk::QueueFlags>,
|
||||
surface: Option<&VkSurface>,
|
||||
) -> Option<(&'a VkPhysicalDevice, u32, &'a vk::QueueFamilyProperties)> {
|
||||
physical_devices
|
||||
.iter()
|
||||
.find_map(|physical_device| {
|
||||
physical_device.find_queue_family_by(queue_flags, surface)
|
||||
.and_then(|(queue_index, queue_family_properties)| Some((physical_device, queue_index, queue_family_properties)))
|
||||
})
|
||||
}
|
||||
|
||||
pub fn priority(&self) -> usize {
|
||||
match self.properties.device_type {
|
||||
vk::PhysicalDeviceType::CPU => 1,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue