Skip to content

Commit 8227695

Browse files
authored
vulkan : update ggml_vk_instance_validation_ext_available (#15666)
* 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. * remove try/catch This was a left over from a previous iteration where I was explicitly quering for a specific validation layer first, which would throw. * update warning message about validation layers
1 parent 0014fb4 commit 8227695

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

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

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4271,7 +4271,7 @@ static void ggml_vk_print_gpu_info(size_t idx) {
42714271
}
42724272
}
42734273

4274-
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
4274+
static bool ggml_vk_instance_validation_ext_available();
42754275
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
42764276

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

42944294
const std::vector<vk::ExtensionProperties> instance_extensions = vk::enumerateInstanceExtensionProperties();
4295-
const bool validation_ext = ggml_vk_instance_validation_ext_available(instance_extensions);
4295+
const bool validation_ext = ggml_vk_instance_validation_ext_available();
42964296
#ifdef __APPLE__
42974297
const bool portability_enumeration_ext = ggml_vk_instance_portability_enumeration_ext_available(instance_extensions);
42984298
#endif
@@ -12212,22 +12212,23 @@ ggml_backend_reg_t ggml_backend_vk_reg() {
1221212212
}
1221312213

1221412214
// Extension availability
12215-
static bool ggml_vk_instance_validation_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions) {
12215+
static bool ggml_vk_instance_validation_ext_available() {
1221612216
#ifdef GGML_VULKAN_VALIDATE
12217-
bool portability_enumeration_ext = false;
12218-
// Check for portability enumeration extension for MoltenVK support
12219-
for (const auto& properties : instance_extensions) {
12220-
if (strcmp("VK_KHR_portability_enumeration", properties.extensionName) == 0) {
12221-
return true;
12217+
// Check if validation layer provides the extension
12218+
const std::string layer_name = "VK_LAYER_KHRONOS_validation";
12219+
for (const auto& layer : vk::enumerateInstanceLayerProperties()) {
12220+
if (layer_name == layer.layerName.data()) {
12221+
for (const auto& ext : vk::enumerateInstanceExtensionProperties(layer_name)) {
12222+
if (strcmp("VK_EXT_validation_features", ext.extensionName.data()) == 0) {
12223+
return true;
12224+
}
12225+
}
1222212226
}
1222312227
}
12224-
if (!portability_enumeration_ext) {
12225-
std::cerr << "ggml_vulkan: WARNING: Instance extension VK_KHR_portability_enumeration not found." << std::endl;
12226-
}
12228+
12229+
std::cerr << "ggml_vulkan: WARNING: Validation layer or layer extension VK_EXT_validation_features not found." << std::endl;
1222712230
#endif
1222812231
return false;
12229-
12230-
UNUSED(instance_extensions);
1223112232
}
1223212233
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions) {
1223312234
#ifdef __APPLE__

0 commit comments

Comments
 (0)