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) ? \