| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_KHR_display_swapchain
Description
Name
VK_KHR_display_swapchain - device extension
VK_KHR_display_swapchain
- Name String
VK_KHR_display_swapchain
- Extension Type
- Device extension
- Registered Extension Number
- 4
- Revision
- 10
- Ratification Status
- Ratified
- Extension and Version Dependencies
- VK_KHR_swapchain and VK_KHR_display
- Contact
Other Extension Metadata
- Last Modified Date
- 2017-03-13
- IP Status
- No known IP claims.
- Contributors
- James Jones, NVIDIA
- Jeff Vigil, Qualcomm
- Jesse Hall, Google
Description
This extension provides an API to create a swapchain directly on a device’s display without any underlying window system.
New Commands
New Structures
Extending
PresentInfoKHR:
New Enum Constants
KHR_DISPLAY_SWAPCHAIN_SPEC_VERSIONExtending
Result:Extending
StructureType:
Issues
1) Should swapchains sharing images each hold a reference to the images, or should it be up to the application to destroy the swapchains and images in an order that avoids the need for reference counting?
RESOLVED: Take a reference. The lifetime of presentable images is already complex enough.
2) Should the srcRect and dstRect parameters be specified as part of
the presentation command, or at swapchain creation time?
RESOLVED: As part of the presentation command. This allows moving and scaling the image on the screen without the need to respecify the mode or create a new swapchain and presentable images.
3) Should srcRect and dstRect be specified as rects, or separate
offset/extent values?
RESOLVED: As rects. Specifying them separately might make it easier for hardware to expose support for one but not the other, but in such cases applications must just take care to obey the reported capabilities and not use non-zero offsets or extents that require scaling, as appropriate.
4) How can applications create multiple swapchains that use the same images?
RESOLVED: By calling createSharedSwapchainsKHR.
An earlier resolution used
createSwapchainKHR, chaining
multiple SwapchainCreateInfoKHR
structures through pNext. In order to allow each swapchain to also
allow other extension structs, a level of indirection was used:
SwapchainCreateInfoKHR::pNext
pointed to a different structure, which had both sType and pNext
members for additional extensions, and also had a pointer to the next
SwapchainCreateInfoKHR structure.
The number of swapchains to be created could only be found by walking
this linked list of alternating structures, and the pSwapchains out
parameter was reinterpreted to be an array of
SwapchainKHR handles.
Another option considered was a method to specify a “shared” swapchain when creating a new swapchain, such that groups of swapchains using the same images could be built up one at a time. This was deemed unusable because drivers need to know all of the displays an image will be used on when determining which internal formats and layouts to use for that image.
Examples
The example code for the VK_KHR_display and VK_KHR_display_swapchain
extensions was removed from the appendix after revision 1.0.43. The
display swapchain creation example code was ported to the cube demo that
is shipped with the official Khronos SDK, and is being kept up-to-date
in that location (see:
https://github.com/KhronosGroup/Vulkan-Tools/blob/main/cube/cube.c).
Version History
Revision 1, 2015-07-29 (James Jones)
- Initial draft
Revision 2, 2015-08-21 (Ian Elliott)
- Renamed this extension and all of its enumerations, types, functions, etc. This makes it compliant with the proposed standard for Vulkan extensions.
- Switched from “revision” to “version”, including use of the VK_MAKE_VERSION macro in the header file.
Revision 3, 2015-09-01 (James Jones)
- Restore single-field revision number.
Revision 4, 2015-09-08 (James Jones)
- Allow creating multiple swapchains that share the same images using a single call to vkCreateSwapchainKHR().
Revision 5, 2015-09-10 (Alon Or-bach)
- Removed underscores from SWAP_CHAIN in two enums.
Revision 6, 2015-10-02 (James Jones)
- Added support for smart panels/buffered displays.
Revision 7, 2015-10-26 (Ian Elliott)
- Renamed from VK_EXT_KHR_display_swapchain to VK_KHR_display_swapchain.
Revision 8, 2015-11-03 (Daniel Rakos)
- Updated sample code based on the changes to VK_KHR_swapchain.
Revision 9, 2015-11-10 (Jesse Hall)
- Replaced VkDisplaySwapchainCreateInfoKHR with vkCreateSharedSwapchainsKHR, changing resolution of issue #4.
Revision 10, 2017-03-13 (James Jones)
- Closed all remaining issues. The specification and implementations have been shipping with the proposed resolutions for some time now.
- Removed the sample code and noted it has been integrated into the official Vulkan SDK cube demo.
See Also
No cross-references are available
Document Notes
For more information, see the Vulkan Specification.
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- createSharedSwapchainsKHR :: MonadIO io => Device -> ("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io ("swapchains" ::: Vector SwapchainKHR)
- data DisplayPresentInfoKHR = DisplayPresentInfoKHR {}
- type KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10
- pattern KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: Integral a => a
- type KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain"
- pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: (Eq a, IsString a) => a
- newtype SurfaceKHR = SurfaceKHR Word64
- newtype SwapchainKHR = SwapchainKHR Word64
- data SwapchainCreateInfoKHR (es :: [Type]) = SwapchainCreateInfoKHR {
- next :: Chain es
- flags :: SwapchainCreateFlagsKHR
- surface :: SurfaceKHR
- minImageCount :: Word32
- imageFormat :: Format
- imageColorSpace :: ColorSpaceKHR
- imageExtent :: Extent2D
- imageArrayLayers :: Word32
- imageUsage :: ImageUsageFlags
- imageSharingMode :: SharingMode
- queueFamilyIndices :: Vector Word32
- preTransform :: SurfaceTransformFlagBitsKHR
- compositeAlpha :: CompositeAlphaFlagBitsKHR
- presentMode :: PresentModeKHR
- clipped :: Bool
- oldSwapchain :: SwapchainKHR
- newtype PresentModeKHR where
- PresentModeKHR Int32
- pattern PRESENT_MODE_FIFO_KHR :: PresentModeKHR
- pattern PRESENT_MODE_FIFO_LATEST_READY_KHR :: PresentModeKHR
- pattern PRESENT_MODE_FIFO_RELAXED_KHR :: PresentModeKHR
- pattern PRESENT_MODE_IMMEDIATE_KHR :: PresentModeKHR
- pattern PRESENT_MODE_MAILBOX_KHR :: PresentModeKHR
- pattern PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR :: PresentModeKHR
- pattern PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR :: PresentModeKHR
- newtype ColorSpaceKHR where
- ColorSpaceKHR Int32
- pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_BT2020_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_BT709_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_BT709_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_DISPLAY_NATIVE_AMD :: ColorSpaceKHR
- pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_DOLBYVISION_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_HDR10_HLG_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_HDR10_ST2084_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_PASS_THROUGH_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_SRGB_NONLINEAR_KHR :: ColorSpaceKHR
- newtype CompositeAlphaFlagBitsKHR where
- CompositeAlphaFlagBitsKHR Flags
- pattern COMPOSITE_ALPHA_INHERIT_BIT_KHR :: CompositeAlphaFlagBitsKHR
- pattern COMPOSITE_ALPHA_OPAQUE_BIT_KHR :: CompositeAlphaFlagBitsKHR
- pattern COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR :: CompositeAlphaFlagBitsKHR
- pattern COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR :: CompositeAlphaFlagBitsKHR
- type CompositeAlphaFlagsKHR = CompositeAlphaFlagBitsKHR
- newtype SurfaceTransformFlagBitsKHR where
- SurfaceTransformFlagBitsKHR Flags
- pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_IDENTITY_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_INHERIT_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_ROTATE_180_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_ROTATE_270_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_ROTATE_90_BIT_KHR :: SurfaceTransformFlagBitsKHR
- type SurfaceTransformFlagsKHR = SurfaceTransformFlagBitsKHR
- newtype SwapchainCreateFlagBitsKHR where
- SwapchainCreateFlagBitsKHR Flags
- pattern SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR :: SwapchainCreateFlagBitsKHR
- pattern SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR :: SwapchainCreateFlagBitsKHR
- pattern SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR :: SwapchainCreateFlagBitsKHR
- pattern SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT :: SwapchainCreateFlagBitsKHR
- pattern SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR :: SwapchainCreateFlagBitsKHR
- pattern SWAPCHAIN_CREATE_PROTECTED_BIT_KHR :: SwapchainCreateFlagBitsKHR
- pattern SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: SwapchainCreateFlagBitsKHR
- type SwapchainCreateFlagsKHR = SwapchainCreateFlagBitsKHR
Documentation
createSharedSwapchainsKHR Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> ("createInfos" ::: Vector (SomeStruct SwapchainCreateInfoKHR)) |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io ("swapchains" ::: Vector SwapchainKHR) |
vkCreateSharedSwapchainsKHR - Create multiple swapchains that share presentable images
Description
createSharedSwapchainsKHR is similar to
createSwapchainKHR, except that it
takes an array of
SwapchainCreateInfoKHR structures,
and returns an array of swapchain objects.
The swapchain creation parameters that affect the properties and number
of presentable images must match between all the swapchains. If the
displays used by any of the swapchains do not use the same presentable
image layout or are incompatible in a way that prevents sharing images,
swapchain creation will fail with the result code
ERROR_INCOMPATIBLE_DISPLAY_KHR. If any
error occurs, no swapchains will be created. Images presented to
multiple swapchains must be re-acquired from all of them before being
modified. After destroying one or more of the swapchains, the remaining
swapchains and the presentable images can continue to be used.
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfosmust be a valid pointer to an array ofswapchainCountvalidSwapchainCreateInfoKHRstructures - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pSwapchainsmust be a valid pointer to an array ofswapchainCountSwapchainKHRhandles - The device
must have been created with at least
1queue -
swapchainCountmust be greater than0
Return Codes
See Also
VK_KHR_display_swapchain,
AllocationCallbacks,
Device,
SwapchainCreateInfoKHR,
SwapchainKHR
data DisplayPresentInfoKHR Source #
VkDisplayPresentInfoKHR - Structure describing parameters of a queue presentation to a swapchain
Description
If the extent of the srcRect and dstRect are not equal, the
presented pixels will be scaled accordingly.
Valid Usage
-
dstRectmust specify a rectangular region that is a subset of thevisibleRegionparameter of the display mode the swapchain being presented uses - If the
persistentContentmember of theDisplayPropertiesKHRstructure returned bygetPhysicalDeviceDisplayPropertiesKHRfor the display the present operation targets isFALSE, thenpersistentmust beFALSE
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR
See Also
Constructors
| DisplayPresentInfoKHR | |
Fields
| |
Instances
type KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 Source #
pattern KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: Integral a => a Source #
type KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" Source #
pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
newtype SurfaceKHR Source #
VkSurfaceKHR - Opaque handle to a surface object
Description
The VK_KHR_surface extension declares the SurfaceKHR object, and
provides a function for destroying SurfaceKHR objects. Separate
platform-specific extensions each provide a function for creating a
SurfaceKHR object for the respective platform. From the application’s
perspective this is an opaque handle, just like the handles of other
Vulkan objects.
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_KHR_surface,
PhysicalDeviceSurfaceInfo2KHR,
SwapchainCreateInfoKHR,
createAndroidSurfaceKHR,
createDirectFBSurfaceEXT,
createDisplayPlaneSurfaceKHR,
createHeadlessSurfaceEXT,
createIOSSurfaceMVK,
createImagePipeSurfaceFUCHSIA,
createMacOSSurfaceMVK,
createMetalSurfaceEXT,
createScreenSurfaceQNX,
createStreamDescriptorSurfaceGGP,
vkCreateSurfaceOHOS,
vkCreateUbmSurfaceSEC,
createViSurfaceNN,
createWaylandSurfaceKHR,
createWin32SurfaceKHR,
createXcbSurfaceKHR,
createXlibSurfaceKHR,
destroySurfaceKHR,
getDeviceGroupSurfacePresentModesKHR,
getPhysicalDevicePresentRectanglesKHR,
getPhysicalDeviceSurfaceCapabilities2EXT,
getPhysicalDeviceSurfaceCapabilitiesKHR,
getPhysicalDeviceSurfaceFormatsKHR,
getPhysicalDeviceSurfacePresentModesKHR,
getPhysicalDeviceSurfaceSupportKHR
Constructors
| SurfaceKHR Word64 |
Instances
newtype SwapchainKHR Source #
VkSwapchainKHR - Opaque handle to a swapchain object
Description
A swapchain is an abstraction for an array of presentable images that
are associated with a surface. The presentable images are represented by
Image objects created by the platform. One image
(which can be an array image for multiview/stereoscopic-3D surfaces)
is displayed at a time, but multiple images can be queued for
presentation. An application renders to the image, and then queues the
image for presentation to the surface.
A native window cannot be associated with more than one non-retired swapchain at a time. Further, swapchains cannot be created for native windows that have a non-Vulkan graphics API surface associated with them.
The presentation engine is an abstraction for the platform’s compositor or display engine.
The presentation engine may be synchronous or asynchronous with respect to the application and/or logical device.
Some implementations may use the device’s graphics queue or dedicated presentation hardware to perform presentation.
The presentable images of a swapchain are owned by the presentation
engine. An application can acquire use of a presentable image from the
presentation engine. Use of a presentable image must occur only after
the image is returned by
acquireNextImageKHR, and before it
is released by queuePresentKHR.
This includes transitioning the image layout and rendering commands.
An application can acquire use of a presentable image with
acquireNextImageKHR. After
acquiring a presentable image and before modifying it, the application
must use a synchronization primitive to ensure that the presentation
engine has finished reading from the image. The application can then
transition the image’s layout, queue rendering commands to it, etc.
Finally, the application presents the image with
queuePresentKHR, which releases the
acquisition of the image. The application can also release the
acquisition of the image through
releaseSwapchainImagesKHR,
if the image is not in use by the device, and skip the present
operation.
The presentation engine controls the order in which presentable images are acquired for use by the application.
This allows the platform to handle situations which require out-of-order return of images after presentation. At the same time, it allows the application to generate command buffers referencing all of the images in the swapchain at initialization time, rather than in its main loop.
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_KHR_swapchain,
AcquireNextImageInfoKHR,
BindImageMemorySwapchainInfoKHR,
ImageSwapchainCreateInfoKHR,
PastPresentationTimingInfoEXT,
PresentInfoKHR,
ReleaseSwapchainImagesInfoKHR,
SwapchainCalibratedTimestampInfoEXT,
SwapchainCreateInfoKHR,
acquireFullScreenExclusiveModeEXT,
acquireNextImageKHR,
createSharedSwapchainsKHR,
createSwapchainKHR,
destroySwapchainKHR,
getLatencyTimingsNV,
getPastPresentationTimingGOOGLE,
getRefreshCycleDurationGOOGLE,
getSwapchainCounterEXT,
getSwapchainImagesKHR,
getSwapchainStatusKHR,
getSwapchainTimeDomainPropertiesEXT,
getSwapchainTimingPropertiesEXT,
latencySleepNV,
queuePresentKHR,
releaseFullScreenExclusiveModeEXT,
setHdrMetadataEXT,
setLatencyMarkerNV,
setLatencySleepModeNV,
setLocalDimmingAMD,
setSwapchainPresentTimingQueueSizeEXT,
waitForPresent2KHR,
waitForPresentKHR
Constructors
| SwapchainKHR Word64 |
Instances
data SwapchainCreateInfoKHR (es :: [Type]) Source #
VkSwapchainCreateInfoKHR - Structure specifying parameters of a newly created swapchain object
Description
Upon calling createSwapchainKHR with an oldSwapchain that is not
NULL_HANDLE, oldSwapchain is
retired — even if creation of the new swapchain fails. The new swapchain
is created in the non-retired state whether or not oldSwapchain is
NULL_HANDLE.
Upon calling createSwapchainKHR with an oldSwapchain that is not
NULL_HANDLE, any images from oldSwapchain
that are not acquired by the application may be freed by the
implementation, which may occur even if creation of the new swapchain
fails. The application can destroy oldSwapchain to free all memory
associated with oldSwapchain.
Multiple retired swapchains can be associated with the same
SurfaceKHR through multiple uses of
oldSwapchain that outnumber calls to destroySwapchainKHR.
After oldSwapchain is retired, the application can pass to
queuePresentKHR any images it had already acquired from
oldSwapchain. E.g., an application may present an image from the old
swapchain before an image from the new swapchain is ready to be
presented. As usual, queuePresentKHR may fail if oldSwapchain has
entered a state that causes
ERROR_OUT_OF_DATE_KHR to be returned.
The application can continue to use a shared presentable image
obtained from oldSwapchain until a presentable image is acquired from
the new swapchain, as long as it has not entered a state that causes it
to return ERROR_OUT_OF_DATE_KHR.
Valid Usage
-
surfacemust be a surface that is supported by the device as determined usinggetPhysicalDeviceSurfaceSupportKHR
-
minImageCountmust be less than or equal to the value returned in themaxImageCountmember of theSurfaceCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilitiesKHRfor the surface if the returnedmaxImageCountis not zero - If the
swapchainMaintenance1
feature is not enabled, then the
pNextchain must not include aSwapchainPresentModesCreateInfoKHRstructure - If
presentModeis notPRESENT_MODE_SHARED_DEMAND_REFRESH_KHRnorPRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR, thenminImageCountmust be greater than or equal to the value returned in theminImageCountmember of theSurfaceCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilitiesKHRfor the surface -
minImageCountmust be1ifpresentModeis eitherPRESENT_MODE_SHARED_DEMAND_REFRESH_KHRorPRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR -
imageFormatandimageColorSpacemust match theformatandcolorSpacemembers, respectively, of one of theSurfaceFormatKHRstructures returned bygetPhysicalDeviceSurfaceFormatsKHRfor the surface - If a
SwapchainPresentScalingCreateInfoKHRstructure was not included in thepNextchain, or it is included andSwapchainPresentScalingCreateInfoKHR::scalingBehavioris zero thenimageExtentmust be betweenminImageExtentandmaxImageExtent, inclusive, whereminImageExtentandmaxImageExtentare members of theSurfaceCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilitiesKHRfor the surface - If a
SwapchainPresentScalingCreateInfoKHRstructure was included in thepNextchain andSwapchainPresentScalingCreateInfoKHR::scalingBehavioris not zero thenimageExtentmust be betweenminScaledImageExtentandmaxScaledImageExtent, inclusive, whereminScaledImageExtentandmaxScaledImageExtentare members of theSurfacePresentScalingCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilities2KHRfor the surface andpresentMode - If the
swapchainMaintenance1
feature is not enabled, then
flagsmust not includeSWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR -
imageExtentmemberswidthandheightmust both be non-zero -
imageArrayLayersmust be greater than0and less than or equal to themaxImageArrayLayersmember of theSurfaceCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilitiesKHRfor the surface - If
presentModeisPRESENT_MODE_FIFO_LATEST_READY_KHR,PRESENT_MODE_IMMEDIATE_KHR,PRESENT_MODE_MAILBOX_KHR,PRESENT_MODE_FIFO_KHRorPRESENT_MODE_FIFO_RELAXED_KHR,imageUsagemust be a subset of the supported usage flags present in thesupportedUsageFlagsmember of theSurfaceCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilitiesKHRforsurface - If
presentModeisPRESENT_MODE_SHARED_DEMAND_REFRESH_KHRorPRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR,imageUsagemust be a subset of the supported usage flags present in thesharedPresentSupportedUsageFlagsmember of theSharedPresentSurfaceCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilities2KHRforsurface - If
imageSharingModeisSHARING_MODE_CONCURRENT,pQueueFamilyIndicesmust be a valid pointer to an array ofqueueFamilyIndexCountuint32_tvalues - If
imageSharingModeisSHARING_MODE_CONCURRENT,queueFamilyIndexCountmust be greater than1 - If
imageSharingModeisSHARING_MODE_CONCURRENT, each element ofpQueueFamilyIndicesmust be unique and must be less thanpQueueFamilyPropertyCountreturned by eithergetPhysicalDeviceQueueFamilyPropertiesorgetPhysicalDeviceQueueFamilyProperties2for thephysicalDevicethat was used to createdevice -
preTransformmust be one of the bits present in thesupportedTransformsmember of theSurfaceCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilitiesKHRfor the surface -
compositeAlphamust be one of the bits present in thesupportedCompositeAlphamember of theSurfaceCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilitiesKHRfor the surface -
presentModemust be one of thePresentModeKHRvalues returned bygetPhysicalDeviceSurfacePresentModesKHRfor the surface - If
the
presentModeFifoLatestReady
feature is not enabled,
presentModemust not bePRESENT_MODE_FIFO_LATEST_READY_KHR - If the
logical device was created with
DeviceGroupDeviceCreateInfo::physicalDeviceCountequal to 1,flagsmust not containSWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR - If
oldSwapchainis notNULL_HANDLE,oldSwapchainmust be a non-retired swapchain associated with native window referred to bysurface - The
implied image creation parameters
of the swapchain must be supported as reported by
getPhysicalDeviceImageFormatProperties - If
flagscontainsSWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHRthen thepNextchain must include aImageFormatListCreateInfostructure with aviewFormatCountgreater than zero andpViewFormatsmust have an element equal toimageFormat - If a
ImageFormatListCreateInfostructure was included in thepNextchain andImageFormatListCreateInfo::viewFormatCountis not zero then all of the formats inImageFormatListCreateInfo::pViewFormatsmust be compatible with theformatas described in the compatibility table - If
flagsdoes not containSWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHRand thepNextchain include aImageFormatListCreateInfostructure thenImageFormatListCreateInfo::viewFormatCountmust be0or1 - If
flagscontainsSWAPCHAIN_CREATE_PROTECTED_BIT_KHR, thenSurfaceProtectedCapabilitiesKHR::supportsProtectedmust beTRUEin theSurfaceProtectedCapabilitiesKHRstructure returned bygetPhysicalDeviceSurfaceCapabilities2KHRforsurface - If the
pNextchain includes aSurfaceFullScreenExclusiveInfoEXTstructure with itsfullScreenExclusivemember set toFULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT, andsurfacewas created usingcreateWin32SurfaceKHR, aSurfaceFullScreenExclusiveWin32InfoEXTstructure must be included in thepNextchain - If the
imageCompressionControlSwapchain
feature is not enabled, the
pNextchain must not include anImageCompressionControlEXTstructure - If none of the
presentTiming,
presentAtAbsoluteTime,
or
presentAtRelativeTime
features are enabled,
flagsmust not containSWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofDeviceGroupSwapchainCreateInfoKHR,ImageCompressionControlEXT,ImageFormatListCreateInfo,SurfaceFullScreenExclusiveInfoEXT,SurfaceFullScreenExclusiveWin32InfoEXT,SwapchainCounterCreateInfoEXT,SwapchainDisplayNativeHdrCreateInfoAMD,SwapchainLatencyCreateInfoNV,SwapchainPresentBarrierCreateInfoNV,SwapchainPresentModesCreateInfoKHR, orSwapchainPresentScalingCreateInfoKHR - The
sTypevalue of each structure in thepNextchain must be unique -
flagsmust be a valid combination ofSwapchainCreateFlagBitsKHRvalues -
surfacemust be a validSurfaceKHRhandle -
imageFormatmust be a validFormatvalue -
imageColorSpacemust be a validColorSpaceKHRvalue -
imageUsagemust be a valid combination ofImageUsageFlagBitsvalues -
imageUsagemust not be0 -
imageSharingModemust be a validSharingModevalue -
preTransformmust be a validSurfaceTransformFlagBitsKHRvalue -
compositeAlphamust be a validCompositeAlphaFlagBitsKHRvalue -
presentModemust be a validPresentModeKHRvalue - If
oldSwapchainis notNULL_HANDLE,oldSwapchainmust be a validSwapchainKHRhandle - Both of
oldSwapchain, andsurfacethat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameInstance
Host Synchronization
- Host access to
surfacemust be externally synchronized
- Host access to
oldSwapchainmust be externally synchronized
See Also
VK_KHR_swapchain,
Bool32,
ColorSpaceKHR,
CompositeAlphaFlagBitsKHR,
Extent2D,
Format,
ImageUsageFlags,
PresentModeKHR,
SharingMode,
StructureType,
SurfaceKHR,
SurfaceTransformFlagBitsKHR,
SwapchainCreateFlagsKHR, SwapchainKHR,
createSharedSwapchainsKHR,
createSwapchainKHR
Constructors
| SwapchainCreateInfoKHR | |
Fields
| |
Instances
newtype PresentModeKHR Source #
VkPresentModeKHR - Presentation mode supported for a surface
Description
PRESENT_MODE_IMMEDIATE_KHRspecifies that the presentation engine does not wait for a vertical blanking period to update the current image, meaning this mode may result in visible tearing. No internal queuing of presentation requests is needed, as the requests are applied immediately.
PRESENT_MODE_MAILBOX_KHRspecifies that the presentation engine waits for the next vertical blanking period to update the current image. Tearing cannot be observed. An internal single-entry queue is used to hold pending presentation requests. If the queue is full when a new presentation request is received, the new request replaces the existing entry, and any images associated with the prior entry become available for reuse by the application. One request is removed from the queue and processed during each vertical blanking period in which the queue is non-empty.PRESENT_MODE_FIFO_KHRspecifies that the presentation engine waits for the next vertical blanking period to update the current image. Tearing cannot be observed. An internal queue is used to hold pending presentation requests. New requests are appended to the end of the queue, and one request is removed from the beginning of the queue and processed during each vertical blanking period in which the queue is non-empty. This is the only value ofpresentModethat is required to be supported.PRESENT_MODE_FIFO_RELAXED_KHRspecifies that the presentation engine generally waits for the next vertical blanking period to update the current image. If a vertical blanking period has already passed since the last update of the current image then the presentation engine does not wait for another vertical blanking period for the update, meaning this mode may result in visible tearing in this case. This mode is useful for reducing visual stutter with an application that will mostly present a new image before the next vertical blanking period, but may occasionally be late, and present a new image just after the next vertical blanking period. An internal queue is used to hold pending presentation requests. New requests are appended to the end of the queue, and one request is removed from the beginning of the queue and processed during or after each vertical blanking period in which the queue is non-empty.PRESENT_MODE_FIFO_LATEST_READY_KHRspecifies that the presentation engine waits for the next vertical blanking period to update the current image. Tearing cannot be observed. An internal queue is used to hold pending presentation requests. New requests are appended to the end of the queue. At each vertical blanking period, the presentation engine dequeues all successive requests that are ready to be presented from the beginning of the queue. If using theVK_GOOGLE_display_timingextension or the presentAtAbsoluteTime feature to provide a target present time, the presentation engine checks the specified time for each image. If the target present time is less-than or equal-to the current time, the presentation engine dequeues the image and checks the next one. The image of the last dequeued request is presented. The other dequeued requests are dropped.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHRspecifies that the presentation engine and application have concurrent access to a single image, which is referred to as a shared presentable image. The presentation engine is only required to update the current image after a new presentation request is received. Therefore the application must make a presentation request whenever an update is required. However, the presentation engine may update the current image at any point, meaning this mode may result in visible tearing.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHRspecifies that the presentation engine and application have concurrent access to a single image, which is referred to as a shared presentable image. The presentation engine periodically updates the current image on its regular refresh cycle. The application is only required to make one initial presentation request, after which the presentation engine must update the current image without any need for further presentation requests. The application can indicate the image contents have been updated by making a presentation request, but this does not guarantee the timing of when it will be updated. This mode may result in visible tearing if rendering to the image is not timed correctly.
The supported
ImageUsageFlagBits of the
presentable images of a swapchain created for a surface may differ
depending on the presentation mode, and can be determined as per the
table below:
| Presentation mode | Image usage flags |
|---|---|
PRESENT_MODE_IMMEDIATE_KHR | SurfaceCapabilitiesKHR::supportedUsageFlags |
PRESENT_MODE_MAILBOX_KHR | SurfaceCapabilitiesKHR::supportedUsageFlags |
PRESENT_MODE_FIFO_KHR | SurfaceCapabilitiesKHR::supportedUsageFlags |
PRESENT_MODE_FIFO_RELAXED_KHR | SurfaceCapabilitiesKHR::supportedUsageFlags |
PRESENT_MODE_FIFO_LATEST_READY_KHR | SurfaceCapabilitiesKHR::supportedUsageFlags |
PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR | SharedPresentSurfaceCapabilitiesKHR::sharedPresentSupportedUsageFlags |
PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR | SharedPresentSurfaceCapabilitiesKHR::sharedPresentSupportedUsageFlags |
Presentable Image Usage Queries
For reference, the mode indicated by PRESENT_MODE_FIFO_KHR is
equivalent to the behavior of {wgl|glX|egl}SwapBuffers with a swap
interval of 1, while the mode indicated by
PRESENT_MODE_FIFO_RELAXED_KHR is equivalent to the behavior of
{wgl|glX}SwapBuffers with a swap interval of -1 (from the
{WGL|GLX}_EXT_swap_control_tear extensions).
See Also
VK_KHR_surface,
LatencySurfaceCapabilitiesNV,
SurfacePresentModeCompatibilityKHR,
SurfacePresentModeKHR,
SwapchainCreateInfoKHR,
SwapchainPresentModeInfoKHR,
SwapchainPresentModesCreateInfoKHR,
getPhysicalDeviceSurfacePresentModes2EXT,
getPhysicalDeviceSurfacePresentModesKHR
Constructors
| PresentModeKHR Int32 |
Bundled Patterns
| pattern PRESENT_MODE_FIFO_KHR :: PresentModeKHR | |
| pattern PRESENT_MODE_FIFO_LATEST_READY_KHR :: PresentModeKHR | |
| pattern PRESENT_MODE_FIFO_RELAXED_KHR :: PresentModeKHR | |
| pattern PRESENT_MODE_IMMEDIATE_KHR :: PresentModeKHR | |
| pattern PRESENT_MODE_MAILBOX_KHR :: PresentModeKHR | |
| pattern PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR :: PresentModeKHR | |
| pattern PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR :: PresentModeKHR |
Instances
newtype ColorSpaceKHR Source #
VkColorSpaceKHR - Supported color space of the presentation engine
Description
COLOR_SPACE_SRGB_NONLINEAR_KHRspecifies support for the images in sRGB color space, encoded according to the sRGB specification.
COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXTspecifies support for the images in Display-P3 color space, encoded using a Display-P3 transfer function.COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXTspecifies support for the images in extended sRGB color space, encoded using a linear transfer function.COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXTspecifies support for the images in extended sRGB color space, encoded according to the scRGB specification.COLOR_SPACE_DISPLAY_P3_LINEAR_EXTspecifies support for the images in Display-P3 color space, encoded using a linear transfer function.COLOR_SPACE_DCI_P3_NONLINEAR_EXTspecifies support for the images in DCI-P3 color space, encoded according to the DCI-P3 specification. Note that values in such an image are interpreted as XYZ encoded color data by the presentation engine.COLOR_SPACE_BT709_LINEAR_EXTspecifies support for the images in BT709 color space, encoded using a linear transfer function.COLOR_SPACE_BT709_NONLINEAR_EXTspecifies support for the images in BT709 color space, encoded according to the BT709 specification.COLOR_SPACE_BT2020_LINEAR_EXTspecifies support for the images in BT2020 color space, encoded using a linear transfer function.COLOR_SPACE_HDR10_ST2084_EXTspecifies support for the images in HDR10 (BT2020) color space, encoded according to SMPTE ST2084 Perceptual Quantizer (PQ) specification.COLOR_SPACE_HDR10_HLG_EXTspecifies support for the images in HDR10 (BT2020) color space, encoded according to the Hybrid Log Gamma (HLG) specification.COLOR_SPACE_ADOBERGB_LINEAR_EXTspecifies support for images in Adobe RGB color space, encoded using a linear transfer function.COLOR_SPACE_ADOBERGB_NONLINEAR_EXTspecifies support for the images in Adobe RGB color space, encoded according to the Adobe RGB specification (approximately Gamma 2.2).COLOR_SPACE_PASS_THROUGH_EXTspecifies that color components are used “as is”. This is intended to allow applications to supply data for color spaces not described here.COLOR_SPACE_DISPLAY_NATIVE_AMDspecifies support for the display’s native color space. This matches the color space expectations of AMD’s FreeSync2 standard, for displays supporting it.
In the initial release of the VK_KHR_surface and VK_KHR_swapchain
extensions, the token COLORSPACE_SRGB_NONLINEAR_KHR was used. Starting
in the 2016-05-13 updates to the extension branches, matching release
1.0.13 of the core API specification, COLOR_SPACE_SRGB_NONLINEAR_KHR
is used instead for consistency with Vulkan naming rules. The older enum
is still available for backwards compatibility.
In older versions of this extension COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
was misnamed
COLOR_SPACE_DCI_P3_LINEAR_EXT.
This has been updated to indicate that it uses RGB color encoding, not
XYZ. The old name is legacy but is maintained for backwards
compatibility.
In older versions of the VK_EXT_swapchain_colorspace extension,
COLOR_SPACE_DOLBYVISION_EXT was exposed. The intent was to indicate
the presentation engine shall decode an image using the SMPTE ST 2084
Perceptual Quantizer (PQ) EOTF, and then apply a proprietary OOTF to
process the image. However, Dolby Vision profile 8.4 describes an
encoding using the Hybrid Log Gamma (HLG) OETF, and there is no
swapchain extension for signaling Dolby Vision metadata to be used by a
proprietary OOTF. This enum is legacy but is maintained for backwards
compatibility.
For a traditional “Linear” or non-gamma transfer function color space
use COLOR_SPACE_PASS_THROUGH_EXT.
On Wayland, COLOR_SPACE_PASS_THROUGH_EXT can be used to disable color
management by the WSI on a surface, which makes it possible for the
application to create a wp_color_management_surface_v1 object without
triggering a surface_exists protocol error.
The presentation engine interprets the pixel values of the R, G, and B components as having been encoded using an appropriate transfer function. Applications should ensure that the appropriate transfer function has been applied. Texel encode requires that all implementations implicitly apply the sRGB EOTF-1 on R, G, and B components when shaders write to an sRGB pixel format image, which is useful for sRGB color spaces. For sRGB color spaces with other pixel formats, or other non-linear color spaces, applications can apply the transfer function explicitly in a shader. The A channel is always interpreted as linearly encoded.
This extension defines enums for ColorSpaceKHR that correspond to the
following color spaces:
| Name | Red Primary | Green Primary | Blue Primary | White-point | Transfer function |
|---|---|---|---|---|---|
| DCI-P3 | 1.000, 0.000 | 0.000, 1.000 | 0.000, 0.000 | 0.3333, 0.3333 | DCI P3 |
| Display-P3 | 0.680, 0.320 | 0.265, 0.690 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | Display-P3 |
| BT709 | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | BT709 |
| sRGB | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | sRGB |
| extended sRGB | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | scRGB |
| HDR10_ST2084 | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | ST2084 PQ |
| HDR10_HLG | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | HLG |
| Adobe RGB | 0.640, 0.330 | 0.210, 0.710 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | Adobe RGB |
Color Spaces and Attributes
The transfer functions are described in the “Transfer Functions” chapter of the Khronos Data Format Specification.
Except Display-P3 OETF, which is:
[begin{aligned} E & = begin{cases} 1.055 times L^{1 over 2.4} - 0.055 & text{for} 0.0030186 leq L leq 1 -- 12.92 times L & text{for} 0 leq L < 0.0030186
Constructors
| ColorSpaceKHR Int32 |
Bundled Patterns
| pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_BT2020_LINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_BT709_LINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_BT709_NONLINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_DISPLAY_NATIVE_AMD :: ColorSpaceKHR | |
| pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_DOLBYVISION_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_HDR10_HLG_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_HDR10_ST2084_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_PASS_THROUGH_EXT :: ColorSpaceKHR | |
| pattern COLOR_SPACE_SRGB_NONLINEAR_KHR :: ColorSpaceKHR |
Instances
newtype CompositeAlphaFlagBitsKHR Source #
VkCompositeAlphaFlagBitsKHR - Alpha compositing modes supported on a device
Description
These values are described as follows:
COMPOSITE_ALPHA_OPAQUE_BIT_KHR: The alpha component, if it exists, of the images is ignored in the compositing process. Instead, the image is treated as if it has a constant alpha of 1.0.COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR: The alpha component, if it exists, of the images is respected in the compositing process. The non-alpha components of the image are expected to already be multiplied by the alpha component by the application.COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR: The alpha component, if it exists, of the images is respected in the compositing process. The non-alpha components of the image are not expected to already be multiplied by the alpha component by the application; instead, the compositor will multiply the non-alpha components of the image by the alpha component during compositing.COMPOSITE_ALPHA_INHERIT_BIT_KHR: The way in which the presentation engine treats the alpha component in the images is unknown to the Vulkan API. Instead, the application is responsible for setting the composite alpha blending mode using native window system commands. If the application does not set the blending mode using native window system commands, then a platform-specific default will be used.
See Also
VK_KHR_surface,
CompositeAlphaFlagsKHR,
SwapchainCreateInfoKHR
Constructors
| CompositeAlphaFlagBitsKHR Flags |
Bundled Patterns
Instances
newtype SurfaceTransformFlagBitsKHR Source #
VkSurfaceTransformFlagBitsKHR - Presentation transforms supported on a device
Description
SURFACE_TRANSFORM_IDENTITY_BIT_KHRspecifies that image content is presented without being transformed.
SURFACE_TRANSFORM_ROTATE_90_BIT_KHRspecifies that image content is rotated 90 degrees clockwise.SURFACE_TRANSFORM_ROTATE_180_BIT_KHRspecifies that image content is rotated 180 degrees clockwise.SURFACE_TRANSFORM_ROTATE_270_BIT_KHRspecifies that image content is rotated 270 degrees clockwise.SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHRspecifies that image content is mirrored horizontally.SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHRspecifies that image content is mirrored horizontally, then rotated 90 degrees clockwise.SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHRspecifies that image content is mirrored horizontally, then rotated 180 degrees clockwise.SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHRspecifies that image content is mirrored horizontally, then rotated 270 degrees clockwise.SURFACE_TRANSFORM_INHERIT_BIT_KHRspecifies that the presentation transform is not specified, and is instead determined by platform-specific considerations and mechanisms outside Vulkan.
See Also
VK_KHR_surface,
CommandBufferInheritanceRenderPassTransformInfoQCOM,
CopyCommandTransformInfoQCOM,
DisplaySurfaceCreateInfoKHR,
RenderPassTransformBeginInfoQCOM,
SurfaceCapabilities2EXT,
SurfaceCapabilitiesKHR, SurfaceTransformFlagsKHR,
SwapchainCreateInfoKHR
Constructors
| SurfaceTransformFlagBitsKHR Flags |
Bundled Patterns
Instances
newtype SwapchainCreateFlagBitsKHR Source #
VkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creation
Description
SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHRspecifies that images created from the swapchain (i.e. with theswapchainmember ofImageSwapchainCreateInfoKHRset to this swapchain’s handle) must useIMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT.
SWAPCHAIN_CREATE_PROTECTED_BIT_KHRspecifies that images created from the swapchain are protected images.SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHRspecifies that the images of the swapchain can be used to create aImageViewwith a different format than what the swapchain was created with. The list of allowed image view formats is specified by adding aImageFormatListCreateInfostructure to thepNextchain ofSwapchainCreateInfoKHR. In addition, this flag also specifies that the swapchain can be created with usage flags that are not supported for the format the swapchain is created with but are supported for at least one of the allowed image view formats.SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHRspecifies that the implementation may defer allocation of memory associated with each swapchain image until its index is to be returned fromacquireNextImageKHRoracquireNextImage2KHRfor the first time.SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHRspecifies that applications can include thePresentId2KHRstructure in thepNextchain of thePresentInfoKHRstructure to associate an identifier with each presentation request.SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHRspecifies that applications can usewaitForPresent2KHRto wait for the presentation engine to have begun presentation of the presentation request associated withPresentWait2InfoKHR::presentIdonswapchain.SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXTspecifies that features supported by the swapchain device inPhysicalDevicePresentTimingFeaturesEXTcan be used to collect timing information or schedule presentation requests at specific times.
See Also
Constructors
| SwapchainCreateFlagBitsKHR Flags |
Bundled Patterns