/ appendices / VK_EXT_global_priority.txt
VK_EXT_global_priority.txt
 1  include::meta/VK_EXT_global_priority.txt[]
 2  
 3  *Last Modified Date*::
 4       2017-10-06
 5  *IP Status*::
 6      No known IP claims.
 7  *Contributors*::
 8    - Andres Rodriguez, Valve
 9    - Pierre-Loup Griffais, Valve
10    - Dan Ginsburg, Valve
11    - Mitch Singer, AMD
12  
13  In Vulkan, users can specify device-scope queue priorities.
14  In some cases it may be useful to extend this concept to a system-wide
15  scope.
16  This extension provides a mechanism for caller's to set their system-wide
17  priority.
18  The default queue priority is ename:VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT.
19  
20  The driver implementation will attempt to skew hardware resource allocation
21  in favour of the higher-priority task.
22  Therefore, higher-priority work may retain similar latency and throughput
23  characteristics even if the system is congested with lower priority work.
24  
25  The global priority level of a queue shall take precedence over the
26  per-process queue priority
27  (sname:VkDeviceQueueCreateInfo::pname:pQueuePriorities).
28  
29  Abuse of this feature may result in starving the rest of the system from
30  hardware resources.
31  Therefore, the driver implementation may deny requests to acquire a priority
32  above the default priority (ename:VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT) if
33  the caller does not have sufficient privileges.
34  In this scenario ename:VK_ERROR_NOT_PERMITTED_EXT is returned.
35  
36  The driver implementation may fail the queue allocation request if resources
37  required to complete the operation have been exhausted (either by the same
38  process or a different process).
39  In this scenario ename:VK_ERROR_INITIALIZATION_FAILED is returned.
40  
41  === New Object Types
42  
43  None.
44  
45  === New Enum Constants
46  
47    * Extending elink:VkStructureType:
48    ** ename:VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT
49  
50    * Extending elink:VkResult:
51    ** ename:VK_ERROR_NOT_PERMITTED_EXT
52  
53  === New Enums
54  
55    * elink:VkQueueGlobalPriorityEXT
56  
57  === New Structures
58  
59    * slink:VkDeviceQueueGlobalPriorityCreateInfoEXT
60  
61  === New Functions
62  
63  None.
64  
65  === Issues
66  
67  None.
68  
69  === Version History
70  
71   * Revision 2, 2017-11-03 (Andres Rodriguez)
72     - Fixed VkQueueGlobalPriorityEXT missing _EXT suffix
73  
74   * Revision 1, 2017-10-06 (Andres Rodriguez)
75     - First version.