diff options
Diffstat (limited to 'vulkan/libvulkan/api.cpp')
-rw-r--r-- | vulkan/libvulkan/api.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/vulkan/libvulkan/api.cpp b/vulkan/libvulkan/api.cpp index 6d558eec80..1014c144dc 100644 --- a/vulkan/libvulkan/api.cpp +++ b/vulkan/libvulkan/api.cpp @@ -543,13 +543,19 @@ LayerChain::ActiveLayer* LayerChain::AllocateLayerArray(uint32_t count) const { } 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; } |