VK_NV_external_sci_sync
{generated}/meta/{refprefix}VK_NV_external_sci_sync.adoc
Other Extension Metadata
Last Modified Date
2022-04-12
Contributors
- Kai Zhang, NVIDIA
- Jeff Bolz, NVIDIA
- Jonathan McCaffrey, NVIDIA
- Daniel Koch, NVIDIA
Description
An application using external memory may wish to synchronize access to that
memory using semaphores and fences.
This extension enables an application to import and export semaphore and
fence payloads to and from NvSciSync
objects.
To import a NvSciSyncObj
to a VkSemaphore or VkFence,
applications need to:
- Create an unreconciled
NvSciSyncAttrList
viaNvSciSyncAttrListCreate
() - Fill the private attribute list via vkGetPhysicalDeviceSciSyncAttributesNV()
- Fill the public attribute list via
NvSciSyncAttrListSetAttrs
() - Reconcile the
NvSciSyncAttrList
viaNvSciSyncAttrListReconcile
() - Create a
NvSciSyncObj
viaNvSciSyncObjAlloc
() - Import the
NvSciSyncObj
to a VkSemaphore by passing the VkImportSemaphoreSciSyncInfoNV structure to the vkImportSemaphoreSciSyncObjNV command, or to a VkFence by passing the VkImportFenceSciSyncInfoNV structure to the vkImportFenceSciSyncObjNV command.
To import/export a NvSciSyncFence
to a VkFence object, that
VkFence object must already have a NvSciSyncObj
previously
imported.
For details of the NvSciSync
APIs and data structures, see the
NvStreams Documentation
.
Issues
1) What should we call this extension?
RESOLVED.
The external API is NvSciSync
, but the Vulkan convention is to append
the vendor suffix at the end of an identifier.
Using NvSciSyncNV
seems awkward, so we have chosen to use just the
SciSync
portion of the name in Vulkan commands and tokens.
Since this is for interacting with objects from outside Vulkan, we use
"external" in the name, similar to VK_KHR_external_fence_fd.
To avoid an explosion of extensions, we include the capability to import and
export both semaphores and fences in one extension but include separate
features in case implementations only implement (or safety certify) a
subset.
2) How do we resolve the NvStreams terminology of NvSciSyncFence which conflicts with the Vulkan SC terminology of VkFence.
RESOLVED: "fence" refers to VkFence. "NvSciSyncFence" refers to the NvStreams type and "VkFence" refers to the Vulkan SC type.
Version History
- Revision 2, 2022-03-29 (Daniel Koch)
- use separate commands for
NvSciSyncFence
andNvSciSyncObj
handles
- use separate commands for
- Revision 1, 2020-11-25 (Kai Zhang, Daniel Koch)
- Initial revision