Add tests for VK_EXT_display_surface_counter
authorRicardo Garcia <rgarcia@igalia.com>
Tue, 24 Sep 2019 15:45:37 +0000 (17:45 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 17 Oct 2019 08:32:48 +0000 (04:32 -0400)
This commit adds tests for VK_EXT_display_surface_counter that try to
verify vkGetPhysicalDeviceSurfaceCapabilities2EXT returns the same set
of capabilities as vkGetPhysicalDeviceSurfaceCapabilitiesKHR and the
supportedSurfaceCounters field has coherent values for display surfaces
and non-display surfaces.

Affected tests:
dEQP-VK.wsi.display.create_display_plane_surface

New tests:
dEQP-VK.wsi.*.surface.query_surface_counters
dEQP-VK.wsi.display.surface_counters

Components: Vulkan
VK-GL-CTS issue: 1683

Change-Id: I7754411c7b458201e9a7f5e8a99dfada388124d7

android/cts/master/vk-master.txt
external/vulkancts/framework/vulkan/vkWsiUtil.cpp
external/vulkancts/framework/vulkan/vkWsiUtil.hpp
external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiSurfaceTests.cpp
external/vulkancts/mustpass/master/vk-default-no-waivers.txt
external/vulkancts/mustpass/master/vk-default.txt

index 90c9b70..db970fc 100644 (file)
@@ -383844,6 +383844,7 @@ dEQP-VK.wsi.android.surface.query_support
 dEQP-VK.wsi.android.surface.query_capabilities
 dEQP-VK.wsi.android.surface.query_capabilities2
 dEQP-VK.wsi.android.surface.query_protected_capabilities
+dEQP-VK.wsi.android.surface.query_surface_counters
 dEQP-VK.wsi.android.surface.query_formats
 dEQP-VK.wsi.android.surface.query_formats2
 dEQP-VK.wsi.android.surface.query_present_modes
@@ -384617,6 +384618,7 @@ dEQP-VK.wsi.macos.surface.query_support
 dEQP-VK.wsi.macos.surface.query_capabilities
 dEQP-VK.wsi.macos.surface.query_capabilities2
 dEQP-VK.wsi.macos.surface.query_protected_capabilities
+dEQP-VK.wsi.macos.surface.query_surface_counters
 dEQP-VK.wsi.macos.surface.query_formats
 dEQP-VK.wsi.macos.surface.query_formats2
 dEQP-VK.wsi.macos.surface.query_present_modes
@@ -385032,6 +385034,7 @@ dEQP-VK.wsi.display.get_display_mode_properties
 dEQP-VK.wsi.display.create_display_mode
 dEQP-VK.wsi.display.get_display_plane_capabilities
 dEQP-VK.wsi.display.create_display_plane_surface
+dEQP-VK.wsi.display.surface_counters
 dEQP-VK.wsi.display.get_display_properties2
 dEQP-VK.wsi.display.get_display_plane_properties2
 dEQP-VK.wsi.display.get_display_mode_properties2
index d9a8a80..29aa3c1 100644 (file)
@@ -268,6 +268,38 @@ VkSurfaceCapabilitiesKHR getPhysicalDeviceSurfaceCapabilities (const InstanceInt
        return capabilities;
 }
 
+VkSurfaceCapabilities2EXT getPhysicalDeviceSurfaceCapabilities2EXT (const InstanceInterface&           vki,
+                                                                                                                                       VkPhysicalDevice                                physicalDevice,
+                                                                                                                                       VkSurfaceKHR                                    surface)
+{
+       VkSurfaceCapabilities2EXT capabilities;
+
+       deMemset(&capabilities, 0, sizeof(capabilities));
+       capabilities.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT;
+
+       VK_CHECK(vki.getPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, &capabilities));
+
+       return capabilities;
+}
+
+bool sameSurfaceCapabilities (const VkSurfaceCapabilitiesKHR&  khr,
+                                                         const VkSurfaceCapabilities2EXT&      ext)
+{
+       return (        khr.minImageCount                       == ext.minImageCount &&
+                               khr.maxImageCount                       == ext.maxImageCount &&
+                               khr.currentExtent.width         == ext.currentExtent.width &&
+                               khr.currentExtent.height        == ext.currentExtent.height &&
+                               khr.minImageExtent.width        == ext.minImageExtent.width &&
+                               khr.minImageExtent.height       == ext.minImageExtent.height &&
+                               khr.maxImageExtent.width        == ext.maxImageExtent.width &&
+                               khr.maxImageExtent.height       == ext.maxImageExtent.height &&
+                               khr.maxImageArrayLayers         == ext.maxImageArrayLayers &&
+                               khr.supportedTransforms         == ext.supportedTransforms &&
+                               khr.currentTransform            == ext.currentTransform &&
+                               khr.supportedCompositeAlpha     == ext.supportedCompositeAlpha &&
+                               khr.supportedUsageFlags         == ext.supportedUsageFlags      );
+}
+
 std::vector<VkSurfaceFormatKHR> getPhysicalDeviceSurfaceFormats (const InstanceInterface&              vki,
                                                                                                                                 VkPhysicalDevice                               physicalDevice,
                                                                                                                                 VkSurfaceKHR                                   surface)
