Commit 58cb9138e for llama.cpp
commit 58cb9138e46180d45854cf45d4c1e25ad5f7e1c4
Author: Ian McKellar <ian@mckellar.org>
Date: Tue Oct 6 06:28:54 2026 -0700
vulkan : check for null vkEnumerateInstanceVersion (#29872)
A 1.0 loader (e.g. Android 8.1) has no vkEnumerateInstanceVersion, so
backend init called a null pointer. Treat it like any loader under 1.2.
Fixes #29871.
Assisted-by: Claude Opus 5.5
diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp
index 5587dfc28..740de5b5a 100644
--- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp
+++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp
@@ -5189,10 +5189,16 @@ void ggml_vk_instance_init() {
// See https://github.com/KhronosGroup/Vulkan-Hpp?tab=readme-ov-file#extensions--per-device-function-pointers-
ggml_vk_default_dispatcher_instance.init(vkGetInstanceProcAddr);
+ // vkEnumerateInstanceVersion is Vulkan 1.1. A null value indicated Vulkan 1.0.
+ if (ggml_vk_default_dispatcher_instance.vkEnumerateInstanceVersion == nullptr) {
+ GGML_LOG_ERROR("ggml_vulkan: Error: Vulkan 1.2 required.");
+ throw vk::SystemError(vk::Result::eErrorFeatureNotPresent, "Vulkan 1.2 required");
+ }
+
uint32_t api_version = vk::enumerateInstanceVersion();
if (api_version < VK_API_VERSION_1_2) {
- std::cerr << "ggml_vulkan: Error: Vulkan 1.2 required." << std::endl;
+ GGML_LOG_ERROR("ggml_vulkan: Error: Vulkan 1.2 required.");
throw vk::SystemError(vk::Result::eErrorFeatureNotPresent, "Vulkan 1.2 required");
}