Refactor VK layer handling and add logging improvements
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 0s

Refactored VK layer handling by changing return type of `use_layers` to `Vec<CString>`, adjusting subsequent usage of layers. Implemented `Display` for `VkPhysicalDevice` for better logging. Enhanced application initialization with detailed window attributes. Transitioned to using `log::info` for consistent logging.
This commit is contained in:
Florian RICHER 2024-11-10 11:27:45 +01:00
parent f52832e0e5
commit 4048937a6c
Signed by: florian.richer
GPG key ID: C73D37CBED7BFC77
5 changed files with 43 additions and 19 deletions

View file

@ -1,14 +1,26 @@
use std::fmt::{Display, Formatter};
use winit::{
application::ApplicationHandler, event::WindowEvent, event_loop::ActiveEventLoop, raw_window_handle::{HasDisplayHandle, DisplayHandle, HandleError}, window::{Window, WindowId}
};
use winit::window::WindowAttributes;
use crate::vulkan::VkInstance;
#[derive(Default)]
pub struct App {
window_attributes: WindowAttributes,
window: Option<Window>,
instance: Option<VkInstance>,
}
impl App {
pub fn new(window_attributes: WindowAttributes) -> Self {
Self {
window_attributes,
window: None,
instance: None,
}
}
}
impl HasDisplayHandle for App {
fn display_handle(&self) -> Result<DisplayHandle<'_>, HandleError> {
self.window.as_ref()
@ -19,16 +31,8 @@ impl HasDisplayHandle for App {
impl ApplicationHandler for App {
fn resumed(&mut self, event_loop: &ActiveEventLoop) {
let window_attributes = Window::default_attributes()
.with_title("Rust ASH Test")
.with_visible(true)
.with_inner_size(winit::dpi::LogicalSize::new(
f64::from(800),
f64::from(600),
));
self.window = event_loop
.create_window(window_attributes)
.create_window(self.window_attributes.clone())
.ok();
self.instance = self.window
@ -38,9 +42,9 @@ impl ApplicationHandler for App {
if let Some(instance) = self.instance.as_ref() {
let physical_devices = instance.get_physical_devices();
println!("Physical Devices:");
log::info!("Physical Devices:");
for physical_device in physical_devices {
println!("\tNom: {:?}, Priorité: {}", physical_device.properties.device_name_as_c_str().unwrap_or_default(), physical_device.priority())
log::info!("{}", physical_device)
}
}
}
@ -48,7 +52,7 @@ impl ApplicationHandler for App {
fn window_event(&mut self, event_loop: &ActiveEventLoop, id: WindowId, event: WindowEvent) {
match event {
WindowEvent::CloseRequested => {
println!("The close button was pressed; stopping");
log::info!("The close button was pressed; stopping");
event_loop.exit();
}
WindowEvent::RedrawRequested => {