From a84f1d13c06d7b5fd58044dea84b84d9d5df7eef Mon Sep 17 00:00:00 2001 From: Lava Block <the@lava-block.com> Date: Wed, 19 Feb 2020 04:48:29 +0100 Subject: [PATCH] instance::create_param::check --- liblava/base/instance.cpp | 64 +++++++++++++++++++-------------------- liblava/base/instance.hpp | 6 ++-- 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/liblava/base/instance.cpp b/liblava/base/instance.cpp index 9f5504aa..bf7c5144 100644 --- a/liblava/base/instance.cpp +++ b/liblava/base/instance.cpp @@ -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; +} diff --git a/liblava/base/instance.hpp b/liblava/base/instance.hpp index d8ea637b..88199084 100644 --- a/liblava/base/instance.hpp +++ b/liblava/base/instance.hpp @@ -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 -- GitLab