diff options
author | Chia-I Wu <olv@google.com> | 2016-04-28 07:39:32 +0800 |
---|---|---|
committer | Chia-I Wu <olv@google.com> | 2016-04-28 08:52:42 +0800 |
commit | d6e6f51426c566cd67ed765e5c4b206a063aaa30 (patch) | |
tree | 4a8ebd6d0aa78a2e005fe48eb95cff25eac09d3a /vulkan/libvulkan/api.cpp | |
parent | 04c6551eb812a7efe38fa74e6ac67c17aab3df2d (diff) |
vulkan: make Get*LayerRef take a Layer
The only user-visible change should be improved error messages.
Bug: 27911856
Change-Id: Ie50a9d37f07b590026176642f2c67270225f9280
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; } |