From d6e6f51426c566cd67ed765e5c4b206a063aaa30 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 28 Apr 2016 07:39:32 +0800 Subject: vulkan: make Get*LayerRef take a Layer The only user-visible change should be improved error messages. Bug: 27911856 Change-Id: Ie50a9d37f07b590026176642f2c67270225f9280 --- vulkan/libvulkan/api.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'vulkan/libvulkan/api.cpp') 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; } -- cgit v1.2.3-59-g8ed1b