return tcu::TestStatus::pass("Get swapchain images tests succeeded");
}
+tcu::TestStatus getImagesResultsCountTest (Context& context, Type wsiType)
+{
+ const tcu::UVec2 desiredSize(256, 256);
+ const InstanceHelper instHelper(context, wsiType);
+ const NativeObjects native(context, instHelper.supportedExtensions, wsiType, tcu::just(desiredSize));
+ const Unique<VkSurfaceKHR> surface(createSurface(instHelper.vki, *instHelper.instance, wsiType, *native.display, *native.window));
+ const DeviceHelper devHelper(context, instHelper.vki, *instHelper.instance, *surface);
+ const VkSwapchainCreateInfoKHR swapchainInfo = getBasicSwapchainParameters(wsiType, instHelper.vki, devHelper.physicalDevice, *surface, desiredSize, 2);
+ const Unique<VkSwapchainKHR> swapchain(createSwapchainKHR(devHelper.vkd, *devHelper.device, &swapchainInfo));
+
+ deUint32 numImages = 0;
+
+ VK_CHECK(devHelper.vkd.getSwapchainImagesKHR(*devHelper.device, *swapchain, &numImages, DE_NULL));
+
+ if (numImages > 0)
+ {
+ std::vector<VkImage> images (numImages + 1);
+ const deUint32 numImagesOrig = numImages;
+
+ // check if below call properly overwrites formats count
+ numImages++;
+
+ VK_CHECK(devHelper.vkd.getSwapchainImagesKHR(*devHelper.device, *swapchain, &numImages, &images[0]));
+
+ if ((size_t)numImages != numImagesOrig)
+ TCU_FAIL("Image count changed between calls");
+ }
+ return tcu::TestStatus::pass("Get swapchain images tests succeeded");
+}
+
tcu::TestStatus destroyNullHandleSwapchainTest (Context& context, Type wsiType)
{
const InstanceHelper instHelper (context, wsiType);
void populateGetImagesGroup (tcu::TestCaseGroup* testGroup, Type wsiType)
{
addFunctionCase(testGroup, "incomplete", "Test VK_INCOMPLETE return code", getImagesIncompleteResultTest, wsiType);
+ addFunctionCase(testGroup, "count", "Test proper count of images", getImagesResultsCountTest, wsiType);
}
void populateModifyGroup (tcu::TestCaseGroup* testGroup, Type wsiType)