vulkan: add FindLayer helper

It finds a Layer using the layer name.

Change-Id: I16214514fcdef09f9016dc2c71fcd5c1f3d0fa6b
diff --git a/vulkan/libvulkan/layers_extensions.cpp b/vulkan/libvulkan/layers_extensions.cpp
index 93e83af..4c88350 100644
--- a/vulkan/libvulkan/layers_extensions.cpp
+++ b/vulkan/libvulkan/layers_extensions.cpp
@@ -342,6 +342,14 @@
     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 @@
                         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