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

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

=== 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.adoc[]

=== 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
