vkGetPhysicalDeviceSurfaceCapabilities2KHR(3)

# vkGetPhysicalDeviceSurfaceCapabilities2KHR(3) Manual Page

## Name

vkGetPhysicalDeviceSurfaceCapabilities2KHR - Reports capabilities of a surface on a physical device

## C Specification

To query the basic capabilities of a surface defined by the core or extensions, call:

    // Provided by VK_KHR_get_surface_capabilities2
    VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
        VkPhysicalDevice                            physicalDevice,
        const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
        VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);

## Parameters

- `physicalDevice` is the physical device that will be associated with the swapchain to be created, as described for vkCreateSwapchainKHR.

- `pSurfaceInfo` is a pointer to a VkPhysicalDeviceSurfaceInfo2KHR structure describing the surface and other fixed parameters that would be consumed by vkCreateSwapchainKHR.

- `pSurfaceCapabilities` is a pointer to a VkSurfaceCapabilities2KHR structure in which the capabilities are returned.

## Description

`vkGetPhysicalDeviceSurfaceCapabilities2KHR` behaves similarly to vkGetPhysicalDeviceSurfaceCapabilitiesKHR, with the ability to specify extended inputs via chained input structures, and to return extended information via chained output structures.

Valid Usage

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-06521
  If the `VK_GOOGLE_surfaceless_query` extension is not enabled, `pSurfaceInfo->surface` must be a valid VkSurfaceKHR handle

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-06522
  If `pSurfaceInfo->surface` is not VK_NULL_HANDLE, `pSurfaceInfo->surface` must be supported by `physicalDevice`, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671
  If a VkSurfaceCapabilitiesFullScreenExclusiveEXT structure is included in the `pNext` chain of `pSurfaceCapabilities`, a VkSurfaceFullScreenExclusiveWin32InfoEXT structure must be included in the `pNext` chain of `pSurfaceInfo`

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07776
  If a VkSurfacePresentModeCompatibilityKHR structure is included in the `pNext` chain of `pSurfaceCapabilities`, a VkSurfacePresentModeKHR structure must be included in the `pNext` chain of `pSurfaceInfo`

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07777
  If a VkSurfacePresentScalingCapabilitiesKHR structure is included in the `pNext` chain of `pSurfaceCapabilities`, a VkSurfacePresentModeKHR structure must be included in the `pNext` chain of `pSurfaceInfo`

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07778
  If a VkSurfacePresentModeCompatibilityKHR structure is included in the `pNext` chain of `pSurfaceCapabilities`, `pSurfaceInfo->surface` must be a valid VkSurfaceKHR handle

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07779
  If a VkSurfacePresentScalingCapabilitiesKHR structure is included in the `pNext` chain of `pSurfaceCapabilities`, `pSurfaceInfo->surface` must be a valid VkSurfaceKHR handle

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-12446
  If a VkSwapchainFlagsSurfaceCapabilitiesEXT structure is included in the `pNext` chain of `pSurfaceCapabilities`, `pSurfaceInfo->surface` must be a valid VkSurfaceKHR handle

Valid Usage (Implicit)

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter
  `physicalDevice` must be a valid VkPhysicalDevice handle

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter
  `pSurfaceInfo` must be a valid pointer to a valid VkPhysicalDeviceSurfaceInfo2KHR structure

- VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter
  `pSurfaceCapabilities` must be a valid pointer to a VkSurfaceCapabilities2KHR structure

Return Codes

On success, this command returns

  - VK_SUCCESS

On failure, this command returns

  - VK_ERROR_OUT_OF_DEVICE_MEMORY

  - VK_ERROR_OUT_OF_HOST_MEMORY

  - VK_ERROR_SURFACE_LOST_KHR

  - VK_ERROR_UNKNOWN

  - VK_ERROR_VALIDATION_FAILED

## See Also

VK_KHR_get_surface_capabilities2, VkPhysicalDevice, VkPhysicalDeviceSurfaceInfo2KHR, VkSurfaceCapabilities2KHR

## Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0