Add Debug mod + Priorize discrete GPU
This commit is contained in:
parent
a68b8bc000
commit
b5470b3a6c
1 changed files with 39 additions and 1 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
use std::sync::Arc;
|
||||||
use vulkano::sync::GpuFuture;
|
use vulkano::sync::GpuFuture;
|
||||||
use vulkano::command_buffer::CommandBuffer;
|
use vulkano::command_buffer::CommandBuffer;
|
||||||
use vulkano::command_buffer::AutoCommandBufferBuilder;
|
use vulkano::command_buffer::AutoCommandBufferBuilder;
|
||||||
|
@ -7,14 +8,51 @@ use vulkano::device::DeviceExtensions;
|
||||||
use vulkano::device::Features;
|
use vulkano::device::Features;
|
||||||
use vulkano::device::Device;
|
use vulkano::device::Device;
|
||||||
use vulkano::instance::PhysicalDevice;
|
use vulkano::instance::PhysicalDevice;
|
||||||
|
use vulkano::instance::PhysicalDeviceType;
|
||||||
use vulkano::instance::Instance;
|
use vulkano::instance::Instance;
|
||||||
use vulkano::instance::InstanceExtensions;
|
use vulkano::instance::InstanceExtensions;
|
||||||
|
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
fn get_physical_device<'a>(instance: &'a Arc<Instance>) -> Option<PhysicalDevice<'a>> {
|
||||||
|
println!("###################################### PRINT PHYSICAL DEVICES ######################################");
|
||||||
|
for physical_device in PhysicalDevice::enumerate(instance) {
|
||||||
|
println!("Available device: {} (type: {:?})", physical_device.name(), physical_device.ty());
|
||||||
|
}
|
||||||
|
let physical_device = match PhysicalDevice::enumerate(instance).find(|physical_device| physical_device.ty() == PhysicalDeviceType::DiscreteGpu) {
|
||||||
|
Some(physical_device) => Some(physical_device),
|
||||||
|
None => match PhysicalDevice::enumerate(instance).next() {
|
||||||
|
Some(physical_device) => Some(physical_device),
|
||||||
|
None => None
|
||||||
|
}
|
||||||
|
};
|
||||||
|
match physical_device {
|
||||||
|
Some(physical_device) => println!(
|
||||||
|
"--- Using device: {} (type: {:?})",
|
||||||
|
physical_device.name(),
|
||||||
|
physical_device.ty()
|
||||||
|
),
|
||||||
|
None => println!("--- Error: No device found")
|
||||||
|
}
|
||||||
|
println!("####################################### END PHYSICAL DEVICES #######################################");
|
||||||
|
physical_device
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(debug_assertions))]
|
||||||
|
fn get_physical_device<'a>(instance: &'a Arc<Instance>) -> Option<PhysicalDevice<'a>> {
|
||||||
|
match PhysicalDevice::enumerate(instance).find(|physical_device| physical_device.ty() == PhysicalDeviceType::DiscreteGpu) {
|
||||||
|
Some(physical_device) => Some(physical_device),
|
||||||
|
None => match PhysicalDevice::enumerate(instance).next() {
|
||||||
|
Some(physical_device) => Some(physical_device),
|
||||||
|
None => None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn test() {
|
pub fn test() {
|
||||||
let instance = Instance::new(None, &InstanceExtensions::none(), None)
|
let instance = Instance::new(None, &InstanceExtensions::none(), None)
|
||||||
.expect("Failed to create instance");
|
.expect("Failed to create instance");
|
||||||
|
|
||||||
let physical = PhysicalDevice::enumerate(&instance).next().expect("No device available");
|
let physical = get_physical_device(&instance).unwrap();
|
||||||
|
|
||||||
let queue_family = physical.queue_families()
|
let queue_family = physical.queue_families()
|
||||||
.find(|&q| q.supports_graphics())
|
.find(|&q| q.supports_graphics())
|
||||||
|
|
Loading…
Reference in a new issue