Swapchain: Use an INFO instead of an ERROR for when pNext is non-NULL.
authorIan Elliott <ianelliott@google.com>
Tue, 5 Jan 2016 21:41:45 +0000 (14:41 -0700)
committerJon Ashburn <jon@lunarg.com>
Wed, 6 Jan 2016 19:23:10 +0000 (12:23 -0700)
This is a compromise.  Currently, this is an error situation.  However, another
extension could be added that uses pNext, and then if the Swapchain layer isn't
updated, a false-error situation could occur.  By using an INFO message, the
user is still alerted of the possibility of a problem, but won't be annoyed in
the case of a new extension.

layers/swapchain.cpp
layers/swapchain.h

index 3441c95..7941005 100644 (file)
@@ -372,7 +372,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
                                               "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR");
         }
         if (pCreateInfo->pNext != NULL) {
-            skipCall |= LOG_ERROR_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+            skipCall |= LOG_INFO_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                              device,
                                              "pCreateInfo");
         }
@@ -411,7 +411,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
                                               "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR");
         }
         if (pCreateInfo->pNext != NULL) {
-            skipCall |= LOG_ERROR_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+            skipCall |= LOG_INFO_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                              device,
                                              "pCreateInfo");
         }
@@ -484,7 +484,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
                                               "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR");
         }
         if (pCreateInfo->pNext != NULL) {
-            skipCall |= LOG_ERROR_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+            skipCall |= LOG_INFO_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                              device,
                                              "pCreateInfo");
         }
@@ -557,7 +557,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
                                               "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR");
         }
         if (pCreateInfo->pNext != NULL) {
-            skipCall |= LOG_ERROR_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+            skipCall |= LOG_INFO_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                              device,
                                              "pCreateInfo");
         }
@@ -629,7 +629,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
                                               "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR");
         }
         if (pCreateInfo->pNext != NULL) {
-            skipCall |= LOG_ERROR_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+            skipCall |= LOG_INFO_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                              device,
                                              "pCreateInfo");
         }
@@ -703,7 +703,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
                                               "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR");
         }
         if (pCreateInfo->pNext != NULL) {
-            skipCall |= LOG_ERROR_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+            skipCall |= LOG_INFO_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                              device,
                                              "pCreateInfo");
         }
@@ -1133,7 +1133,7 @@ static VkBool32 validateCreateSwapchainKHR(
                                               "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR");
         }
         if (pCreateInfo->pNext != NULL) {
-            skipCall |= LOG_ERROR_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+            skipCall |= LOG_INFO_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                              device,
                                              "pCreateInfo");
         }
@@ -1709,7 +1709,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
                                               "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR");
         }
         if (pPresentInfo->pNext != NULL) {
-            skipCall |= LOG_ERROR_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
+            skipCall |= LOG_INFO_WRONG_NEXT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                              device,
                                              "pPresentInfo");
         }
index d4b0f23..7076697 100644 (file)
@@ -122,13 +122,6 @@ typedef enum _SWAPCHAIN_ERROR
                 "(expected %s).",                                       \
                 __FUNCTION__, (obj), (val))                             \
     : VK_FALSE
-#define LOG_ERROR_WRONG_NEXT(objType, type, obj)          \
-    (my_data) ?                                                         \
-        log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (objType), \
-                (uint64_t) (obj), 0, SWAPCHAIN_WRONG_NEXT, LAYER_NAME, \
-                "%s() called with non-NULL value for %s->pNext.",       \
-                __FUNCTION__, (obj))                                    \
-    : VK_FALSE
 #define LOG_ERROR_ZERO_VALUE(objType, type, obj)                        \
     (my_data) ?                                                         \
         log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (objType), \
@@ -146,6 +139,13 @@ typedef enum _SWAPCHAIN_ERROR
         log_msg(my_data->report_data, VK_DEBUG_REPORT_PERF_WARN_BIT_EXT, (objType), \
                 (uint64_t) (obj), __LINE__, (enm), LAYER_NAME, (fmt), __VA_ARGS__) \
     : VK_FALSE
+#define LOG_INFO_WRONG_NEXT(objType, type, obj)                         \
+    (my_data) ?                                                         \
+        log_msg(my_data->report_data, VK_DEBUG_REPORT_INFO_BIT_EXT, (objType), \
+                (uint64_t) (obj), 0, SWAPCHAIN_WRONG_NEXT, LAYER_NAME, \
+                "%s() called with non-NULL value for %s->pNext.",       \
+                __FUNCTION__, (obj))                                    \
+    : VK_FALSE
 
 
 // NOTE: The following struct's/typedef's are for keeping track of