vulkan: Replace deprecated VK_EXT_validation_features (#17637)
* replaced deprecated VK_EXT_validation_features * forgot to remove old code
This commit is contained in:
parent
d8c0a7b085
commit
67788f6846
|
|
@ -5062,7 +5062,7 @@ static void ggml_vk_print_gpu_info(size_t idx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ggml_vk_instance_validation_ext_available();
|
static bool ggml_vk_instance_layer_settings_available();
|
||||||
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
|
static bool ggml_vk_instance_portability_enumeration_ext_available(const std::vector<vk::ExtensionProperties>& instance_extensions);
|
||||||
static bool ggml_vk_instance_debug_utils_ext_available(const std::vector<vk::ExtensionProperties> & instance_extensions);
|
static bool ggml_vk_instance_debug_utils_ext_available(const std::vector<vk::ExtensionProperties> & instance_extensions);
|
||||||
static bool ggml_vk_device_is_supported(const vk::PhysicalDevice & vkdev);
|
static bool ggml_vk_device_is_supported(const vk::PhysicalDevice & vkdev);
|
||||||
|
|
@ -5091,19 +5091,19 @@ static void ggml_vk_instance_init() {
|
||||||
vk::ApplicationInfo app_info{ "ggml-vulkan", 1, nullptr, 0, api_version };
|
vk::ApplicationInfo app_info{ "ggml-vulkan", 1, nullptr, 0, api_version };
|
||||||
|
|
||||||
const std::vector<vk::ExtensionProperties> instance_extensions = vk::enumerateInstanceExtensionProperties();
|
const std::vector<vk::ExtensionProperties> instance_extensions = vk::enumerateInstanceExtensionProperties();
|
||||||
const bool validation_ext = ggml_vk_instance_validation_ext_available();
|
const bool layer_settings = ggml_vk_instance_layer_settings_available();
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
const bool portability_enumeration_ext = ggml_vk_instance_portability_enumeration_ext_available(instance_extensions);
|
const bool portability_enumeration_ext = ggml_vk_instance_portability_enumeration_ext_available(instance_extensions);
|
||||||
#endif
|
#endif
|
||||||
const bool debug_utils_ext = ggml_vk_instance_debug_utils_ext_available(instance_extensions) && getenv("GGML_VK_DEBUG_MARKERS") != nullptr;
|
const bool debug_utils_ext = ggml_vk_instance_debug_utils_ext_available(instance_extensions) && getenv("GGML_VK_DEBUG_MARKERS") != nullptr;
|
||||||
std::vector<const char*> layers;
|
std::vector<const char*> layers;
|
||||||
|
|
||||||
if (validation_ext) {
|
if (layer_settings) {
|
||||||
layers.push_back("VK_LAYER_KHRONOS_validation");
|
layers.push_back("VK_LAYER_KHRONOS_validation");
|
||||||
}
|
}
|
||||||
std::vector<const char*> extensions;
|
std::vector<const char*> extensions;
|
||||||
if (validation_ext) {
|
if (layer_settings) {
|
||||||
extensions.push_back("VK_EXT_validation_features");
|
extensions.push_back("VK_EXT_layer_settings");
|
||||||
}
|
}
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
if (portability_enumeration_ext) {
|
if (portability_enumeration_ext) {
|
||||||
|
|
@ -5113,26 +5113,24 @@ static void ggml_vk_instance_init() {
|
||||||
if (debug_utils_ext) {
|
if (debug_utils_ext) {
|
||||||
extensions.push_back("VK_EXT_debug_utils");
|
extensions.push_back("VK_EXT_debug_utils");
|
||||||
}
|
}
|
||||||
vk::InstanceCreateInfo instance_create_info(vk::InstanceCreateFlags{}, &app_info, layers, extensions);
|
VkBool32 enable_best_practice = layer_settings;
|
||||||
|
std::vector<vk::LayerSettingEXT> settings = {
|
||||||
|
{
|
||||||
|
"VK_LAYER_KHRONOS_validation",
|
||||||
|
"validate_best_practices",
|
||||||
|
vk::LayerSettingTypeEXT::eBool32,
|
||||||
|
1,
|
||||||
|
&enable_best_practice
|
||||||
|
},
|
||||||
|
};
|
||||||
|
vk::LayerSettingsCreateInfoEXT layer_setting_info(settings);
|
||||||
|
vk::InstanceCreateInfo instance_create_info(vk::InstanceCreateFlags{}, &app_info, layers, extensions, &layer_setting_info);
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
if (portability_enumeration_ext) {
|
if (portability_enumeration_ext) {
|
||||||
instance_create_info.flags |= vk::InstanceCreateFlagBits::eEnumeratePortabilityKHR;
|
instance_create_info.flags |= vk::InstanceCreateFlagBits::eEnumeratePortabilityKHR;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::vector<vk::ValidationFeatureEnableEXT> features_enable;
|
|
||||||
vk::ValidationFeaturesEXT validation_features;
|
|
||||||
|
|
||||||
if (validation_ext) {
|
|
||||||
features_enable = { vk::ValidationFeatureEnableEXT::eBestPractices };
|
|
||||||
validation_features = {
|
|
||||||
features_enable,
|
|
||||||
{},
|
|
||||||
};
|
|
||||||
validation_features.setPNext(nullptr);
|
|
||||||
instance_create_info.setPNext(&validation_features);
|
|
||||||
GGML_LOG_DEBUG("ggml_vulkan: Validation layers enabled\n");
|
|
||||||
}
|
|
||||||
vk_instance.instance = vk::createInstance(instance_create_info);
|
vk_instance.instance = vk::createInstance(instance_create_info);
|
||||||
vk_instance_initialized = true;
|
vk_instance_initialized = true;
|
||||||
|
|
||||||
|
|
@ -14227,21 +14225,21 @@ ggml_backend_reg_t ggml_backend_vk_reg() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extension availability
|
// Extension availability
|
||||||
static bool ggml_vk_instance_validation_ext_available() {
|
static bool ggml_vk_instance_layer_settings_available() {
|
||||||
#ifdef GGML_VULKAN_VALIDATE
|
#ifdef GGML_VULKAN_VALIDATE
|
||||||
// Check if validation layer provides the extension
|
// Check if validation layer provides the extension
|
||||||
const std::string layer_name = "VK_LAYER_KHRONOS_validation";
|
const std::string layer_name = "VK_LAYER_KHRONOS_validation";
|
||||||
for (const auto& layer : vk::enumerateInstanceLayerProperties()) {
|
for (const auto& layer : vk::enumerateInstanceLayerProperties()) {
|
||||||
if (layer_name == layer.layerName.data()) {
|
if (layer_name == layer.layerName.data()) {
|
||||||
for (const auto& ext : vk::enumerateInstanceExtensionProperties(layer_name)) {
|
for (const auto& ext : vk::enumerateInstanceExtensionProperties(layer_name)) {
|
||||||
if (strcmp("VK_EXT_validation_features", ext.extensionName.data()) == 0) {
|
if (strcmp("VK_EXT_layer_settings", ext.extensionName.data()) == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cerr << "ggml_vulkan: WARNING: Validation layer or layer extension VK_EXT_validation_features not found." << std::endl;
|
std::cerr << "ggml_vulkan: WARNING: Validation layer or layer extension VK_EXT_layer_settings not found." << std::endl;
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue