• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2017-2022 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5include::{generated}/meta/{refprefix}VK_EXT_global_priority.adoc[]
6
7=== Other Extension Metadata
8
9*Last Modified Date*::
10    2017-10-06
11*IP Status*::
12    No known IP claims.
13*Contributors*::
14  - Andres Rodriguez, Valve
15  - Pierre-Loup Griffais, Valve
16  - Dan Ginsburg, Valve
17  - Mitch Singer, AMD
18
19=== Description
20
21In Vulkan, users can specify device-scope queue priorities.
22In some cases it may be useful to extend this concept to a system-wide
23scope.
24This extension provides a mechanism for callers to set their system-wide
25priority.
26The default queue priority is ename:VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT.
27
28The driver implementation will attempt to skew hardware resource allocation
29in favour of the higher-priority task.
30Therefore, higher-priority work may retain similar latency and throughput
31characteristics even if the system is congested with lower priority work.
32
33The global priority level of a queue shall take precedence over the
34per-process queue priority
35(sname:VkDeviceQueueCreateInfo::pname:pQueuePriorities).
36
37Abuse of this feature may result in starving the rest of the system from
38hardware resources.
39Therefore, the driver implementation may deny requests to acquire a priority
40above the default priority (ename:VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT) if
41the caller does not have sufficient privileges.
42In this scenario ename:VK_ERROR_NOT_PERMITTED_EXT is returned.
43
44The driver implementation may fail the queue allocation request if resources
45required to complete the operation have been exhausted (either by the same
46process or a different process).
47In this scenario ename:VK_ERROR_INITIALIZATION_FAILED is returned.
48
49include::{generated}/interfaces/VK_EXT_global_priority.adoc[]
50
51=== Version History
52
53  * Revision 2, 2017-11-03 (Andres Rodriguez)
54  ** Fixed VkQueueGlobalPriorityEXT missing _EXT suffix
55
56  * Revision 1, 2017-10-06 (Andres Rodriguez)
57  ** First version.
58