Registered Extension Number

374

Revision

2

Extension and Version Dependencies

  • Requires Vulkan 1.1

Contact

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:

To import/export a NvSciSyncFence to a VkFence object, that VkFence object must already have a NvSciSyncObj imported in advance.

For details of the NvSciSync APIs and data structures, see the NvStreams Documentation.

New Commands

New Structures

New Enums

New Enum Constants

  • VK_NV_EXTERNAL_SCI_SYNC_EXTENSION_NAME

  • VK_NV_EXTERNAL_SCI_SYNC_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 VkExternalSemaphoreHandleTypeFlagBits:

    • VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV

  • Extending VkStructureType:

    • VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV

    • VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_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_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV

    • VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV

    • VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV

    • VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV

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 entry points for NvSciSyncFence and NvSciSyncObj handles

  • Revision 1, 2020-11-25 (Kai Zhang, Daniel Koch)

    • Initial revision

See Also

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.

Copyright 2014-2021 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0