Skip to content

Commit 67788f6

Browse files
authored
vulkan: Replace deprecated VK_EXT_validation_features (ggml-org#17637)
* replaced deprecated VK_EXT_validation_features * forgot to remove old code
1 parent d8c0a7b commit 67788f6

File tree

1 file changed

+20
-22
lines changed

1 file changed

+20
-22
lines changed

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

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5062,7 +5062,7 @@ static void ggml_vk_print_gpu_info(size_t idx) {
50625062
}
50635063
}
50645064

5065-
static bool ggml_vk_instance_validation_ext_available();
5065+
static bool ggml_vk_instance_layer_settings_available();
50665066
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
50675067
static bool ggml_vk_instance_debug_utils_ext_available(const std::vector<vk::ExtensionProperties> & instance_extensions);
50685068
static bool ggml_vk_device_is_supported(const vk::PhysicalDevice & vkdev);
@@ -5091,19 +5091,19 @@ static void ggml_vk_instance_init() {
50915091
vk::ApplicationInfo app_info{ "ggml-vulkan", 1, nullptr, 0, api_version };
50925092

50935093
const std::vector<vk::ExtensionProperties> instance_extensions = vk::enumerateInstanceExtensionProperties();
5094-
const bool validation_ext = ggml_vk_instance_validation_ext_available();
5094+
const bool layer_settings = ggml_vk_instance_layer_settings_available();
50955095
#ifdef __APPLE__
50965096
const bool portability_enumeration_ext = ggml_vk_instance_portability_enumeration_ext_available(instance_extensions);
50975097
#endif
50985098
const bool debug_utils_ext = ggml_vk_instance_debug_utils_ext_available(instance_extensions) && getenv("GGML_VK_DEBUG_MARKERS") != nullptr;
50995099
std::vector<const char*> layers;
51005100

5101-
if (validation_ext) {
5101+
if (layer_settings) {
51025102
layers.push_back("VK_LAYER_KHRONOS_validation");
51035103
}
51045104
std::vector<const char*> extensions;
5105-
if (validation_ext) {
5106-
extensions.push_back("VK_EXT_validation_features");
5105+
if (layer_settings) {
5106+
extensions.push_back("VK_EXT_layer_settings");
51075107
}
51085108
#ifdef __APPLE__
51095109
if (portability_enumeration_ext) {
@@ -5113,26 +5113,24 @@ static void ggml_vk_instance_init() {
51135113
if (debug_utils_ext) {
51145114
extensions.push_back("VK_EXT_debug_utils");
51155115
}
5116-
vk::InstanceCreateInfo instance_create_info(vk::InstanceCreateFlags{}, &app_info, layers, extensions);
5116+
VkBool32 enable_best_practice = layer_settings;
5117+
std::vector<vk::LayerSettingEXT> settings = {
5118+
{
5119+
"VK_LAYER_KHRONOS_validation",
5120+
"validate_best_practices",
5121+
vk::LayerSettingTypeEXT::eBool32,
5122+
1,
5123+
&enable_best_practice
5124+
},
5125+
};
5126+
vk::LayerSettingsCreateInfoEXT layer_setting_info(settings);
5127+
vk::InstanceCreateInfo instance_create_info(vk::InstanceCreateFlags{}, &app_info, layers, extensions, &layer_setting_info);
51175128
#ifdef __APPLE__
51185129
if (portability_enumeration_ext) {
51195130
instance_create_info.flags |= vk::InstanceCreateFlagBits::eEnumeratePortabilityKHR;
51205131
}
51215132
#endif
51225133

5123-
std::vector<vk::ValidationFeatureEnableEXT> features_enable;
5124-
vk::ValidationFeaturesEXT validation_features;
5125-
5126-
if (validation_ext) {
5127-
features_enable = { vk::ValidationFeatureEnableEXT::eBestPractices };
5128-
validation_features = {
5129-
features_enable,
5130-
{},
5131-
};
5132-
validation_features.setPNext(nullptr);
5133-
instance_create_info.setPNext(&validation_features);
5134-
GGML_LOG_DEBUG("ggml_vulkan: Validation layers enabled\n");
5135-
}
51365134
vk_instance.instance = vk::createInstance(instance_create_info);
51375135
vk_instance_initialized = true;
51385136

@@ -14227,21 +14225,21 @@ ggml_backend_reg_t ggml_backend_vk_reg() {
1422714225
}
1422814226

1422914227
// Extension availability
14230-
static bool ggml_vk_instance_validation_ext_available() {
14228+
static bool ggml_vk_instance_layer_settings_available() {
1423114229
#ifdef GGML_VULKAN_VALIDATE
1423214230
// Check if validation layer provides the extension
1423314231
const std::string layer_name = "VK_LAYER_KHRONOS_validation";
1423414232
for (const auto& layer : vk::enumerateInstanceLayerProperties()) {
1423514233
if (layer_name == layer.layerName.data()) {
1423614234
for (const auto& ext : vk::enumerateInstanceExtensionProperties(layer_name)) {
14237-
if (strcmp("VK_EXT_validation_features", ext.extensionName.data()) == 0) {
14235+
if (strcmp("VK_EXT_layer_settings", ext.extensionName.data()) == 0) {
1423814236
return true;
1423914237
}
1424014238
}
1424114239
}
1424214240
}
1424314241

14244-
std::cerr << "ggml_vulkan: WARNING: Validation layer or layer extension VK_EXT_validation_features not found." << std::endl;
14242+
std::cerr << "ggml_vulkan: WARNING: Validation layer or layer extension VK_EXT_layer_settings not found." << std::endl;
1424514243
#endif
1424614244
return false;
1424714245
}

0 commit comments

Comments
 (0)