From 45e01aa6e65978dd3cdbeef603cb93b9114f5a48 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 12 Mar 2026 14:26:23 -0700 Subject: [PATCH] Add `log::info!`/`log::error!` for Vulkan issues --- src/backend/wayland/mod.rs | 10 +++++++++- src/backend/wayland/vulkan.rs | 11 +++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/backend/wayland/mod.rs b/src/backend/wayland/mod.rs index 4413c1d..cf0b3f1 100644 --- a/src/backend/wayland/mod.rs +++ b/src/backend/wayland/mod.rs @@ -283,6 +283,14 @@ fn start(conn: Connection) -> mpsc::Receiver { // spawn an executor using one additional thread. let thread_pool = ThreadPool::builder().pool_size(1).create().unwrap(); + let vulkan = vulkan::Vulkan::new(); + if let Err(err) = &vulkan { + log::info!( + "Unable to initialize Vulkan: {}. Assuming now GPU workarounds needed.", + err + ); + } + let registry_state = RegistryState::new(&globals); let mut app_data = AppData { qh: qh.clone(), @@ -300,7 +308,7 @@ fn start(conn: Connection) -> mpsc::Receiver { dmabuf_feedback: None, gbm_devices: GbmDevices::default(), thread_pool, - vulkan: vulkan::Vulkan::new(), + vulkan: vulkan.ok(), }; let (cmd_sender, cmd_channel) = calloop::channel::channel(); diff --git a/src/backend/wayland/vulkan.rs b/src/backend/wayland/vulkan.rs index 244a096..a177452 100644 --- a/src/backend/wayland/vulkan.rs +++ b/src/backend/wayland/vulkan.rs @@ -9,8 +9,8 @@ pub struct Vulkan { } impl Vulkan { - pub fn new() -> Option { - let entry = unsafe { ash::Entry::load().ok()? }; + pub fn new() -> anyhow::Result { + let entry = unsafe { ash::Entry::load()? }; let app_info = vk::ApplicationInfo { api_version: vk::make_api_version(0, 1, 1, 0), ..Default::default() @@ -19,8 +19,8 @@ impl Vulkan { p_application_info: &app_info, ..Default::default() }; - let instance = unsafe { entry.create_instance(&create_info, None).ok()? }; - Some(Self { + let instance = unsafe { entry.create_instance(&create_info, None)? }; + Ok(Self { _entry: entry, instance, device_name_cache: HashMap::new(), @@ -30,6 +30,9 @@ impl Vulkan { pub fn device_name(&mut self, dev: u64) -> VkResult> { if !self.device_name_cache.contains_key(&dev) { let value = self.device_name_uncached(dev); + if let Err(err) = &value { + log::error!("Failed to query Vulkan device properties: {}", err); + } self.device_name_cache.insert(dev, value); } self.device_name_cache