// refBegin VkSwapchainCounterCreateInfoEXT Specify the surface counters desired

To enable surface counters when creating a swapchain, add
sname:VkSwapchainCounterCreateInfoEXT to the pname:pNext chain of
slink:VkSwapchainCreateInfoKHR.
sname:VkSwapchainCounterCreateInfoEXT is defined as:

include::../../api/structs/VkSwapchainCounterCreateInfoEXT.txt[]

  * pname:sType is the type of this structure.
  * pname:pNext is `NULL` or a pointer to an extension-specific structure.
  * pname:surfaceCounters is a bitmask containing a bit set for each surface
    counter to enable for the swapchain.

.Valid Usage
****
  * [[VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244]]
    The bits in pname:surfaceCounters must: be supported by
    slink:VkSwapchainCreateInfoKHR::pname:surface, as reported by
    flink:vkGetPhysicalDeviceSurfaceCapabilities2EXT.
****

include::../../validity/structs/VkSwapchainCounterCreateInfoEXT.txt[]

// refBegin vkGetSwapchainCounterEXT Query the current value of a surface counter

The requested counters become active when the first presentation command for
the associated swapchain is processed by the presentation engine.
To query the value of an active counter, use:

include::../../api/protos/vkGetSwapchainCounterEXT.txt[]

  * pname:device is the sname:VkDevice associated with pname:swapchain.
  * pname:swapchain is the swapchain from which to query the counter value.
  * pname:counter is the counter to query.
  * pname:pCounterValue will return the current value of the counter.

If a counter is not available because the swapchain is out of date, the
implementation may: return VK_ERROR_OUT_OF_DATE_KHR.

.Valid Usage
****
  * [[VUID-vkGetSwapchainCounterEXT-swapchain-01245]]
    One or more present commands on pname:swapchain must: have been
    processed by the presentation engine.
****

include::../../validity/protos/vkGetSwapchainCounterEXT.txt[]
