- const vector<VkSurfaceFormatKHR> formats = getPhysicalDeviceSurfaceFormats(instHelper.vki,
- physicalDevices[deviceNdx],
- *surface);
+ deUint32 numFormats = 0;
+
+ VK_CHECK(instHelper.vki.getPhysicalDeviceSurfaceFormatsKHR(physicalDevices[deviceNdx], *surface, &numFormats, DE_NULL));
+
+ std::vector<VkSurfaceFormatKHR> formats (numFormats + 1);
+
+ if (numFormats > 0)
+ {
+ const deUint32 numFormatsOrig = numFormats;
+
+ // check if below call properly overwrites formats count
+ numFormats++;
+
+ VK_CHECK(instHelper.vki.getPhysicalDeviceSurfaceFormatsKHR(physicalDevices[deviceNdx], *surface, &numFormats, &formats[0]));
+
+ if (numFormats != numFormatsOrig)
+ results.fail("Format count changed between calls");
+ }
+
+ formats.pop_back();