OSDN Git Service

vulkan: detect errors in VkEnumerate*ExtensionProperties
authorChia-I Wu <olv@google.com>
Wed, 27 Apr 2016 03:57:53 +0000 (11:57 +0800)
committerChia-I Wu <olv@google.com>
Thu, 28 Apr 2016 00:52:42 +0000 (08:52 +0800)
Return VK_ERROR_LAYER_NOT_PRESENT when the layer is not available.

Change-Id: I9d9aafe6e40c2ca49e58bc7c70114d0f11de2f81

vulkan/libvulkan/api.cpp

index 3db625f..21a6c89 100644 (file)
@@ -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;