// Copyright (c) 2017 The Khronos Group Inc.
// Copyright notice at https://www.khronos.org/registry/speccopyright.html

[[VK_KHR_get_surface_capabilities2]]
== VK_KHR_get_surface_capabilities2

*Name String*::
    +VK_KHR_get_surface_capabilities2+
*Extension Type*::
    Instance extension
*Registered Extension Number*::
    120
*Last Modified Date*::
    2017-02-27
*Revision*::
    1
*IP Status*::
    No known IP claims.
*Dependencies*::
  - This extension is written against version 1.0 of the Vulkan API.
  - This extension requires +VK_KHR_surface+.
*Contributors*::
  - Ian Elliott, Google
  - James Jones, NVIDIA
  - Alon Or-bach, Samsung
*Contacts*::
  - James Jones, NVIDIA

This extension provides new entry points to query device surface
capabilities in a way that can be easily extended by other extensions,
without introducing any further entry points.
This extension can be considered the <<VK_KHR_surface,VK_KHR_surface>>
equivalent of the <<VK_KHR_get_physical_device_properties2,
VK_KHR_get_physical_device_properties2>> extension.

=== New Object Types

None.

=== New Enum Constants

  * Extending ename:VkStructureType:
  ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
  ** ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
  ** ename:VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR

=== New Enums

None.

=== New Structures

  * slink:VkPhysicalDeviceSurfaceInfo2KHR
  * slink:VkSurfaceCapabilities2KHR
  * slink:VkSurfaceFormat2KHR

=== New Functions

  * flink:vkGetPhysicalDeviceSurfaceCapabilities2KHR
  * flink:vkGetPhysicalDeviceSurfaceFormats2KHR

=== Issues

1) What should this extension be named?

*RESOLVED*: VK_KHR_get_surface_capabilities2.
Other alternatives:

  * VK_KHR_surface2
  * One extension, combined with VK_KHR_get_display_properties2

2) Should additional WSI query functions be extended?

*RESOLVED*:

  * flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR: Yes.
    The need for this motivated the extension.
  * flink:vkGetPhysicalDeviceSurfaceSupportKHR: No.
    Currently only has boolean output.
    Extensions should instead extend
    flink:vkGetPhysicalDeviceSurfaceCapabilities2KHR.
  * flink:vkGetPhysicalDeviceSurfaceFormatsKHR: Yes.
  * flink:vkGetPhysicalDeviceSurfacePresentModesKHR: No.
    Recent discussion concluded this introduced too much variability for
    applications to deal with.
    Extensions should instead extend
    flink:vkGetPhysicalDeviceSurfaceCapabilities2KHR.
  * flink:vkGetPhysicalDeviceXlibPresentationSupportKHR: Not in this
    extension.
  * flink:vkGetPhysicalDeviceXcbPresentationSupportKHR: Not in this
    extension.
  * flink:vkGetPhysicalDeviceWaylandPresentationSupportKHR: Not in this
    extension.
  * flink:vkGetPhysicalDeviceMirPresentationSupportKHR: Not in this
    extension.
  * flink:vkGetPhysicalDeviceWin32PresentationSupportKHR: Not in this
    extension.

=== Version History

 * Revision 1, 2017-02-27 (James Jones)
   - Initial draft.
