| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_KHR_surface
Description
Name
VK_KHR_surface - instance extension
VK_KHR_surface
- Name String
VK_KHR_surface
- Extension Type
- Instance extension
- Registered Extension Number
- 1
- Revision
- 25
- Ratification Status
- Ratified
- Extension and Version Dependencies; Contact
Other Extension Metadata
- Last Modified Date
- 2016-08-25
- IP Status
- No known IP claims.
- Contributors
- Patrick Doane, Blizzard
- Ian Elliott, LunarG
- Jesse Hall, Google
- James Jones, NVIDIA
- David Mao, AMD
- Norbert Nopper, Freescale
- Alon Or-bach, Samsung
- Daniel Rakos, AMD
- Graham Sellers, AMD
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
- Faith Ekstrand, Intel
Description
The VK_KHR_surface extension is an instance extension. It introduces
SurfaceKHR objects, which abstract native
platform surface or window objects for use with Vulkan. It also provides
a way to determine whether a queue family in a physical device supports
presenting to particular surface.
Separate extensions for each platform provide the mechanisms for
creating SurfaceKHR objects, but once
created they may be used in this and other platform-independent
extensions, in particular the VK_KHR_swapchain extension.
New Object Types
New Commands
getPhysicalDeviceSurfaceCapabilitiesKHRgetPhysicalDeviceSurfaceFormatsKHRgetPhysicalDeviceSurfacePresentModesKHRgetPhysicalDeviceSurfaceSupportKHR
New Structures
New Enums
New Bitmasks
New Enum Constants
KHR_SURFACE_SPEC_VERSIONExtending
ObjectType:Extending
Result:
Examples
Note
The example code for the VK_KHR_surface and VK_KHR_swapchain
extensions was removed from the appendix after revision 1.0.29. This WSI
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/master/cube/cube.c).
Issues
1) Should this extension include a method to query whether a physical device supports presenting to a specific window or native surface on a given platform?
RESOLVED: Yes. Without this, applications would need to create a device instance to determine whether a particular window can be presented to. Knowing that a device supports presentation to a platform in general is not sufficient, as a single machine might support multiple seats, or instances of the platform that each use different underlying physical devices. Additionally, on some platforms, such as the X Window System, different drivers and devices might be used for different windows depending on which section of the desktop they exist on.
2) Should the getPhysicalDeviceSurfaceCapabilitiesKHR,
getPhysicalDeviceSurfaceFormatsKHR, and
getPhysicalDeviceSurfacePresentModesKHR functions be in this extension
and operate on physical devices, rather than being in VK_KHR_swapchain
(i.e. device extension) and being dependent on
Device?
RESOLVED: Yes. While it might be useful to depend on
Device (and therefore on enabled extensions and
features) for the queries, Vulkan was released only with the
PhysicalDevice versions. Many cases can be
resolved by a Valid Usage statement, and/or by a separate pNext chain
version of the query struct specific to a given extension or parameters,
via extensible versions of the queries:
getPhysicalDeviceSurfacePresentModes2EXT,
getPhysicalDeviceSurfaceCapabilities2KHR,
and
getPhysicalDeviceSurfaceFormats2KHR.
3) Should Vulkan support Xlib or XCB as the API for accessing the X Window System platform?
RESOLVED: Both. XCB is a more modern and efficient API, but Xlib usage is deeply ingrained in many applications and likely will remain in use for the foreseeable future. Not all drivers necessarily need to support both, but including both as options in the core specification will probably encourage support, which should in turn ease adoption of the Vulkan API in older codebases. Additionally, the performance improvements possible with XCB likely will not have a measurable impact on the performance of Vulkan presentation and other minimal window system interactions defined here.
4) Should the GBM platform be included in the list of platform enums?
RESOLVED: Deferred, and will be addressed with a platform-specific extension to be written in the future.
Version History
Revision 1, 2015-05-20 (James Jones)
- Initial draft, based on LunarG KHR spec, other KHR specs, patches attached to bugs.
Revision 2, 2015-05-22 (Ian Elliott)
- Created initial Description section.
- Removed query for whether a platform requires the use of a queue for presentation, since it was decided that presentation will always be modeled as being part of the queue.
- Fixed typos and other minor mistakes.
Revision 3, 2015-05-26 (Ian Elliott)
- Improved the Description section.
Revision 4, 2015-05-27 (James Jones)
- Fixed compilation errors in example code.
Revision 5, 2015-06-01 (James Jones)
- Added issues 1 and 2 and made related spec updates.
Revision 6, 2015-06-01 (James Jones)
- Merged the platform type mappings table previously removed from VK_KHR_swapchain with the platform description table in this spec.
- Added issues 3 and 4 documenting choices made when building the initial list of native platforms supported.
Revision 7, 2015-06-11 (Ian Elliott)
- Updated table 1 per input from the KHR TSG.
- Updated issue 4 (GBM) per discussion with Daniel Stone. He will create a platform-specific extension sometime in the future.
Revision 8, 2015-06-17 (James Jones)
- Updated enum-extending values using new convention.
- Fixed the value of VK_SURFACE_PLATFORM_INFO_TYPE_SUPPORTED_KHR.
Revision 9, 2015-06-17 (James Jones)
- Rebased on Vulkan API version 126.
Revision 10, 2015-06-18 (James Jones)
- Marked issues 2 and 3 resolved.
Revision 11, 2015-06-23 (Ian Elliott)
- Examples now show use of function pointers for extension functions.
- Eliminated extraneous whitespace.
Revision 12, 2015-07-07 (Daniel Rakos)
- Added error section describing when each error is expected to be reported.
- Replaced the term “queue node index” with “queue family index” in the spec as that is the agreed term to be used in the latest version of the core header and spec.
- Replaced bool32_t with VkBool32.
Revision 13, 2015-08-06 (Daniel Rakos)
- Updated spec against latest core API header version.
Revision 14, 2015-08-20 (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.
- Did miscellaneous cleanup, etc.
Revision 15, 2015-08-20 (Ian Elliott—porting a 2015-07-29 change from James Jones)
- Moved the surface transform enums here from VK_WSI_swapchain so they could be reused by VK_WSI_display.
Revision 16, 2015-09-01 (James Jones)
- Restore single-field revision number.
Revision 17, 2015-09-01 (James Jones)
- Fix example code compilation errors.
Revision 18, 2015-09-26 (Jesse Hall)
- Replaced VkSurfaceDescriptionKHR with the VkSurfaceKHR object, which is created via layered extensions. Added VkDestroySurfaceKHR.
Revision 19, 2015-09-28 (Jesse Hall)
- Renamed from VK_EXT_KHR_swapchain to VK_EXT_KHR_surface.
Revision 20, 2015-09-30 (Jeff Vigil)
- Add error result VK_ERROR_SURFACE_LOST_KHR.
Revision 21, 2015-10-15 (Daniel Rakos)
- Updated the resolution of issue #2 and include the surface capability queries in this extension.
- Renamed SurfaceProperties to SurfaceCapabilities as it better reflects that the values returned are the capabilities of the surface on a particular device.
- Other minor cleanup and consistency changes.
Revision 22, 2015-10-26 (Ian Elliott)
- Renamed from VK_EXT_KHR_surface to VK_KHR_surface.
Revision 23, 2015-11-03 (Daniel Rakos)
- Added allocation callbacks to vkDestroySurfaceKHR.
Revision 24, 2015-11-10 (Jesse Hall)
- Removed VkSurfaceTransformKHR. Use VkSurfaceTransformFlagBitsKHR instead.
- Rename VkSurfaceCapabilitiesKHR member maxImageArraySize to maxImageArrayLayers.
Revision 25, 2016-01-14 (James Jones)
- Moved VK_ERROR_NATIVE_WINDOW_IN_USE_KHR from the VK_KHR_android_surface to the VK_KHR_surface extension.
2016-08-23 (Ian Elliott)
- Update the example code, to not have so many characters per line, and to split out a new example to show how to obtain function pointers.
2016-08-25 (Ian Elliott)
- A note was added at the beginning of the example code, stating that it will be removed from future versions of the appendix.
See Also
ColorSpaceKHR, CompositeAlphaFlagBitsKHR, CompositeAlphaFlagsKHR,
PresentModeKHR, SurfaceCapabilitiesKHR, SurfaceFormatKHR,
SurfaceKHR, SurfaceTransformFlagBitsKHR,
destroySurfaceKHR, getPhysicalDeviceSurfaceCapabilitiesKHR,
getPhysicalDeviceSurfaceFormatsKHR,
getPhysicalDeviceSurfacePresentModesKHR,
getPhysicalDeviceSurfaceSupportKHR
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
- destroySurfaceKHR :: forall io. MonadIO io => Instance -> SurfaceKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- getPhysicalDeviceSurfaceSupportKHR :: forall io. MonadIO io => PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> SurfaceKHR -> io ("supported" ::: Bool)
- getPhysicalDeviceSurfaceCapabilitiesKHR :: forall io. MonadIO io => PhysicalDevice -> SurfaceKHR -> io SurfaceCapabilitiesKHR
- getPhysicalDeviceSurfaceFormatsKHR :: forall io. MonadIO io => PhysicalDevice -> SurfaceKHR -> io (Result, "surfaceFormats" ::: Vector SurfaceFormatKHR)
- getPhysicalDeviceSurfacePresentModesKHR :: forall io. MonadIO io => PhysicalDevice -> SurfaceKHR -> io (Result, "presentModes" ::: Vector PresentModeKHR)
- pattern COLORSPACE_SRGB_NONLINEAR_KHR :: ColorSpaceKHR
- data SurfaceCapabilitiesKHR = SurfaceCapabilitiesKHR {
- minImageCount :: Word32
- maxImageCount :: Word32
- currentExtent :: Extent2D
- minImageExtent :: Extent2D
- maxImageExtent :: Extent2D
- maxImageArrayLayers :: Word32
- supportedTransforms :: SurfaceTransformFlagsKHR
- currentTransform :: SurfaceTransformFlagBitsKHR
- supportedCompositeAlpha :: CompositeAlphaFlagsKHR
- supportedUsageFlags :: ImageUsageFlags
- data SurfaceFormatKHR = SurfaceFormatKHR {}
- newtype PresentModeKHR where
- PresentModeKHR Int32
- pattern PRESENT_MODE_IMMEDIATE_KHR :: PresentModeKHR
- pattern PRESENT_MODE_MAILBOX_KHR :: PresentModeKHR
- pattern PRESENT_MODE_FIFO_KHR :: PresentModeKHR
- pattern PRESENT_MODE_FIFO_RELAXED_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_SRGB_NONLINEAR_KHR :: ColorSpaceKHR
- pattern COLOR_SPACE_DISPLAY_NATIVE_AMD :: ColorSpaceKHR
- pattern COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_PASS_THROUGH_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_HDR10_HLG_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_DOLBYVISION_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_HDR10_ST2084_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_BT2020_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_BT709_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_BT709_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT :: ColorSpaceKHR
- pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT :: ColorSpaceKHR
- type CompositeAlphaFlagsKHR = CompositeAlphaFlagBitsKHR
- newtype CompositeAlphaFlagBitsKHR where
- CompositeAlphaFlagBitsKHR Flags
- pattern COMPOSITE_ALPHA_OPAQUE_BIT_KHR :: CompositeAlphaFlagBitsKHR
- pattern COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR :: CompositeAlphaFlagBitsKHR
- pattern COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR :: CompositeAlphaFlagBitsKHR
- pattern COMPOSITE_ALPHA_INHERIT_BIT_KHR :: CompositeAlphaFlagBitsKHR
- type SurfaceTransformFlagsKHR = SurfaceTransformFlagBitsKHR
- newtype SurfaceTransformFlagBitsKHR where
- SurfaceTransformFlagBitsKHR Flags
- pattern SURFACE_TRANSFORM_IDENTITY_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_ROTATE_90_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_ROTATE_180_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_ROTATE_270_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR :: SurfaceTransformFlagBitsKHR
- pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_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_INHERIT_BIT_KHR :: SurfaceTransformFlagBitsKHR
- type KHR_SURFACE_SPEC_VERSION = 25
- pattern KHR_SURFACE_SPEC_VERSION :: forall a. Integral a => a
- type KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"
- pattern KHR_SURFACE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype SurfaceKHR = SurfaceKHR Word64
Documentation
Arguments
| :: forall io. MonadIO io | |
| => Instance |
|
| -> SurfaceKHR |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object
Description
Destroying a SurfaceKHR merely severs the
connection between Vulkan and the native surface, and does not imply
destroying the native surface, closing a window, or similar behavior.
Valid Usage
- All
SwapchainKHRobjects created forsurfacemust have been destroyed prior to destroyingsurface
- If
AllocationCallbackswere provided whensurfacewas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whensurfacewas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
instancemust be a validInstancehandle
- If
surfaceis notNULL_HANDLE,surfacemust be a validSurfaceKHRhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
surfaceis a valid handle, it must have been created, allocated, or retrieved frominstance
Host Synchronization
- Host access to
surfacemust be externally synchronized
See Also
getPhysicalDeviceSurfaceSupportKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => PhysicalDevice |
|
| -> ("queueFamilyIndex" ::: Word32) |
|
| -> SurfaceKHR |
|
| -> io ("supported" ::: Bool) |
vkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is supported
Valid Usage
-
queueFamilyIndexmust be less thanpQueueFamilyPropertyCountreturned bygetPhysicalDeviceQueueFamilyPropertiesfor the givenphysicalDevice
Valid Usage (Implicit)
-
physicalDevicemust be a validPhysicalDevicehandle
-
surfacemust be a validSurfaceKHRhandle -
pSupportedmust be a valid pointer to aBool32value - Both of
physicalDevice, andsurfacemust have been created, allocated, or retrieved from the sameInstance
Return Codes
See Also
getPhysicalDeviceSurfaceCapabilitiesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => PhysicalDevice |
|
| -> SurfaceKHR |
|
| -> io SurfaceCapabilitiesKHR |
vkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities
Valid Usage
-
surfacemust be a validSurfaceKHRhandle
-
surfacemust be supported byphysicalDevice, as reported bygetPhysicalDeviceSurfaceSupportKHRor an equivalent platform-specific mechanism
Valid Usage (Implicit)
-
physicalDevicemust be a validPhysicalDevicehandle
-
surfacemust be a validSurfaceKHRhandle -
pSurfaceCapabilitiesmust be a valid pointer to aSurfaceCapabilitiesKHRstructure - Both
of
physicalDevice, andsurfacemust have been created, allocated, or retrieved from the sameInstance
Return Codes
See Also
VK_KHR_surface,
PhysicalDevice, SurfaceCapabilitiesKHR,
SurfaceKHR
getPhysicalDeviceSurfaceFormatsKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => PhysicalDevice |
|
| -> SurfaceKHR |
|
| -> io (Result, "surfaceFormats" ::: Vector SurfaceFormatKHR) |
vkGetPhysicalDeviceSurfaceFormatsKHR - Query color formats supported by surface
Description
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
user 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
INCOMPLETE will be returned instead of
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 FORMAT_UNDEFINED.
If pSurfaceFormats includes an entry whose value for colorSpace is
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
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
NULL_HANDLE.
Valid Usage
- If the
VK_GOOGLE_surfaceless_queryextension is not enabled,surfacemust be a validSurfaceKHRhandle
- If
surfaceis notNULL_HANDLE, it must be supported byphysicalDevice, as reported bygetPhysicalDeviceSurfaceSupportKHRor an equivalent platform-specific mechanism
Valid Usage (Implicit)
-
physicalDevicemust be a validPhysicalDevicehandle
- If
surfaceis notNULL_HANDLE,surfacemust be a validSurfaceKHRhandle -
pSurfaceFormatCountmust be a valid pointer to auint32_tvalue -
If the value referenced by
pSurfaceFormatCountis not0, andpSurfaceFormatsis notNULL,pSurfaceFormatsmust be a valid pointer to an array ofpSurfaceFormatCountSurfaceFormatKHRstructures - Both of
physicalDevice, andsurfacethat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameInstance
Return Codes
See Also
VK_KHR_surface,
PhysicalDevice, SurfaceFormatKHR,
SurfaceKHR
getPhysicalDeviceSurfacePresentModesKHR Source #
Arguments
| :: forall io. MonadIO io | |
| => PhysicalDevice |
|
| -> SurfaceKHR |
|
| -> io (Result, "presentModes" ::: Vector PresentModeKHR) |
vkGetPhysicalDeviceSurfacePresentModesKHR - Query supported presentation modes
Description
If pPresentModes is NULL, then the number of presentation modes
supported for the given surface is returned in pPresentModeCount.
Otherwise, pPresentModeCount must point to a variable set by the
user to the number of elements in the pPresentModes array, and on
return the variable is overwritten with the number of values actually
written to pPresentModes. If the value of pPresentModeCount is less
than the number of presentation modes supported, at most
pPresentModeCount values will be written, and
INCOMPLETE will be returned instead of
SUCCESS, to indicate that not all the
available modes were returned.
If the VK_GOOGLE_surfaceless_query extension is enabled and surface
is NULL_HANDLE, the values returned in
pPresentModes will only indicate support for PRESENT_MODE_FIFO_KHR,
PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR, and
PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR. To query support for any
other present mode, a valid handle must be provided in surface.
Valid Usage
- If
the
VK_GOOGLE_surfaceless_queryextension is not enabled,surfacemust be a validSurfaceKHRhandle
- If
surfaceis notNULL_HANDLE, it must be supported byphysicalDevice, as reported bygetPhysicalDeviceSurfaceSupportKHRor an equivalent platform-specific mechanism
Valid Usage (Implicit)
-
physicalDevicemust be a validPhysicalDevicehandle
-
If
surfaceis notNULL_HANDLE,surfacemust be a validSurfaceKHRhandle -
pPresentModeCountmust be a valid pointer to auint32_tvalue -
If the value referenced by
pPresentModeCountis not0, andpPresentModesis notNULL,pPresentModesmust be a valid pointer to an array ofpPresentModeCountPresentModeKHRvalues - Both
of
physicalDevice, andsurfacethat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the sameInstance
Return Codes
See Also
pattern COLORSPACE_SRGB_NONLINEAR_KHR :: ColorSpaceKHR Source #
data SurfaceCapabilitiesKHR Source #
VkSurfaceCapabilitiesKHR - Structure describing capabilities of a surface
Description
Note
Supported usage flags of a presentable image when using
PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR or
PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR presentation mode are
provided by
SharedPresentSurfaceCapabilitiesKHR::sharedPresentSupportedUsageFlags.
Note
Formulas such as min(N, maxImageCount) are not correct, since
maxImageCount may be zero.
See Also
VK_KHR_surface,
CompositeAlphaFlagsKHR, Extent2D,
ImageUsageFlags,
SurfaceCapabilities2KHR,
SurfaceTransformFlagBitsKHR, SurfaceTransformFlagsKHR,
getPhysicalDeviceSurfaceCapabilitiesKHR
Constructors
| SurfaceCapabilitiesKHR | |
Fields
| |
Instances
data SurfaceFormatKHR Source #
VkSurfaceFormatKHR - Structure describing a supported swapchain format-color space pair
See Also
VK_KHR_surface,
ColorSpaceKHR, Format,
SurfaceFormat2KHR,
getPhysicalDeviceSurfaceFormatsKHR
Constructors
| SurfaceFormatKHR | |
Fields
| |
Instances
newtype PresentModeKHR Source #
VkPresentModeKHR - Presentation mode supported for a surface
Description
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_SHARED_DEMAND_REFRESH_KHR | SharedPresentSurfaceCapabilitiesKHR::sharedPresentSupportedUsageFlags |
PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR | SharedPresentSurfaceCapabilitiesKHR::sharedPresentSupportedUsageFlags |
Presentable image usage queries
Note
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,
SurfacePresentModeCompatibilityEXT,
SurfacePresentModeEXT,
SwapchainCreateInfoKHR,
SwapchainPresentModeInfoEXT,
SwapchainPresentModesCreateInfoEXT,
getPhysicalDeviceSurfacePresentModes2EXT,
getPhysicalDeviceSurfacePresentModesKHR
Constructors
| PresentModeKHR Int32 |
Bundled Patterns
| pattern PRESENT_MODE_IMMEDIATE_KHR :: PresentModeKHR |
|
| pattern PRESENT_MODE_MAILBOX_KHR :: PresentModeKHR |
|
| pattern PRESENT_MODE_FIFO_KHR :: PresentModeKHR |
|
| pattern PRESENT_MODE_FIFO_RELAXED_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
Note
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.
Note
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 deprecated but is maintained for backwards
compatibility.
Note
For a traditional “Linear” or non-gamma transfer function color space
use COLOR_SPACE_PASS_THROUGH_EXT.
The color components of non-linear color space swapchain images must
have had the appropriate transfer function applied. The color space
selected for the swapchain image will not affect the processing of data
written into the image by the implementation. Vulkan requires that all
implementations support the sRGB transfer function by use of an SRGB
pixel format. Other transfer functions, such as SMPTE 170M or SMPTE2084,
can be performed by the application shader. 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) | ITU (SMPTE 170M) |
| 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) | extended sRGB |
| HDR10_ST2084 | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | ST2084 PQ |
| DOLBYVISION | 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 |
| AdobeRGB | 0.640, 0.330 | 0.210, 0.710 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | AdobeRGB |
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_SRGB_NONLINEAR_KHR :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_DISPLAY_NATIVE_AMD :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_PASS_THROUGH_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_HDR10_HLG_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_DOLBYVISION_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_HDR10_ST2084_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_BT2020_LINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_BT709_NONLINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_BT709_LINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT :: ColorSpaceKHR |
|
| pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT :: ColorSpaceKHR |
|
Instances
newtype CompositeAlphaFlagBitsKHR Source #
VkCompositeAlphaFlagBitsKHR - Alpha compositing modes supported on a device
Description
These values are described as follows:
See Also
VK_KHR_surface,
CompositeAlphaFlagsKHR,
SwapchainCreateInfoKHR
Constructors
| CompositeAlphaFlagBitsKHR Flags |
Bundled Patterns
| pattern COMPOSITE_ALPHA_OPAQUE_BIT_KHR :: CompositeAlphaFlagBitsKHR |
|
| pattern COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR :: CompositeAlphaFlagBitsKHR |
|
| pattern COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR :: CompositeAlphaFlagBitsKHR |
|
| pattern COMPOSITE_ALPHA_INHERIT_BIT_KHR :: CompositeAlphaFlagBitsKHR |
|
Instances
newtype SurfaceTransformFlagBitsKHR Source #
VkSurfaceTransformFlagBitsKHR - Presentation transforms supported on a device
See Also
VK_KHR_surface,
CommandBufferInheritanceRenderPassTransformInfoQCOM,
CopyCommandTransformInfoQCOM,
DisplaySurfaceCreateInfoKHR,
RenderPassTransformBeginInfoQCOM,
SurfaceCapabilities2EXT,
SurfaceCapabilitiesKHR, SurfaceTransformFlagsKHR,
SwapchainCreateInfoKHR
Constructors
| SurfaceTransformFlagBitsKHR Flags |
Bundled Patterns
Instances
type KHR_SURFACE_SPEC_VERSION = 25 Source #
pattern KHR_SURFACE_SPEC_VERSION :: forall a. Integral a => a Source #
type KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" Source #
pattern KHR_SURFACE_EXTENSION_NAME :: forall a. (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_KHR_surface,
PhysicalDeviceSurfaceInfo2KHR,
SwapchainCreateInfoKHR,
createAndroidSurfaceKHR,
createDirectFBSurfaceEXT,
createDisplayPlaneSurfaceKHR,
createHeadlessSurfaceEXT,
createIOSSurfaceMVK,
createImagePipeSurfaceFUCHSIA,
createMacOSSurfaceMVK,
createMetalSurfaceEXT,
createScreenSurfaceQNX,
createStreamDescriptorSurfaceGGP,
createViSurfaceNN,
createWaylandSurfaceKHR,
createWin32SurfaceKHR,
createXcbSurfaceKHR,
createXlibSurfaceKHR,
destroySurfaceKHR,
getDeviceGroupSurfacePresentModesKHR,
getPhysicalDevicePresentRectanglesKHR,
getPhysicalDeviceSurfaceCapabilities2EXT,
getPhysicalDeviceSurfaceCapabilitiesKHR,
getPhysicalDeviceSurfaceFormatsKHR,
getPhysicalDeviceSurfacePresentModesKHR,
getPhysicalDeviceSurfaceSupportKHR
Constructors
| SurfaceKHR Word64 |