vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_hdr_metadata

Description

Name

VK_EXT_hdr_metadata - device extension

VK_EXT_hdr_metadata

Name String
VK_EXT_hdr_metadata
Extension Type
Device extension
Registered Extension Number
106
Revision
2
Ratification Status
Not ratified
Extension and Version Dependencies
VK_KHR_swapchain
Contact

Other Extension Metadata

Last Modified Date
2018-12-19
IP Status
No known IP claims.
Contributors
  • Courtney Goeltzenleuchter, Google

Description

This extension defines two new structures and a function to assign SMPTE (the Society of Motion Picture and Television Engineers) 2086 metadata and CTA (Consumer Technology Association) 861.3 metadata to a swapchain. The metadata includes the color primaries, white point, and luminance range of the reference monitor, which all together define the color volume containing all the possible colors the reference monitor can produce. The reference monitor is the display where creative work is done and creative intent is established. To preserve such creative intent as much as possible and achieve consistent color reproduction on different viewing displays, it is useful for the display pipeline to know the color volume of the original reference monitor where content was created or tuned. This avoids performing unnecessary mapping of colors that are not displayable on the original reference monitor. The metadata also includes the maxContentLightLevel and maxFrameAverageLightLevel as defined by CTA 861.3.

While the intended purpose of the metadata is to assist in the transformation between different color volumes of different displays and help achieve better color reproduction, it is not in the scope of this extension to define how exactly the metadata should be used in such a process. It is up to the implementation to determine how to make use of the metadata.

New Commands

New Structures

New Enum Constants

Issues

1) Do we need a query function?

PROPOSED: No, Vulkan does not provide queries for state that the application can track on its own.

2) Should we specify default if not specified by the application?

PROPOSED: No, that leaves the default up to the display.

Version History

  • Revision 1, 2016-12-27 (Courtney Goeltzenleuchter)

    • Initial version
  • Revision 2, 2018-12-19 (Courtney Goeltzenleuchter)

    • Correct implicit validity for VkHdrMetadataEXT structure

See Also

HdrMetadataEXT, XYColorEXT, setHdrMetadataEXT

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

Documentation

setHdrMetadataEXT Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device where the swapchain(s) were created.

-> ("swapchains" ::: Vector SwapchainKHR)

pSwapchains is a pointer to an array of swapchainCount SwapchainKHR handles.

-> ("metadata" ::: Vector HdrMetadataEXT)

pMetadata is a pointer to an array of swapchainCount HdrMetadataEXT structures.

-> io () 

vkSetHdrMetadataEXT - Set Hdr metadata

Description

The metadata will be applied to the specified SwapchainKHR objects at the next queuePresentKHR call using that SwapchainKHR object. The metadata will persist until a subsequent setHdrMetadataEXT changes it.

Valid Usage (Implicit)

  • device must be a valid Device handle
  • pSwapchains must be a valid pointer to an array of swapchainCount valid SwapchainKHR handles
  • pMetadata must be a valid pointer to an array of swapchainCount valid HdrMetadataEXT structures
  • swapchainCount must be greater than 0
  • Each element of pSwapchains must have been created, allocated, or retrieved from device

See Also

VK_EXT_hdr_metadata, Device, HdrMetadataEXT, SwapchainKHR

data XYColorEXT Source #

VkXYColorEXT - Specify X,Y chromaticity coordinates

Description

Chromaticity coordinates are as specified in CIE 15:2004 “Calculation of chromaticity coordinates” (Section 7.3) and are limited to between 0 and 1 for real colors for the reference monitor.

See Also

VK_EXT_hdr_metadata, HdrMetadataEXT

Constructors

XYColorEXT 

Fields

  • x :: Float

    x is the x chromaticity coordinate.

  • y :: Float

    y is the y chromaticity coordinate.

Instances

Instances details
Storable XYColorEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

Show XYColorEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

Eq XYColorEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

FromCStruct XYColorEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

ToCStruct XYColorEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

Zero XYColorEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

data HdrMetadataEXT Source #

VkHdrMetadataEXT - Specify Hdr metadata

Valid Usage (Implicit)

Note

The validity and use of this data is outside the scope of Vulkan.

See Also

VK_EXT_hdr_metadata, StructureType, XYColorEXT, setHdrMetadataEXT

Constructors

HdrMetadataEXT 

Fields

Instances

Instances details
Storable HdrMetadataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

Show HdrMetadataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

FromCStruct HdrMetadataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

ToCStruct HdrMetadataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

Zero HdrMetadataEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_hdr_metadata

pattern EXT_HDR_METADATA_SPEC_VERSION :: forall a. Integral a => a Source #

type EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" Source #

pattern EXT_HDR_METADATA_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #

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.

Note

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 releaseSwapchainImagesEXT, 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.

Note

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_KHR_swapchain, AcquireNextImageInfoKHR, BindImageMemorySwapchainInfoKHR, ImageSwapchainCreateInfoKHR, PresentInfoKHR, ReleaseSwapchainImagesInfoEXT, SwapchainCreateInfoKHR, acquireFullScreenExclusiveModeEXT, acquireNextImageKHR, createSharedSwapchainsKHR, createSwapchainKHR, destroySwapchainKHR, getLatencyTimingsNV, getPastPresentationTimingGOOGLE, getRefreshCycleDurationGOOGLE, getSwapchainCounterEXT, getSwapchainImagesKHR, getSwapchainStatusKHR, latencySleepNV, queuePresentKHR, releaseFullScreenExclusiveModeEXT, setHdrMetadataEXT, setLatencyMarkerNV, setLatencySleepModeNV, setLocalDimmingAMD, waitForPresentKHR

Constructors

SwapchainKHR Word64 

Instances

Instances details
Storable SwapchainKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Show SwapchainKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Eq SwapchainKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Ord SwapchainKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

HasObjectType SwapchainKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

IsHandle SwapchainKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles

Zero SwapchainKHR Source # 
Instance details

Defined in Vulkan.Extensions.Handles