Skip to content
Snippets Groups Projects
Commit a84f1d13 authored by Lava Block's avatar Lava Block
Browse files

instance::create_param::check

parent 0c7d7a85
No related branches found
No related tags found
No related merge requests found
......@@ -38,7 +38,7 @@ bool instance::create(create_param& param, debug_config::ref d, app_info::ref i)
param.extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
}
if (!param.check()) {
if (!check(param)) {
log()->error("create instance param");
return false;
......@@ -108,37 +108,6 @@ void instance::destroy() {
vk_instance = nullptr;
}
bool instance::create_param::check() const {
auto layer_properties = enumerate_layer_properties();
for (auto const& layer_name : layers) {
auto itr = std::find_if(layer_properties.begin(), layer_properties.end(),
[&](VkLayerProperties const& extProp) {
return strcmp(layer_name, extProp.layerName) == 0;
});
if (itr == layer_properties.end())
return false;
}
auto extensions_properties = enumerate_extension_properties();
for (auto const& ext_name : extensions) {
auto itr = std::find_if(extensions_properties.begin(), extensions_properties.end(),
[&](VkExtensionProperties const& extProp) {
return strcmp(ext_name, extProp.extensionName) == 0;
});
if (itr == extensions_properties.end())
return false;
}
return true;
}
static VKAPI_ATTR VkBool32 VKAPI_CALL validation_callback(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity,
VkDebugUtilsMessageTypeFlagsEXT message_type, const VkDebugUtilsMessengerCallbackDataEXT* callback_data, void* user_data) {
......@@ -253,3 +222,34 @@ internal_version instance::get_version() {
}
} // lava
bool lava::check(instance::create_param::ref param) {
auto layer_properties = instance::enumerate_layer_properties();
for (auto const& layer_name : param.layers) {
auto itr = std::find_if(layer_properties.begin(), layer_properties.end(),
[&](VkLayerProperties const& extProp) {
return strcmp(layer_name, extProp.layerName) == 0;
});
if (itr == layer_properties.end())
return false;
}
auto extensions_properties = instance::enumerate_extension_properties();
for (auto const& ext_name : param.extensions) {
auto itr = std::find_if(extensions_properties.begin(), extensions_properties.end(),
[&](VkExtensionProperties const& extProp) {
return strcmp(ext_name, extProp.extensionName) == 0;
});
if (itr == extensions_properties.end())
return false;
}
return true;
}
......@@ -12,10 +12,10 @@ struct instance : no_copy_no_move {
struct create_param {
using ref = create_param const&;
names layers{};
names extensions{};
bool check() const;
};
struct debug_config {
......@@ -87,4 +87,6 @@ private:
VkDebugUtilsMessengerEXT debug_messenger = 0;
};
bool check(instance::create_param::ref param);
} // lava
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment