Vulkan-Docs/doc/specs/vulkan/appendices/VK_GOOGLE_display_timing.txt

83 lines
2.3 KiB
Plaintext

// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
include::meta/VK_GOOGLE_display_timing.txt[]
*Last Modified Date*::
2017-02-14
*IP Status*::
No known IP claims.
*Contributors*::
- Ian Elliott, Google
- Jesse Hall, Google
This device extension allows an application that uses the
`<<VK_KHR_swapchain>>` extension to obtain information about the
presentation engine's display, to obtain timing information about each
present, and to schedule a present to happen no earlier than a desired time.
An application can use this to minimize various visual anomalies (e.g.
stuttering).
Traditional game and real-time animation applications need to correctly
position their geometry for when the presentable image will be presented to
the user.
To accomplish this, applications need various timing information about the
presentation engine's display.
They need to know when presentable images were actually presented, and when
they could have been presented.
Applications also need to tell the presentation engine to display an image
no sooner than a given time.
This allows the application to avoid stuttering, so the animation looks
smooth to the user.
This extension treats variable-refresh-rate (VRR) displays as if they are
fixed-refresh-rate (FRR) displays.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
=== New Enums
None.
=== New Structures
* slink:VkRefreshCycleDurationGOOGLE
* slink:VkPastPresentationTimingGOOGLE
* slink:VkPresentTimesInfoGOOGLE
* slink:VkPresentTimeGOOGLE
=== New Functions
* flink:vkGetRefreshCycleDurationGOOGLE
* flink:vkGetPastPresentationTimingGOOGLE
=== Issues
None.
=== Examples
[NOTE]
.Note
====
The example code for the this extension (like the `<<VK_KHR_surface>>` and
`VK_GOOGLE_display_timing` extensions) is contained in 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-LoaderAndValidationLayers/blob/master/demos/cube.c
).
====
=== Version History
* Revision 1, 2017-02-14 (Ian Elliott)
- Internal revisions