Skip to content

Commit 5f2bf8c

Browse files
committed
vulkan : update ggml_vk_instance_validation_ext_available
This commit updates ggml_vk_instance_validation_ext_available() to check for VK_EXT_validation_features instead of VK_KHR_portability_enumeration. Based on how the returned boolean is used later in the code (to enable both the validation layer and the VK_EXT_validation_features extension), it appears the function may have been intended to check for the validation layer features extension.
1 parent 55042b3 commit 5f2bf8c

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

ggml/src/ggml-vulkan/ggml-vulkan.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4204,7 +4204,7 @@ static void ggml_vk_print_gpu_info(size_t idx) {
42044204
}
42054205
}
42064206

4207-
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
4207+
static bool ggml_vk_instance_validation_ext_available();
42084208
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
42094209

42104210
static bool ggml_vk_instance_debug_utils_ext_available(const std::vector<vk::ExtensionProperties> & instance_extensions);
@@ -4225,7 +4225,7 @@ static void ggml_vk_instance_init() {
42254225
vk::ApplicationInfo app_info{ "ggml-vulkan", 1, nullptr, 0, api_version };
42264226

42274227
const std::vector<vk::ExtensionProperties> instance_extensions = vk::enumerateInstanceExtensionProperties();
4228-
const bool validation_ext = ggml_vk_instance_validation_ext_available(instance_extensions);
4228+
const bool validation_ext = ggml_vk_instance_validation_ext_available();
42294229
#ifdef __APPLE__
42304230
const bool portability_enumeration_ext = ggml_vk_instance_portability_enumeration_ext_available(instance_extensions);
42314231
#endif
@@ -11998,22 +11998,20 @@ ggml_backend_reg_t ggml_backend_vk_reg() {
1199811998
}
1199911999

1200012000
// Extension availability
12001-
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions) {
12001+
static bool ggml_vk_instance_validation_ext_available() {
1200212002
#ifdef GGML_VULKAN_VALIDATE
12003-
bool portability_enumeration_ext = false;
12004-
// Check for portability enumeration extension for MoltenVK support
12005-
for (const auto& properties : instance_extensions) {
12006-
if (strcmp("VK_KHR_portability_enumeration", properties.extensionName) == 0) {
12007-
return true;
12003+
// Check if validation layer provides the extension
12004+
try {
12005+
for (const auto& ext : vk::enumerateInstanceExtensionProperties(std::string("VK_LAYER_KHRONOS_validation"))) {
12006+
if (strcmp("VK_EXT_validation_features", ext.extensionName.data()) == 0) {
12007+
return true;
12008+
}
1200812009
}
12009-
}
12010-
if (!portability_enumeration_ext) {
12011-
std::cerr << "ggml_vulkan: WARNING: Instance extension VK_KHR_portability_enumeration not found." << std::endl;
12012-
}
12010+
} catch (...) { /* It's alright if the layer is not present */ }
12011+
12012+
std::cerr << "ggml_vulkan: WARNING: Instance extension VK_EXT_validation_features not found." << std::endl;
1201312013
#endif
1201412014
return false;
12015-
12016-
UNUSED(instance_extensions);
1201712015
}
1201812016
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions) {
1201912017
#ifdef __APPLE__

0 commit comments

Comments
 (0)