summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chia-I Wu <olv@google.com> 2016-04-22 10:10:04 +0800
committer Chia-I Wu <olv@google.com> 2016-04-26 07:43:32 +0800
commit50db9035b034385a27fb557e4da3c48b51a0e3eb (patch)
tree7fcde165b5a4eddf9eea84d1545b300701b506db
parent83506d84d00bbb35ecebb44261b2139bc40ef3e2 (diff)
vulkan: add FindLayer helper
It finds a Layer using the layer name. Change-Id: I16214514fcdef09f9016dc2c71fcd5c1f3d0fa6b
-rw-r--r--vulkan/libvulkan/layers_extensions.cpp34
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