From 6184b20d8e2301ecc21f815e1f9c2676c43878d1 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 27 Apr 2016 11:57:53 +0800 Subject: vulkan: detect errors in VkEnumerate*ExtensionProperties Return VK_ERROR_LAYER_NOT_PRESENT when the layer is not available. Change-Id: I9d9aafe6e40c2ca49e58bc7c70114d0f11de2f81 --- vulkan/libvulkan/api.cpp | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'vulkan/libvulkan/api.cpp') diff --git a/vulkan/libvulkan/api.cpp b/vulkan/libvulkan/api.cpp index 3db625fbe7..21a6c895bd 100644 --- a/vulkan/libvulkan/api.cpp +++ b/vulkan/libvulkan/api.cpp @@ -1131,16 +1131,13 @@ VkResult EnumerateInstanceExtensionProperties( return VK_ERROR_INITIALIZATION_FAILED; if (pLayerName) { - const VkExtensionProperties* props; - uint32_t count; - const Layer* layer = FindLayer(pLayerName); - if (layer) { - props = GetLayerInstanceExtensions(*layer, count); - } else { - props = nullptr; - count = 0; - } + if (!layer) + return VK_ERROR_LAYER_NOT_PRESENT; + + uint32_t count; + const VkExtensionProperties* props = + GetLayerInstanceExtensions(*layer, count); if (!pProperties || *pPropertyCount > count) *pPropertyCount = count; @@ -1196,16 +1193,13 @@ VkResult EnumerateDeviceExtensionProperties( uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { if (pLayerName) { - const VkExtensionProperties* props; - uint32_t count; - const Layer* layer = FindLayer(pLayerName); - if (layer && IsLayerGlobal(*layer)) { - props = GetLayerDeviceExtensions(*layer, count); - } else { - props = nullptr; - count = 0; - } + if (!layer || !IsLayerGlobal(*layer)) + return VK_ERROR_LAYER_NOT_PRESENT; + + uint32_t count; + const VkExtensionProperties* props = + GetLayerDeviceExtensions(*layer, count); if (!pProperties || *pPropertyCount > count) *pPropertyCount = count; -- cgit v1.2.3-59-g8ed1b