C Specification

To determine whether a queue family of a physical device supports presentation to a given surface, call:

// Provided by VK_KHR_surface
VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
    VkPhysicalDevice                            physicalDevice,
    uint32_t                                    queueFamilyIndex,
    VkSurfaceKHR                                surface,
    VkBool32*                                   pSupported);


  • physicalDevice is the physical device.

  • queueFamilyIndex is the queue family.

  • surface is the surface.

  • pSupported is a pointer to a VkBool32, which is set to VK_TRUE to indicate support, and VK_FALSE otherwise.


If VkPhysicalDeviceVulkanSC10Properties::deviceNoDynamicHostAllocations is VK_TRUE, vkGetPhysicalDeviceSurfaceSupportKHR must not return VK_ERROR_OUT_OF_HOST_MEMORY.

Valid Usage
  • VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269
    queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice

Valid Usage (Implicit)
  • VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter
    physicalDevice must be a valid VkPhysicalDevice handle

  • VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter
    surface must be a valid VkSurfaceKHR handle

  • VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter
    pSupported must be a valid pointer to a VkBool32 value

  • VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent
    Both of physicalDevice, and surface must have been created, allocated, or retrieved from the same VkInstance

Return Codes
On success, this command returns

On failure, this command returns



See Also

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 2014-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0