vulkan: refactor GetLayerGetProcAddr

Add and call LayerLibrary::GetGPA from GetLayerGetProcAddr.  There is no
functional change.

Change-Id: Ie0ec8c16633239bd8d8e634fac7525401d73343a
diff --git a/vulkan/libvulkan/layers_extensions.cpp b/vulkan/libvulkan/layers_extensions.cpp
index 78dad05..975ffc0 100644
--- a/vulkan/libvulkan/layers_extensions.cpp
+++ b/vulkan/libvulkan/layers_extensions.cpp
@@ -80,6 +80,10 @@
                          std::vector<Layer>& instance_layers,
                          std::vector<Layer>& device_layers) const;
 
+    void* GetGPA(const Layer& layer,
+                 const char* gpa_name,
+                 size_t gpa_name_len) const;
+
     std::string path;
     void* dlhandle;
     size_t refcount;
@@ -260,6 +264,23 @@
     return true;
 }
 
+void* LayerLibrary::GetGPA(const Layer& layer,
+                           const char* gpa_name,
+                           size_t gpa_name_len) const {
+    void* gpa;
+    size_t layer_name_len =
+        std::max(size_t{2}, strlen(layer.properties.layerName));
+    char* name = static_cast<char*>(alloca(layer_name_len + gpa_name_len + 1));
+    strcpy(name, layer.properties.layerName);
+    strcpy(name + layer_name_len, gpa_name);
+    if (!(gpa = dlsym(dlhandle, name))) {
+        strcpy(name, "vk");
+        strcpy(name + 2, gpa_name);
+        gpa = dlsym(dlhandle, name);
+    }
+    return gpa;
+}
+
 std::mutex g_library_mutex;
 std::vector<LayerLibrary> g_layer_libraries;
 std::vector<Layer> g_instance_layers;
@@ -317,17 +338,7 @@
                           const char* gpa_name,
                           size_t gpa_name_len) {
     const LayerLibrary& library = g_layer_libraries[layer.library_idx];
-    void* gpa;
-    size_t layer_name_len = std::max(size_t{2}, strlen(layer.properties.layerName));
-    char* name = static_cast<char*>(alloca(layer_name_len + gpa_name_len + 1));
-    strcpy(name, layer.properties.layerName);
-    strcpy(name + layer_name_len, gpa_name);
-    if (!(gpa = dlsym(library.dlhandle, name))) {
-        strcpy(name, "vk");
-        strcpy(name + 2, gpa_name);
-        gpa = dlsym(library.dlhandle, name);
-    }
-    return gpa;
+    return library.GetGPA(layer, gpa_name, gpa_name_len);
 }
 
 uint32_t EnumerateLayers(const std::vector<Layer>& layers,