Contact
-
Chris Lentini [GitHub]clentini
Other Extension Metadata
- Last Modified Date
-
2025-12-01
- Contributors
-
-
Chris Lentini, NVIDIA
-
Eric Werness, NVIDIA
-
Lionel Duc, NVIDIA
-
Peter Deayton, NVIDIA
-
Description
This extension provides applications with control over how their compute workloads utilize GPU compute resources, specifically allowing prioritization relative to other simultaneously executing workloads. Applications can specify the priority with which compute workloads should occupy GPU compute resources, allowing for a fine-grained distinction between workloads that may want to execute at a background priority over a long period of time versus workloads with harder latency requirements.
The extension introduces a new command vkCmdSetComputeOccupancyPriorityNV that allows applications to set the occupancy priority for subsequent compute dispatches. The occupancy priority affects how compute workloads utilize GPU compute resources relative to other simultaneously executing workloads.
The occupancy priority is stateful on a command buffer. All commands listed in the Dispatching Commands chapter issued subsequent to a vkCmdSetComputeOccupancyPriorityNV call will be executed with the specified priority parameters until another vkCmdSetComputeOccupancyPriorityNV call is made.
For convenience, three named occupancy priority values are defined:
-
VK_COMPUTE_OCCUPANCY_PRIORITY_LOW_NV - a constant value that can be used for VkComputeOccupancyPriorityParametersNV::
occupancyPriorityto specify a low priority level. -
VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV - a constant value that can be used for VkComputeOccupancyPriorityParametersNV::
occupancyPriorityto specify a normal priority level. This represents the default priority level. -
VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV - a constant value that can be used for VkComputeOccupancyPriorityParametersNV::
occupancyPriorityto specify a high priority level.
All command buffers (primary and secondary) start with a priority level equal to the VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV value. The priority state is not inherited by secondary command buffers - each command buffer maintains its own independent priority state.
New Enum Constants
-
VK_NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME -
VK_NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION -
Extending VkStructureType:
|
Note
|
The extension only allows specification of occupancy priority for compute workloads, however, the priorities will also impact the prioritization of compute workloads relative to simultaneously executing graphics workloads. In such a scenario, the graphics workload may be thought of as executing at VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV priority, and so a simultaneously executing compute workload with VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV occupancy priority will preferentially utilize available compute resources. |
|
Note
|
Workloads specified with a higher priority may begin execution after workloads specified with a lower priority, at which point they may find GPU compute resources already occupied. So, while they will from that point forward preferentially occupy available compute resources, they may not ramp up to full occupancy until the already present lower priority work has reached a point where it can relinquish compute resources. |
Document Notes
For more information, see the Vulkan Specification.
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.