diff options
| author | 2016-04-22 10:10:04 +0800 | |
|---|---|---|
| committer | 2016-04-26 07:43:32 +0800 | |
| commit | 50db9035b034385a27fb557e4da3c48b51a0e3eb (patch) | |
| tree | 7fcde165b5a4eddf9eea84d1545b300701b506db | |
| parent | 83506d84d00bbb35ecebb44261b2139bc40ef3e2 (diff) | |
vulkan: add FindLayer helper
It finds a Layer using the layer name.
Change-Id: I16214514fcdef09f9016dc2c71fcd5c1f3d0fa6b
| -rw-r--r-- | vulkan/libvulkan/layers_extensions.cpp | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/vulkan/libvulkan/layers_extensions.cpp b/vulkan/libvulkan/layers_extensions.cpp index 93e83af605..4c883509ee 100644 --- a/vulkan/libvulkan/layers_extensions.cpp +++ b/vulkan/libvulkan/layers_extensions.cpp @@ -342,6 +342,14 @@ void DiscoverLayersInDirectory(const std::string& dir_path) { closedir(directory); } +const Layer* FindLayer(const std::vector<Layer>& layers, const char* name) { + auto layer = + std::find_if(layers.cbegin(), layers.cend(), [=](const Layer& entry) { + return strcmp(entry.properties.layerName, name) == 0; + }); + return (layer != layers.cend()) ? &*layer : nullptr; +} + void* GetLayerGetProcAddr(const Layer& layer, const char* gpa_name, size_t gpa_name_len) { @@ -363,27 +371,25 @@ void GetLayerExtensions(const std::vector<Layer>& layers, const char* name, const VkExtensionProperties** properties, uint32_t* count) { - auto layer = - std::find_if(layers.cbegin(), layers.cend(), [=](const Layer& entry) { - return strcmp(entry.properties.layerName, name) == 0; - }); - if (layer == layers.cend()) { - *properties = nullptr; - *count = 0; - } else { + const Layer* layer = FindLayer(layers, name); + if (layer) { *properties = layer->extensions.data(); *count = static_cast<uint32_t>(layer->extensions.size()); + } else { + *properties = nullptr; + *count = 0; } } LayerRef GetLayerRef(std::vector<Layer>& layers, const char* name) { - for (uint32_t id = 0; id < layers.size(); id++) { - if (strcmp(name, layers[id].properties.layerName) == 0) { - LayerLibrary& library = g_layer_libraries[layers[id].library_idx]; - return LayerRef((library.Open()) ? &layers[id] : nullptr); - } + const Layer* layer = FindLayer(layers, name); + if (layer) { + LayerLibrary& library = g_layer_libraries[layer->library_idx]; + if (!library.Open()) + layer = nullptr; } - return LayerRef(nullptr); + + return LayerRef(layer); } } // anonymous namespace |