index bee82de..bd4ca43 100644 (file)
@@ -86,6 +86,13 @@ VkSurfaceCapabilitiesKHR             getPhysicalDeviceSurfaceCapabilities    (const InstanceIn
                                                                                                                                                 VkPhysicalDevice                               physicalDevice,
                                                                                                                                                 VkSurfaceKHR                                   surface);
 
+VkSurfaceCapabilities2EXT              getPhysicalDeviceSurfaceCapabilities2EXT(const InstanceInterface&               vki,
+                                                                                                                                                VkPhysicalDevice                               physicalDevice,
+                                                                                                                                                VkSurfaceKHR                                   surface);
+
+bool                                                   sameSurfaceCapabilities                                 (const VkSurfaceCapabilitiesKHR&        khr,
+                                                                                                                                                const VkSurfaceCapabilities2EXT&       ext);
+
 std::vector<VkSurfaceFormatKHR>        getPhysicalDeviceSurfaceFormats                 (const InstanceInterface&               vki,
                                                                                                                                                 VkPhysicalDevice                               physicalDevice,
                                                                                                                                                 VkSurfaceKHR                                   surface);
index 0c6a0f1..00c3e37 100644 (file)
@@ -28,6 +28,8 @@
 #include "vkStrUtil.hpp"
 #include "vkPrograms.hpp"
 #include "vkRef.hpp"
+#include "vkQueryUtil.hpp"
+#include "vkWsiUtil.hpp"
 
 #include "tcuDefs.hpp"
 #include "tcuTestLog.hpp"
@@ -40,6 +42,8 @@
 #include <set>
 #include <map>
 #include <limits>
