Enhance vulkan instance and physical device display formatting
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 0s

Refactor Vulkan instance and physical device formatting for better clarity. Added formatter utilities to encapsulate version and property formatting. Updated logging to use the new formatted output for improved debug readability.
This commit is contained in:
Florian RICHER 2024-11-10 21:27:03 +01:00
parent b7d0abb9ed
commit b91571e777
Signed by: florian.richer
GPG key ID: C73D37CBED7BFC77
5 changed files with 88 additions and 19 deletions

View file

@ -1,9 +1,10 @@
use std::ffi::{c_char, CString};
use std::fmt::{Display, Formatter};
use std::fmt::{Debug, Display, Formatter};
use ash::{Instance, vk, Entry};
use ash::khr::surface;
use winit::raw_window_handle::{HasDisplayHandle, HasWindowHandle};
use crate::vulkan::utils::{use_layers, LayersSelector};
use crate::vulkan::utils::formatter::format_instance_layer;
use crate::vulkan::utils::layers::{use_layers, LayersSelector};
use crate::vulkan::vk_surface::VkSurface;
use crate::vulkan::VkPhysicalDevice;
@ -27,7 +28,6 @@ impl VkInstance {
"VK_LAYER_NV_optimus"
])
);
log::info!("{:?}", layers);
let layers_raw = layers.iter().map(|s| s.as_ptr()).collect::<Vec<_>>();
// App Info
@ -108,6 +108,22 @@ impl Drop for VkInstance {
impl Display for VkInstance {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "Vulkan Version:")
writeln!(f, "")?;
let instance_layers = unsafe { self.entry.enumerate_instance_layer_properties().unwrap_or_default() };
writeln!(f, "Instance layers ({}) :", instance_layers.len())?;
for instance_layer in &instance_layers {
writeln!(f, "{}", format_instance_layer(instance_layer))?;
}
writeln!(f, "")?;
let physical_devices = self.get_physical_devices();
writeln!(f, "Physical Devices ({}) :", physical_devices.len())?;
for physical_device in physical_devices {
writeln!(f, "{physical_device}")?;
}
writeln!(f, "")?;
Ok(())
}
}