diff --git a/vulkan/libvulkan/api.cpp b/vulkan/libvulkan/api.cpp
index 6d558ee..1014c14 100644
--- a/vulkan/libvulkan/api.cpp
+++ b/vulkan/libvulkan/api.cpp
@@ -543,13 +543,19 @@
 }
 
 VkResult LayerChain::LoadLayer(ActiveLayer& layer, const char* name) {
+    const Layer* l = FindLayer(name);
+    if (!l || (!is_instance_ && !IsLayerGlobal(*l))) {
+        ALOGW("Failed to find layer %s", name);
+        return VK_ERROR_LAYER_NOT_PRESENT;
+    }
+
     if (is_instance_)
-        new (&layer) ActiveLayer{GetInstanceLayerRef(name), {}};
+        new (&layer) ActiveLayer{GetInstanceLayerRef(*l), {}};
     else
-        new (&layer) ActiveLayer{GetDeviceLayerRef(name), {}};
+        new (&layer) ActiveLayer{GetDeviceLayerRef(*l), {}};
 
     if (!layer.ref) {
-        ALOGE("Failed to load layer %s", name);
+        ALOGW("Failed to open layer %s", name);
         layer.ref.~LayerRef();
         return VK_ERROR_LAYER_NOT_PRESENT;
     }
diff --git a/vulkan/libvulkan/layers_extensions.cpp b/vulkan/libvulkan/layers_extensions.cpp
index b7558a2..9998aee 100644
--- a/vulkan/libvulkan/layers_extensions.cpp
+++ b/vulkan/libvulkan/layers_extensions.cpp
@@ -330,15 +330,6 @@
     closedir(directory);
 }
 
-const Layer* FindInstanceLayer(const char* name) {
-    return FindLayer(name);
-}
-
-const Layer* FindDeviceLayer(const char* name) {
-    const Layer* layer = FindInstanceLayer(name);
-    return (layer && layer->is_global) ? layer : nullptr;
-}
-
 void* GetLayerGetProcAddr(const Layer& layer,
                           const char* gpa_name,
                           size_t gpa_name_len) {
@@ -392,26 +383,15 @@
     return layer.device_extensions.data();
 }
 
-LayerRef GetInstanceLayerRef(const char* name) {
-    const Layer* layer = FindInstanceLayer(name);
-    if (layer) {
-        LayerLibrary& library = g_layer_libraries[layer->library_idx];
-        if (!library.Open())
-            layer = nullptr;
-    }
-
-    return LayerRef(layer, true);
+LayerRef GetInstanceLayerRef(const Layer& layer) {
+    LayerLibrary& library = g_layer_libraries[layer.library_idx];
+    return LayerRef((library.Open()) ? &layer : nullptr, true);
 }
 
-LayerRef GetDeviceLayerRef(const char* name) {
-    const Layer* layer = FindDeviceLayer(name);
-    if (layer) {
-        LayerLibrary& library = g_layer_libraries[layer->library_idx];
-        if (!library.Open())
-            layer = nullptr;
-    }
-
-    return LayerRef(layer, false);
+LayerRef GetDeviceLayerRef(const Layer& layer) {
+    LayerLibrary& library = g_layer_libraries[layer.library_idx];
+    return LayerRef((layer.is_global && library.Open()) ? &layer : nullptr,
+                    false);
 }
 
 LayerRef::LayerRef(const Layer* layer, bool is_instance)
diff --git a/vulkan/libvulkan/layers_extensions.h b/vulkan/libvulkan/layers_extensions.h
index 899d600..32e1a67 100644
--- a/vulkan/libvulkan/layers_extensions.h
+++ b/vulkan/libvulkan/layers_extensions.h
@@ -61,8 +61,8 @@
 const VkExtensionProperties* GetLayerDeviceExtensions(const Layer& layer,
                                                       uint32_t& count);
 
-LayerRef GetInstanceLayerRef(const char* name);
-LayerRef GetDeviceLayerRef(const char* name);
+LayerRef GetInstanceLayerRef(const Layer& layer);
+LayerRef GetDeviceLayerRef(const Layer& layer);
 
 }  // namespace api
 }  // namespace vulkan
