API Interactions
-
Interacts with VKSC_VERSION_1_0 == Contact
-
Kai Zhang kazhang
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
.
New Enum Constants
-
VK_NV_EXTERNAL_SCI_SYNC_2_EXTENSION_NAME
-
VK_NV_EXTERNAL_SCI_SYNC_2_SPEC_VERSION
-
Extending VkExternalFenceHandleTypeFlagBits:
-
VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV
-
VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV
-
-
Extending VkObjectType:
-
VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV
-
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV
-
VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV
-
VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV
-
VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV
-
VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV
-
VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV
-
If Vulkan SC 1.0 is supported:
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV
-
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 aNvSciSyncObj
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:-
Chain VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV to VkDeviceObjectReservationCreateInfo and specify the
semaphoreSciSyncPoolRequestCount
maximum number of semaphore SciSync pools that will be used simultaneously. -
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.
-
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.