Merge vk-gl-cts/vulkan-cts-1.3.2 to vk-gl-cts/vulkan-cts-1.3.3
authorMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 21 Jul 2022 18:30:59 +0000 (11:30 -0700)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 21 Jul 2022 18:30:59 +0000 (11:30 -0700)
Change-Id: I5c0bfb8a853ed3d97f2e10d90c1dcef6ab8580e2

external/vulkancts/data/vulkan/amber/draw/depth_bias/depth_bias_patch_list_tri_point.amber
external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp
external/vulkancts/modules/vulkan/api/vktApiCommandBuffersTests.cpp
external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelinePushDescriptorTests.cpp
external/vulkancts/modules/vulkan/texture/vktTextureConversionTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiDisplayControlTests.cpp

index dd7d45b..8d7a50f 100644 (file)
@@ -49,10 +49,10 @@ layout (vertices = 3) out;
 
 void main(void)
 {
-  float tessLevel = 5.0;
+  float tessLevel = 2.0;
 
-  gl_TessLevelOuter[0] = tessLevel;
-  gl_TessLevelOuter[1] = tessLevel;
+  gl_TessLevelInner[0] = tessLevel;
+  gl_TessLevelInner[1] = tessLevel;
   gl_TessLevelOuter[0] = 1.0;
   gl_TessLevelOuter[1] = 1.0;
   gl_TessLevelOuter[2] = 1.0;
index 48fb936..e3fcfdc 100644 (file)
@@ -699,16 +699,21 @@ struct LargeBufferParameters
 #ifndef CTS_USES_VULKANSC
 tcu::TestStatus testLargeBuffer(Context& context, LargeBufferParameters params)
 {
-       const DeviceInterface&  vk                                      = context.getDeviceInterface();
-       const VkDevice                  vkDevice                        = context.getDevice();
-       const deUint32                  queueFamilyIndex        = context.getUniversalQueueFamilyIndex();
-       VkBuffer                                rawBuffer                       = DE_NULL;
+       const DeviceInterface&                  vk                                      = context.getDeviceInterface();
+       const VkDevice                                  vkDevice                        = context.getDevice();
+       const deUint32                                  queueFamilyIndex        = context.getUniversalQueueFamilyIndex();
+       const VkPhysicalDeviceLimits    limits                          = getPhysicalDeviceProperties(context.getInstanceInterface(),
+                                                                                                     context.getPhysicalDevice()).limits;
+       VkBuffer                                                rawBuffer                       = DE_NULL;
 
 #ifndef CTS_USES_VULKANSC
        if (params.useMaxBufferSize)
                params.bufferSize = context.getMaintenance4Properties().maxBufferSize;
 #endif // CTS_USES_VULKANSC
 
+       if ((params.flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) != 0)
+               params.bufferSize = std::min(params.bufferSize, limits.sparseAddressSpaceSize);
+
        VkBufferCreateInfo bufferParams =
        {
                VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,   // VkStructureType                      sType;
index feab414..9f32966 100644 (file)
@@ -2687,7 +2687,6 @@ tcu::TestStatus recordBufferQueryImpreciseWithFlagTest(Context& context)
                &secBufferInheritInfo,
        };
 
-       // Create an occlusion query with VK_QUERY_CONTROL_PRECISE_BIT set
        const VkQueryPoolCreateInfo                             queryPoolCreateInfo             =
        {
                VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,                                       // sType
@@ -2705,7 +2704,7 @@ tcu::TestStatus recordBufferQueryImpreciseWithFlagTest(Context& context)
        VK_CHECK(vk.beginCommandBuffer(primCmdBuf.get(), &primBufferBeginInfo));
        {
                vk.cmdResetQueryPool(primCmdBuf.get(), queryPool.get(), 0u, 1u);
-               vk.cmdBeginQuery(primCmdBuf.get(), queryPool.get(), 0u, VK_QUERY_CONTROL_PRECISE_BIT);
+               vk.cmdBeginQuery(primCmdBuf.get(), queryPool.get(), 0u, 0u);
                {
                        vk.cmdExecuteCommands(primCmdBuf.get(), 1u, &secCmdBuf.get());
                }
@@ -2713,7 +2712,7 @@ tcu::TestStatus recordBufferQueryImpreciseWithFlagTest(Context& context)
        }
        endCommandBuffer(vk, primCmdBuf.get());
 
-       return tcu::TestStatus::pass("Successfully recorded a secondary command buffer allowing a precise occlusion query.");
+       return tcu::TestStatus::pass("Successfully recorded an imprecise query with a secondary command buffer allowing a precise occlusion query.");
 }
 
 tcu::TestStatus recordBufferQueryImpreciseWithoutFlagTest(Context& context)
@@ -2783,7 +2782,6 @@ tcu::TestStatus recordBufferQueryImpreciseWithoutFlagTest(Context& context)
                &secBufferInheritInfo,
        };
 
-       // Create an occlusion query with VK_QUERY_CONTROL_PRECISE_BIT set
        const VkQueryPoolCreateInfo                             queryPoolCreateInfo             =
        {
                VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,                                       // sType
@@ -2801,7 +2799,7 @@ tcu::TestStatus recordBufferQueryImpreciseWithoutFlagTest(Context& context)
        VK_CHECK(vk.beginCommandBuffer(primCmdBuf.get(), &primBufferBeginInfo));
        {
                vk.cmdResetQueryPool(primCmdBuf.get(), queryPool.get(), 0u, 1u);
-               vk.cmdBeginQuery(primCmdBuf.get(), queryPool.get(), 0u, VK_QUERY_CONTROL_PRECISE_BIT);
+               vk.cmdBeginQuery(primCmdBuf.get(), queryPool.get(), 0u, 0u);
                {
                        vk.cmdExecuteCommands(primCmdBuf.get(), 1u, &secCmdBuf.get());
                }
@@ -2809,7 +2807,7 @@ tcu::TestStatus recordBufferQueryImpreciseWithoutFlagTest(Context& context)
        }
        endCommandBuffer(vk, primCmdBuf.get());
 
-       return tcu::TestStatus::pass("Successfully recorded a secondary command buffer allowing a precise occlusion query.");
+       return tcu::TestStatus::pass("Successfully recorded an imprecise query with a secondary command buffer not allowing a precise occlusion query.");
 }
 
 /******** 19.4. Command Buffer Submission (5.4 in VK 1.0 Spec) ****************/
index 6eda5bb..640ad2b 100644 (file)
@@ -559,20 +559,23 @@ Move<VkDescriptorSetLayout>       CommonDescriptorInstance::createDescriptorSetLayout
 
        bool optional = (m_testParams.additionalDescriptorBinding != BINDING_Undefined) && (m_testParams.additionalDescriptorType != VK_DESCRIPTOR_TYPE_UNDEFINED);
 
+       const VkShaderStageFlags bindingStageFlags = (m_testParams.descriptorType == VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT) ?
+                                                                                                       VkShaderStageFlags{VK_SHADER_STAGE_FRAGMENT_BIT} : m_testParams.stageFlags;
+
        const VkDescriptorSetLayoutBinding      bindings[] =
        {
                {
                        m_testParams.descriptorBinding,                         // binding
                        m_testParams.descriptorType,                            // descriptorType
                        descriptorCount,                                                        // descriptorCount
-                       m_testParams.stageFlags,                                        // stageFlags
+                       bindingStageFlags,                                                      // stageFlags
                        DE_NULL,                                                                        // pImmutableSamplers
                },
                {
                        m_testParams.additionalDescriptorBinding,       // binding
                        m_testParams.additionalDescriptorType,          // descriptorType
                        1,                                                                                      // descriptorCount
-                       m_testParams.stageFlags,                                        // stageFlags
+                       bindingStageFlags,                                                      // stageFlags
                        DE_NULL,                                                                        // pImmutableSamplers
                }
        };
index 5dd6fe7..89fd256 100644 (file)
@@ -112,7 +112,8 @@ Move<VkDevice> createDeviceWithPushDescriptor (const Context&                               context,
                                                                                           const InstanceInterface&             vki,
                                                                                           VkPhysicalDevice                             physicalDevice,
                                                                                           const Extensions&                    supportedExtensions,
-                                                                                          const deUint32                               queueFamilyIndex)
+                                                                                          const deUint32                               queueFamilyIndex,
+                                                                                          const TestParams&                    params)
 {
 
        const float                                             queuePriority                   = 1.0f;
@@ -130,6 +131,10 @@ Move<VkDevice> createDeviceWithPushDescriptor (const Context&                              context,
        deMemset(&features, 0, sizeof(features));
 
        vector<string>                                  requiredExtensionsStr   = { "VK_KHR_push_descriptor" };
+       if (params.pipelineConstructionType != PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC)
+       {
+               requiredExtensionsStr.push_back("VK_EXT_graphics_pipeline_library");
+       }
        vector<const char *>                    requiredExtensions;
        checkAllSupported(supportedExtensions, requiredExtensionsStr);
        // We need the contents of requiredExtensionsStr as a vector<const char*> in VkDeviceCreateInfo.
@@ -274,7 +279,7 @@ PushDescriptorBufferGraphicsTestInstance::PushDescriptorBufferGraphicsTestInstan
        , m_physicalDevice              (chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
        , m_queueFamilyIndex    (findQueueFamilyIndexWithCaps(m_vki, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT))
        , m_deviceExtensions    (enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex))
+       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, params))
        , m_vkd                                 (m_vkp, m_instance, *m_device)
        , m_queue                               (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
        , m_allocator                   (m_vkd, *m_device, getPhysicalDeviceMemoryProperties(m_vki, m_physicalDevice))
@@ -740,7 +745,7 @@ PushDescriptorBufferComputeTestInstance::PushDescriptorBufferComputeTestInstance
        , m_physicalDevice              (chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
        , m_queueFamilyIndex    (findQueueFamilyIndexWithCaps(m_vki, m_physicalDevice, VK_QUEUE_COMPUTE_BIT))
        , m_deviceExtensions    (enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex))
+       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, params))
        , m_vkd                                 (m_vkp, m_instance, *m_device)
        , m_queue                               (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
        , m_itemSize                    (calcItemSize(m_vki, m_physicalDevice))
@@ -1096,7 +1101,7 @@ PushDescriptorImageGraphicsTestInstance::PushDescriptorImageGraphicsTestInstance
        , m_physicalDevice              (chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
        , m_queueFamilyIndex    (findQueueFamilyIndexWithCaps(m_vki, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT))
        , m_deviceExtensions    (enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex))
+       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, params))
        , m_vkd                                 (m_vkp, m_instance, *m_device)
        , m_queue                               (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
        , m_allocator                   (m_vkd, *m_device, getPhysicalDeviceMemoryProperties(m_vki, m_physicalDevice))
@@ -1953,7 +1958,7 @@ PushDescriptorImageComputeTestInstance::PushDescriptorImageComputeTestInstance (
        , m_physicalDevice              (chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
        , m_queueFamilyIndex    (findQueueFamilyIndexWithCaps(m_vki, m_physicalDevice, VK_QUEUE_COMPUTE_BIT | VK_QUEUE_GRAPHICS_BIT))
        , m_deviceExtensions    (enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex))
+       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, params))
        , m_vkd                                 (m_vkp, m_instance, *m_device)
        , m_queue                               (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
        , m_itemSize                    (calcItemSize(m_vki, m_physicalDevice, 2u))
@@ -2745,7 +2750,7 @@ PushDescriptorTexelBufferGraphicsTestInstance::PushDescriptorTexelBufferGraphics
        , m_physicalDevice              (chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
        , m_queueFamilyIndex    (findQueueFamilyIndexWithCaps(m_vki, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT))
        , m_deviceExtensions    (enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex))
+       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, params))
        , m_vkd                                 (m_vkp, m_instance, *m_device)
        , m_queue                               (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
        , m_allocator                   (m_vkd, *m_device, getPhysicalDeviceMemoryProperties(m_vki, m_physicalDevice))
@@ -3233,7 +3238,7 @@ PushDescriptorTexelBufferComputeTestInstance::PushDescriptorTexelBufferComputeTe
        , m_physicalDevice              (chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
        , m_queueFamilyIndex    (findQueueFamilyIndexWithCaps(m_vki, m_physicalDevice, VK_QUEUE_COMPUTE_BIT))
        , m_deviceExtensions    (enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex))
+       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, params))
        , m_vkd                                 (m_vkp, m_instance, *m_device)
        , m_queue                               (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
        , m_itemSize                    (calcItemSize(m_vki, m_physicalDevice))
@@ -3615,7 +3620,7 @@ PushDescriptorInputAttachmentGraphicsTestInstance::PushDescriptorInputAttachment
        , m_physicalDevice              (chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
        , m_queueFamilyIndex    (findQueueFamilyIndexWithCaps(m_vki, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT))
        , m_deviceExtensions    (enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex))
+       , m_device                              (createDeviceWithPushDescriptor(context, m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, params))
        , m_vkd                                 (m_vkp, m_instance, *m_device)
        , m_queue                               (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
        , m_allocator                   (m_vkd, *m_device, getPhysicalDeviceMemoryProperties(m_vki, m_physicalDevice))
index 9892ba4..f286967 100644 (file)
@@ -32,6 +32,7 @@
 #include "tcuVectorUtil.hpp"
 #include "deSharedPtr.hpp"
 
+#include <cmath>
 #include <memory>
 
 namespace vkt
@@ -62,6 +63,7 @@ public:
        virtual tcu::TestStatus iterate                                         (void) override;
 
 protected:
+       tcu::IVec4                              computeColorDistance            () const;
        bool                                    verifyPixels                            (const tcu::PixelBufferAccess&  rendered,
                                                                                                                 const tcu::PixelBufferAccess&  reference,
                                                                                                                 const ReferenceParams&                 samplerParams,
@@ -78,6 +80,7 @@ private:
        tcu::Texture2D                          m_swTexture;
        TextureRenderer                         m_renderer;
 
+       const tcu::IVec4                        m_cd;
        const tcu::IVec4                        m_a;
        const tcu::IVec4                        m_b;
        const tcu::IVec4                        m_c;
@@ -96,10 +99,11 @@ SnormLinearClampInstance::SnormLinearClampInstance (vkt::Context& context, de::S
        , m_hwTexture   (TestTexture2DSp(new pipeline::TestTexture2D(m_inFormat, textureWidth, textureHeight)))
        , m_swTexture   (m_inFormat, textureWidth, textureHeight, 1)
        , m_renderer    (context, VK_SAMPLE_COUNT_1_BIT, m_params->width, m_params->height, 1u, makeComponentMappingRGBA(), VK_IMAGE_TYPE_2D, VK_IMAGE_VIEW_TYPE_2D, m_outFormat)
-       , m_a                   (lim(m_inFormat, 0),    lim(m_inFormat, 1)+2,   lim(m_inFormat, 2),             lim(m_inFormat, 3)+2)
-       , m_b                   (lim(m_inFormat, 0)+2,  lim(m_inFormat, 1),             lim(m_inFormat, 2)+2,   lim(m_inFormat, 3)      )
-       , m_c                   (lim(m_inFormat, 0)+1,  lim(m_inFormat, 1)+1,   lim(m_inFormat, 2)+1,   lim(m_inFormat, 3)+1)
-       , m_d                   (lim(m_inFormat, 0),    lim(m_inFormat, 1),             lim(m_inFormat, 2),             lim(m_inFormat, 3)      )
+       , m_cd                  (computeColorDistance())
+       , m_a                   (lim(m_inFormat, 0),                    lim(m_inFormat, 1)+m_cd[1]*2,   lim(m_inFormat, 2),                             lim(m_inFormat, 3)+m_cd[3]*2)
+       , m_b                   (lim(m_inFormat, 0)+m_cd[0]*2,  lim(m_inFormat, 1),                             lim(m_inFormat, 2)+m_cd[2]*2,   lim(m_inFormat, 3)                      )
+       , m_c                   (lim(m_inFormat, 0)+m_cd[0]*1,  lim(m_inFormat, 1)+m_cd[1]*1,   lim(m_inFormat, 2)+m_cd[2]*1,   lim(m_inFormat, 3)+m_cd[3]*1)
+       , m_d                   (lim(m_inFormat, 0),                    lim(m_inFormat, 1),                             lim(m_inFormat, 2),                             lim(m_inFormat, 3)                      )
 {
        tcu::IVec4 data[textureWidth * textureHeight] =
        {
@@ -135,6 +139,17 @@ int SnormLinearClampInstance::lim (const tcu::TextureFormat& format, int channel
        return channelBits[channelIdx] ? (-deIntMaxValue32(channelBits[channelIdx])) : (-1);
 }
 
+tcu::IVec4 SnormLinearClampInstance::computeColorDistance () const
+{
+       return tcu::IVec4
+       (
+               static_cast<int>(std::floor(static_cast<float>(-lim(m_inFormat, 0)) / 127.0f)),
+               static_cast<int>(std::floor(static_cast<float>(-lim(m_inFormat, 0)) / 127.0f)),
+               static_cast<int>(std::floor(static_cast<float>(-lim(m_inFormat, 0)) / 127.0f)),
+               static_cast<int>(std::floor(static_cast<float>(-lim(m_inFormat, 0)) / 127.0f))
+       );
+}
+
 bool SnormLinearClampInstance::verifyPixels    (const tcu::PixelBufferAccess& rendered, const tcu::PixelBufferAccess& reference, const ReferenceParams& samplerParams, const std::vector<float>& texCoords) const
 {
        tcu::LodPrecision                               lodPrec;
@@ -144,6 +159,7 @@ bool SnormLinearClampInstance::verifyPixels (const tcu::PixelBufferAccess& rende
        const int                                               width                   (m_renderer.getRenderWidth());
        const int                                               height                  (m_renderer.getRenderHeight());
 
+       const tcu::IVec4                                colorDistance   (computeColorDistance());
        std::unique_ptr<deUint8[]>              errorMaskData   (new deUint8[width * height * 4 * 4]);
        tcu::PixelBufferAccess                  errorMask               (mapVkFormat(m_outFormat), width, height, 1, errorMaskData.get());
 
@@ -154,10 +170,10 @@ bool SnormLinearClampInstance::verifyPixels       (const tcu::PixelBufferAccess& rende
        lookupPrec.uvwBits                              = tcu::IVec3(5,5,0);
        lookupPrec.coordBits                    = tcu::IVec3(20,20,0);
        lookupPrec.colorMask                    = tcu::BVec4(nuc >= 1, nuc >= 2, nuc >=3, nuc >= 4);
-       lookupPrec.colorThreshold               = tcu::Vec4(0.9f/float(-lim(m_inFormat, 0)),
-                                                                                               0.9f/float(-lim(m_inFormat, 1)),
-                                                                                               0.9f/float(-lim(m_inFormat, 2)),
-                                                                                               0.9f/float(-lim(m_inFormat, 3)));
+       lookupPrec.colorThreshold               = tcu::Vec4(0.9f/float(colorDistance[0]),
+                                                                                               0.9f/float(colorDistance[1]),
+                                                                                               0.9f/float(colorDistance[2]),
+                                                                                               0.9f/float(colorDistance[3]));
 
        const int numFailedPixels               = glu::TextureTestUtil::computeTextureLookupDiff(rendered, reference, errorMask,
                                                                                                                                                                         m_swTexture, texCoords.data(), samplerParams,
index 9b0a0be..4e79cfb 100644 (file)
@@ -965,6 +965,7 @@ void getDisplays(Context& context, std::vector<VkDisplayKHR>& availableDisplays)
        deUint32                                        countReported           = 0u;
        VkPhysicalDevice                        physicalDevice          = context.getPhysicalDevice();
        const InstanceInterface&        vki                                     = context.getInstanceInterface();
+       const vk::Platform&     platform        = context.getTestContext().getPlatform().getVulkanPlatform();
 
        VkResult result = vki.getPhysicalDeviceDisplayPropertiesKHR(physicalDevice, &countReported, DE_NULL);
        if (result != VK_SUCCESS)
@@ -973,6 +974,15 @@ void getDisplays(Context& context, std::vector<VkDisplayKHR>& availableDisplays)
        if (countReported == 0)
                TCU_THROW(NotSupportedError, "No displays available");
 
+       for (int typeNdx = 0; typeNdx < vk::wsi::TYPE_LAST; ++typeNdx)
+       {
+               vk::wsi::Type   wsiType = (vk::wsi::Type)typeNdx;
+               if (platform.hasDisplay(wsiType))
+               {
+                       TCU_THROW(NotSupportedError, "Display is unavailable as windowing system has access");
+               }
+       }
+
        // get display properties
        std::vector<VkDisplayPropertiesKHR> displaysProperties(countReported);
        result = vki.getPhysicalDeviceDisplayPropertiesKHR(physicalDevice, &countReported, &displaysProperties[0]);