From 9b2c212bd03dfee5115449396d45bf31533cf3cd Mon Sep 17 00:00:00 2001 From: hellno Date: Wed, 15 Apr 2026 20:24:51 +0200 Subject: [PATCH 1/2] vk: Use driver API version for instance creation Use the version reported by vkEnumerateInstanceVersion instead of vk::HEADER_VERSION_COMPLETE when creating the Vulkan instance. On systems where the driver only supports Vulkan 1.1 or 1.2 (e.g. lavapipe on RHEL 8), requesting the ash header version (1.3.x) causes ERROR_INCOMPATIBLE_DRIVER. driver_api_version is already queried and used for extension promotion checks in the same function. Fixes #341 --- blade-graphics/src/vulkan/init.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blade-graphics/src/vulkan/init.rs b/blade-graphics/src/vulkan/init.rs index f20666b9..ae549324 100644 --- a/blade-graphics/src/vulkan/init.rs +++ b/blade-graphics/src/vulkan/init.rs @@ -681,7 +681,7 @@ impl super::VulkanInstance { let app_info = vk::ApplicationInfo::default() .engine_name(c"blade") .engine_version(1) - .api_version(vk::HEADER_VERSION_COMPLETE); + .api_version(driver_api_version); let str_pointers = layers .iter() .chain(enabled_instance_extensions.iter()) From 6e2900ecb4f512166e4e8a59bae98a2ee0b0cc74 Mon Sep 17 00:00:00 2001 From: hellno Date: Fri, 17 Apr 2026 09:28:09 +0200 Subject: [PATCH 2/2] vk: Cap instance API version at header version Take the minimum of driver_api_version and vk::HEADER_VERSION_COMPLETE so we never request a version newer than our ash headers support, while still capping at the driver version on older systems. --- blade-graphics/src/vulkan/init.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blade-graphics/src/vulkan/init.rs b/blade-graphics/src/vulkan/init.rs index ae549324..d9bb106d 100644 --- a/blade-graphics/src/vulkan/init.rs +++ b/blade-graphics/src/vulkan/init.rs @@ -681,7 +681,7 @@ impl super::VulkanInstance { let app_info = vk::ApplicationInfo::default() .engine_name(c"blade") .engine_version(1) - .api_version(driver_api_version); + .api_version(driver_api_version.min(vk::HEADER_VERSION_COMPLETE)); let str_pointers = layers .iter() .chain(enabled_instance_extensions.iter())