// Copyright 2014-2021 The Khronos Group, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_GOOGLE_display_timing.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2017-02-14
*IP Status*::
    No known IP claims.
*Contributors*::
  - Ian Elliott, Google
  - Jesse Hall, Google

=== Description

This device extension allows an application that uses the
`apiext: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.

include::{generated}/interfaces/VK_GOOGLE_display_timing.txt[]

=== Examples

[NOTE]
.Note
====
The example code for the this extension (like the `apiext: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-Tools/blob/master/cube/cube.c ).
====

=== Version History

 * Revision 1, 2017-02-14 (Ian Elliott)
   - Internal revisions
