Contact
-
Chris Lentini [GitHub]clentini
Other Extension Metadata
- Last Modified Date
-
2025-03-24
- Contributors
-
-
Chris Lentini, NVIDIA
-
Eric Werness, NVIDIA
-
James Jones, NVIDIA
-
Jeff Juliano, NVIDIA
-
Liam Middlebrook, NVIDIA
-
Lionel Duc, NVIDIA
-
Description
This extension gives applications the ability to join compatible external
compute APIs to a VkDevice
.
In this way, the extension allows an application to achieve simultaneous
execution between work submitted from these compatible external APIs and
work that has been submitted through the Vulkan API.
At device creation time, an application must supply a VkExternalComputeQueueDeviceCreateInfoNV. This communicates to the implementation the maximum number of external queues that the application can create at once. This information may be used by the implementation to aid in decisions made during device creation.
After device creation, the function vkCreateExternalComputeQueueNV is
used by an application to create a new VkExternalComputeQueueNV
object.
The VkExternalComputeQueueNV
object holds information and reserves
resources necessary for a compatible external API to be able to join a
VkDevice
.
This information can be queried through the
vkGetExternalComputeQueueDataNV function, returning an opaque blob of
data which can be passed to compatible external APIs.
The application must finally call vkDestroyExternalComputeQueueNV
when it is done in order to release the reserved resources.
This extension introduces a new properties structure, VkPhysicalDeviceExternalComputeQueuePropertiesNV, which can be queried through vkGetPhysicalDeviceProperties2. The structure provides information on functional limits to the extension as well as a way of querying the size of the application allocated memory which must be passed to the vkGetExternalComputeQueueDataNV function.
When creating a VkExternalComputeQueueNV
through
vkCreateExternalComputeQueueNV, the
VkExternalComputeQueueCreateInfoNV structure requires an application
to supply a VkQueue
to aid in external compute queue creation.
The supplied VkQueue
is a strong scheduling hint about which queue it
expects to submit graphics workloads to and with which it expects
simultaneous execution of compute workloads submitted through the external
API.
New Enum Constants
-
VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME
-
VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION
-
Extending VkObjectType:
-
VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV
-
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV
-
VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV
-
VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV
-
Note
|
While the external queue is now a part of a |
Note
|
In general, synchronization and resource sharing between the external API and Vulkan must still be accomplished via existing cross-API interop mechanisms. |
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.