summaryrefslogtreecommitdiff
path: root/vulkan/libvulkan/api.cpp
diff options
context:
space:
mode:
authorChia-I Wu <olv@google.com>2016-04-28 07:39:32 +0800
committerChia-I Wu <olv@google.com>2016-04-28 08:52:42 +0800
commitd6e6f51426c566cd67ed765e5c4b206a063aaa30 (patch)
tree4a8ebd6d0aa78a2e005fe48eb95cff25eac09d3a /vulkan/libvulkan/api.cpp
parent04c6551eb812a7efe38fa74e6ac67c17aab3df2d (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.cpp12
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;
}