VK_NV_external_sci_sync2
{generated}/meta/{refprefix}VK_NV_external_sci_sync2.adoc
Other Extension Metadata
Last Modified Date
2022-09-07
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 semaphore and import/export
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
() - To import a
NvSciSyncObj
to a VkSemaphore, create a VkSemaphoreSciSyncPoolNV for theNvSciSyncObj
and then select the semaphore from VkSemaphoreSciSyncPoolNV by passing the VkSemaphoreSciSyncCreateInfoNV structure to vkCreateSemaphore - To import a
NvSciSyncObj
to a VkFence, pass 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.
This extension does not support exporting semaphores from NvSciSync
objects.
For details of the NvSciSync
APIs and data structures, see the
NvStreams Documentation
.
Issues
1) Does this extension extend or replace VK_NV_external_sci_sync?
RESOLVED. Replaces - expect to deprecate it and eventually remove it.
2) What part of VK_NV_external_sci_sync is deprecated/removed in this extension?
RESOLVED. The commands to import and export semaphores from VK_NV_external_sci_sync are removed and have been replaced with an alternate mechanism to import semaphores. Fence import and export functionality is unchanged.
In particular:
- Removed Commands:
- Removed Structures:
3) Application migration guide from VK_NV_external_sci_sync to VK_NV_external_sci_sync2
- In VK_NV_external_sci_sync, to import a
NvSciSyncObj
to VkSemaphore, applications need to:- Create a VkSemaphore by command vkCreateSemaphore.
- Call vkImportSemaphoreSciSyncObjNV command to import the
NvSciSyncObj
to VkSemaphore created. - Call vkDestroySemaphore to destroy the VkSemaphore after all submitted batches that refer to it have completed execution.
- In order to migrate to VK_NV_external_sci_sync2, applications
need to:
- Import the a
NvSciSyncObj
to a VkSemaphoreSciSyncPoolNV by command vkCreateSemaphoreSciSyncPoolNV. - Select the VkSemaphore from VkSemaphoreSciSyncPoolNV by passing the VkSemaphoreSciSyncCreateInfoNV structure to vkCreateSemaphore.
- Can call vkDestroySemaphore to destroy the VkSemaphore immediately after all the batches that refer to it are submitted.
- Call vkDestroySemaphoreSciSyncPoolNV to destroy the semaphore SciSync pool after all submitted batches that refer to it have completed execution.
- Import the a
Version History
- Revision 1, 2022-09-07 (Kai Zhang, Daniel Koch)
- Initial revision