VkSurfacePresentModeCompatibilityKHR(3)

# VkSurfacePresentModeCompatibilityKHR(3) Manual Page

## Name

VkSurfacePresentModeCompatibilityKHR - Structure describing the subset of compatible presentation modes for the purposes of switching without swapchain recreation

## C Specification

The `VkSurfacePresentModeCompatibilityKHR` structure is defined as:

    // Provided by VK_KHR_surface_maintenance1
    typedef struct VkSurfacePresentModeCompatibilityKHR {
        VkStructureType      sType;
        void*                pNext;
        uint32_t             presentModeCount;
        VkPresentModeKHR*    pPresentModes;
    } VkSurfacePresentModeCompatibilityKHR;

    // Provided by VK_EXT_surface_maintenance1
    // Equivalent to VkSurfacePresentModeCompatibilityKHR
    typedef VkSurfacePresentModeCompatibilityKHR VkSurfacePresentModeCompatibilityEXT;

## Members

- `sType` is a VkStructureType value identifying this structure.

- `pNext` is `NULL` or a pointer to a structure extending this structure.

- `presentModeCount` is an integer related to the number of present modes available or queried, as described below.

- `pPresentModes` is a pointer to an array of VkPresentModeKHR in which present modes compatible with a given present mode are returned.

## Description

If `pPresentModes` is `NULL`, then the number of present modes that are compatible with the one specified in VkSurfacePresentModeKHR is returned in `presentModeCount`. Otherwise, `presentModeCount` must be set by the application to the number of elements in the `pPresentModes` array, and on return is overwritten with the number of values actually written to `pPresentModes`. If the value of `presentModeCount` is less than the number of compatible present modes that are supported, at most `presentModeCount` values will be written to `pPresentModes`. The implementation must include the present mode passed to VkSurfacePresentModeKHR in `pPresentModes`, unless `presentModeCount` is zero.

To query the set of present modes compatible with a given initial present mode, add a VkSurfacePresentModeKHR structure in the `pNext` chain of VkPhysicalDeviceSurfaceInfo2KHR when calling vkGetPhysicalDeviceSurfaceCapabilities2KHR.

The application can create a swapchain whose present mode can be modified through the use of VkSwapchainPresentModesCreateInfoKHR.

Valid Usage (Implicit)

- VUID-VkSurfacePresentModeCompatibilityKHR-sType-sType
  `sType` must be VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR

- VUID-VkSurfacePresentModeCompatibilityKHR-pPresentModes-parameter
  If `presentModeCount` is not `0`, and `pPresentModes` is not `NULL`, `pPresentModes` must be a valid pointer to an array of `presentModeCount` VkPresentModeKHR values

Structure Chaining

Extends the structure

  - VkSurfaceCapabilities2KHR

## See Also

VK_EXT_surface_maintenance1, VK_KHR_surface_maintenance1, VkPresentModeKHR, VkStructureType

## 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