vkGetPhysicalDeviceSurfaceFormatsKHR
To query the supported swapchain format-color space pairs for a surface, call:
VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
uint32_t* pSurfaceFormatCount,
VkSurfaceFormatKHR* pSurfaceFormats);
physicalDeviceis the physical device that will be associated with the swapchain to be created, as described for vkCreateSwapchainKHR.surfaceis the surface that will be associated with the swapchain.pSurfaceFormatCountis a pointer to an integer related to the number of format pairs available or queried, as described below.pSurfaceFormatsis eitherNULLor a pointer to an array ofVkSurfaceFormatKHRstructures.
If pSurfaceFormats is NULL, then the number of format pairs
supported for the given surface is returned in
pSurfaceFormatCount.
Otherwise, pSurfaceFormatCount must point to a variable set by the
application to the number of elements in the pSurfaceFormats array,
and on return the variable is overwritten with the number of structures
actually written to pSurfaceFormats.
If the value of pSurfaceFormatCount is less than the number of format
pairs supported, at most pSurfaceFormatCount structures will be
written, and VK_INCOMPLETE will be returned instead of
VK_SUCCESS, to indicate that not all the available format pairs were
returned.
The number of format pairs supported must be greater than or equal to 1.
pSurfaceFormats must not contain an entry whose value for
format is VK_FORMAT_UNDEFINED.
If pSurfaceFormats includes an entry whose value for colorSpace
is VK_COLOR_SPACE_SRGB_NONLINEAR_KHR and whose value for format
is a UNORM (or SRGB) format and the corresponding SRGB (or UNORM) format is
a color renderable format for VK_IMAGE_TILING_OPTIMAL, then
pSurfaceFormats must also contain an entry with the same value for
colorSpace and format equal to the corresponding SRGB (or UNORM)
format.
If the VK_GOOGLE_surfaceless_query extension is enabled, the values
returned in pSurfaceFormats will be identical for every valid surface
created on this physical device, and so surface can be
VK_NULL_HANDLE.
Valid Usage
VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06524
If the VK_GOOGLE_surfaceless_query extension is not enabled,
surface must be a valid VkSurfaceKHR handle
VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06525
If surface is not VK_NULL_HANDLE,
surface must be supported by physicalDevice, as reported by
vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent
platform-specific mechanism
Valid Usage (Implicit)
VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter
physicalDevice must be a valid VkPhysicalDevice handle
VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter
If surface is not VK_NULL_HANDLE, surface must be a valid VkSurfaceKHR handle
VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter
pSurfaceFormatCount must be a valid pointer to a uint32_t value
VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter
If the value referenced by pSurfaceFormatCount is not 0, and pSurfaceFormats is not NULL, pSurfaceFormats must be a valid pointer to an array of pSurfaceFormatCount VkSurfaceFormatKHR structures
VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent
Both of physicalDevice, and surface that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkInstance