Merge vk-gkl-cts/vulkan-cts-1.1.2 into vk-gl-cts/vulkan-cts-1.1.3
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / modules / vulkan / wsi / vktWsiSwapchainTests.cpp
index cb5fe91..98fdbae 100644 (file)
@@ -1472,6 +1472,36 @@ tcu::TestStatus getImagesIncompleteResultTest (Context& context, Type wsiType)
                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);
@@ -1509,6 +1539,7 @@ void populateRenderGroup (tcu::TestCaseGroup* testGroup, Type 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)