93 lines
2.7 KiB
Plaintext
93 lines
2.7 KiB
Plaintext
|
[[VK_EXT_display_control]]
|
||
|
== VK_EXT_display_control
|
||
|
|
||
|
*Name String*::
|
||
|
+VK_EXT_display_control+
|
||
|
*Extension Type*::
|
||
|
Device extension
|
||
|
*Registered Extension Number*::
|
||
|
92
|
||
|
*Last Modified Date*::
|
||
|
2016-12-13
|
||
|
*Revision*::
|
||
|
1
|
||
|
*IP Status*::
|
||
|
No known IP claims.
|
||
|
*Dependencies*::
|
||
|
- This extension is written against version 1.0.37 of the Vulkan API.
|
||
|
- Requires +VK_KHR_display+
|
||
|
- Requires +VK_EXT_display_surface_counter+
|
||
|
- Requires +VK_KHR_swapchain+
|
||
|
*Contributors*::
|
||
|
- Pierre Boudier, NVIDIA
|
||
|
- James Jones, NVIDIA
|
||
|
- Damien Leone, NVIDIA
|
||
|
- Pierre-Loup Griffais, Valve
|
||
|
- Daniel Vetter, Intel
|
||
|
*Contacts*::
|
||
|
- James Jones, NVIDIA (jajones 'at' nvidia.com)
|
||
|
|
||
|
This extension defines a set of utility functions for use with the
|
||
|
+VK_KHR_display+ and +VK_KHR_display_swapchain+ extensions.
|
||
|
|
||
|
=== New Enum Constants
|
||
|
|
||
|
* Extending ename:VkStructureType:
|
||
|
** ename:VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
|
||
|
** ename:VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
|
||
|
** ename:VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
|
||
|
** ename:VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
|
||
|
|
||
|
=== New Enums
|
||
|
|
||
|
* elink:VkDisplayPowerStateEXT
|
||
|
* elink:VkDeviceEventTypeEXT
|
||
|
* elink:VkDisplayEventTypeEXT
|
||
|
|
||
|
=== New Structures
|
||
|
|
||
|
* slink:VkDisplayPowerInfoEXT
|
||
|
* slink:VkDeviceEventInfoEXT
|
||
|
* slink:VkDisplayEventInfoEXT
|
||
|
* slink:VkSwapchainCounterCreateInfoEXT
|
||
|
|
||
|
=== New Functions
|
||
|
|
||
|
* flink:vkDisplayPowerControlEXT
|
||
|
* flink:vkRegisterDeviceEventEXT
|
||
|
* flink:vkRegisterDisplayEventEXT
|
||
|
* flink:vkGetSwapchainCounterEXT
|
||
|
|
||
|
=== Issues
|
||
|
|
||
|
1) Should this extension add an explicit "WaitForVsync" API or a fence
|
||
|
signaled at vsync that the application can wait on?
|
||
|
|
||
|
*RESOLVED*: A fence.
|
||
|
A separate API could later be provided that allows exporting the fence to a
|
||
|
native object that could be inserted into standard run loops on POSIX and
|
||
|
Windows systems.
|
||
|
|
||
|
2) Should callbacks be added for a vsync event, or in general to monitor
|
||
|
events in Vulkan?
|
||
|
|
||
|
*RESOLVED*: No, fences should be used.
|
||
|
Some events are generated by interrupts which are managed in the kernel.
|
||
|
In order to use a callback provided by the application, drivers would need
|
||
|
to have the userspace driver spawn threads that would wait on the kernel
|
||
|
event, and hence the callbacks could be difficult for the application to
|
||
|
synchronize with its other work given they would arrive on a foreign thread.
|
||
|
|
||
|
3) Should vblank or scanline events be exposed?
|
||
|
|
||
|
*RESOLVED*: Vblank events.
|
||
|
Scanline events could be added by a separate extension, but the latency of
|
||
|
processing an interrupt and waking up a userspace event is high enough that
|
||
|
the accuracy of a scanline event would be rather low.
|
||
|
Further, per-scanline interrupts are not supported by all hardware.
|
||
|
|
||
|
=== Version History
|
||
|
|
||
|
* Revision 1, 2016-12-13 (James Jones)
|
||
|
- Initial draft
|