+#include <sstream>
+#include <stdexcept>
 
 namespace vkt
 {
@@ -65,6 +69,7 @@ enum DisplayIndexTest
        DISPLAY_TEST_INDEX_CREATE_DISPLAY_MODE,
        DISPLAY_TEST_INDEX_GET_DISPLAY_PLANE_CAPABILITIES,
        DISPLAY_TEST_INDEX_CREATE_DISPLAY_PLANE_SURFACE,
+       DISPLAY_TEST_INDEX_SURFACE_COUNTERS,
        DISPLAY_TEST_INDEX_GET_DISPLAY_PROPERTIES2,
        DISPLAY_TEST_INDEX_GET_DISPLAY_PLANES2,
        DISPLAY_TEST_INDEX_GET_DISPLAY_MODE2,
@@ -197,7 +202,15 @@ private:
        tcu::TestStatus                         testGetDisplayModePropertiesKHR                                 (void);
        tcu::TestStatus                         testCreateDisplayModeKHR                                                (void);
        tcu::TestStatus                         testGetDisplayPlaneCapabilitiesKHR                              (void);
-       tcu::TestStatus                         testCreateDisplayPlaneSurfaceKHR                                (void);
+
+       enum SurfaceTestKind
+       {
+               SURFACE_CREATE = 0,
+               SURFACE_COUNTERS,
+               SURFACE_TEST_KIND_MAX_ENUM
+       };
+
+       tcu::TestStatus                         testDisplaySurface                                                              (SurfaceTestKind testKind);
 
        // VK_KHR_get_display_properties2 extension tests
        tcu::TestStatus                         testGetPhysicalDeviceDisplayProperties2KHR              (void);
@@ -276,7 +289,8 @@ tcu::TestStatus DisplayCoverageTestInstance::iterate (void)
                case DISPLAY_TEST_INDEX_GET_DISPLAY_MODE:                                               return testGetDisplayModePropertiesKHR();                                       break;
                case DISPLAY_TEST_INDEX_CREATE_DISPLAY_MODE:                                    return testCreateDisplayModeKHR();                                                      break;
                case DISPLAY_TEST_INDEX_GET_DISPLAY_PLANE_CAPABILITIES:                 return testGetDisplayPlaneCapabilitiesKHR();                            break;
-               case DISPLAY_TEST_INDEX_CREATE_DISPLAY_PLANE_SURFACE:                   return testCreateDisplayPlaneSurfaceKHR();                                      break;
+               case DISPLAY_TEST_INDEX_CREATE_DISPLAY_PLANE_SURFACE:                   return testDisplaySurface(SURFACE_CREATE);                                      break;
+               case DISPLAY_TEST_INDEX_SURFACE_COUNTERS:                                               return testDisplaySurface(SURFACE_COUNTERS);                            break;
                case DISPLAY_TEST_INDEX_GET_DISPLAY_PROPERTIES2:                                return testGetPhysicalDeviceDisplayProperties2KHR();            break;
                case DISPLAY_TEST_INDEX_GET_DISPLAY_PLANES2:                                    return testGetPhysicalDeviceDisplayPlaneProperties2KHR();       break;
                case DISPLAY_TEST_INDEX_GET_DISPLAY_MODE2:                                              return testGetDisplayModeProperties2KHR();                                      break;
@@ -1515,14 +1529,25 @@ tcu::TestStatus DisplayCoverageTestInstance::testGetDisplayPlaneCapabilitiesKHR
        return tcu::TestStatus::pass("pass");
 }
 
+namespace
+{
+       struct SurfaceCountersError : public std::runtime_error
+       {
+               SurfaceCountersError(const std::string& what) : std::runtime_error(what) {}
+       };
+}
+
 /*--------------------------------------------------------------------*//*!
- * \brief Create display plane surface coverage test
+ * \brief Test display surface creation or counters.
+ *
+ * In the counter variant, it needs VK_EXT_display_surface_counter
+ * and checks the available surface counters.
  *
  * Throws an exception on fail.
  *
  * \return tcu::TestStatus::pass on success
  *//*--------------------------------------------------------------------*/
