Swapchain: Change way p*Count is checked--make sure not bigger than should be.
diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp
index 7c19c27..3441c95 100644
--- a/layers/swapchain.cpp
+++ b/layers/swapchain.cpp
@@ -1001,11 +1001,12 @@
                  pSurfaceFormatCount) {
             // Compare the preliminary value of *pSurfaceFormatCount with the
             // value this time:
-            if (*pSurfaceFormatCount != pPhysicalDevice->surfaceFormatCount) {
+            if (*pSurfaceFormatCount > pPhysicalDevice->surfaceFormatCount) {
                 LOG_ERROR_INVALID_COUNT(VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
                                         physicalDevice,
                                         "pSurfaceFormatCount",
                                         "pSurfaceFormats",
+                                        *pSurfaceFormatCount,
                                         pPhysicalDevice->surfaceFormatCount);
             }
             else if (*pSurfaceFormatCount > 0) {
@@ -1069,11 +1070,12 @@
                  pPresentModeCount) {
             // Compare the preliminary value of *pPresentModeCount with the
             // value this time:
-            if (*pPresentModeCount != pPhysicalDevice->presentModeCount) {
+            if (*pPresentModeCount > pPhysicalDevice->presentModeCount) {
                 LOG_ERROR_INVALID_COUNT(VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
                                         physicalDevice,
                                         "pPresentModeCount",
                                         "pPresentModes",
+                                        *pPresentModeCount,
                                         pPhysicalDevice->presentModeCount);
             }
             else if (*pPresentModeCount > 0) {
@@ -1579,11 +1581,12 @@
                  pSwapchainImageCount) {
             // Compare the preliminary value of *pSwapchainImageCount with the
             // value this time:
-            if (*pSwapchainImageCount != pSwapchain->imageCount) {
+            if (*pSwapchainImageCount > pSwapchain->imageCount) {
                 LOG_ERROR_INVALID_COUNT(VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
                                         device,
                                         "pSwapchainImageCount",
                                         "pSwapchainImages",
+                                        *pSwapchainImageCount,
                                         pSwapchain->imageCount);
             }
             else if (*pSwapchainImageCount > 0) {
diff --git a/layers/swapchain.h b/layers/swapchain.h
index 27a4ab6..d4b0f23 100644
--- a/layers/swapchain.h
+++ b/layers/swapchain.h
@@ -105,13 +105,14 @@
                 (uint64_t) (obj), 0, SWAPCHAIN_NULL_POINTER, LAYER_NAME, \
                 "%s() called with NULL pointer %s.", __FUNCTION__, (obj)) \
     : VK_FALSE
-#define LOG_ERROR_INVALID_COUNT(objType, type, obj, obj2, val)          \
+#define LOG_ERROR_INVALID_COUNT(objType, type, obj, obj2, val, val2)    \
     (my_data) ?                                                         \
         log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (objType), \
                 (uint64_t) (obj), 0, SWAPCHAIN_INVALID_COUNT, LAYER_NAME, \
-                "%s() called with non-NULL %s, and with %s not matching " \
-                "the value (%d) that was returned when %s was NULL.",   \
-                __FUNCTION__, (obj2), (obj), (val), (obj2))             \
+                "%s() called with non-NULL %s, and with %s set to a "   \
+                "value (%d) that is greater than the value (%d) that "  \
+                "was returned when %s was NULL.",                      \
+                __FUNCTION__, (obj2), (obj), (val), (val2), (obj2))    \
     : VK_FALSE
 #define LOG_ERROR_WRONG_STYPE(objType, type, obj, val)          \
     (my_data) ?                                                         \