Name
VK_NV_compute_occupancy_priority - device extension
VK_NV_compute_occupancy_priority
- Name String
VK_NV_compute_occupancy_priority
- Extension Type
Device extension
- Registered Extension Number
646
- Revision
1
- Ratification Status
Not ratified
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2
or
Vulkan Version 1.1
- Contact
- Extension Proposal
VK_NV_compute_occupancy_priority
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
cmdSetComputeOccupancyPriorityNV 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 cmdSetComputeOccupancyPriorityNV call
will be executed with the specified priority parameters until another
cmdSetComputeOccupancyPriorityNV 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
ComputeOccupancyPriorityParametersNV::occupancyPriority to
specify a low priority level.
VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV - a constant value that
can be used for
ComputeOccupancyPriorityParametersNV::occupancyPriority to
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
ComputeOccupancyPriorityParametersNV::occupancyPriority to
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 Commands
New Structures
New Enum Constants
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.
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.
Issues
None.
Version History
See Also
No cross-references are available
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.