-tcu::TestStatus        DisplayCoverageTestInstance::testCreateDisplayPlaneSurfaceKHR (void)
+tcu::TestStatus        DisplayCoverageTestInstance::testDisplaySurface (SurfaceTestKind testKind)
 {
        deUint32                                                                        planeCountReported      =       0u;
        deUint32                                                                        planeCountTested        =       0u;
@@ -1531,6 +1556,13 @@ tcu::TestStatus  DisplayCoverageTestInstance::testCreateDisplayPlaneSurfaceKHR (v
        bool                                                                            testPerformed           =       false;
        DisplayVector                                                           displaysVector;
        VkResult                                                                        result;
+       std::string                                                                     surfaceCountersErr;
+
+       DE_ASSERT(testKind >= 0 && testKind < SURFACE_TEST_KIND_MAX_ENUM);
+
+       // Check the needed extension.
+       if (testKind == SURFACE_COUNTERS && (!isInstanceExtensionSupported(m_context.getUsedApiVersion(), m_context.getInstanceExtensions(), "VK_EXT_display_surface_counter")))
+               TCU_THROW(NotSupportedError, "VK_EXT_display_surface_counter not supported");
 
        // Get displays
        if (!getDisplays(displaysVector))
@@ -1661,6 +1693,39 @@ tcu::TestStatus  DisplayCoverageTestInstance::testCreateDisplayPlaneSurfaceKHR (v
                                                        if (surface == DE_NULL)
                                                                TCU_FAIL("Invalid surface handle returned");
 
+                                                       if (testKind == SURFACE_COUNTERS)
+                                                       {
+                                                               // Check surface counters.
+                                                               try
+                                                               {
+                                                                       const vk::VkSurfaceCapabilities2EXT     capsExt = vk::wsi::getPhysicalDeviceSurfaceCapabilities2EXT     (m_vki, m_physicalDevice, surface);
+                                                                       const vk::VkSurfaceCapabilitiesKHR      capsKhr = vk::wsi::getPhysicalDeviceSurfaceCapabilities         (m_vki, m_physicalDevice, surface);
+
+                                                                       if (!vk::wsi::sameSurfaceCapabilities(capsKhr, capsExt))
+                                                                       {
+                                                                               throw SurfaceCountersError("KHR and EXT surface capabilities do not match");
+                                                                       }
+
+                                                                       for (deUint32 i = 0; i < sizeof(capsExt.supportedSurfaceCounters) * 8; ++i)
+                                                                       {
+                                                                               deUint32 mask = (1<<i);
+                                                                               if (capsExt.supportedSurfaceCounters & mask)
+                                                                               {
+                                                                                       if (mask != static_cast<deUint32>(VK_SURFACE_COUNTER_VBLANK_EXT))
+                                                                                       {
+                                                                                               std::ostringstream msg;
+                                                                                               msg << "Invalid bit set in supportedSurfaceCounters: 0x" << std::hex << mask;
+                                                                                               throw SurfaceCountersError(msg.str());
+                                                                                       }
+                                                                               }
+                                                                       }
+                                                               }
+                                                               catch(const SurfaceCountersError& err)
+                                                               {
+                                                                       surfaceCountersErr = err.what();
+                                                               }
+                                                       }
+
                                                        m_vki.destroySurfaceKHR(        instance,       // VkInstance                                                   instance
                                                                                                                surface,        // VkSurfaceKHR*                                                pSurface
                                                                                                                DE_NULL);       // const VkAllocationCallbacks*                 pAllocator
@@ -1676,7 +1741,7 @@ tcu::TestStatus   DisplayCoverageTestInstance::testCreateDisplayPlaneSurfaceKHR (v
        if (!testPerformed)
                TCU_THROW(NotSupportedError, "Cannot find suitable parameters for the test");
 
-       return tcu::TestStatus::pass("pass");
+       return ((surfaceCountersErr.empty()) ? tcu::TestStatus::pass("Pass") : tcu::TestStatus::fail(surfaceCountersErr));
 }
 
 /*--------------------------------------------------------------------*//*!
@@ -2230,6 +2295,7 @@ void createDisplayCoverageTests (tcu::TestCaseGroup* group)
        addTest(group, DISPLAY_TEST_INDEX_CREATE_DISPLAY_MODE,                                  "create_display_mode",                                  "Create display mode coverage test");
        addTest(group, DISPLAY_TEST_INDEX_GET_DISPLAY_PLANE_CAPABILITIES,               "get_display_plane_capabilities",               "Display-plane capabilities coverage test");
        addTest(group, DISPLAY_TEST_INDEX_CREATE_DISPLAY_PLANE_SURFACE,                 "create_display_plane_surface",                 "Create display plane surface coverage test");
+       addTest(group, DISPLAY_TEST_INDEX_SURFACE_COUNTERS,                                             "surface_counters",                                             "Display plane surface counters test");
 
        // VK_KHR_get_display_properties2 extension tests
        addTest(group, DISPLAY_TEST_INDEX_GET_DISPLAY_PROPERTIES2,                              "get_display_properties2",                              "Display enumeration coverage test using VK_KHR_get_display_properties2");
index c5fe166..e51be50 100644 (file)
@@ -286,6 +286,33 @@ tcu::TestStatus createSurfaceTest (Context& context, Type wsiType)
        return tcu::TestStatus::pass("Creating surface succeeded");
 }
 
+tcu::TestStatus querySurfaceCounterTest (Context& context, Type wsiType)
+{
+       const InstanceHelper                    instHelper              (context, wsiType);
+       const NativeObjects                             native                  (context, instHelper.supportedExtensions, wsiType);
+       const Unique<VkSurfaceKHR>              surface                 (createSurface(instHelper.vki, instHelper.instance, wsiType, *native.display, *native.window));
+       const vk::InstanceInterface&    vki                             = context.getInstanceInterface();
+       const vk::VkPhysicalDevice              physicalDevice  = context.getPhysicalDevice();
+
+       if (!isInstanceExtensionSupported(context.getUsedApiVersion(), context.getInstanceExtensions(), "VK_EXT_display_surface_counter"))
+               TCU_THROW(NotSupportedError, "VK_EXT_display_surface_counter not supported");
+
+       const vk::VkSurfaceCapabilities2EXT     capsExt = getPhysicalDeviceSurfaceCapabilities2EXT      (vki, physicalDevice, surface.get());
+       const vk::VkSurfaceCapabilitiesKHR      capsKhr = getPhysicalDeviceSurfaceCapabilities          (vki, physicalDevice, surface.get());
+
+       if (!sameSurfaceCapabilities(capsKhr, capsExt))
+       {
+               return tcu::TestStatus::fail("KHR and EXT surface capabilities do not match");
+       }
+
+       if (capsExt.supportedSurfaceCounters != 0)
+       {
+               return tcu::TestStatus::fail("supportedSurfaceCounters nonzero (" + de::toString(capsExt.supportedSurfaceCounters) + ") for non-display surface");
+       }
+
+       return tcu::TestStatus::pass("Pass");
+}
+
 tcu::TestStatus createSurfaceCustomAllocatorTest (Context& context, Type wsiType)
 {
        AllocationCallbackRecorder      allocationRecorder      (getSystemAllocator());
@@ -1248,6 +1275,7 @@ void createSurfaceTests (tcu::TestCaseGroup* testGroup, vk::wsi::Type wsiType)
        addFunctionCase(testGroup, "query_capabilities",                                        "Query surface capabilities",                                                           querySurfaceCapabilitiesTest,                           wsiType);
        addFunctionCase(testGroup, "query_capabilities2",                                       "Query extended surface capabilities",                                          querySurfaceCapabilities2Test,                          wsiType);
        addFunctionCase(testGroup, "query_protected_capabilities",                      "Query protected surface capabilities",                                         querySurfaceProtectedCapabilitiesTest,          wsiType);
+       addFunctionCase(testGroup, "query_surface_counters",                            "Query and check available surface counters",                           querySurfaceCounterTest,                                        wsiType);
        addFunctionCase(testGroup, "query_formats",                                                     "Query surface formats",                                                                        querySurfaceFormatsTest,                                        wsiType);
        addFunctionCase(testGroup, "query_formats2",                                            "Query extended surface formats",                                                       querySurfaceFormats2Test,                                       wsiType);
        addFunctionCase(testGroup, "query_present_modes",                                       "Query surface present modes",                                                          querySurfacePresentModesTest,                           wsiType);
index 0668cf0..d8cbe41 100644 (file)
@@ -383861,6 +383861,7 @@ dEQP-VK.wsi.xlib.surface.query_support
 dEQP-VK.wsi.xlib.surface.query_capabilities
 dEQP-VK.wsi.xlib.surface.query_capabilities2
 dEQP-VK.wsi.xlib.surface.query_protected_capabilities
+dEQP-VK.wsi.xlib.surface.query_surface_counters
 dEQP-VK.wsi.xlib.surface.query_formats
 dEQP-VK.wsi.xlib.surface.query_formats2
 dEQP-VK.wsi.xlib.surface.query_present_modes
@@ -384276,6 +384277,7 @@ dEQP-VK.wsi.xcb.surface.query_support
 dEQP-VK.wsi.xcb.surface.query_capabilities
 dEQP-VK.wsi.xcb.surface.query_capabilities2
 dEQP-VK.wsi.xcb.surface.query_protected_capabilities
+dEQP-VK.wsi.xcb.surface.query_surface_counters
 dEQP-VK.wsi.xcb.surface.query_formats
 dEQP-VK.wsi.xcb.surface.query_formats2
 dEQP-VK.wsi.xcb.surface.query_present_modes
@@ -384691,6 +384693,7 @@ dEQP-VK.wsi.wayland.surface.query_support
 dEQP-VK.wsi.wayland.surface.query_capabilities
 dEQP-VK.wsi.wayland.surface.query_capabilities2
 dEQP-VK.wsi.wayland.surface.query_protected_capabilities
+dEQP-VK.wsi.wayland.surface.query_surface_counters
 dEQP-VK.wsi.wayland.surface.query_formats
 dEQP-VK.wsi.wayland.surface.query_formats2
 dEQP-VK.wsi.wayland.surface.query_present_modes
@@ -385105,6 +385108,7 @@ dEQP-VK.wsi.android.surface.query_support
 dEQP-VK.wsi.android.surface.query_capabilities
 dEQP-VK.wsi.android.surface.query_capabilities2
 dEQP-VK.wsi.android.surface.query_protected_capabilities
+dEQP-VK.wsi.android.surface.query_surface_counters
 dEQP-VK.wsi.android.surface.query_formats
 dEQP-VK.wsi.android.surface.query_formats2
 dEQP-VK.wsi.android.surface.query_present_modes
@@ -386240,6 +386244,7 @@ dEQP-VK.wsi.win32.surface.query_support
 dEQP-VK.wsi.win32.surface.query_capabilities
 dEQP-VK.wsi.win32.surface.query_capabilities2
 dEQP-VK.wsi.win32.surface.query_protected_capabilities
+dEQP-VK.wsi.win32.surface.query_surface_counters
 dEQP-VK.wsi.win32.surface.query_formats
 dEQP-VK.wsi.win32.surface.query_formats2
 dEQP-VK.wsi.win32.surface.query_present_modes
@@ -386655,6 +386660,7 @@ dEQP-VK.wsi.macos.surface.query_support
 dEQP-VK.wsi.macos.surface.query_capabilities
 dEQP-VK.wsi.macos.surface.query_capabilities2
 dEQP-VK.wsi.macos.surface.query_protected_capabilities
+dEQP-VK.wsi.macos.surface.query_surface_counters
 dEQP-VK.wsi.macos.surface.query_formats
 dEQP-VK.wsi.macos.surface.query_formats2
 dEQP-VK.wsi.macos.surface.query_present_modes
@@ -387070,6 +387076,7 @@ dEQP-VK.wsi.display.get_display_mode_properties
 dEQP-VK.wsi.display.create_display_mode
 dEQP-VK.wsi.display.get_display_plane_capabilities
 dEQP-VK.wsi.display.create_display_plane_surface
+dEQP-VK.wsi.display.surface_counters
 dEQP-VK.wsi.display.get_display_properties2
 dEQP-VK.wsi.display.get_display_plane_properties2
 dEQP-VK.wsi.display.get_display_mode_properties2
index 3023482..8a90916 100644 (file)
@@ -383822,6 +383822,7 @@ dEQP-VK.wsi.xlib.surface.query_support
 dEQP-VK.wsi.xlib.surface.query_capabilities
 dEQP-VK.wsi.xlib.surface.query_capabilities2
 dEQP-VK.wsi.xlib.surface.query_protected_capabilities
+dEQP-VK.wsi.xlib.surface.query_surface_counters
 dEQP-VK.wsi.xlib.surface.query_formats
 dEQP-VK.wsi.xlib.surface.query_formats2
 dEQP-VK.wsi.xlib.surface.query_present_modes
@@ -384237,6 +384238,7 @@ dEQP-VK.wsi.xcb.surface.query_support
 dEQP-VK.wsi.xcb.surface.query_capabilities
 dEQP-VK.wsi.xcb.surface.query_capabilities2
 dEQP-VK.wsi.xcb.surface.query_protected_capabilities
+dEQP-VK.wsi.xcb.surface.query_surface_counters
 dEQP-VK.wsi.xcb.surface.query_formats
 dEQP-VK.wsi.xcb.surface.query_formats2
 dEQP-VK.wsi.xcb.surface.query_present_modes
@@ -384652,6 +384654,7 @@ dEQP-VK.wsi.wayland.surface.query_support
 dEQP-VK.wsi.wayland.surface.query_capabilities
 dEQP-VK.wsi.wayland.surface.query_capabilities2
 dEQP-VK.wsi.wayland.surface.query_protected_capabilities
+dEQP-VK.wsi.wayland.surface.query_surface_counters
 dEQP-VK.wsi.wayland.surface.query_formats
 dEQP-VK.wsi.wayland.surface.query_formats2
 dEQP-VK.wsi.wayland.surface.query_present_modes
@@ -385066,6 +385069,7 @@ dEQP-VK.wsi.android.surface.query_support
 dEQP-VK.wsi.android.surface.query_capabilities
 dEQP-VK.wsi.android.surface.query_capabilities2
 dEQP-VK.wsi.android.surface.query_protected_capabilities
+dEQP-VK.wsi.android.surface.query_surface_counters
 dEQP-VK.wsi.android.surface.query_formats
 dEQP-VK.wsi.android.surface.query_formats2
 dEQP-VK.wsi.android.surface.query_present_modes
@@ -386201,6 +386205,7 @@ dEQP-VK.wsi.win32.surface.query_support
 dEQP-VK.wsi.win32.surface.query_capabilities
 dEQP-VK.wsi.win32.surface.query_capabilities2
 dEQP-VK.wsi.win32.surface.query_protected_capabilities
+dEQP-VK.wsi.win32.surface.query_surface_counters
 dEQP-VK.wsi.win32.surface.query_formats
 dEQP-VK.wsi.win32.surface.query_formats2
 dEQP-VK.wsi.win32.surface.query_present_modes
@@ -386616,6 +386621,7 @@ dEQP-VK.wsi.macos.surface.query_support
 dEQP-VK.wsi.macos.surface.query_capabilities
 dEQP-VK.wsi.macos.surface.query_capabilities2
 dEQP-VK.wsi.macos.surface.query_protected_capabilities
+dEQP-VK.wsi.macos.surface.query_surface_counters
 dEQP-VK.wsi.macos.surface.query_formats
 dEQP-VK.wsi.macos.surface.query_formats2
 dEQP-VK.wsi.macos.surface.query_present_modes
@@ -387031,6 +387037,7 @@ dEQP-VK.wsi.display.get_display_mode_properties
 dEQP-VK.wsi.display.create_display_mode
 dEQP-VK.wsi.display.get_display_plane_capabilities
 dEQP-VK.wsi.display.create_display_plane_surface
+dEQP-VK.wsi.display.surface_counters
 dEQP-VK.wsi.display.get_display_properties2
 dEQP-VK.wsi.display.get_display_plane_properties2
 dEQP-VK.wsi.display.get_display_mode_properties2