/ appendices / VK_GOOGLE_display_timing.txt
VK_GOOGLE_display_timing.txt
1 // Copyright (c) 2014-2019 Khronos Group. This work is licensed under a 2 // Creative Commons Attribution 4.0 International License; see 3 // http://creativecommons.org/licenses/by/4.0/ 4 5 include::meta/VK_GOOGLE_display_timing.txt[] 6 7 *Last Modified Date*:: 8 2017-02-14 9 *IP Status*:: 10 No known IP claims. 11 *Contributors*:: 12 - Ian Elliott, Google 13 - Jesse Hall, Google 14 15 This device extension allows an application that uses the 16 `<<VK_KHR_swapchain>>` extension to obtain information about the 17 presentation engine's display, to obtain timing information about each 18 present, and to schedule a present to happen no earlier than a desired time. 19 An application can use this to minimize various visual anomalies (e.g. 20 stuttering). 21 22 Traditional game and real-time animation applications need to correctly 23 position their geometry for when the presentable image will be presented to 24 the user. 25 To accomplish this, applications need various timing information about the 26 presentation engine's display. 27 They need to know when presentable images were actually presented, and when 28 they could have been presented. 29 Applications also need to tell the presentation engine to display an image 30 no sooner than a given time. 31 This allows the application to avoid stuttering, so the animation looks 32 smooth to the user. 33 34 This extension treats variable-refresh-rate (VRR) displays as if they are 35 fixed-refresh-rate (FRR) displays. 36 37 === New Object Types 38 39 None. 40 41 === New Enum Constants 42 43 * Extending elink:VkStructureType: 44 ** ename:VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE 45 46 === New Enums 47 48 None. 49 50 === New Structures 51 52 * slink:VkRefreshCycleDurationGOOGLE 53 * slink:VkPastPresentationTimingGOOGLE 54 * slink:VkPresentTimesInfoGOOGLE 55 * slink:VkPresentTimeGOOGLE 56 57 === New Functions 58 59 * flink:vkGetRefreshCycleDurationGOOGLE 60 * flink:vkGetPastPresentationTimingGOOGLE 61 62 === Issues 63 64 None. 65 66 === Examples 67 68 [NOTE] 69 .Note 70 ==== 71 The example code for the this extension (like the `<<VK_KHR_surface>>` and 72 `VK_GOOGLE_display_timing` extensions) is contained in the cube demo that is 73 shipped with the official Khronos SDK, and is being kept up-to-date in that 74 location (see: 75 https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c ). 76 ==== 77 78 === Version History 79 80 * Revision 1, 2017-02-14 (Ian Elliott) 81 - Internal revisions