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
NvSciSyncAttrListviaNvSciSyncAttrListCreate() - Fill the private attribute list via vkGetPhysicalDeviceSciSyncAttributesNV()
- Fill the public attribute list via
NvSciSyncAttrListSetAttrs() - Reconcile the
NvSciSyncAttrListviaNvSciSyncAttrListReconcile() - Create a
NvSciSyncObjviaNvSciSyncObjAlloc() - To import a
NvSciSyncObjto a VkSemaphore, create a VkSemaphoreSciSyncPoolNV for theNvSciSyncObjand then select the semaphore from VkSemaphoreSciSyncPoolNV by passing the VkSemaphoreSciSyncCreateInfoNV structure to vkCreateSemaphore - To import a
NvSciSyncObjto 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
NvSciSyncObjto VkSemaphore, applications need to:- Create a VkSemaphore by command vkCreateSemaphore.
- Call vkImportSemaphoreSciSyncObjNV command to import the
NvSciSyncObjto 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
NvSciSyncObjto 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