## C Specification

The VkPhysicalDeviceSurfaceInfo2KHR structure is defined as:

// Provided by VK_KHR_get_surface_capabilities2
typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
VkStructureType    sType;
const void*        pNext;
VkSurfaceKHR       surface;
} VkPhysicalDeviceSurfaceInfo2KHR;

## Members

• sType is the type of this structure.

• pNext is NULL or a pointer to a structure extending this structure.

• surface is the surface that will be associated with the swapchain.

## Description

The members of VkPhysicalDeviceSurfaceInfo2KHR correspond to the arguments to vkGetPhysicalDeviceSurfaceCapabilitiesKHR, with sType and pNext added for extensibility.

Additional capabilities of a surface may be available to swapchains created with different full-screen exclusive settings - particularly if exclusive full-screen access is application controlled. These additional capabilities can be queried by adding a VkSurfaceFullScreenExclusiveInfoEXT structure to the pNext chain of this structure when used to query surface properties. Additionally, for Win32 surfaces with application controlled exclusive full-screen access, chaining a VkSurfaceFullScreenExclusiveWin32InfoEXT structure may also report additional surface capabilities. These additional capabilities only apply to swapchains created with the same parameters included in the pNext chain of VkSwapchainCreateInfoKHR.

Valid Usage
• VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672
If the pNext chain includes a VkSurfaceFullScreenExclusiveInfoEXT structure with its fullScreenExclusive member set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT, and surface was created using vkCreateWin32SurfaceKHR, a VkSurfaceFullScreenExclusiveWin32InfoEXT structure must be included in the pNext chain

• VUID-VkPhysicalDeviceSurfaceInfo2KHR-pSurfaceInfo-06526
When passed as the pSurfaceInfo parameter of vkGetPhysicalDeviceSurfaceCapabilities2KHR, if the VK_GOOGLE_surfaceless_query extension is enabled and the pNext chain of the pSurfaceCapabilities parameter includes VkSurfaceProtectedCapabilitiesKHR, then surface can be VK_NULL_HANDLE. Otherwise, surface must be a valid VkSurfaceKHR handle

• VUID-VkPhysicalDeviceSurfaceInfo2KHR-pSurfaceInfo-06527
When passed as the pSurfaceInfo parameter of vkGetPhysicalDeviceSurfaceFormats2KHR, if the VK_GOOGLE_surfaceless_query extension is enabled, then surface can be VK_NULL_HANDLE. Otherwise, surface must be a valid VkSurfaceKHR handle

• VUID-VkPhysicalDeviceSurfaceInfo2KHR-pSurfaceInfo-06528
When passed as the pSurfaceInfo parameter of vkGetPhysicalDeviceSurfacePresentModes2EXT, if the VK_GOOGLE_surfaceless_query extension is enabled, then surface can be VK_NULL_HANDLE. Otherwise, surface must be a valid VkSurfaceKHR handle

Valid Usage (Implicit)
• VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType
sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR

• VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext
Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkSurfaceFullScreenExclusiveInfoEXT or VkSurfaceFullScreenExclusiveWin32InfoEXT

• VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique
The sType value of each struct in the pNext chain must be unique

• VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter
If surface is not VK_NULL_HANDLE, surface must be a valid VkSurfaceKHR handle