Skip to content

Commit 82b3726

Browse files
committed
replaced deprecated VK_EXT_validation_features
1 parent ff90508 commit 82b3726

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

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

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5101,7 +5101,7 @@ static void ggml_vk_print_gpu_info(size_t idx) {
51015101
}
51025102
}
51035103

5104-
static bool ggml_vk_instance_validation_ext_available();
5104+
static bool ggml_vk_instance_layer_settings_available();
51055105
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
51065106
static bool ggml_vk_instance_debug_utils_ext_available(const std::vector<vk::ExtensionProperties> & instance_extensions);
51075107
static bool ggml_vk_device_is_supported(const vk::PhysicalDevice & vkdev);
@@ -5130,19 +5130,19 @@ static void ggml_vk_instance_init() {
51305130
vk::ApplicationInfo app_info{ "ggml-vulkan", 1, nullptr, 0, api_version };
51315131

51325132
const std::vector<vk::ExtensionProperties> instance_extensions = vk::enumerateInstanceExtensionProperties();
5133-
const bool validation_ext = ggml_vk_instance_validation_ext_available();
5133+
const bool layer_settings = ggml_vk_instance_layer_settings_available();
51345134
#ifdef __APPLE__
51355135
const bool portability_enumeration_ext = ggml_vk_instance_portability_enumeration_ext_available(instance_extensions);
51365136
#endif
51375137
const bool debug_utils_ext = ggml_vk_instance_debug_utils_ext_available(instance_extensions) && getenv("GGML_VK_DEBUG_MARKERS") != nullptr;
51385138
std::vector<const char*> layers;
51395139

5140-
if (validation_ext) {
5140+
if (layer_settings) {
51415141
layers.push_back("VK_LAYER_KHRONOS_validation");
51425142
}
51435143
std::vector<const char*> extensions;
5144-
if (validation_ext) {
5145-
extensions.push_back("VK_EXT_validation_features");
5144+
if (layer_settings) {
5145+
extensions.push_back("VK_EXT_layer_settings");
51465146
}
51475147
#ifdef __APPLE__
51485148
if (portability_enumeration_ext) {
@@ -5152,7 +5152,18 @@ static void ggml_vk_instance_init() {
51525152
if (debug_utils_ext) {
51535153
extensions.push_back("VK_EXT_debug_utils");
51545154
}
5155-
vk::InstanceCreateInfo instance_create_info(vk::InstanceCreateFlags{}, &app_info, layers, extensions);
5155+
VkBool32 enable_best_practice = layer_settings;
5156+
std::vector<vk::LayerSettingEXT> settings = {
5157+
{
5158+
"VK_LAYER_KHRONOS_validation",
5159+
"validate_best_practices",
5160+
vk::LayerSettingTypeEXT::eBool32,
5161+
1,
5162+
&enable_best_practice
5163+
},
5164+
};
5165+
vk::LayerSettingsCreateInfoEXT layer_setting_info(settings);
5166+
vk::InstanceCreateInfo instance_create_info(vk::InstanceCreateFlags{}, &app_info, layers, extensions, &layer_setting_info);
51565167
#ifdef __APPLE__
51575168
if (portability_enumeration_ext) {
51585169
instance_create_info.flags |= vk::InstanceCreateFlagBits::eEnumeratePortabilityKHR;
@@ -5162,7 +5173,7 @@ static void ggml_vk_instance_init() {
51625173
std::vector<vk::ValidationFeatureEnableEXT> features_enable;
51635174
vk::ValidationFeaturesEXT validation_features;
51645175

5165-
if (validation_ext) {
5176+
if (layer_settings) {
51665177
features_enable = { vk::ValidationFeatureEnableEXT::eBestPractices };
51675178
validation_features = {
51685179
features_enable,
@@ -14369,21 +14380,21 @@ ggml_backend_reg_t ggml_backend_vk_reg() {
1436914380
}
1437014381

1437114382
// Extension availability
14372-
static bool ggml_vk_instance_validation_ext_available() {
14383+
static bool ggml_vk_instance_layer_settings_available() {
1437314384
#ifdef GGML_VULKAN_VALIDATE
1437414385
// Check if validation layer provides the extension
1437514386
const std::string layer_name = "VK_LAYER_KHRONOS_validation";
1437614387
for (const auto& layer : vk::enumerateInstanceLayerProperties()) {
1437714388
if (layer_name == layer.layerName.data()) {
1437814389
for (const auto& ext : vk::enumerateInstanceExtensionProperties(layer_name)) {
14379-
if (strcmp("VK_EXT_validation_features", ext.extensionName.data()) == 0) {
14390+
if (strcmp("VK_EXT_layer_settings", ext.extensionName.data()) == 0) {
1438014391
return true;
1438114392
}
1438214393
}
1438314394
}
1438414395
}
1438514396

14386-
std::cerr << "ggml_vulkan: WARNING: Validation layer or layer extension VK_EXT_validation_features not found." << std::endl;
14397+
std::cerr << "ggml_vulkan: WARNING: Validation layer or layer extension VK_EXT_layer_settings not found." << std::endl;
1438714398
#endif
1438814399
return false;
1438914400
}

0 commit comments

Comments
 (0)