| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_GOOGLE_display_timing
Synopsis
- getRefreshCycleDurationGOOGLE :: forall io. MonadIO io => Device -> SwapchainKHR -> io ("displayTimingProperties" ::: RefreshCycleDurationGOOGLE)
- getPastPresentationTimingGOOGLE :: forall io. MonadIO io => Device -> SwapchainKHR -> io (Result, "presentationTimings" ::: Vector PastPresentationTimingGOOGLE)
- data RefreshCycleDurationGOOGLE = RefreshCycleDurationGOOGLE {}
- data PastPresentationTimingGOOGLE = PastPresentationTimingGOOGLE {}
- data PresentTimesInfoGOOGLE = PresentTimesInfoGOOGLE {}
- data PresentTimeGOOGLE = PresentTimeGOOGLE {}
- type GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1
- pattern GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: forall a. Integral a => a
- type GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing"
- pattern GOOGLE_DISPLAY_TIMING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- newtype SwapchainKHR = SwapchainKHR Word64
Documentation
getRefreshCycleDurationGOOGLE Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> SwapchainKHR |
|
| -> io ("displayTimingProperties" ::: RefreshCycleDurationGOOGLE) |
vkGetRefreshCycleDurationGOOGLE - Obtain the RC duration of the PE’s display
Valid Usage (Implicit)
devicemust be a validDevicehandle
swapchainmust be a validSwapchainKHRhandlepDisplayTimingPropertiesmust be a valid pointer to aRefreshCycleDurationGOOGLEstructure- Both of
device, andswapchainmust have been created, allocated, or retrieved from the sameInstance
Host Synchronization
- Host access to
swapchainmust be externally synchronized
Return Codes
See Also
getPastPresentationTimingGOOGLE Source #
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> SwapchainKHR |
|
| -> io (Result, "presentationTimings" ::: Vector PastPresentationTimingGOOGLE) |
vkGetPastPresentationTimingGOOGLE - Obtain timing of a previously-presented image
Description
If pPresentationTimings is NULL, then the number of newly-available
timing records for the given swapchain is returned in
pPresentationTimingCount. Otherwise, pPresentationTimingCount must
point to a variable set by the user to the number of elements in the
pPresentationTimings array, and on return the variable is overwritten
with the number of structures actually written to
pPresentationTimings. If the value of pPresentationTimingCount is
less than the number of newly-available timing records, at most
pPresentationTimingCount structures will be written. If
pPresentationTimingCount is smaller than the number of newly-available
timing records for the given swapchain,
INCOMPLETE will be returned instead of
SUCCESS to indicate that not all the
available values were returned.
Valid Usage (Implicit)
devicemust be a validDevicehandle
swapchainmust be a validSwapchainKHRhandlepPresentationTimingCountmust be a valid pointer to auint32_tvalue- If the value referenced by
pPresentationTimingCountis not0, andpPresentationTimingsis notNULL,pPresentationTimingsmust be a valid pointer to an array ofpPresentationTimingCountPastPresentationTimingGOOGLEstructures - Both of
device, andswapchainmust have been created, allocated, or retrieved from the sameInstance
Host Synchronization
- Host access to
swapchainmust be externally synchronized
Return Codes
See Also
data RefreshCycleDurationGOOGLE Source #
VkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a display
See Also
Constructors
| RefreshCycleDurationGOOGLE | |
Fields
| |
Instances
data PastPresentationTimingGOOGLE Source #
VkPastPresentationTimingGOOGLE - Structure containing timing information about a previously-presented image
Description
The results for a given swapchain and presentID are only returned
once from getPastPresentationTimingGOOGLE.
The application can use the PastPresentationTimingGOOGLE values to
occasionally adjust its timing. For example, if actualPresentTime is
later than expected (e.g. one refreshDuration late), the application
may increase its target IPD to a higher multiple of refreshDuration
(e.g. decrease its frame rate from 60Hz to 30Hz). If actualPresentTime
and earliestPresentTime are consistently different, and if
presentMargin is consistently large enough, the application may
decrease its target IPD to a smaller multiple of refreshDuration (e.g.
increase its frame rate from 30Hz to 60Hz). If actualPresentTime and
earliestPresentTime are same, and if presentMargin is consistently
high, the application may delay the start of its input-render-present
loop in order to decrease the latency between user input and the
corresponding present (always leaving some margin in case a new image
takes longer to render than the previous image). An application that
desires its target IPD to always be the same as refreshDuration, can
also adjust features until actualPresentTime is never late and
presentMargin is satisfactory.
See Also
Constructors
| PastPresentationTimingGOOGLE | |
Fields
| |
Instances
data PresentTimesInfoGOOGLE Source #
VkPresentTimesInfoGOOGLE - The earliest time each image should be presented
Valid Usage
swapchainCountmust be the same value asPresentInfoKHR::swapchainCount, wherePresentInfoKHRis included in thepNextchain of thisPresentTimesInfoGOOGLEstructure
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
- If
pTimesis notNULL,pTimesmust be a valid pointer to an array ofswapchainCountPresentTimeGOOGLEstructures swapchainCountmust be greater than0
See Also
Constructors
| PresentTimesInfoGOOGLE | |
Fields
| |
Instances
data PresentTimeGOOGLE Source #
Constructors
| PresentTimeGOOGLE | |
Fields
| |
Instances
type GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 Source #
pattern GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: forall a. Integral a => a Source #
type GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" Source #
pattern GOOGLE_DISPLAY_TIMING_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 presented 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 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
AcquireNextImageInfoKHR,
BindImageMemorySwapchainInfoKHR,
ImageSwapchainCreateInfoKHR,
PresentInfoKHR,
SwapchainCreateInfoKHR,
acquireFullScreenExclusiveModeEXT,
acquireNextImageKHR,
createSharedSwapchainsKHR,
createSwapchainKHR,
destroySwapchainKHR,
getPastPresentationTimingGOOGLE,
getRefreshCycleDurationGOOGLE,
getSwapchainCounterEXT,
getSwapchainImagesKHR,
getSwapchainStatusKHR,
releaseFullScreenExclusiveModeEXT,
setHdrMetadataEXT,
setLocalDimmingAMD
Constructors
| SwapchainKHR Word64 |