// Copyright (c) 2017-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

include::meta/VK_KHR_get_surface_capabilities2.txt[]

*Last Modified Date*::
    2017-02-27
*IP Status*::
    No known IP claims.
*Contributors*::
  - Ian Elliott, Google
  - James Jones, NVIDIA
  - Alon Or-bach, Samsung

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>>` equivalent of the
`<<VK_KHR_get_physical_device_properties2>>` extension.

=== New Object Types

None.

=== New Enum Constants

  * Extending elink: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, combining a separate display-specific query extension.

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.
